Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Cómo hacer un telémetro láser económico para Arduino

Componentes y suministros

Arduino Nano R3
× 1
Elecrow OLED 0.96 '' 128x64
× 1
Cinta métrica láser X-40
× 1
Módulo LM2596 DC-DC
× 1

Herramientas y máquinas necesarias

Soldador (genérico)
Programador ST-LINK

Aplicaciones y servicios en línea

STMicroelectronics ST-LINK Utility

Acerca de este proyecto

¿Necesita un módulo de telémetro láser rápido y económico para su proyecto Arduino?

Por supuesto, puede utilizar módulos especializados para esta tarea, pero la mayoría tienen un precio elevado. Los módulos VL53L0X / VL53L1X son económicos, pero tienen un campo de visión muy grande.

Así que encontré una solución:usar una cinta métrica láser barata "X-40" como telémetro láser. Estos dispositivos cuestan $ 20 o menos y pueden medir distancias de hasta 40 m con una precisión de ~ 3 mm. Pero hay dos problemas:no hay forma de obtener lecturas de la cinta y las mediciones son lentas, menos de 1 Hz.

Para resolver esos problemas, hice ingeniería inversa de esa cinta métrica láser y escribí mi propio firmware para el MCU STM32 del módulo del telémetro láser. La velocidad de medición fue importante para mí y puedo alcanzar ~ 60 Hz, pero la distancia estable máxima disminuyó a ~ 6 m (el rango máximo total es 37 m, pero no lo probé).

La precisión de la medición de distancia puede variar de 1 mm a 10 mm según el color y la distancia del objetivo.

Dimensiones del módulo:25x13x50 mm.

AVISO IMPORTANTE:PERDERÁ EL FIRMWARE ORIGINAL, POR LO QUE EL DISPOSITIVO NO PUEDE UTILIZARSE COMO UNA MEDIDA DE CINTA LÁSER MÁS TARDE.

Tenga en cuenta que las cintas métricas láser "X-40" pueden tener diferentes revisiones del módulo del telémetro láser, ¡y mi firmware solo admite algunas de ellas!

"X-40" no es el único nombre para una cinta métrica láser con estos módulos; sé que existen varias cintas métricas láser chinas diferentes con módulos adecuados.

Paso 1:Desmontaje de la cinta métrica láser

Desarmemos la cinta métrica láser para obtener un módulo de telémetro láser.

Necesita desatornillar 7 tornillos de la caja:

Cinta métrica láser desmontada:

Puede ver un pequeño módulo de telémetro láser dentro de la carcasa del dispositivo. Debe desconectar los cables planos del módulo y quitar el módulo de la carcasa:

Tenga en cuenta que el módulo está marcado como "701A". Mi firmware solo admite las versiones de módulo "512A" y "701A". Varios usuarios confirmaron que los módulos "703A" también funcionan (no lo probé).

UPD 11/2019:
Atención:Se descubrió que las cintas métricas láser "x-40" más nuevas vienen con módulos "M88B". La marca es "88B" en la PCB cerca de la MCU. Que los módulos se basan en STM32F0 MCU (tiene el paquete QFN-32). ¡Los módulos no son compatibles con mi firmware!

UPD 10/2021:
Atención: soporte agregado de módulos U85B :ver enlace! Se utilizan en tipos modernos de cintas métricas láser.


Si su módulo es compatible, debe desoldar las líneas eléctricas del módulo.

Paso 2:Programación del módulo de telémetro láser

Debe escribir un firmware especializado en la MCU del módulo para obtener la funcionalidad necesaria.

1. En primer lugar, debe soldar algunos cables para programar la MCU. Pinout se muestra en la imagen:

Conecte los pines 7-8 del conector del teclado; es necesario encenderlo.

Las líneas "GND" y "Vbat" deben estar conectadas a la fuente de alimentación. El rango de voltaje de alimentación es de +2,7 ... + 3,3 V. Debe haber +3,5 V en la línea "Vdd" cuando se suministra energía al módulo.

Las líneas "GND", "SWDIO", "SWCLK", "NRST" deben conectarse al programador ST-LINK. La línea "NRST" es muy importante:el firmware original de la MCU está bloqueado, por lo que esta línea es necesaria para ingresar la MCU al modo de programación.

Algunos programadores tienen esta línea y algunos (económicos) no, pero hay una solución para este problema.

Además, algunos programadores (como el "ST-LINK / V2" original) necesitan que la línea "Vbat" se conecte con la línea "VCC / TVCC" del programador.

Ejemplo de conexiones (este programador no tiene línea "NRST"):

2. Instale la "utilidad ST-LINK" en la PC. Si no tiene experiencia en el uso de ese software, hay muchos tutoriales en la Web.

Necesita configurar la utilidad (Destino -> Configuración):

Si su programador tiene salida "NRST", puede simplemente encenderlo y presionar "Destino -> Conectar" en la utilidad.

Si no tiene esa línea, debe seguir los siguientes pasos:

  • Encienda la energía.
  • Conecte la línea "NRST" del módulo al GND.
  • Presione "Destino -> Conectar" en la utilidad.
  • Desconecte rápidamente la línea "NRST" del GND.
  • La utilidad debe mostrar la conexión

Debes obtener esa imagen:

3. El flash de la MCU está bloqueado para lectura, por lo que debe deshabilitar la "Protección de lectura". ¡Perderá el firmware original en este paso!

Abra el menú Destino -> "Bytes de opción". Debe haber tales configuraciones:

Cambie "Protección de lectura" a "Deshabilitado" y presione el botón "Deseleccionar todo", luego presione el botón "Aplicar". Intente reiniciar el módulo (desconectando la energía).

Presione Destino -> Conectar. Debe haber información sobre la conexión exitosa en la ventana de registro y debe ver el contenido de la memoria, lleno de 0xFF. Ahora puede cargar firmware personalizado en la MCU.

4. El firmware necesario se coloca aquí:https://github.com/iliasam/Laser_tape_reverse_engineering/tree/master/Code/Firmware_dist_calculation_fast

Seleccione el archivo HEX adecuado para el módulo suyo y descárguelo en la MCU Flash utilizando la "utilidad ST-LINK".

Paso 3:Conexión del módulo del telémetro láser al Arduino

Necesita soldar un cable o algún conector a la almohadilla TX en la placa:

Vea el esquema de conexión a continuación.

En primer lugar, debe verificar que el módulo del telémetro funcione bien. En este paso, no necesita conectar la pantalla OLED al Arduino; simplemente conecte la línea TX del módulo del telémetro láser a la línea TX del Arduino y las líneas eléctricas del módulo a la fuente de alimentación de + 3V.

Cree un boceto vacío y cárguelo en el Arduino. Abra "Monitor de serie" en el IDE de Arduino. Seleccione la velocidad en baudios:250000

Si el módulo del telémetro funciona bien, obtendrá los mismos datos:

De hecho, es mejor utilizar un convertidor USB-UART especializado para esta prueba. Seleccione 256000 velocidad en baudios en su utilidad (es la velocidad en baudios real de la MCU x-40).

En segundo lugar, debe ensamblar el esquema completo con pantalla.

Conecte la línea TX del módulo del telémetro láser a la línea RX del Arduino (debe desconectar ese cable durante la carga del programa en el Arduino).

Si todo funciona bien, obtendrá el mismo resultado:

Puede ver la pantalla con 3 números:

  • "COUNT":contador de los valores recibidos
  • "AMPL":amplitud de la señal. La barra simbólica ("<--->") a continuación muestra la amplitud gráficamente (en escala logarítmica).
  • El valor más grande:distancia en metros y milímetros.

Paso 4:calibración cero

Después de un primer inicio, es necesario calibrar el módulo del telémetro láser.

Debe colocar algún objeto blanco a cierta distancia del módulo. La distancia a este objeto se convertirá en una distancia cero para el módulo del telémetro. Para iniciar el proceso de calibración, debe conectar el teclado desde la cinta métrica láser y presionar el botón más bajo. El módulo emitirá dos pitidos:al inicio y al final de la calibración (la duración de la calibración es de aproximadamente 10 segundos).

Ahora puede utilizar este módulo de telémetro láser.

Enlaces:

1. Github:resultados de ingeniería inversa y código fuente.

2. Habr.com:artículo traducido en Google sobre el proceso de ingeniería inversa con cinta métrica láser.

Lo siento por mi inglés, soy de un país que no habla inglés.

Código

  • Bosquejo de Arduino
Boceto de Arduino Arduino
 Sin vista previa (solo descarga). 
Github
Código para la cinta láser https://github.com/iliasam/Laser_tape_reverse_engineering

Esquemas

Esquema de montaje de la placa de pruebas

Proceso de manufactura

  1. Cómo medir la calidad del aire en OpenSensors
  2. ¿Para qué se utiliza una cortadora láser?
  3. Monitoreo SMART de temperatura para escuelas
  4. Biblioteca de puertos IO de 8 bits para Arduino
  5. Matriz de teclado de prototipos de 64 teclas para Arduino
  6. TFT Shield para Arduino Nano - Iniciar
  7. Una entrada analógica aislada para Arduino
  8. Controlador de respiración Arduino barato (USB-MIDI)
  9. Trucos para controlar motores de CC
  10. Robot para navegación interior supercogedora
  11. Argumentos a favor de 5G en la fabricación