You are on page 1of 16

INSTITUTO TECNOLGICO DE LA LAGUNA

DEPARTAMENTO METAL-MECNICA
ASIGNATURA: SENSORES INTELIGENTES

INGENIERA MECATRNICA

REPORTE DE PRCTICA #1:


SENSOR ULTRASNICO DE
DISTANCIA CON ARDUINO,
MOTOR DE PASOS Y LEDS

ALPHA SHALOM CRDENAS GONZLEZ FACILITADOR DE LA MATERIA: ING. ARIEL


N DE CONTROL: 13130728 LAZALDE RUELAS
FRANCISCO JAVIER GARCA MOTA
N DE CONTROL: 1310802 TORREN, COAHUILA
CARLOS ALEJANDRO JUREZ RODRGUEZ
N DE CONTROL: 13130750 FEBRERO DE 2017.
ROBERTO ELEAZAR HERNNDEZ MORA
N DE CONTROL: 13131285
.

I. Objetivo de la prctica.

Utilizando arduino, montar un sensor ultrasnico de distancia HC-SR04,


y dependiendo de la distancia que se encuentre girar hacia un lado o
hacia el otro el motor a pasos.
Adems de lo mencionado anteriormente agregar una serie por medio
de LEDs para indicar dichos sentidos.

II. Marco terico.


SENSOR ULTRASNICO.
El SR04 es un mdulo de sensores por ultrasonidos, desarrollado por Devantech
Ltd y comercializado en Espaa por Intplus S.L que es capaz de detectar objetos y
calcular la distancia a la que se encuentra en una rango de 3 a 250 cm.

De diminuto tamao, este dispositivo destaca por su bajo consumo y gran


precisin. Su aspecto fsico y conexiones se muestran en la siguiente figura.

Este sensor funciona por ultrasonidos y contiene toda la electrnica encargada de


hacer la medicin. Su uso es tan sencillo como enviar el pulso de arranque y medir
la anchura del pulso de retorno.

El sensor HC04 funciona emitiendo impulsos de ultrasonidos. Los impulsos


emitidos viajan a la velocidad del sonido hasta alcanzar un objeto; entonces el
sonido es reflejado y captado de nuevo por el receptor de ultrasonidos. Lo que
hace el controlador incorporado es emitir una rfaga de impulsos, a continuacin
empieza a contar el tiempo que tarda en llegar el eco. Este tiempo se traduce en
un pulso de eco de anchura proporcional a la distancia a la que se encuentra el
objeto.

La relacin entre la distancia medida y el ancho de pulso se muestra en la


siguiente figura. Por cada centmetro de distancia de anchura del pulso se
incrementa en

60s, siendo el rango de medida valido entre 180 s y 18m, correspondientes a 3


y 300 cm respectivamente.

MOTOR A PASOS.

Los motores paso a paso son un tipo especial de motores que permiten el movimiento de
su eje en ngulos muy precisos y por pasos, tanto a la izquierda como a la derecha.
Aplicando a ellos una secuencia de pulsos. Cada paso tiene un ngulo muy preciso,
determinado por la construccin del motor lo que permite realizar movimientos exactos.
Son utilizados para generar movimientos precisos, por ejemplo en robots, en equipos con
movimientos X-Y, entre otros.

Existen dos tipos de motores paso a paso:

Motores Unipolares: este tipo de motor tiene dos bobinas en cada uno de los estatores y
cada par de bobinas tienen un punto comn, es decir, tiene 5 6 terminales.

Motores Bipolares: este tipo de motor tiene dos bobinas y no poseen puntos
comunes, es decir tiene cuatro terminales. Para controlar este tipo de motor paso a paso
bipolar es necesaria usar 8 transistores o circuitos integrados especiales.

TABLILLA PROTOBOARD.

El protoboard o breadbord: Es una especie de tablero con orificios, en la cual se


pueden insertar componentes electrnicos y cables para armar circuitos. Como su nombre
lo indica, esta tableta sirve para experimentar con circuitos electrnicos, con lo que se
asegura el buen funcionamiento del mismo.

Estructura del protoboard: Bsicamente un protoboard se divide en tres regiones:


A) Canal central: Es la regin localizada en el medio del protoboard, se utiliza para
colocar los circuitos integrados.

B) Buses: Los buses se localizan en ambos extremos del protoboard, se representan por
las lneas rojas (buses positivos o de voltaje) y azules (buses negativos o de tierra) y
conducen de acuerdo a estas, no existe conexin fsica entre ellas. La fuente de poder
generalmente se conecta aqu.

C) Pistas: La pistas se localizan en la parte central del protoboard, se representan y


conducen segn las lneas rosas.

LEDS.
El LED, acrnimo de Light Emitting Diode, o diodo emisor de luz de estado slido (solid
state), constituye un tipo especial de semiconductor, cuya caracterstica principal es
convertir en luz la corriente elctrica de bajo voltaje que atraviesa su chip. Desde el punto
de vista fsico un LED comn se presenta como un bulbo miniaturizado, carente de
filamento o de cualquier otro tipo de elemento o material peligroso, con la ventaja sobre
otras tecnologas que no contamina el medio ambiente.

De acuerdo con las caractersticas de funcionamiento de cada LED, el chip puede operar
con una tensin o voltaje de polarizacin directa entre 1 y 4 V (volt) aproximadamente,
con una corriente que flucta entre 10 y 40 mA (miliampere), que puede variar tambin de
acuerdo con el tamao y color de luz que emite cada uno en particular.

La aplicacin de un voltaje o corriente de trabajo por encima del valor establecido por el
fabricante para cada diodo LED en particular puede llegar a acortar su vida til, o tambin
destruirlo.

A diferencia de las lmparas incandescentes, fluorescentes, halgenas y CFL que radian


la luz en todas direcciones de forma uniforme, los LEDs la emiten a partir de la superficie
superior del chip y la proyecta directamente en forma de cono, formando un ngulo entre
120 y 140 grados.

ARDUINO ONE.

Arduino (Estados Unidos) (Genuino a nivel internacional hasta octubre 2016), es una
compaa de hardware libre y una comunidad tecnolgica que disea y
manufactura placas computadora de desarrollo de hardware y software, compuesta
respectivamente por circuitos impresos que integran un microcontrolador y un entorno de
desarrollo (IDE), en donde se programa cada placa.

Arduino se enfoca en acercar y facilitar el uso de la electrnica y programacin de


sistemas embebidos en proyectos multidisciplinarios1. Toda la plataforma, tanto para sus
componentes de hardware como de software, son liberados con licencia de cdigo
abierto que permite libertad de acceso a ellos3 .

El hardware consiste en una placa de circuito impreso con un microcontrolador,


usualmente Atmel AVR, puertos digitales y analgicos de entrada/salida, los cuales
pueden conectarse a placas de expansin (shields), que amplan las caractersticas de
funcionamiento de la placa Arduino. Asimismo, posee un puerto de conexin USB desde
donde se puede alimentar la placa y establecer comunicacin con el computador.
El Arduino es una plataforma computacional fsica open-source basada en una simple
tarjeta de I/O y un entorno de desarrollo que implementa el lenguaje Processing/Wiring. El
Arduino Uno R3 puede ser utilizado para desarrollar objetos interactivos o puede ser
conectado a software de tu computadora (por ejemplo, Flash, Processing, MaxMSP). El
IDE open-source puede ser descargado gratuitamente (actualmente para Mac OS X,
Windows y Linux).

Caractersticas:

Microcontrolador ATmega328.

Voltaje de entrada 7-12V.

14 pines digitales de I/O (6 salidas PWM).

6 entradas anlogas.

32k de memoria Flash.

Reloj de 16MHz de velocidad.

JUMPERS.

En electrnica y en particular en informtica, un jumper o saltador es un elemento que


permite cerrar el circuito elctrico del que forma parte dos conexiones. Esto puede
hacerse mediante soldadura (se derrite suficiente estao para cerrar el circuito), soldando
un cable o alambre entre ambos puntos o, lo ms frecuente, conectado dos pines en
hilera o paralelo mediante una pieza de plstico que protege el material conductor que
cierra el circuito. Los ms habituales tienen tamaos de 2,54 mm, 2 mm y 1,27 mm.

El modo de funcionamiento del dispositivo, que es lo opuesto a la configuracin


por software, donde de distinto modo se llega al mismo resultado: cambiar la
configuracin, o modo de operacin del dispositivo.

III. Material y equipo.

Tablilla Protoboard.
Arduino One
Motor a pasos.
5 LEDs (colores a eleccin)
Sensor ultrasnico de distancia HC-SR04
Jumpers

IV. Procedimiento.
El procedimiento de funcionamiento a seguir para la realizacin de la prctica es el
siguiente:
DISTANCIA

Objeto a 10 cm.
Objeto a 20 cm.
(exactos)
(exactos)
Motor a pasos:
Motor a pasos:
Gira a la
Gira a izquierda
derecha

NOTA: Objeto a
cualquier otra
distancia distinta a
las indicadas. Motor
a pasos: Parado
SECUENCIA DE LEDS.

SI GIRA A LA IZQUIERDA:
Enceder el Led menos
significativo hasta llegar al #5.
Despues de eso apagarse
todos y volver a repetir el ciclo

SI GIRA A LA DERECHA:
Encender el Led menos
significativo y apagarlo,
continuar con el segundo y asi
sucesivamente hasta llegar al
ltimo. En esta secuencia nunca
existen dos o ms leds
encendidos a la vez.

V. Cdigo de programacin.
#include <NewPing.h>

#define TRIGGER_PIN 8 // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN 13 // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 200 // Maximum distance we want to ping for (in centimeters).
Maximum sensor distance is rated at 400-500cm.

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and


maximum distance.

void setup() {
Serial.begin(115200); // Open serial monitor at 115200 baud to see ping results.
}

void loop() {
delay(50); // Wait 50ms between pings (about 20 pings/sec). 29ms
should be the shortest delay between pings.
unsigned int uS = sonar.ping(); // Send ping, get ping time in microseconds (uS).
Serial.print("Distancia: ");
Serial.print(uS / US_ROUNDTRIP_CM); // Convert ping time to distance in cm and print
result (0 = outside set distance range)
Serial.println(" cm");
if (uS / US_ROUNDTRIP_CM == 10)
{
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
delay(10);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
delay(10);
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
delay(10);
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
delay(10);
digitalWrite(7,LOW); digitalWrite(3,HIGH); digitalWrite(4,LOW); digitalWrite(5,LOW);
digitalWrite(6,LOW);

digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
delay(10);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
delay(10);
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
delay(10);
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
delay(10);
digitalWrite(7,LOW); digitalWrite(3,LOW); digitalWrite(4,HIGH); digitalWrite(5,LOW);
digitalWrite(6,LOW);

digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
delay(10);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
delay(10);
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
delay(10);
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
delay(10);
digitalWrite(7,LOW); digitalWrite(3,LOW); digitalWrite(4,LOW); digitalWrite(5,HIGH);
digitalWrite(6,LOW);

digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
delay(10);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
delay(10);
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
delay(10);
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
delay(10);
digitalWrite(7,LOW); digitalWrite(3,LOW); digitalWrite(4,LOW); digitalWrite(5,LOW);
digitalWrite(6,HIGH);

digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
delay(10);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
delay(10);
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
delay(10);
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
delay(10);
digitalWrite(7,HIGH); digitalWrite(3,LOW); digitalWrite(4,LOW); digitalWrite(5,LOW);
digitalWrite(6,LOW);
}

else if (uS / US_ROUNDTRIP_CM == 20)


{
digitalWrite(9, HIGH);
digitalWrite(7,LOW); digitalWrite(3,LOW); digitalWrite(4,LOW); digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
delay(10);
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
delay(10);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
delay(10);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
delay(10);
digitalWrite(7,LOW); digitalWrite(3,HIGH); digitalWrite(4,LOW);
digitalWrite(5,LOW); digitalWrite(6,LOW);

digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
delay(10);
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
delay(10);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
delay(10);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
delay(10);
digitalWrite(7,LOW); digitalWrite(3,HIGH); digitalWrite(4,HIGH);
digitalWrite(5,LOW); digitalWrite(6,LOW);

digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
delay(10);
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
delay(10);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
delay(10);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
delay(10);
digitalWrite(7,LOW); digitalWrite(3,HIGH); digitalWrite(4,HIGH);
digitalWrite(5,HIGH); digitalWrite(6,LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
delay(10);
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
delay(10);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
delay(10);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
delay(10);
digitalWrite(7,LOW); digitalWrite(3,HIGH); digitalWrite(4,HIGH);
digitalWrite(5,HIGH); digitalWrite(6,HIGH);

digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
delay(10);
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
delay(10);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
delay(10);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
delay(10);
digitalWrite(7,HIGH); digitalWrite(3,HIGH); digitalWrite(4,HIGH);
digitalWrite(5,HIGH); digitalWrite(6,HIGH);

}
else
{
digitalWrite(2,LOW); digitalWrite(3,LOW); digitalWrite(4,LOW); digitalWrite(5,LOW);
digitalWrite(6,LOW); digitalWrite(7,LOW); digitalWrite(8,LOW); digitalWrite(9,LOW);
digitalWrite(10,LOW); digitalWrite(11,LOW); digitalWrite(12,LOW);
}
}

VI. Evidencias de prctica.


VII. Conclusiones generales.
El trabajo con distintos tipos de sensores en conjunto con Arduino es facilitado gracias a la
gran cantidad de informacin entre la comunidad de programadores y gracias a esto el
manejo de ellos se facilita mucho ms.
Para esta prctica utilizamos una librera para el manejo directo del sensor ultrasnico en
especfico y bast con agregar una condicin a la salida de este programa para llegar al
objetivo, el nico inconveniente con nuestro primer intento fueron los retrasos que tenan
que entrar en cada condicin para el manejo de los leds en conjunto con el giro del motor
ya que estos hacan que el motor se detuviera en cada ciclo.
Para esto la solucin rpida fue incorporar a cada una de las combinaciones de luces un
ciclo de giro del motor para as aminorar el tiempo de paro del mismo, esto caus que el
cdigo se extendiera bastante pero mejor el resultado final.

VII. Fuentes de informacin.

http://arduino.cl/arduino-uno/
https://es.wikipedia.org/wiki/Jumper_(inform%C3%A1tica)
https://electronilab.co/tienda/sensor-de-distancia-de-ultrasonido-hc-sr04/
https://www.zonamaker.com/arduino/modulos-sensores-y-
shields/ultrasonido-hc-sr04
https://es.wikipedia.org/wiki/Arduino
http://www.circuitoselectronicos.org/2007/10/el-protoboard-tableta-de-
experimentacin.html
https://es.wikipedia.org/wiki/Motor_paso_a_paso
https://www.330ohms.com/blogs/blog/85507012-motores-a-pasos-
unipolares-o-bipolares
https://es.wikipedia.org/wiki/Led

You might also like