Ciclo 2 - Taller de Arduino - M.Torres, D.Torres, I.Solis, V.Varela
Título | Taller de Arduino |
---|---|
Asignatura | Taller de Fabricación |
Del Curso | Taller de Fabricación 2023 |
Carreras | Diseño |
Nº | 02 |
Alumno(s) | Valeria Varela, Isidora Solís Quintanilla, Mariana Consuelo Torres, Diego Torres |
Acompañante Móvil
Taller de Arduino
A partir de cuatro cápsulas de un taller de arduino, se plantea presentar un proyecto, que como objetivo tiene que funcione un motor mediante una interacción, esto a base también del uso de Arduino, los motores y los componentes electrónicos que se estimen convenientes para crear el circuito del objeto.
Proyecto
Mediante el uso de sensor ultrasónico y 2 Motores DC se fabrica un acompañante móvil, este avanza, retrocede y gira en ambas direcciones, a través de los motores accionados por el sensor que captan al cuerpo a una distancia determinada, por ende dependiendo de la distancia del cuerpo, este actuaría de diferentes formas.
Materiales
- Arduino Uno
- Sensor Ultrasónico
- 2 Motores RC
- 2 Ruedas de motor DC
- Rueda recta
- Driver controlador de motores l293d
- Mini Protoboard
- Cables Jumper
- 2 conectores de batería
- 2 Baterías 9v
Proceso
Se comienza este proceso de construcción con el código, puesto que se querían utilizar las ruedas, y el sensor ultrasónico, por ende desde esa base se construyó el código, el cual en un comienzo solo tenía como objetivo que avanzara al activarse el sensor, dejándolo con un rango de distancia desde 0 a 100.
Esquema de conexiones
Se esquematiza las conexiones en tinkercad, sin embargo esta plataforma no cuenta con el Driver utilizado, pero se logra captar las uniones y el orden de los cables.
Código de programación
Este fue el código utilizado en un comienzo, el cual solo permite que el móvil avance hacia adelante cuando la distancia de un cuerpo se encuentra en un rango entre 0 a 100.
#include <Wire.h> // Definir los pines del sensor ultrasónico const int triggerPin = 9; const int echoPin = 10; // Definir los pines del controlador de motores const int motorAPin1 = 2; const int motorAPin2 = 3; const int motorBPin1 = 4; const int motorBPin2 = 5; void setup() { // Configurar los pines del sensor ultrasónico pinMode(triggerPin, OUTPUT); pinMode(echoPin, INPUT); // Configurar los pines del controlador de motores como salida pinMode(motorAPin1, OUTPUT); pinMode(motorAPin2, OUTPUT); pinMode(motorBPin1, OUTPUT); pinMode(motorBPin2, OUTPUT); // Iniciar la comunicación serie Serial.begin(9600); } void loop() { // Generar un pulso de 10 microsegundos en el pin de trigger digitalWrite(triggerPin, LOW); delayMicroseconds(2); digitalWrite(triggerPin, HIGH); delayMicroseconds(10); digitalWrite(triggerPin, LOW); // Medir el tiempo que tarda en llegar el eco long duration = pulseIn(echoPin, HIGH); // Calcular la distancia en centímetros float distance = duration * 0.034 / 2; // Mostrar la distancia en la consola serie Serial.print("Distancia: "); Serial.print(distance); Serial.println(" cm"); // Controlar la velocidad de los motores en función de la distancia medida if (distance == 0) { // Detener los motores digitalWrite(motorAPin1, LOW); digitalWrite(motorAPin2, LOW); digitalWrite(motorBPin1, LOW); digitalWrite(motorBPin2, LOW); } else if (distance > 0 && distance <= 100) { digitalWrite(motorAPin1, HIGH); digitalWrite(motorAPin2, LOW); digitalWrite(motorBPin1, HIGH); digitalWrite(motorBPin2, LOW); } else { digitalWrite(motorAPin1, LOW); digitalWrite(motorAPin2, LOW); digitalWrite(motorBPin1, LOW); digitalWrite(motorBPin2, LOW); } // Esperar 500 milisegundos antes de realizar otra medición delay(500); }
Registro
Imágenes
Video
Propuesta Final
La segunda iteración y final consiste en una modificación del código que permite al acompañante móvil moverse en diferentes direcciones dependiendo de los rangos de distancia que captados por el sensor.
Materiales
- Arduino Uno
- Sensor Ultrasónico
- 2 Motores DC
- Ruedas de motor DC
- Rueda bola loca
- Driver controlador de motores l293d
- Mini Protoboard
- Cables Jumper
- 2 conectores de batería
- 2 Baterías 9v
Esquema de conexiones
Código de programación
Se modifica el código agregando variables "if", que son los que determinan los rangos y sus diferentes acciones
#include <Wire.h> // Definir los pines del sensor ultrasónico const int triggerPin = 9; const int echoPin = 10; // Definir los pines del controlador de motores const int motorAPin1 = 2; const int motorAPin2 = 3; const int motorBPin1 = 4; const int motorBPin2 = 5; void setup() { // Configurar los pines del sensor ultrasónico pinMode(triggerPin, OUTPUT); pinMode(echoPin, INPUT); // Configurar los pines del controlador de motores como salida pinMode(motorAPin1, OUTPUT); pinMode(motorAPin2, OUTPUT); pinMode(motorBPin1, OUTPUT); pinMode(motorBPin2, OUTPUT); // Iniciar la comunicación serie Serial.begin(9600); } void loop() { // Generar un pulso de 10 microsegundos en el pin de trigger digitalWrite(triggerPin, LOW); delayMicroseconds(2); digitalWrite(triggerPin, HIGH); delayMicroseconds(10); digitalWrite(triggerPin, LOW); // Medir el tiempo que tarda en llegar el eco long duration = pulseIn(echoPin, HIGH); // Calcular la distancia en centímetros float distance = duration * 0.034 / 2; // Mostrar la distancia en la consola serie Serial.print("Distancia: "); Serial.print(distance); Serial.println(" cm"); // Controlar la velocidad de los motores en función de la distancia medida if (distance == 0) { // Detener los motores digitalWrite(motorAPin1, LOW); digitalWrite(motorAPin2, LOW); digitalWrite(motorBPin1, LOW); digitalWrite(motorBPin2, LOW); } //Retroceda else if (distance > 0 && distance <= 35) { digitalWrite(motorAPin1, LOW); digitalWrite(motorAPin2, HIGH); digitalWrite(motorBPin1, LOW); digitalWrite(motorBPin2, HIGH); } //Gire Izquierda else if (distance > 40 && distance <= 75) { digitalWrite(motorAPin1, HIGH); digitalWrite(motorAPin2, LOW); digitalWrite(motorBPin1, LOW); digitalWrite(motorBPin2, HIGH); } //Avance recto else if (distance > 80 && distance <= 115) { digitalWrite(motorAPin1, HIGH); digitalWrite(motorAPin2, LOW); digitalWrite(motorBPin1, HIGH); digitalWrite(motorBPin2, LOW); } else { digitalWrite(motorAPin1, LOW); digitalWrite(motorAPin2, LOW); digitalWrite(motorBPin1, LOW); digitalWrite(motorBPin2, LOW); } // Esperar 500 milisegundos antes de realizar otra medición delay(100); }
Diseño Forma
A partir del prototipo se avanza en la forma del móvil, principalmente con el fin de que cada componente utilizado para el funcionamiento tenga su lugar y espacio, manteniendo un orden y así evitando que cables se suelten o enreden. Este modelo fue realizado en fusión 360, luego exportado a autocad y finalmente cortado en la laser, en un cartón piedra negro.
Registro
Imágenes
Video
Manual
Referencias
- http://cdrbenitest.blogspot.com/2015/12/segundaentrega_4.html
- https://arduinoproyectos1.jimdofree.com/proyectos/carro-obstaculos/
- https://www.tinkercad.com/things/e9Fp7tNa3cV-copy-of-sensor-ultrasonico/editel?tenant=circuits
- https://proyectosconarduino.com/modulos/motor-driver-l298n/
- http://recursostic.educacion.es/observatorio/web/es/component/content/article/952-monografico-robot-bichos?start=3