COLEGIO NACIONAL DE EDUCACION PROFESIONAL
TECNICA
          PLANTEL SALINA CRUZ 155
MODULO: CONTRUCCION Y PROGRAMACION DE ROBOT
                     ´S
         ESPECIALIDAD: ELECTRONICA
               PRACTICA: #2
          ROBOT EVITA OBSTACULOS
NOMBRE DEL DOCENTE : RICARDO ANTONIO ORTIZ
                    CEL
ALUMNA: BERENICE SUNEM GOYTIA VILLAVICENCIO
                GRUPO: 5202
 SALINA CRUZ OAX.   16 DE   JUNIO   DEL 2018
Objetivo de la practica:
El objetivo principal es diseñar y programar un robot totalmente
autónomo capaz de detectar objetos de diferentes tamaños, formas,
colores, superficies y diferentes materiales para posteriormente
esquivar el mismo obstáculo y seguir avanzando hacia diferente
trayectoria, utilizando componentes electrónicos.
Marco teórico:
Arduino
Arduino es una plataforma de hardware libre, basada en una placa
 con un microcontrolador y un entorno de desarrollo (software),
 diseñada para facilitar el uso de la electrónica en proyectos
 multidisciplinares.
El hardware de Arduino consiste en una placa con                  un
microcontrolador   generalmente  Atmel   AVR    con   puertos     de
comunicación y puertos de entrada/salida. 
Por otro lado Arduino nos proporciona un   software consistente   en
un entorno de desarrollo (IDE) que implementa el lenguaje         de
programación de arduino, las herramientas para transferir         el
firmware al microcontrolador y el bootloader ejecutado en         la
placa. La principal característica del software y del lenguaje    de
programación es su sencillez y facilidad de uso.
¿Para qué sirve Arduino? Arduino se puede utilizar para crear
elementos autónomos, conectándose a dispositivos e interactuar
tanto con el hardware como con el software. Nos sirve tanto para
controlar un elemento
SHIELD ADAFRUIT MOTOR DRIVER L293D (Puente H).
Este puente fue diseñado por Adafruit para facilitar el control
de motores con Arduino. Posee 2 drivers L293D, manejados por un
conversor serial paralelo 74HC595. El shield es compatible con
Arduino UNO y Arduino Leonardo.
El conversor se expande 3 pines de Arduino a 8 pines necesarios
para manejar la dirección de los drivers. Las señales “enable”
de los drivers están conectadas directamente a los pines PWM de
Arduino, permitiendo controlar la velocidad de los motores.
 El Shield aporta:
   4 motores DC bidireccionales (con control de velocidad
     individual).
   O 2 motores paso a paso (unipolares y bipolares).
   Separación entre fuente de motores/fuente de Arduino.
   2 conexiones para servomotores (SG90).
   Conectores para los pines analógicos.
SENSOR HC-SR04 (sensor ultrasónico)
  los sensores de ultrasonido son      muy   útiles   para   medir
distancias y detectar obstáculos.
El funcionamiento es simple, envía una señal ultrasónica
inaudible y nos entrega el tiempo que demoro en ir y venir
hasta el obstáculo mas cercano que detecto.
Generalmente están conformados por dos cilindros puestos uno al
lado del otro, uno de ellos es quien emite la señal
ultrasónica, mientras que el otro es quien la recibe.
El sensor hc-sr04 en particular tiene una sensibilidad muy
buena del orden de los 3mm, teniendo en cuenta que la mayoría
de las aplicaciones donde este sensor es utilizado es para
medir o detectar obstáculos o distancias mayores a varios
centímetros, podemos decir que su sensibilidad es muy buena.
necesitamos algún micro controlador para leer los datos que nos
entrega.
Material y equipo:
   1 chasis.
   14 tornillos 10 tuercas y 4 piezas auxiliares para el
    montaje.
   2 motores DC
   2 ruedas.
   1 rueda libre/loca.
   1 interruptor.
   2 led’s verde/naranja.
   Mini protoboard de 170 puntos
   1 carcasa para 4 pilas de tipo AA.
   1 carcasa de 2 pilas de tipo AA.
   6 pilas tipo AA.
   1 placa ARDUINO 1R3.
   Sensor HC-SR04 (sensor ultrasónico).
   1 cable de alimentación del Arduino.
   Shield Adafruit motor driver L293D.
   cables jumpers macho-macho (los necesarios).
   Estaño/ cautín.
   separadores de metal.
   Push down.
   Kola loca
      Para el programa:
   1 laptop
   Programa de arduino IDE instalado (cualquier versión)
   Código en lenguaje C a utilizar
Desarrollo:
Una vez teniendo el chasis del robot pasamos a armarlo siguiendo
los pasos siguientes:
( con la ayuda del manual del fabricante)
 1.    Verificar si las piezas del kit, están en correcto estado,
      incluyendo los motores que funcionan de manera correcta.
  2. Retiramos la pegatina marrón que cubre al chasis.
  3. Instalamos los soportes aupara el montaje de los motores.
  4. Introducimos el encoder por las laterales de las bornas de
      cada un de los motores y colocamos junto al soporte de el
      motor izquierdo y el derecho.
  5. Con ayuda de estaño y cautín; Soldamos los cables a los
      motores.
  6. Colocamos es soporte exterior y atornillamos la reductora.
  7. Atornillamos la rueda libre/loca a la base del chasis.
  8. Montamos el Arduino al chasis con la ayuda de los
      separadores de metal.
  9. Atornillamos las piezas necesarias y las ensamblamos al
      resto de nuestra estructura.
 10. Después montamos la electrónica sobre el chasis de forma que
    todo quede ordenado y accesible, para que así resulte más
    fácil localizar y resolver cualquier fallo si este apareciera.
 11. Ya una vez decidido bien el orden lo fijamos con ayuda de
    kola loca.
 12. Conectamos en forma serial ambas carcasas de las pilas la de
    4 y la de 2 para que llegue a los 7.2 v.
 13. Colocamos el push Down, interrumpiendo la corriente, para
    que sirva como interruptor de encendido y apagado.
 14. Conectar el sensor HC-SR04 (ultrasónico), en la mini
   protoboard de manera centrada.
 15. Conectamos los pines dl Arduino a al sensor de la siguiente
   forma: (Vcc del sensor con 5v del Arduino pin 4) (GND del
   sensor con GND del Arduino) (Trig del sensor con el pin 12
   del Arduino) y por ultimo (Echo del sensor al pin 13 del
   Arduino)
 16. Montamos el puente H con cuidado, presionándolo de manera
   correcta.
 17. Pasamos a la conexión de los motores.
 18. Conectamos en M1 el motor de la derecha.
 19. Conectamos el M4 en el motor izquierdo.
 20. Conectamos las baterías a una alimentación externa con el
   jumper puesto, con la polarización correcta para alimentar
   ambas cosas tanto el puente H y Arduino.
Programar el Arduino
Para programar el Arduino seguimos los siguientes pasos:
   1. Conseguimos en la electrónica el Arduino.
   2. Instalamos en una laptop      el programa del Arduino IDE
      (instalado para cualquier versión)
   3. Después buscamos en fuentes confiables una manera de
      programar de una manera mas fácil
   4. De igual manera consultamos a nuestro docente para aclarar
      las dudas sobre la programación.
   5. Una vez que estábamos decididos con la programación a
      ocupar.
   6. Cargamos el código programador.
   7. Verificamos errores de compilación.
   8. Corregimos errores ortográficos que existían en el programa.
   9. Cargamos el programa al Arduino.
Código programador:
#include <AFMotor.h>
#include <AFMotor.h> // importamos la libreria del motor shield
adafruit
#define DisparoPin 12 // Definimos los pines del sensor de ultra
sonido
#define EcoPin 13 // Definimos los pines del sensor de ultra
sonido
#define ledcito 3
#define leD 2
AF_DCMotor motor1(1,MOTOR12_64KHZ); // Seteamos la frecuencia de
PWM de los motores
AF_DCMotor motor4(4,MOTOR12_64KHZ); // Para motores 1 y 2 puede
ser 64, 8, 2 y 1KHZ
// Para motores 3 y 4 solo se esta disponible 64, 8 y 1KHZ.
 void setup() {
  Serial.begin(9600); // Empezamos la comunicacion serial
 pinMode(DisparoPin, OUTPUT); // Setemos el Pin de trigger como
salida (Pin que envia las ondas sonoras)
pinMode(EcoPin, INPUT); // Setemos el Pin de Eco como entrada
(Pin que recibe las ondas sonoras)
pinMode(ledcito,OUTPUT);
pinMode(leD, OUTPUT);
motor1.setSpeed(200); // Establecemos la velocidad de los
motores, entre 0-255
motor4.setSpeed (200);
}
void loop() {
long duration=0, distance=40; // Creamos 2 variables de tamaño
extendido para almacenar numeros
  digitalWrite(DisparoPin, LOW); // Enviamos a bajo el Pin de
Trigger
  delayMicroseconds(2); // Un delays es requerido para que la
operacion del sensor se complete
digitalWrite(DisparoPin, HIGH); // Enviamos a alto el Pin de
Trigger
delayMicroseconds(10); // Mantenemos en alto el Pin de Trigger
por 10 us esto es necesario
  digitalWrite(DisparoPin, LOW); // Enviamos a bajo el Pin de
Trigger
  duration = pulseIn(EcoPin, HIGH); // Calculamos la duracion del
Pulso
  distance = (duration/2) / 29.1; // Convertimos la distancia en
centimetros (velocidad Sonido 340m/s o 29.1 us x cm)
if (distance > 25) { // Si la distancia al objeto es meyor a 25
cm Gire a la izquierda
  digitalWrite(ledcito,HIGH);
  digitalWrite(leD,LOW);
motor1.run(FORWARD); // Avanzo el motor1 - motor de la derecha
    motor4.run (FORWARD); // Giro en sentido inverso el motor2 -
motor de la izquierda
    delay (50); // Establecemos el tiempo de giro a la izquierda
// Las opciones son FORWARD, BACKWARD, RELEASE (DETENER)
}
else {
  digitalWrite(ledcito,LOW);
  digitalWrite(leD,HIGH);
motor1.run(BACKWARD); // Avanzo el motor1 - motor de la derecha
    motor4.run (BACKWARD); // Giro en sentido inverso el motor2 -
motor de la izquierda
delay(300);
motor1.run(BACKWARD); // Si no hay objetos detectados, avance
hacia adelante
   motor4.run(FORWARD);
delay (150); // Seteamos un delay para estabilizar los motores
}
}
Resultados/Evidencia.
Para obtener el resultado final de este brazo robótico, antes
tuvimos que pasar por varios pasos; Desde conseguir el brazo en
la electrónica, hasta desarrollar de manera física el diagrama de
funcionamiento para que operara de manera correcta, ya que
teníamos distintas opciones para operarlo, de las cuales
destacaron: operarlo con el PIC 16F84A, operarlo con ayuda
justick’s o de lo contrario operarlo con ayuda de potenciómetros
de 10 kilos.
Después de platicar en equipo, decidimos que lo mejor seria
operarlo con potenciómetros, ya que de esta manera lo
programaríamos y lo moveríamos de la manera y a los grados que
fuese mejor para el objeto que moveríamos de lugar, además de que
seria de forma manual, lo cual nos daría mucha ventaja a la hora
de sujetar objetos y moverlo de posición.
Como resultado final obtuvimos el satisfactorio proyecto de un
brazo robótico, operado por elementos electrónicos.
Observaciones y comentarios:
       o Es de suma importancia no apretar los tornillos
         excesivamente, ya que, si eso sucediera, las
         extremidades del brazo no tendrían un buen
         desenvolvimiento, ya que estaría o muy apretado o de lo
         contrario tan suelto que no haría una correcta
         trasladación de objetos.
       o Al momento de colocar los servomotores a el cuerpo del
         robot, tenemos que checar los ángulos y la correcta
         posición de los mismos.
       o No utilizar grasa, pensando que de esta manera será mas
         fácil mover las extremidades del brazo, por que la
         grasa solo atraerá polvo.
Conclusión:
En conclusión esta practica me sirvió para conocer mas elementos
electrónicos y saber su correcto funcionamiento y de igual manera
saber los pasos necesarios que tendremos que seguir para
operarlos de manera adecuada, además de reflexionar en la gran
ayuda de una extremidad como un brazo.
También aprendí nuevas librerías en lenguaje C, asi como
programar el brazo por Arduino, y saber el funcionamiento de las
opciones dentro de la aplicación.