Detector de alcance portátil
Componentes y suministros
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 4 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Herramientas y máquinas necesarias
| ||||
| ||||
| ||||
|
Aplicaciones y servicios en línea
| ||||
|
Acerca de este proyecto
Introducción
El Departamento de Ciencias del Ejercicio de Lehman College estaba realizando estudios sobre el entrenamiento con pesas. Hubo inconsistencias en el rango de movimiento para las repeticiones, lo que podría influir significativamente en los datos. Se me pidió que creara un dispositivo que identificara el rango completo de movimiento para ejercicios que utilizan máquinas o pesos más grandes.
El dispositivo debe cumplir las siguientes condiciones :
- Distancia ajustable
- No fijo de forma permanente a las máquinas.
- Compatible con trípode
- Sin cables
Video
Piezas
La mayoría de las piezas se muestran a continuación, pero para obtener una lista completa, consulte la lista de materiales anterior. Las piezas utilizadas se seleccionan no porque sean óptimas; eso es con lo que tuve que trabajar. La huella podría reducirse en gran medida con PCB personalizados, componentes SMT o una batería LiPo.
Código
La biblioteca NewPing es necesaria para que el código (proporcionado en la parte inferior) se compile.
La frecuencia del zumbador y los límites superior / inferior son variables globales que pueden modificarse. Los límites superior / inferior se refieren a la distancia mínima y máxima que lee el sensor, que se asigna al valor analógico [0,5] V del potenciómetro.
int frecuencia =700; // Frecuencia en Hz
int lower_bound =60; // Distancia en mm
int upper_bound =200; // Distancia en mm
Se producen 3 pitidos durante el encendido para indicar que el arranque se realizó correctamente (consulte setup ()
círculo). A continuación, loop ()
solicita continuamente datos del sensor ultrasónico y los compara con el umbral establecido por el potenciómetro.
Impresión 3D
Todos los archivos se han subido a thingiverse, o se puede encontrar un archivo condensado en la parte inferior de la página. Aquí no se explica cómo utilizar CAD. El modelo se hizo teniendo en cuenta las limitaciones de la impresión 3D. Los voladizos se minimizaron mediante el uso de chaflanes de 45 grados, lo que reduce el material de soporte. Los espacios libres eran generosos, por lo que las piezas deberían encajar a pesar de estar impresas en impresoras calibradas de manera diferente.
Los tiempos de impresión variarán, pero mis tiempos de impresión fueron los siguientes:
- Pieza superior:2 horas y 40 minutos
- Pieza inferior:2 horas y 20 minutos
- Perilla:20 minutos
Ensamblaje
Los esquemas del circuito se proporcionan en la parte inferior . de la página. Las piezas se insertan sin estar cableadas para confirmar los ajustes.
Los cables IDE recuperados proporcionaron todos los cables. Los grupos de cables se pueden pelar mientras permanecen unidos entre sí, lo que proporciona cierto orden.
La mayoría de los componentes electrónicos están montados en una de las partes impresas, por lo que se debe pensar en el enrutamiento y la administración de cables.
Los LED indicadores SMD en la placa TP4056 se desoldaron. Los cables de extensión y los LED THT de 3 mm se soldaron en su lugar. Las resistencias limitadoras de corriente todavía están integradas con la placa. Hay un video de alguien realizando esta reubicación.
El arduino nano solo tenía 2 almohadillas de tierra accesibles, por lo que se utilizó una placa para expandir la cantidad de almohadillas de tierra. Lo mismo se hizo con la línea 5V, que se puede ver en la imagen de abajo.
Es necesario romper la conexión en la tira para que 5 V no se cortocircuite a tierra. La "X" roja ilustra la ubicación de la ruptura. Solo se debe romper el cobre superior, no toda la placa de fibra de vidrio.
Los componentes se cablearon fuera del gabinete. Ocasionalmente se colocaron en el gabinete para medir la longitud del cable y verificar la interferencia del cable.
El potenciómetro se recortó 6 mm para que no sobresaliera tanto.
La conexión al 18650 se soldó directamente, lo cual es una mala práctica. El sobrecalentamiento de la celda la dañará y puede fallar con el tiempo. Soldar por puntos una tira de aluminio es la forma correcta de conectar los 18650.
Vergonzosamente se usó pegamento caliente para asegurar los componentes electrónicos. Evite el uso de pegamento caliente cuando sea posible. El diseño mecánico y los sujetadores correctos durarán más que el pegamento caliente. Está destinado a fallar con el tiempo. Es comprensible para los prototipos, pero las piezas de producción nunca usarán pegamento caliente.
Resumen
En retrospectiva, hubiera preferido usar un sensor de infrarrojos en lugar del ultrasónico, pero no había forma de que pudiera saber esto hasta que comencé a experimentar con el sensor ultrasónico. Los sensores de infrarrojos tienen un campo de visión más estrecho con una compensación de una distancia máxima mucho menor (~ 3 pies).
Si hubiera una segunda versión, un LiPo reemplazaría al 18650. La tuerca adaptadora moleteada grande es pesada y ocupa espacio. La rosca estándar para los soportes de trípode es de 1/4 ", por lo que una simple tuerca de 1/4" de la ferretería es suficiente. Los PCB personalizados reducirían el volumen a la mitad.
Para un prototipo que se concibió desde el concepto hasta la entrega en 2 semanas, estoy contento.
Futuro del proyecto
Cuando estaba experimentando con el sensor de ultrasonido, aprendí más sobre sus limitaciones. El primero es que su campo de visión tiene un ángulo de ~ ± 15 ° (30 ° en total). Esto significa que un objeto puede activar el zumbador antes de que esté directamente encima del sensor. Esto produce inexactitudes y lecturas indeseables. Además, si el plano del objeto no es perpendicular (o dentro del ángulo de tolerancia) a la onda de sonido transmitida, el sensor no recibirá una onda reflejada y no podrá procesar un valor de distancia.
Mi plan inicial era que la unidad descansara en el suelo y permitir que las placas de una barra de entrenamiento con pesas activaran el timbre cuando se bajaran más allá del umbral. Este sistema constaba de un sensor fijo y un gatillo móvil. Mi compañero de ingeniería había propuesto una solución alternativa, que consistía en invertir el sistema. Propuso montar el sensor en la barra móvil mientras lo apuntaba al suelo. De esta manera, el suelo se convirtió en el detonante. También eliminó las imprecisiones debido a un campo de visión amplio como se mencionó anteriormente.
La propuesta no solo fue una gran solución a los problemas planteados, sino que también es muy fácil de implementar. El pedido del adaptador de tuerca de trípode de 1/4 "vino con un adaptador de 1/4" -> 3/8 "Y un adaptador de 3/8" -> 1/4 ". ¡El segundo realmente entrará en uso!
Como no tenía acceso a mi dremel cuando comencé a modelar en 3D, eso me obligó a tener en cuenta todo el adaptador de trípode. Esto, en combinación con una celda 18650, aumentó significativamente el peso. No quiero agregar más peso del necesario, así que cortaré el segundo adaptador de trípode antes de modelar la montura. Volveré al proyecto en una semana para completar esta solución de montaje alternativa. Hasta entonces, ¡todavía funciona!
Código
- RangeDetectionDevice.ino
RangeDetectionDevice.ino Arduino
/ ** Viktor Silivanov 22/03/2018 Dispositivo de detección de distancia portátil que utiliza el sensor ultrasónico HC-SR04 con ajuste de distancia para activar el zumbador. ** /// ************* ******* Bibliotecas **************************************** *********************************************** *********************************************** *********************************************** **************** # incluye// ******************* Pines **** *********************************************** *********************************************** *********************************************** *********************************************** ******** // Pines analógicos # definir wiper A5 // Pines digitales # definir eco 2 # definir trig 3 # definir ON_LED 7 # definir zumbador 8 # definir zumbador_LED 9 // ******** ************ Variables globales ************************************ *********************************************** *********************************************** ************************************** ************************** // Modificación de usuario permitida en frecuencia =700; // Frecuencia en Hzint lower_bound =60; // Distancia en mmint upper_bound =200; // Distancia en mm // No modificarint buzz_time =250; // Tiempo en milisegundos para el zumbador justo al inicioint buzz_delay =280; // Tiempo en milisegundos para el retardo del zumbador justo al inicioint max_distance =400; // Argumento para el objeto en la biblioteca NewPingint i =0; int distancia; int umbral; Sonar NewPing (trig, echo, max_distance); // Instanciación del objeto "sonar" // ******************** Configuración ******************* *********************************************** *********************************************** *********************************************** ***************************************** // Esta función se ejecuta solo una vez setup () {Serial.begin (9600); // Permite el uso de un monitor en serie con una velocidad en baudios de 9600 // Declaración de tipo de E / S de pin pinMode (trig, OUTPUT); pinMode (eco, ENTRADA); pinMode (zumbador, SALIDA); pinMode (buzzer_LED, SALIDA); pinMode (ON_LED, SALIDA); escritura digital (ON_LED, ALTA); // Enciende el LED verde; Permanece encendido mientras la unidad está encendida // El zumbador suena 3 veces al encender el dispositivo mientras (i <3) {digitalWrite (buzzer_LED, HIGH); tono (zumbador, frecuencia, buzz_time); retraso (buzz_delay); i ++; } digitalWrite (buzzer_LED, LOW);} // ******************** Corre sin fin ***************** *********************************************** *********************************************** *********************************************** ************************************ bucle vacío () {distancia =sonar.ping_cm (); // El objeto "sonar" utiliza la función ping_cm () de la biblioteca, que devuelve un valor en cm. La distancia entonces toma ese valor umbral =analogRead (limpiaparabrisas); // Obtener el valor analógico del limpiador del potenciómetro umbral =mapa (umbral, 0, 1023, límite inferior, límite superior); // Traducir lecturas analógicas al rango de disparo. Actualizar los valores del umbral si (distancia! =0 &&distancia Piezas y carcasas personalizadas
Las 3 partes se guardan en un archivoEsquemas
Proceso de manufactura
- TinyML-Language Detector basado en Edge Impulse y Arduino
- Juego de giroscopio Arduino con MPU-6050
- Dados digitales Arduino
- Juego de ruleta DIY 37 LED
- ATtiny85 Mini Arcade:Serpiente
- Luz de escritorio reactiva de audio Arduino
- Coche robot inteligente de seguimiento facial
- Galvanoplastia con cobre
- NeoMatrix Arduino Pong
- Estación de temperatura portátil
- Creador de secuencias de luz