Los telémetros ultrasónicos son herramientas útiles en una variedad de aplicaciones robóticas y de la vida real, como sistemas de detección de distancia y evitación de obstáculos. Un telémetro ultrasónico mide la distancia emitiendo un pulso ultrasónico de 40 kHz, moviéndose por el aire hasta que golpea un objeto, midiendo el retraso de la señal reflejada y enviando los comandos apropiados a otras unidades.
Usé el sensor ultrasónico SRF05 y el microcontrolador ATtiny85. Los datos de distancia se muestran en centímetros y pulgadas en una pantalla OLED de 128 x 64. Un gráfico de barras horizontales también proporciona una estimación visual de la distancia. El código MCU se desarrolló utilizando el IDE de Arduino.
Altium Designer 22 y la biblioteca de componentes SamacSys (complemento de Altium) se utilizaron para diseñar el esquema y la PCB. Para obtener una PCB de calidad, envié a Gerber a PCBWay y usé ComponentSearchEngine.com para comprar los componentes originales. Se utilizó un multímetro Siglent SDM3045X para comprobar el consumo de corriente del circuito.
Tabla de contenido
especificación
- Voltaje de entrada: 6-24 VCC
- Consumo de corriente: 24mA
- Rango de detección: 2-400 cm (ver texto)
- Datos de distancia: centímetros, pulgadas, gráfico de barras
- Pantalla: 128 × 64 OLED amarillo-azul
análisis de circuitos
La Figura 1 muestra un diagrama esquemático de un dispositivo de telémetro ultrasónico. Como puede ver, el circuito consta de cuatro partes principales: sensor, fuente de alimentación, MCU y pantalla. Cada parte se explica por separado.
Figura 1: Diagrama esquemático de un telémetro ultrasónico (Fuente: Altium)
Sensor ultrasónico SRF05
Usé el módulo ultrasónico SRF05 para el circuito. Hay varios módulos SRF05 en el mercado. Usé el que se muestra en la Figura 2.
Debido a la calidad variable de los módulos, no se garantiza el rango máximo de detección. Algunos de ellos tienen una máscara de soldadura azul y otros son verdes. Además, varios fabricantes ofrecen dichos módulos.
De acuerdo con la hoja de datos del módulo SRF05, “El SRF05 es un paso evolucionado del SRF04, diseñado para aumentar la flexibilidad, ampliar el alcance y reducir aún más los costos. Por lo tanto, el SRF05 es totalmente compatible con el SRF04 El alcance aumentó de 3 metros a 4 metros A El nuevo modo de operación (pin de modo conectado a tierra) permite que el SRF05 use un pin tanto para el disparador como para el eco, ahorrando valiosos pines en el controlador. Si el pin de modo no está conectado, el SRF05 se comporta como el SRF04 con pines de disparador y eco separados. .El SRF05 incluye un pequeño retraso antes del pulso de eco, lo que permite que el BASIC Stamp y el Picaxe permitan controladores lentos, como ejecutar un pulso bajo comando”.
Figura 2: Módulo de ultrasonido SRF05 (máscara de soldadura azul)
fuente de alimentación
El componente principal de la fuente de alimentación es TS2937CW501 Regulador (REG1). Regulador 5V SOT-223 LDO. De acuerdo con la hoja de datos TS2937, “El regulador de voltaje de micropotencia monolítico de voltaje fijo TS2937 está diseñado para una amplia gama de aplicaciones. El dispositivo es ideal para usar en aplicaciones alimentadas por batería. Además, la corriente de reposo en caída es Esta serie de voltaje fijo Los reguladores tienen una corriente de tierra muy baja (200 uA típ.) y una caída de voltaje de salida muy baja (típ. 60 mV con carga ligera, 600 mV a 500 mA). Estos incluyen una estrecha tolerancia inicial del 2 %, una regulación de línea excepcional del 0,05 % típ. y una coeficiente de temperatura de salida muy bajo”.
FB1 y C5 reducen el ruido del voltaje de entrada. D1 es un LED azul 0805 que indica una buena conexión de alimentación y R2 limita la corriente en D1. C4 y C6 se utilizan para reducir el ruido en el riel de alimentación de 5 V. P1 es un conector hembra XH-2P para conectar cables de alimentación a la placa.
microcontrolador
IC1 es el microcontrolador ATTiny85.2 Es el corazón del circuito. Elegí el paquete SMD para este chip. Según la hoja de datos de Tiny85, establece: Líneas de E/S de propósito, 32 registros de trabajo de propósito general, 1 temporizador/contador de 8 bits con modo de comparación, 1 temporizador/contador de alta velocidad de 8 bits, interfaz serie universal, interrupciones internas y externas, 4 canales, It de 10 bits cuenta con un ADC, un temporizador de vigilancia programable con oscilador interno y tres modos de ahorro de energía seleccionables por software. El modo inactivo detiene la CPU mientras permite que la SRAM, el temporizador/contadores, el ADC, los comparadores analógicos y el sistema de interrupción continúen funcionando. El modo de apagado guarda el contenido del registro y desactiva todas las funciones del chip hasta la próxima interrupción o reinicio del hardware. El modo de reducción de ruido de ADC apaga todos los módulos de E/S excepto la CPU y el ADC para minimizar el ruido de conmutación durante las conversiones de ADC. El dispositivo se fabrica utilizando la tecnología de memoria no volátil de alta densidad de Atmel. El flash ISP en chip permite que la memoria del programa se reprograme en el sistema a través de la interfaz serial SPI mediante un programador de memoria no volátil convencional o mediante un código de arranque en chip que se ejecuta en el núcleo AVR. ”
C1, C2, C3 son condensadores de desacoplamiento que se utilizan para reducir el ruido. R1 es una resistencia pull-up para evitar la activación no deseada del pin RESET de la MCU.
Pantalla EL orgánica
La pantalla consta de un módulo OLED de 128 × 64 de 0,96 pulgadas con un chip controlador SSD1306. La interfaz de datos/comandos del módulo es I2C. La Figura 3 muestra una foto de este módulo. I2C consta de líneas SDA y SCL que deben levantarse con dos resistencias. Este módulo ya implementa un pullup, por lo que no es necesario agregar resistencias a las líneas.
Figura 3: Pantalla OLED del dispositivo (0,96 pulgadas, 128 × 64, I2C)
diseño de placa de circuito impreso
La Figura 4 muestra el diseño de PCB del circuito. Esta es una PCB de 2 capas y todos los componentes son SMD. La pantalla debe estar unos milímetros por encima de la PCB para mantener la distancia entre los componentes y la parte trasera de la pantalla para evitar cortocircuitos. El PCB está diseñado para ser compacto y fácil de usar.
Figura 4: Diseño de PCB del telémetro ultrasónico (Fuente: Altium)
Cuando decidí diseñar el esquema y la PCB para este proyecto, me di cuenta de que no tenía una biblioteca de componentes para REG1.3 y IC2cuatro al almacenamiento de mi biblioteca de componentes. Entonces, como de costumbre, elegí la biblioteca de componentes SamacSys con calificación IPC e instalé las bibliotecas que faltaban (símbolos esquemáticos, huellas de PCB, modelos 3D) utilizando las herramientas y servicios gratuitos de SamacSys. Hay dos formas de importar la biblioteca. Puede visitar ComponentSearchEngine.com para descargar e importar manualmente la biblioteca, o puede usar el complemento CAD de SamacSys para importar/instalar automáticamente la biblioteca en su entorno de diseño. La figura 5 muestra todo el software CAD de diseño electrónico compatible.Cinco Como puede ver, todos los jugadores famosos son compatibles. Dado que uso Altium Designer, utilicé el complemento SamacSys Altium para instalar las bibliotecas faltantes (Figura 6).6 La figura 7 muestra una vista en 3D de la placa y dos dibujos de ensamblaje de la PCB.
Figura 5: Todo el software CAD de diseño electrónico compatible con el complemento SamacSys
Figura 6: Bibliotecas de componentes seleccionadas en el complemento SamacSys Altium
Figura 7: vista 3D de PCB y dos dibujos de ensamblaje
código
El código MCU se escribe así: ATtinyCore Board Manager debe estar instalado7 Seleccione ATtiny25/45/85 (sin gestor de arranque) en el menú (Figura 8). Luego seleccione el chip como ATtiny85 y seleccione 8MHz (interno) para la fuente de reloj (Figura 9).
A continuación, debe instalar NewPing.8 y Tiny4KOLED9 Biblioteca. Después de este,[スケッチ]ir al menú,[コンパイル済みバイナリのエクスポート]Seleccione (Figura 10). El archivo HEX compilado está en la misma carpeta donde está su código. Simplemente use un programador AVR ISP (como USBasp) para programar el chip usando los pines disponibles (GND, RESET, MISO, MOSI, SCK) en la parte posterior de la PCB. Siga los pasos para programar las puntas de los fusibles como se muestra en la Figura 11. Retire el programador y los cables de la placa. Eso es todo.
#include <Tiny4kOLED.h>
#include <NewPing.h>
unsigned long uS = 0;
#define TRIGGER_PIN 3
#define ECHO_PIN 4
#define MAX_DISTANCE 41
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
unsigned int CM = 0, IN = 0;
unsigned char cnt = 0;
void setup() {
oled.begin(128, 64, sizeof(tiny4koled_init_128x64br), tiny4koled_init_128x64br);
oled.on();
oled.setCursor(0, 1);
oled.setFont(FONT8X16);
oled.clear();
oled.print("ULS Range Finder");
}
void loop() {
uS = sonar.ping();
CM = sonar.convert_cm(uS) + CM;
IN = sonar.convert_in(uS) + IN;
cnt ++;
if (cnt == 10)
{
oled.setCursor(0, 2);
oled.print(CM / 10);
if (CM / 10 < 10)
{
oled.setCursor(9, 2);
oled.print(" Centimeter ");
} else
{
oled.setCursor(17, 2);
oled.print(" Centimeter");
}
oled.setCursor(0, 4);
oled.print(IN / 10);
if (IN / 10 < 10)
{
oled.setCursor(9, 4);
oled.print(" Inches ");
} else
{
oled.setCursor(17, 4);
oled.print(" Inches");
}
switch (CM / 10)
{
case 0:
oled.setCursor(0, 6);
oled.print(" [out of range] ");
break;
case 1 ... 4:
oled.setCursor(0, 6);
oled.print("== ");
break;
case 5 ... 9:
oled.setCursor(0, 6);
oled.print("==== ");
break;
case 10 ... 14:
oled.setCursor(0, 6);
oled.print("===== ");
break;
case 15 ... 19:
oled.setCursor(0, 6);
oled.print("======= ");
break;
case 20 ... 24:
oled.setCursor(0, 6);
oled.print("========= ");
break;
case 25 ... 29:
oled.setCursor(0, 6);
oled.print("=========== ");
break;
case 30 ... 34:
oled.setCursor(0, 6);
oled.print("============= ");
break;
case 35 ... 39:
oled.setCursor(0, 6);
oled.print("=============== ");
break;
case 40 ... 41:
oled.setCursor(0, 6);
oled.print("================");
break;
}
CM = 0;
IN = 0;
cnt = 0;
}
delay(10);
}
Figura 8: Selección de la serie de chips adecuada (ATtiny25/45/85 [no bootloader]) menú
Figura 9: Selección de fuente de reloj ATtiny85 (8 MHz, interna)
Figura 10: Dónde encontrar y exportar archivos HEX ([スケッチ]menú)
Figura 11: Cómo programar la placa usando AVR ISP Programmer
construir y probar
La Figura 12 muestra la PCB ensamblada. Pegue cinta adhesiva de doble cara entre la pantalla y la PCB para evitar cortocircuitos. Como puede ver en la imagen, el texto en la pantalla OLED es bastante brillante y vívido.
Figura 12: PCB ensamblada con telémetro ultrasónico
El consumo de corriente del dispositivo es importante cuando se utiliza una batería para alimentar la placa. Así que utilicé un multímetro de sobremesa Siglent SDM3045X.Diez Medí la corriente para ser 24 mA. La figura 13 muestra la pantalla del multímetro.
FIGURA 13: CONSUMO DE CORRIENTE DE UN CIRCUITO MEDIDOR DE RANGO ULTRASÓNICO
lista de partes
La Figura 14 muestra la lista de materiales para el proyecto.
Figura 14: Lista de materiales
Referencias
3Símbolo esquemático TS2937, huella de PCB, modelo 3D
cuatroSímbolo esquemático ATtiny85, huella de PCB, modelo 3D
CincoComplemento de software CAD de diseño electrónico
6Complemento de diseñador de Altium
7Administrador de la placa ATtinyCore Arduino
8Nueva biblioteca de pings de Arduino
9Biblioteca Arduino Tiny4KOLED