Tabla de contenido:
- Paso 1: HACER PCB
- Paso 2: MUCHOS ERRORES
- Paso 3: MONTAR SENSORES
- Paso 4: ALAMBRE DURO
- Paso 5: DESCARGAR SONIC SKETCH
- Paso 6: COMUNICACIÓN
- Paso 7: CIERRE
Video: RETROALIMENTACIÓN LED SONIC: 7 pasos (con imágenes)
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:42
Hola de nuevo, ¿Odias que tu robot se encuentre con todo? Esto solucionará ese problema. Con 8 sensores sónicos esto parece complicado … pero de hecho lo hice muy fácil. Intento publicar proyectos que lo ayuden a aprender sobre Arduino y mostrar un concepto 'fuera de la caja'. Esta publicación lo ayudará a comprender la conmutación 595, los pro-minis como un sensor programable y el gran uso de la retroalimentación LED en tiempo real. Si disfruta de Arduino como 'copiar y pegar y enchufar', puede omitir esto.
Me gusta usar pro-minis. Cuestan alrededor de $ 2.50, funcionan como un uno en toda regla y la instalación de encabezados los hace muy flexibles. Utilizado como un sensor micro, puede hacer que "haga lo que quiera" en lugar de lo que dicta un sensor comprado. Con I2C usando solo 2 cables, se pueden unir todos en una línea. Así que muévete sobre MEGA. Puedo tener 4 minis ejecutando 4 líneas separadas de código al mismo tiempo, a solo $ 10.00. Aquí uso un mini para pasar los sensores sónicos a través de un 595 y mostrar la distancia del LED en tiempo real. Luego, simplemente comparta 8 bits de datos con la placa base. Esto quita la carga de la placa base y hace que su código sea muy simple.
Hay un problema con los sensores sónicos … no hay retroalimentación visual. ¡Nunca se sabe si el sensor es solo un peso muerto o si funciona! Creo que a quien se le ocurrió 'BLINK' es más inteligente que Einstine. Solo UN LED y un mundo de información se transmite con el parpadeo. Entonces, un sensor sónico necesita retroalimentación en tiempo real. Aquí utilicé una serie de leds para monitorear cada sensor. No los necesitas, solo haz los sensores sin los leds. Pero tener los leds en la placa de circuito impreso es útil.
Paso 1: HACER PCB
hacer PCB y poblar. PRECAUCIÓN … Cometí un error en la PCB en las conexiones de 4 pines para que se conecten los sensores sónicos. El ECHO y TRIGGER Vcc y las tierras se iban a conectar a la PCB. No hay suficiente espacio para los conectores, así que hice el PCB con pines. Por lo tanto, puede soldar un conector de cable a la PCB y enchufarlo a los sensores sónicos reales. En cuanto a los leds, coloco leds amarillos en el borde interior y rojos en el exterior. esto le ayuda a ver a distancia si los sensores están midiendo correctamente.
Este es uno de los POCOS PCB de 2 lados que he hecho. Prefiero hacer 2 cada uno de los lados y correr puentes. Pero para obtener la pantalla LED, necesita al menos el PCB superior. Separé el diseño en la descarga.
El PCB es para un pro-mini con A4-A5 dentro del encabezado del borde. De cualquier manera, simplemente conecte A4-A5 al Master A4-A5. No olvide el Vcc y Grounds también.
Paso 2: MUCHOS ERRORES
Ahora, por mis errores … Traté de hacer estallar los Triggers todos a la vez (todos unidos) y esto funcionó bien, pero se produjeron algunas interacciones. Así que ahora todos los ECHOS van al micro (8) y los GATILLOS están configurados por un 595. Tres pines más (3). En cuanto a los leds, la multiplexación no funcionará. Necesita un tiempo de encendido completo para cada led. Esto significa que cada fila de 7 leds debe tener su propio 595. Una vez que actualice el 595, los leds permanecen encendidos hasta la próxima actualización. Donde multiplexando el led solo se enciende esa décima de segundo. Esto funciona bien en mis lectores y necesita un micro dedicado. No hay tiempo para escanear 8 sensores sónicos y medir distancias. Lo intenté y obtuve muy malos resultados. Multiplexar los leds también significará una cuadrícula de fila + columna y eso significa alrededor de 64 pasos de alimentación en la PCB.
Usé solo 7 salidas del 595 debido al desorden en la PCB. A distancia no se puede saber si hay 7 u 8 leds solo en su movimiento. Puede tener la tentación de atar todos los leds a una sola resistencia y esto funciona, pero el brillo de la matriz cambia con la cantidad de leds que son livianos. Entonces, una resistencia por LED es lo mejor. Me encanta el 595, pero si simplemente movieran los pines Vcc y 0-out o hicieran un ic de 18 pines con TODAS las salidas en el mismo lado … conectar las ocho salidas sería muy fácil. Pero entonces no se vendería por menos de 30 centavos.
Paso 3: MONTAR SENSORES
Pegue los sensores sónicos a la tapa del café. el conector macho debe doblarse hacia adentro en cada sensor. Esto funciona mejor si dobla un alfiler a la vez. Usé cinta de espuma de 2 lados solo para que la vibración sea menor. Mis sensores están demasiado cerca y necesitan un espacio de 1/4 de pulgada para adaptarse mejor a la PCB. He usado sensores sónicos antes y, a veces, uno no mide con precisión y debe tener esto en cuenta. Así que no los PEGUE a todos permanentemente.
También es útil realizar una prueba de distancia rápida en cada uno antes de usarlos. Recibo aproximadamente un sensor con una lectura deficiente en un lote de 20. No está mal para el precio que pagué.
Paso 4: ALAMBRE DURO
Pensé que habría espacio para enchufes y tomas de la PC al
pines sónicos pero me quedé sin espacio. Así que conecté el extremo de la placa de circuito impreso y solo hice cables de eco y disparo con conectores hembra (8ea). Até los 8ea Vcc y 8ea tierras de los sensores juntos, por lo que esto hizo solo 2 conexiones a la PCB para ellos.
Con 8 sensores y 8595, un uno o pro-mini NO PUEDE alimentar esto. Debe haber una fuente regulada de 5v como parte de este proyecto. Mi robot tiene un simple 7805 @ 1 amperio de las baterías. Esto se relaciona con todos los Vcc de 5v para todos los dispositivos. el 7805 cae alrededor de un voltio, por lo que necesita al menos 6.5 voltios para alimentarlo. Eso es 2 baterías de litio a 3.3v. Mi robot tiene nicads viejos de paquetes de perforación usados y 8 nicads funcionan con el motor de 12v con engranajes típico de China en el chasis tipo tanque de $ 20.
Paso 5: DESCARGAR SONIC SKETCH
Descarga el boceto e instálalo. Hay muchas formas de hablar con
otro uno pero me gusta I2c. la confusión es direccionamiento y maestro / esclavo. Al igual que con la mayoría de los sensores (piense en el segundo mini como un sensor), se dirige al sensor y solicita x cantidad de bytes. lo mismo aqui. En el segundo mini, dejas a un lado la cantidad de bytes que deseas enviar. La confusión es que los nombres no importan. Solo le ayuda a USTED a recordar si comparte los nombres. Entonces, en el boceto, envío las 8 medidas de distancia sónica en cm como sendR1, sendR2, sendR3, sendR4, sendL1, sendL2, sendL3, sendL4. El maestro solo obtiene 8 bytes de datos y puede llamar a esos bytes como desee. Los leí como gotR1, gotR2, got….. El orden de bytes enviado es el mismo. Así que el byte A, B, C….. no crea que al cambiar el nombre obtendrá datos diferentes. Y la otra trampa, solo puede recibir los datos que se le indica que se envíen. Entonces, si desea otros datos, debe cambiar AMBOS maestro y esclavo.
Paso 6: COMUNICACIÓN
Puede omitir esto si sabe cómo configurar 2 Uno para que se comuniquen entre sí. Tengo algunas cositas de información al final. Para que sea más fácil, llamaré al uno en la base del robot M1 y al sensor sónico como S2. Conecte Vcc, tierra, A4, A5 entre sí.
En el boceto del S2 comienza con #include
Luego crea los 8 bytes para enviar. byte R1, byte R2, byte L1, etc. Uno es un micro de 8 bits por lo que envían 1 byte a la vez usando 'byte' en lugar de 'int' es correcto.
En 'setup ()' agregue 'Wire.begin (address)' esto le dice a I2c qué dispositivo es este. La dirección suele ser cualquier número que desee entre 4 y 200. el tamaño de un byte. Aquí usé el número 10. Entonces, para hablar con este sensor S2, el maestro debe llamar a Wire.requestFrom (10, 8). Esta es la dirección 10 y el 8 es la cantidad de bytes deseados. También en 'setup ()' agregue Wire.onRequest (isr anyName). Cuando el M1 llama a la solicitud, el sensor S2 reacciona con la interrupción. Esto solo llama a la función anyName. Por tanto, es necesario crear esta función anyName. Mire el boceto y vea la función 'sendThis ()' Aquí es donde los bytes realmente se envían al M1. Solo los bytes van y NO los nombres y en el orden en que se enviaron. Aquí es donde comienza el tamaño y la cantidad de datos a enviar. En este sencillo formato de bytes, el envío y la recepción deben coincidir. Aquí se envían 8 bytes y se reciben 8 bytes. Una nota aquí es que llamar a una función requiere (). Como delay (), millis (), Serial.print (). Cuando se usa una ISR (rutina de servicio de interrupción), la llamada a la función elimina el (). Entonces Wire.onRequest (sendThis) no Wire.onRequest (sendThis ()).
La confusión que tuve fue la de amo / esclavo. Al principio pensé que el maestro SIEMPRE era el maestro. Pero dentro del boceto puede cambiar maestro / esclavo para solicitar desde otros micros o enviar a otros micros. Siempre que haya seguido el formato básico descrito anteriormente. Recuerde … SOLO comparte los datos que le han sido asignados.
Dos pedacitos de la pared. La interrupción isr solo interrumpe entre líneas de boceto. Si está bloqueado en un bucle 'while o for', no sucede nada hasta que el bucle sale. NO es gran cosa, ya que esto puede ser de unos pocos microsegundos y los datos son antiguos.
El otro problema es que "dentro" de un micro hay un cálculo 100% libre de errores. Cualquier comunicación "externa" (cables) está sujeta a errores. Hay muchas formas de verificar que los datos entregados estén libres de errores y coincidan con la fuente. La forma más sencilla es con suma de comprobación. Simplemente agregue los totales de los bytes de envío (valores reales) y envíe los totales y, en el extremo receptor, agregue los totales y vea si coinciden. Si coinciden bien o tira ese conjunto de datos si no es así. Por supuesto, esto implica enviar un valor entero y no bytes. Entonces, simplemente divide el entero en el byte HI y el byte LO y envía como bytes separados. Luego junte en el receptor.
FÁCIL:
int x = 5696; (cualquier valor int válido, el máximo es 65k o 32k negativo)
byte hi = x >> 8; (22)
byte lo = x; (64)
enviar los bytes y combinar en el otro extremo….
byte hi = Wire.read ();
byte lo = Wire.read ();
int newx = (hi << 8) + lo; (5696)
Paso 7: CIERRE
Para cerrar, este sensor sónico proporciona a la placa base datos de distancia sin procesar en tiempo real. Esto libera el micro y hace que el boceto sea mucho menos complicado. El micro ahora puede tomar una buena decisión para reducir la velocidad, girar, detenerse o retroceder basándose en buenos datos en lugar de conjeturas aleatorias. Vea mi otra publicación sobre Bluetooth IDE para cargar bocetos sin cables y tener que conectar su robot todo el tiempo para solo un cambio rápido en su boceto. Gracias por ver esto. oldmaninsc.
Recomendado:
Convertidor Boost basado en Esp8266 con una increíble interfaz de usuario Blynk con regulador de retroalimentación: 6 pasos
Convertidor Boost basado en Esp8266 con una increíble interfaz de usuario Blynk con regulador de retroalimentación: En este proyecto, le mostraré una forma eficiente y común de cómo aumentar los voltajes de CC. Te mostraré lo fácil que puede ser construir un convertidor boost con la ayuda de un Nodemcu. Vamos a construirlo. También incluye un voltímetro en pantalla y una retroalimentación
Sistema de retroalimentación de posición del servo con Arduino: 4 pasos
Sistema de retroalimentación de posición del servo con Arduino: Hola, este es mi primer instructable. MI proyecto le permite recibir la posición de su servo en su monitor serial o plotter serial de su Arduino IDE. Esto facilita la programación de robots arduino que utilizan servomotores como robots humanoides bip
Solderdoodle Plus: soldador con control táctil, retroalimentación LED, estuche impreso en 3D y USB recargable: 5 pasos (con imágenes)
Solderdoodle Plus: soldador con control táctil, retroalimentación LED, estuche impreso en 3D y USB recargable: haga clic a continuación para visitar nuestra página de proyecto de Kickstarter para Solderdoodle Plus, una herramienta múltiple recargable por USB inalámbrico y pre-ordene un modelo de producción! Https: //www.kickstarter.com/projects/249225636/solderdoodle-plus-cordless-usb-rechargeable-ho
Pantalla de ergómetro simple basada en Arduino con retroalimentación diferencial: 7 pasos (con imágenes)
Pantalla de ergómetro simple basada en Arduino con retroalimentación diferencial: el entrenamiento cardiovascular es aburrido, especialmente cuando se hace ejercicio en interiores. Varios proyectos existentes intentan aliviar esto haciendo cosas interesantes como acoplar el ergómetro a una consola de juegos o incluso simular un paseo en bicicleta real en realidad virtual. Emocionante como eso
Control autónomo de las RPM del motor mediante el sistema de retroalimentación de un tacómetro basado en infrarrojos: 5 pasos (con imágenes)
Control autónomo de las RPM del motor mediante el sistema de retroalimentación de un tacómetro basado en infrarrojos: siempre existe la necesidad de automatizar un proceso, ya sea simple / monstruoso Tuve la idea de hacer este proyecto a partir de un simple desafío que enfrenté al encontrar métodos para regar / regar nuestra pequeña parcela de tierra. El problema de no tener una línea de suministro actual