You are on page 1of 37

Manual de Practicas Arduino UNO

Manual de Practicas Arduino UNO


M.I.E Fernando Malagn Gonzlez
Ing. Juan Carlos Nuez Dorantes

Elaboro: | MIE Fernando Malagn Gonzlez


ING. Juan Carlos Nuez Dorantes

Manual de Practicas Arduino UNO

Contenido
1.

LUZ INTERMITENTE ........................................................................................................................................ 3

2.

ALARMA ........................................................................................................................................................ 5

3.

SECUENCIA BSICA DE 3 LEDS ......................................................................................................................... 7

4.

POTENCIMETRO. LECTURA DE SEAL ANALGICA ....................................................................................... 9

5.

ESTRELLA FUGAZ ......................................................................................................................................... 12

6.

PUERTO SERIAL ............................................................................................................................................ 15

7.

ENCENDER Y APAGAR UN LED CON EL PUERTO SERIE ................................................................................... 16

8.

CONTADOR ................................................................................................................................................. 18

9.

ENTRADA ANALGICA ................................................................................................................................. 20

10.

INDICADOR DE NIVEL ............................................................................................................................... 22

11.

ENCENDIDO Y APAGADO DE UNA LUZ DE MANERA ANALGICA .............................................................. 24

12.

CONTROL DE ILUMINACIN .................................................................................................................... 26

13.

VMETRO ............................................................................................................................................... 28

14.

CONTROL DE MOTOR DC CON L293 ........................................................................................................ 32

15.

UTILIZA UN REL PARA ENCENDER DISPOSITIVOS DE AC .......................................................................... 36

Nota: Los materiales recogidos en este documento, listados de cdigo y algunos textos
explicativos han sido recogidos en la pagina Web oficial de Arduino (http://www.arduino.cc/es/
y http://www.arduino.cc), correspondiendo al autor de este documento la labor de compilacin,
traduccin e incorporacin de imgenes, organigramas y esquemas de funcionamiento.

Elaboro: | MIE Fernando Malagn Gonzlez


ING. Juan Carlos Nuez Dorantes

Manual de Practicas Arduino UNO


1. Luz Intermitente
Se realizar un ejercicio bsico que consiste en encender y apagar un Led,
conectado en el PIN 10 de Arduino UNO, el cual configuramos como salida.
El tiempo de encendido y apagado es de 1 segundo.
Nota: Se debe colocar una resistencia de 220 en serie con el diodo Led.

Figura 1 Conexin de Led en PIN 10

Elaboro: | MIE Fernando Malagn Gonzlez


ING. Juan Carlos Nuez Dorantes

Manual de Practicas Arduino UNO


PROGRAMACIN

/* LUZ Intermitente
*
Ejemplo bsico con Arduino UNO. Encendido y apagado de un led
con un retardo de 1 sg. usando el PIN 10 como salida.
*/
int ledPin = 10;
// Definicin de la salida en el PIN 10
void setup() //Configuracin
{
pinMode(ledPin, OUTPUT);
// Designa la salida digital al PIN 10
}
void loop() // Bucle de funcionamiento
{
digitalWrite(ledPin, HIGH);
// activa el LED
delay(1000);
// espera 1 seg. (Tiempo encendido)
digitalWrite(ledPin, LOW);
// desactiva el LED
delay(1000);
// espera 1 seg. (Tiempo apagado)
}

Elaboro: | MIE Fernando Malagn Gonzlez


ING. Juan Carlos Nuez Dorantes

Manual de Practicas Arduino UNO

2. Alarma
Se realizar un ejercicio bsico para simular un sistema de alarma, el cual
consiste en presionar un microswitch colocado en el PIN 5 y un Led
colocado en el PIN 10, el cual encender por lapsos de 200
milisegundos, siempre y cuando se mantenga presionado el microswitch.

Figura 2 Conexin para simular un sistema de alarma


5

Elaboro: | MIE Fernando Malagn Gonzlez


ING. Juan Carlos Nuez Dorantes

Manual de Practicas Arduino UNO


PROGRAMACIN

/*
*Simulacin de un Sistema de alarma, activada por un microswitch en el PIN5
*/
int ledPin= 10; // Definicin de la salida en el PIN 10
int inPin= 5; Seleccin del PIN 5 conectado al microswitch
int val= 0; // Variable auxiliar
void setup() {
pinMode(ledPin, OUTPUT); // Declara el PIN 10 como salida
pinMode(inPin, INPUT); // Declara el PIN 5 como entrada
}
void loop(){
val = digitalRead(inPin); // lee valor de entrada
if (val== HIGH) { // verifica si el valor ledo es 1(botn presionado)
digitalWrite(ledPin, LOW); // parpadea el LED
delay(200);
digitalWrite(ledPin, HIGH);
delay(200);
} else
{
digitalWrite(ledPin, LOW); // pone el LED en OFF
}
}

Elaboro: | MIE Fernando Malagn Gonzlez


ING. Juan Carlos Nuez Dorantes

Manual de Practicas Arduino UNO

3. Secuencia Bsica de 3 LEDs


Realizar un ejercicio para encender y apagar 3 LEDs colocados en las
salidas 5, 6 y 7 (PIN5, PIN6 y PIN7) con una cadencia de 200 ms. Las
variables asignadas a cada led son ledPin1, ledPin2 y ledPin3.|

Figura 3 Conexin de 3 LEDS

Elaboro: | MIE Fernando Malagn Gonzlez


ING. Juan Carlos Nuez Dorantes

Manual de Practicas Arduino UNO


PROGRAMACIN
/*Encendido y apagado de 3 LEDs
*/
int ledPin1 = 5; // Define las salidas de los LEDs
int ledPin2 = 6;
int ledPin3 = 7;
void setup() { // Configura las SALIDAS
pinMode(ledPin1, OUTPUT); // declarar LEDs como SALIDAS
pinMode(ledPin2,OUTPUT);
pinMode(ledPin3, OUTPUT);
digitalWrite(ledPin1, LOW); // Apaga los LEDs
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
}
void loop(){ //Bucle de Funcionamiento
digitalWrite(ledPin1, HIGH); // Apaga y enciende los leds cada 200 ms
delay(200);
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, HIGH);
delay(200);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, HIGH);
delay(200);
digitalWrite(ledPin3, LOW);
}

Elaboro: | MIE Fernando Malagn Gonzlez


ING. Juan Carlos Nuez Dorantes

Manual de Practicas Arduino UNO

4. Potencimetro. Lectura de Seal Analgica


El potencimetro es un dispositivo electromecnico que consta de una
resistencia de valor fijo sobre la que se desplaza un contacto deslizante, el
cursor, que la divide elctricamente.
Un potencimetro es especificado por su resistencia total, R, entre los
terminales externos 1 y 3; El movimiento del cursor origina un cambio en la
resistencia medida entre el terminal central, 2, y uno cualquiera de los
extremos.
Este cambio de resistencia puede utilizarse para medir desplazamientos
lineales o angulares de una pieza acoplada al cursor.
Se conectan en paralelo al circuito y se comporta como un divisor de
tensin.
Un potencimetro tambin puede ser usado como una resistencia variable
de dos terminales, en ese caso, se cortocircuitan dos de las tres patas del
potencimetro.
Ejemplo:

Elaboro: | MIE Fernando Malagn Gonzlez


ING. Juan Carlos Nuez Dorantes

Manual de Practicas Arduino UNO

Circuito:
Se conectan tres cables a la tarjeta Arduino. El primero va a tierra
desde el terminal 1 del potencimetro. El terminal 3 va a la salida de 5
voltios. La terminal 2 va desde la entrada analgica #2 hasta la terminal
central del potencimetro.
Girando el dial o ajustando el potencimetro, cambiamos el valor de
la resistencia variable. Esto produce oscilaciones dentro del rango de 5 y
0 voltios, que son capturados por la entrada analgica.

10

Figura 4 Conexin Potencimetro

Elaboro: | MIE Fernando Malagn Gonzlez


ING. Juan Carlos Nuez Dorantes

Manual de Practicas Arduino UNO

PROGRAMACIN
/*
*
*
*
*

Potencimetro
Enciende y apaga un LED conectado al pin digital #10;
La cantidad de tiempo que el LED parpadear depende del
valor obtenido mediante analogRead(). En este caso al pin 2 *
*/
int potPin = 2; // seleccionar el pin de entrada analgico para el potencimetro
int ledPin = 10; // seleccionar el pin de salida digital para el LED
int val = 0; // variable para almacenar el valor capturado desde el sensor
void setup() {
pinMode(ledPin, OUTPUT); // declara el ledPin en modo salida
}
void loop() {
val = analogRead(potPin);

// lee el valor del sensor

digitalWrite(ledPin, HIGH); // enciende LED


delay(val); // detiene el programa por un tiempo val
digitalWrite(ledPin, LOW); // apaga el LED
delay(val);
}

// detiene el programa por un tiempo val

11

Elaboro: | MIE Fernando Malagn Gonzlez


ING. Juan Carlos Nuez Dorantes

Manual de Practicas Arduino UNO

5. Estrella Fugaz
Este ejercicio muestra cmo realizar un rayo de luz, o ms
poticamente, una estrella fugaz, movindose a travs de una lnea de
LEDS. Podremos configurar tanto la velocidad de la estrella, as como la
longitud de la cola. Al final, parecer como si un rayo slido cruzase la
lnea de LEDS.
Hay que conectar 11 LEDS a los pines digitales de la placa a travs
de una resistencias de 220 tal y como se muestra en la Figura 5.

12

Figura 5 Conexin de 10 Leds formando una estrella fugaz

Elaboro: | MIE Fernando Malagn Gonzlez


ING. Juan Carlos Nuez Dorantes

Manual de Practicas Arduino UNO

El programa comienza encendiendo LEDS hasta que llegue al nmero de


LEDS establecido para la cola. En ese momento seguir encendiendo
LEDS hacia la izquierda (si se monta tal y como se muestra en la
fotografa inferior), para mantener el movimiento de la estrella, al mismo
tiempo que apaga LEDS por la derecha, para asegurarnos de que vemos
la cola. De otra forma seguira encendiendo LEDS hasta encenderlos
todos. Esto ocurre cuando el tamao de la cola es igual o mayor que el
nmero de LEDS.
El tamao de la cola debera ser relativamente pequeo en comparacin
con el nmero de LEDS de forma que podamos ver la estrella.
PROGRAMACIN

/* Estrella fugaz
*-------------* Muestra mediante un loop una estrella fugaz que es dibujada en una lnea de LED-s
directamente conectados a la placa Arduino. Puedes controlar la velocidad a la que
la estrella se mueve gracias a una variable llamada "waitNextLed". Tambin puedes
controlar la longitud de la cola de la estrella a travs de la variable "tail length"
*/
// Declaracin de los PIN-es mediante un array
int pinArray [] = { 2,3,4,5,6,7,8,9,10,11,12 };
int controlLed = 13;// LED de control
int waitNextLed = 100;// Tiempo antes de encender el siguiente LED
int tailLength = 4; // Nmero de LED-s conectados (que es tambin el tamao del array)
int lineSize = 11;

13

Elaboro: | MIE Fernando Malagn Gonzlez


ING. Juan Carlos Nuez Dorantes

Manual de Practicas Arduino UNO

void setup() // Configuracin de los PIN-es como salida digital


{
int i;
pinMode (controlLed, OUTPUT); for (i=0; i< lineSize; i++)
{
pinMode(pinArray[i], OUTPUT);
}
}
void loop()
{
int i; // Se establece la longitud de la cola en un contador
int tailCounter = tailLength;
// Se enciende el LED de control para indicar el inicio del loop
digitalWrite(controlLed, HIGH); for (i=0; i<lineSize; i++)
{
digitalWrite(pinArray[i],HIGH); // Se encienden consecutivamente los LED
// Esta variable de tiempo controla la velocidad a la que se mueve la estrella
delay(waitNextLed); if (tailCounter == 0)
{
// Se apagan los LED-s en funcin de la longitud de la cola.
digitalWrite(pinArray[i-tailLength],LOW);
}
else
if (tailCounter > 0) tailCounter--;
}
for (i=(lineSize-tailLength); i<lineSize; i++)
{
digitalWrite(pinArray[i],LOW); // Se apagan los LED
// Esta variable de tiempo controla la velocidad a la que se mueve la estrella
delay(waitNextLed);
}
}

14

Elaboro: | MIE Fernando Malagn Gonzlez


ING. Juan Carlos Nuez Dorantes

Manual de Practicas Arduino UNO

6. Puerto Serial
En esta prctica se obtendrn valores desde el puerto serial, que en
posteriores prcticas se utilizaran para distintas aplicaciones. Al
utilizar el puerto serial, podemos visualizar los valores enviados a
travs del Serial Monitor.
Cabe mencionar que la arduino lee valores en cdigo ASCII, los
cuales podemos identificar directamente en el Serial Monitor o
tambin podemos apoyarnos en una lista donde aparecen las
equivalencias del cdigo ASCII.

Figura 6 Monitor Puerto Serial

Nota: Hay que seleccionar de manera correcto el puerto serial, donde


est conectada la tarjeta Arduino.
PROGRAMACIN
void setup()
{
// Iniciamos el serial port en 9600 bps:
Serial.begin(9600);
}
void loop()
{
if (Serial.available() >0){ //habilitamos el Puerto serial
int valor = Serial.read();// Guardamos el valor ledo del puerto serie
Serial.println(valor); //muestra el valor obtenido del serial port
}
}
Elaboro: | MIE Fernando Malagn Gonzlez
ING. Juan Carlos Nuez Dorantes

15

Manual de Practicas Arduino UNO

7. Encender y apagar un Led con el Puerto Serie


En esta prctica se encender y apagara un led desde el puerto serie,
utilizando como salida digital el PIN10. Cuando el usuario envi el nmero 1
encender el led y cuando envi el nmero 2 el led se apagara.
Nota: Recordar que la arduino lee los valores en cdigo ASCII y que el
nmero 1 equivale al 49 y el numero 2 equivale al 50.

Figura 7 Conexin del PIN10


16

Elaboro: | MIE Fernando Malagn Gonzlez


ING. Juan Carlos Nuez Dorantes

Manual de Practicas Arduino UNO

PROGRAMACION
int led = 10; // declaramos el PIN 10
void setup()
{
// iniciamos serial port en 9600 bps:
Serial.begin(9600);
pinMode(led,OUTPUT);// declaramos el PIN10 como salida
}
void loop()
{
if (Serial.available() >0){
int inByte = Serial.read();
Serial.println(inByte); // imprime el valor leido del serial port
if (inByte == 49){
digitalWrite(led,HIGH);
}
if(inByte == 50){
digitalWrite(led,LOW);
}
}
}

17

Elaboro: | MIE Fernando Malagn Gonzlez


ING. Juan Carlos Nuez Dorantes

Manual de Practicas Arduino UNO


8. Contador
Se trata de contar las veces que se pulsa un botn conectado en la
entrada PIN 5 de Arduino, cada vez que contamos encendemos el
led conectado en la salida PIN 10. El valor de la variable que
almacena el nmero de impulsos generados se enva al PC para que se
visualice en la pantalla.
La conexin es similar, a la que se utiliz para conectar la simulacin
del circuito de alarma.

Figura 8 Conexin para realizar un contador


18

Elaboro: | MIE Fernando Malagn Gonzlez


ING. Juan Carlos Nuez Dorantes

Manual de Practicas Arduino UNO


PROGRAMACION

/* Programa Contador
* Detecta si el botn conectado a la entrada 5 ha sido presionado y
enciende el LED
* Enva al PC el valor de la variable de cuenta ""Contador" va
puerto serie.
*/
int LED = 10; int Boton = 5; int valor = 0;
int contador = 0;
int estadoanteriorboton = 0;
void setup()
{
Serial. begin (9600);
// Configura velocidad de transmisin a 9600
pinMode(LED, OUTPUT); // inicializa como salida digital el pin 10
pinMode(Boton, INPUT); // inicializa como entrada digital el 5
}
void loop()
{
valor = digitalRead(Boton); // lee el valor de la entrada digital pin 7
digitalWrite(LED, valor);
if(valor != estadoanteriorboton)
{
if (valor == 1)
{
contador++; printInteger(contador);
serialWrite(10);
}
}
estadoanteriorboton = valor;
}

19

Elaboro: | MIE Fernando Malagn Gonzlez


ING. Juan Carlos Nuez Dorantes

Manual de Practicas Arduino UNO


9. Entrada Analgica
En esta prctica se leer una entrada analgica (PIN A2) y mediante el
puerto serial se enviara el valor ledo al PC para visualizarlo. Para
realizar esta prctica es necesario un potencimetro de 10k, y se
realizara la conexin como se muestra en la siguiente imagen.

Figura 9 Lectura de Seal analgica

20

Elaboro: | MIE Fernando Malagn Gonzlez


ING. Juan Carlos Nuez Dorantes

Manual de Practicas Arduino UNO


PROGRAMACION
/* Entrada Analgica */
int potPin = A2; // selecciona el pin de entrada para colocar el potencimetro
int val = 0; // variable para almacenar el valor ledo por la entrada analgica
void setup() {
beginSerial(9600);
}
void loop()
{
val = analogRead(potPin); // lee el valor del canal de ENTRADA analgica
Serial.println(val); // Enva al PC el valor analgico ledo y lo muestra en
pantalla
delay(100);
}

21

Elaboro: | MIE Fernando Malagn Gonzlez


ING. Juan Carlos Nuez Dorantes

Manual de Practicas Arduino UNO


10. Indicador de Nivel
En esta prctica se realizara un indicador de nivel utilizando una
entrada analgica conectada en el PIN A0 y como indicador se
tendrn 4 diodos Led conectados a las salidas PIN 3, PIN 4, PIN5 y PIN
6. (Colocar una resistencia de 220)
Se utilizara un potencimetro para cambiar los valores analgicos. El
programa a disear debe dividir en 4 segmentos las seales ledas en el
PIN A0.

Figura 10 Indicador de Nivel


22

Elaboro: | MIE Fernando Malagn Gonzlez


ING. Juan Carlos Nuez Dorantes

Manual de Practicas Arduino UNO


PROGRAMACION
//Indicador de nivel
int led3 = 3;// Declaramos los Pin a utilizar
int led4 = 4;
int led5 = 5;
int led6 = 6;
int pot = A0;
int val;
void setup(){
Serial.begin(9600);
pinMode(led3,OUTPUT);// Declaramos como salidas los PIN
pinMode(led4,OUTPUT);
pinMode(led5,OUTPUT);
pinMode(led6,OUTPUT);
}
void loop(){
val= analogRead(pot);// Leemos la entrada analogica
Serial.println("sensor =");
Serial.println(val); // Imprime el valor analogico leido
if(val>=0 ){
digitalWrite(led3,HIGH);// enciende el Led 3
}
if(val>=256){
digitalWrite(led4,HIGH); // enciende el Led 4
}
if(val>=512){
digitalWrite(led5,HIGH); // enciende el Led 5
}
if(val>=768){
digitalWrite(led6,HIGH); // enciende el Led 6
}
}

23

Elaboro: | MIE Fernando Malagn Gonzlez


ING. Juan Carlos Nuez Dorantes

Manual de Practicas Arduino UNO


11. Encendido y Apagado de una luz de manera analgica
Se trata de que enviemos hacia la salida PIN 10 un valor analgico
ascendente y descendente cclicamente comprendido entre 0 y 255 en
incrementos de 5.
Para la realizacin de este ejercicio se debe emplear una estructura
de programacin tipo for que realice el incremento o decremento de
una variable entre 0-255 y 255-0 con un valor te retardo entre cambio
de valor de 30 mseg.

Figura 11 Conexin para encender y apagar un Led de manera


analgica.

Elaboro: | MIE Fernando Malagn Gonzlez


ING. Juan Carlos Nuez Dorantes

24

Manual de Practicas Arduino UNO


PROGRAMACION

int valor = 0;// Valor a sacar por la salida analgica PIN 9


int ledpin = 10;// Salida analgicas PIN 9
void setup()
{
pinMode(ledpin,OUTPUT);
}
void loop()
{
for(valor = 0 ; valor <= 255; valor+=5) // Variacin de la variable se salida
entre el MIN yMAX
{
analogWrite(ledpin, valor); // Enviar valor a la salida (entre 0 y 255)
delay(30); // Esperar 30 ms para ver el efecto de variacin
}
for(valor = 255; valor >=0; valor-=5) // Variacin de la variable de salida entre
MAX y MIN
{
analogWrite(ledpin, valor);
delay(30);
}
}

25

Elaboro: | MIE Fernando Malagn Gonzlez


ING. Juan Carlos Nuez Dorantes

Manual de Practicas Arduino UNO


12. Control de Iluminacin
En esta prctica se realizara el control de iluminacin de un led
conectado al PIN 10 y una entrada analgica conectada al PIN A2.
En la entrada analgica se conectara un potencimetro de 10 k para
realizar los cambios de iluminacin.

Figura 12 Control de Iluminacin


26

Elaboro: | MIE Fernando Malagn Gonzlez


ING. Juan Carlos Nuez Dorantes

Manual de Practicas Arduino UNO

PROGRAMACION
int ledPin=10;// Declaramos la salida
int pot= A2; // entrada del potenciometro
void setup()
{
pinMode(ledPin,OUTPUT);
}
void loop(){
int control = analogRead(pot); // Leemos la seal del pot
analogWrite(ledPin,control);// Enviamos la seal al led
}

27

Elaboro: | MIE Fernando Malagn Gonzlez


ING. Juan Carlos Nuez Dorantes

Manual de Practicas Arduino UNO

13.

Vmetro

Para realizar la siguiente prctica, se necesita construir el siguiente circuito,


este circuito funcionara a ritmo de la msica, el cual mediante la lectura del
puerto analgico, mandara seales para encender y apagar los leds al ritmo de
la musica.

Figura 13 Vmetro

Elaboro: | MIE Fernando Malagn Gonzlez


ING. Juan Carlos Nuez Dorantes

28

Manual de Practicas Arduino UNO


PROGRAMACION
int ledpin1=2;
int ledpin2=3;
int ledpin3=4;
int ledpin4=5;
int ledpin5=6;
int ledpin6=7;
int Audio=A0;
void setup()
{
pinMode(ledpin1,OUTPUT);
pinMode(ledpin2,OUTPUT);
pinMode(ledpin3,OUTPUT);
pinMode(ledpin4,OUTPUT);
pinMode(ledpin5,OUTPUT);
pinMode(ledpin6,OUTPUT);
}
void loop()
{
int val;
val=analogRead(Audio);
if (val<25)
{
digitalWrite(ledpin1,LOW);
digitalWrite(ledpin2,LOW);
digitalWrite(ledpin3,LOW);
digitalWrite(ledpin4,LOW);
digitalWrite(ledpin5,LOW);
digitalWrite(ledpin6,LOW);
}
if (val>=26)
{
digitalWrite(ledpin1,HIGH);
digitalWrite(ledpin2,LOW);
digitalWrite(ledpin3,LOW);
digitalWrite(ledpin4,LOW);

29

Elaboro: | MIE Fernando Malagn Gonzlez


ING. Juan Carlos Nuez Dorantes

Manual de Practicas Arduino UNO

digitalWrite(ledpin5,LOW);
digitalWrite(ledpin6,LOW);
}
if(val>=435)
{
digitalWrite(ledpin1,HIGH);
digitalWrite(ledpin2,HIGH);
digitalWrite(ledpin3,LOW);
digitalWrite(ledpin4,LOW);
digitalWrite(ledpin5,LOW);
digitalWrite(ledpin6,LOW);
}
if(val>=580)
{
digitalWrite(ledpin1,HIGH);
digitalWrite(ledpin2,HIGH);
digitalWrite(ledpin3,HIGH);
digitalWrite(ledpin4,LOW);
digitalWrite(ledpin5,LOW);
digitalWrite(ledpin6,LOW);
}
if(val>=725)
{
digitalWrite(ledpin1,HIGH);
digitalWrite(ledpin2,HIGH);
digitalWrite(ledpin3,HIGH);
digitalWrite(ledpin4,HIGH);
digitalWrite(ledpin5,LOW);
digitalWrite(ledpin6,LOW);
}
if(val>=870)
{
digitalWrite(ledpin1,HIGH);
digitalWrite(ledpin2,HIGH);
digitalWrite(ledpin3,HIGH);
digitalWrite(ledpin4,HIGH);

30

Elaboro: | MIE Fernando Malagn Gonzlez


ING. Juan Carlos Nuez Dorantes

Manual de Practicas Arduino UNO

digitalWrite(ledpin5,HIGH);
digitalWrite(ledpin6,LOW);
}
if(val>=1020)
{
digitalWrite(ledpin1,HIGH);
digitalWrite(ledpin2,HIGH);
digitalWrite(ledpin3,HIGH);
digitalWrite(ledpin4,HIGH);
digitalWrite(ledpin5,HIGH);
digitalWrite(ledpin6,HIGH);
}
}

31

Elaboro: | MIE Fernando Malagn Gonzlez


ING. Juan Carlos Nuez Dorantes

Manual de Practicas Arduino UNO


14.

Control de motor DC con L293

Con esta aplicacin vamos a mover un motor de DC haciendo uso de un CI


L293 de potencia que es especfico para estas aplicaciones. El circuito
podr mover hasta dos motores, nosotros solo lo haremos con uno.
Los dos parmetros que queremos controlar de un motor de corriente
continua, es su direccin de giro y su velocidad. La direccin se controla
cambiando su polaridad. En cambio, para su velocidad, debemos utilizar
la tcnica de modulacin por ancho de pulso-PWM.
El circuito integrado en el que nos basaremos es el L293d, en sus hojas
de datos, podemos ver que, est compuesto por cuatro amplificadores,
capaz de proporcionar una corriente de salida de hasta 1A por canal a
tensiones de alimentacin desde 4'5V a 36V y con una entrada habilitable
(chip Enable) que permite un control de salida de dos amplificadores.
Todas sus entradas son compatibles TTL. En el L293b, se deben utilizar
diodos de alta velocidad externos, en la salida, para la supresin de
transitorios inductivos.

32

Figura 14 L293
Elaboro: | MIE Fernando Malagn Gonzlez
ING. Juan Carlos Nuez Dorantes

Manual de Practicas Arduino UNO

Segn las especificaciones el L293b es un integrado monoltico de alta tensin,


controlador de 4 canales, de alta corriente. Bsicamente esto significa que
utilizando este chip, puede utilizar motores de corriente continua y fuentes de
alimentacin de hasta 36 voltios, esos son motores muy grandes y el chip
puede suministrar una corriente mxima de 1A por canal. El chip L293b es
tambin lo que se conoce como un tipo de puente H (H-Bridge).

Figura 15 Conexiones L293

El esquema que utilizaremos, est basado en la aplicacin del circuito


integrado L293b, que como se aprecia en las hojas del fabricante, es un driver
de 4 canales, con l y unos pocos componentes ms, podemos controlar
fcilmente el giro de un motor o dos motores de corriente continua, con
distintos circuitos de montaje. Adems, tambin se puede controlar un motor
bipolar paso a paso.

Elaboro: | MIE Fernando Malagn Gonzlez


ING. Juan Carlos Nuez Dorantes

33

Manual de Practicas Arduino UNO

El siguiente diagrama muestra las conexiones del circuito integrado L293,


tome en cuenta todas las conexiones y antes de energizar el circuito verifique
que las conexiones de Vcc y GND no estn creando un corto ciuito, ya que esto
puede ocasionar que se dae el circuito (Notificar al instructor).

Figura 16 Conexiones L293 y Arduino

34

Elaboro: | MIE Fernando Malagn Gonzlez


ING. Juan Carlos Nuez Dorantes

Manual de Practicas Arduino UNO


PROGRAMACION
int pinA1 = 3; // entrada Motor A 1
int pinB1 = 5; // entrada Motor B 1
int pinEN1 = 9; // entrada EN 1
void setup() { // Inicializa los pines de salida
pinMode( pinA1, OUTPUT);
pinMode( pinB1, OUTPUT);
pinMode(pinEN1, OUTPUT);
digitalWrite(pinEN1, HIGH);
Serial.begin(9600);
}
void loop() {
if (Serial.available () ){
int val = Serial.read();
if ( val == 49 ){
digitalWrite(pinA1, HIGH); // Valores ALTO en A y BAJO en B simultneamente
digitalWrite(pinB1, LOW); // hacen girar el motor 1 hacia ADELANTE
}
if (val == 50)
{
digitalWrite(pinB1, HIGH); // Valores ALTO en B y BAJO en A simultneamente
digitalWrite(pinA1, LOW); // invertimos el giro del motor
}
if (val == 51)
{
digitalWrite(pinB1, LOW); // Valores ALTO en B y BAJO en A simultneamente
digitalWrite(pinA1, LOW); // invertimos el giro del motor
}
}

35

Elaboro: | MIE Fernando Malagn Gonzlez


ING. Juan Carlos Nuez Dorantes

Manual de Practicas Arduino UNO

15. Utiliza un rel para encender dispositivos de AC


Este sencillo ejemplo ensea como encender un dispositivo de corriente
alterna (AC) mediante un circuito de 5V de corriente continua (DC)
controlado por Arduino. Se puede utilizar con cualquier otro circuito de AC
con un mximo de 10A (con el rel del ejemplo).

Figura 17 Controlador de dispositivo AC

36

Elaboro: | MIE Fernando Malagn Gonzlez


ING. Juan Carlos Nuez Dorantes

Manual de Practicas Arduino UNO

PROGRAMACION
/*
Enciende y apaga un dispositivo de AC, cada 2 segundos, mediante un rel conectado al PIN
8 de Arduino
*/
int relayPin = 8;
// PIN al que va conectado el rel
void setup()
{
pinMode(relayPin, OUTPUT);
}
void loop() {
digitalWrite(relayPin, HIGH); // ENCENDIDO
delay(2000);
digitalWrite(relayPin, LOW);
// APAGADO
delay(2000);
}

37

Elaboro: | MIE Fernando Malagn Gonzlez


ING. Juan Carlos Nuez Dorantes