Ciclo 2 - Taller de Arduino - M.Torres, D.Torres, I.Solis, V.Varela

De Casiopea



TítuloTaller de Arduino
AsignaturaTaller de Fabricación
Del CursoTaller de Fabricación 2023
CarrerasDiseño
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.

Arduinodiegotorres.TDF(2).png

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

Arduinodiegotorres.TDF(6).jpeg Arduinodiegotorres.TDF(5).jpeg Arduinodiegotorres.TDF(4).jpeg Arduinodiegotorres.TDF(3).jpeg


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

Arduinodiegotorres.TDF(2).png

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.

Modelo fusión 360
Piezas AutoCAD
Modelofusiondimv2.png
Modelofusiondimv3.png
Modelofusiondimv4.png



Registro

Imágenes

ArduinoAcompañante Movil1.TDF.jpg ArduinoAcompañante Movil2.TDF.jpg ArduinoAcompañante Movil3.TDF.jpg ArduinoAcompañante Movil4.TDF.jpg

Video



Manual


Captura de Pantalla 2023-05-04 a la(s) 10.31.29.jpg

Referencias

  1. http://cdrbenitest.blogspot.com/2015/12/segundaentrega_4.html
  2. https://arduinoproyectos1.jimdofree.com/proyectos/carro-obstaculos/
  3. https://www.tinkercad.com/things/e9Fp7tNa3cV-copy-of-sensor-ultrasonico/editel?tenant=circuits
  4. https://proyectosconarduino.com/modulos/motor-driver-l298n/
  5. http://recursostic.educacion.es/observatorio/web/es/component/content/article/952-monografico-robot-bichos?start=3