You are on page 1of 25

[Type text]

Curso de Arduino 1
Los Fundamentos

[Type text]
[Type text]

1. Definiciones Básicas.
Es Importante conocer los elementos básicos de Electrónica con los que vamos a
interactuar a lo largo de este taller, entre ellos tenemos:

i) Corriente Eléctrica (I): La corriente eléctrica o intensidad eléctrica es el


flujo de carga eléctrica por unidad de tiempo que recorre un material. Se debe al
movimiento de las cargas (normalmente electrones) en el interior del material. La
unidad que mide la corriente eléctrica se denomina Amperio. Una corriente eléctrica,
puesto que se trata de un movimiento de cargas, produce un campo magnético.

ii) Voltaje (V) : El Voltaje o la “diferencia potencial eléctrica” es una comparación


de la energía que experimenta una carga entre dos ubicaciones.

iii) Resistencia Eléctrica (Ohm) : Se le denomina resistencia eléctrica a la


igualdad de oposición que tienen los electrones al moverse a través de un
conductor

iv) Ley de Ohm : La fórmula que se conoce como ley de Ohm indica que la
resistencia varía con la corriente

[Type text]
[Type text]

2. Dispositivos Electrónicos
Entre los más comunes tenemos

a. Resistencias: Son elementos que se oponen al paso de la corriente eléctrica,


siempre tienen el mismo valor. Su valor teórico viene determinado por un código
de colores. Se usan para limitar o impedir el paso de la corriente por una zona de
un circuito. Los símbolos usados para representar las resistencias son:

Las resistencias físicamente se ven de la siguiente forma:

b. Diodo Led: Diodo que emite luz cuando se polariza directamente (patilla larga
al +). Estos diodos funcionan con tensiones menores de 2V por lo que es necesario
colocar una resistencia en serie con ellos cuando se conectan directamente a una
pila de tensión mayor. La pata más larga es el que esta conectado al positivo.

Su símbolo para usar en los circuitos electrónicos es el que se muestra a


continuacion:

[Type text]
[Type text]

3. Funcionamiento de un Microcontrolador.
Un Microcontrolador es el elemento que nos permite manipular los niveles de
Voltaje en sus puertos, estos niveles de Voltaje que se van a manipular pueden ser
Digitales (Bits) o Analógicos.

Observación 1: Un Bit es un estado Lógico que puede tener solamente 2 valores, estos
valores son el “1” (uno) o el “0” (cero).

Observación 2: Teniendo en cuenta la Observación Anterior un valor Digital está


compuesto de Bits por lo que solo tendrá 2 valores (0 y 1), sin embargo un valor Analogico
es un valor Variable entre 0 y 1.

El siguiente Grafico describe el funcionamiento general de un Microcontrolador


cualquiera.

[Type text]
[Type text]

4. Descripción de la Placa Arduino.


Arduino es una plataforma Open el cual esta basado en el Microcontrolador
Atmega, esto significa que inicialmente tendrá las mismas funcionalidades de un
microcontrolador.

En este caso usaremos el modelo Arduino UNO, el cual su microcontrolador es el


ATmega328, este microcontrolador posee entradas y salidas Digitales así como entradas
Analógicas, cabe mencionar que no posee salidas Analógicas.

 Pines Digitales: En total 14, desde el Pin 0 hasta el Pin 13. Considerar que el
Pin 0 y 1 los cuales son Seriales también se pueden usar como Pines de
entrada/salida Digital, sin embargo por comodidad conviene usarlo solo en último
recurso ya que son pines por default destinados a usarlo en la comunicación con la
PC.

 Pines Analógicos: En total 6, desde el A0 hasta el A5. Es importante aclarar


que estos pines son solamente de entrada Analogica.

[Type text]
[Type text]

5. Esquema Básico de un Programa.


Es el momento de empezar a desarrollar el código, para ello abrimos el Arduino,
en su escritorio luego de la instalación deben tener el siguiente Icono:

Luego se nos abre la ventana de Programación, en ella escribimos las 2 funciones


básicas (Cuerpo del programa) , cabe mencionar que no importa que programa se haga,
sea sencillo o bien complejo siempre debe ir si o si el siguiente esquema:

[Type text]
[Type text]

Es importante mencionar que el esquema de programa solo está compuesto del


void setup y el void loop, lo adicional es comentarios, considerar que todo está en
minúsculas.

void setup () {
}

void loop () {
}

Observación: En la programación de Arduino es sensible a las mayúsculas y minúsculas,


hay que tener mucho cuidado al momento de programar.

Botones: A continuación se muestran las funcionalidades de los Botones:

 En el Primer Botón probamos si nuestro código tiene algún error en la


escritura, esto solo es de verificación, no graba el código hecho en ningún Lado.

 En el Segundo Botón grabamos el código hecho dentro de la placa Arduino,


con esto Arduino ya estaría haciendo exactamente lo que deseamos que haga
según el código.

 En el Tercer Botón grabamos el código que hemos hecho en una carpeta de


la PC, esto con el propósito de luego poder continuar programándolo o hacerle
alguna modificación.

[Type text]
[Type text]

6. Funciones Básicas Digitales de Arduino.


Hasta el momento tenemos preparado el terreno para empezar a programar, es el
momento de conocer las herramientas (sentencias) con las que vamos a desarrollar el
código, empezaremos viendo las que trabajan netamente en los pines digitales (0 y 1).

Es importante en este punto aclarar que el Arduino Maneja Niveles de Voltaje, sin
embargo en Programación nosotros manejamos lógica digital (0 y 1) por lo que la siguiente
equivalencia es usada en la interacción de la parte física con la parte lógica.

En Funciones digitales tenemos las siguientes, considerar que se debe respetar las
mayúsculas y minúsculas.

 pinMode(#pin, valor);
o #pin del arduino que se va a configurar, varia de 0 a 13.
o Valor que se va a configurar, puede ser OUTPUT que significa Salida o
INPUT que significa Entrada
 digitalWrite(#pin, valor);
o #pin del arduino que se va a colocar su valor, varia de 0 a 13.
o Valor que se va a colocar, puede ser HIGH, el cual significa 1 o LOW, el cual
significa 0.
 digitalRead(#pin);
o #pin del arduino que se va a leer su estado, esto nos va a devolver un
HIGH o un LOW.
 delay(t);
o tiempo “t” esta expresado en milisegundos, indica la cantidad de tiempo
que el programa quedara en stop sin hacer nada.

[Type text]
[Type text]

7. Uso del Serial.


Serial se entiende como una interface de comunicación entre 2 puntos, si un
dispositivo A soporta comunicación Serial (automáticamente contiene 2 Hilos, uno Tx y
otro Rx).

Este será capaz de comunicarse con cualquier otro dispositivo que también
soporte comunicación Serial, considerar que el otro dispositivo al soportar comunicación
Serial también debe tener 2 Hilos, uno para Tx y otro Rx. El conexionado de 2 dispositivos
que soportan Serial debe ser la Tx de uno con la Rx de otro, la siguiente figura muestra el
detalle.

[Type text]
[Type text]

Ahora tenemos que el Arduino soporta comunicación Serial (Pin 0 es Rx y pin 1 es


Tx), por lo que se puede comunicar con cualquier otro dispositivo via Serial, uno de estos
dispositivos es la Computadora, el Arduino tiene un conversor Serial/USB por el cual se
enlace hacia la PC.

Veamos ahora las sentencias en Arduino para enviar información a la PC.


 Serial.begin(9600);
o Con esto iniciamos la comunicación Serial en el Arduino.
 Serial.printl(valor);
o Con esto enviamos información del Arduino a la PC sin salto de Linea, es
decir la siguiente información a enviar será en la misma línea que la
enviada actualmente.
 Serial.println(valor);
o Con esto enviamos información del Arduino a la PC con salto de Linea, es
decir la siguiente información a enviar será en otra línea diferente a la
enviada actualmente.

Ejemplo03

Usar el mismo esquemático del ejemplo02, hacer que al encender el Arduino


aparezca una mensaje en el MonitorSerial, y asu vez enviar del arduino a la PC el estado
del Pulsador.

Ejemplo04
Hacer un contador de 0 hacia adelante, que vaya incrementando la cuenta cada
500ms y los datos mostrarlos en el Monitor Serial. No hay esquemático en este ejemplo.

[Type text]
[Type text]

8. Uso de Variables
Las variables se utilizan para guardar información de manera temporal, por ejemplo si
tenemos el numero 98 y deseamos almacenarlo en algún lugar, este lugar donde se
almacenara se conoce como variable, las variables tienen un tipo dependiendo de la
información que van a almacenar, por ejemplo no es lo mismo almacenar un “Hola” que el
numero 234, tampoco es lo mismo almacenar la letra ‘H’ que el numero 2.84.

 Declaración de Variables

Las variables se declaran de cualquiera de las 2 siguientes formas:

o tipoVariable nombreVariable;
o tipoVariable nombreVariable = valorInicial;

En ambos casos uno define que nombre colocar a la variable, los tipos de Variables
se basan en el siguiente cuadro.

[Type text]
[Type text]

9. Uso del Servomotor en Arduino.


El servomotor es un elemento mecánico comúnmente usado para mover
Articulaciones , los servomotores se caracterizan porque podemos indicarles a que grado
posicionarse, comúnmente los servos se mueven entre 0grados y 180 grados, a
continuación una figura de una articulación.

Con esto armando en conjunto varios servomotores se puede conseguir el


movimiento de varias articulaciones como brazos robóticos o arañas robóticas.

El servomotor tiene 3 cables de conexión, uno de Fuente (5V), uno de tierra(GND)


y otro de señal (este va a un pin del Arduino)

[Type text]
[Type text]

Funciones para controlar el Servo:

 Inclusion de librería: #include <Servo.h>


 Definicion del Objeto (similar a una variable) :
o Servo miservo;
 En este ultimo “miservo” viene a ser el nombre del objeto, esto es
elegido por el usuario.
 Funciones disponibles, estos se basan en el nombre del objeto escogido:
o miservo.attach(#pin);
 En este ultimo, el #pin es el pin del Arduino al cual se Conecta la
señal.
o miservo.write(angulo);
 angulo viene a ser el valor del angulo a colocarle al servo,
comúnmente varia de 0 a 180 grados.
o miservo.read();
 Devuelve el angulo (posición) actual del servo.

Ejemplo11
Conectar el Servomotor al Arduino siguiendo el esquemático, hacer que se
posicione en 10grados y luego de 3 segundos en 120 grados, luego en otros 3 segundos
regrese a su posición inicial, asi en un bucle infinito.

Ejemplo12
Variar la posición del Servo de 0 a 180 grados con el eje con un eje del Joystick,
usar el siguiente esquemático.

[Type text]
[Type text]

[Type text]
[Type text]

10. Motores
Los motores eléctricos son la mejor forma de convertir energía eléctrica (Voltaje y
corriente) en energía mecánica (Torque y velocidad) a través de un movimiento rotatorio,
dado lo simple y útil que son se pueden encontrar en diferentes tamaños y de diferentes tipos
como los servomotores, Motores DC, Motores Paso a paso, etc. En esta oportunidad
hablaremos de los Motores DC.

8.1 Motores DC
Son motores que giran una determinada a una determinada velocidad aplicando en sus
terminales un voltaje definido, tiene 2 terminales con polarización (positivo y negativo) los
cuales al ser energizado (aplicarles una diferencia de potencial) hacen comenzar la rotación. La
diferencia de voltaje a aplicar en sus terminales dependerá del tipo de motor, por lo general
un motor DC tiene un rango de aceptación de voltaje en el cual funcionara, por ejemplo es
común tener motores DC que aceptan voltajes de 5V hasta 12V.

8.2 Control de un Motor DC


Básicamente nos interesa de un motor DC controlar la velocidad con la que va a girar el
motor y el sentido de giro el cual puede ser horario y anti horario.

En términos prácticos un motor su velocidad se controla por la diferencia de voltaje


aplicado en sus terminales, es decir con una diferencia de voltaje de 12V girara más rápido
que si aplicamos en sus terminales una diferencia de 8V, sin embargo esto no es muy práctico
debido que con el Arduino u otro microcontrolador manejaremos valores discretos (0 y 1) por
lo que variar el voltaje no será una opción, para hacer variar la velocidad se utiliza una técnica
llamada PWM el cual revisaremos más adelante.

Es importante mencionar que un motor al ser un elemento mecánico necesita de una


corriente considerable, los motores más chicos que hay en el mercado por lo general
requieren mínimo de 0.5Amperio (500mA).

[Type text]
[Type text]

Para controlar el sentido de giro lo haremos por polarización en sus terminales, cuando
conectemos en el 1er terminal 12V y en el otro 0V (GND) girara en un sentido digamos
horario, al invertir este voltaje y colocar en el 1er terminal 0V (GND) y 12V en el otro terminal
girara en sentido anti horario, entonces por polarización tenemos el control de giro del motor.

8.3 Control de un Motor usando Arduino


Para controlar un motor DC (tiene 2 terminales) intuitivamente podemos sospechar del
siguiente esquemático donde con 2 pines controlamos el motor, con lo cual en los pines
digitales tenemos el control de la inversión de giro.

El esquema dado no es el correcto por las limitaciones de voltaje y corriente, los pines
digitales de Arduino trabajan solamente con 0V (GND) y 5V y máximo cada pin puede
brindar 40mA mientras que la gran mayoría de motores trabaja con valores alrededores de
12V y consumen mínimo 500mA, si lo conectamos de esa manera estaríamos quemando el
microcontrolador. Para resolver este se usa un modulo llamado Puente de H.

[Type text]
[Type text]

8.4 Puente H
El Puente de H se denomina al circuito electrónico que permite controlar el giro de un
motor DC, generalmente está constituido de una serie de transistores, como su nombre lo
indica el puente de H transforma los niveles lógicos (0 y 1) que recibe y los entrega en otro
extremo con valores de voltaje y corriente proveniente de una fuente externa y no de la
entrada.

8.5 Conexión de Arduino a un motor usando un puente de H


Se tendría el siguiente conexionado, es importante mencionar que arduino solo provee los
niveles lógicos de control (0 y 1) pero no provee los valores de voltaje (5V) así como tampoco
los valores de corriente (mA), estos ultimo son proveídos por la fuente externa.

[Type text]
[Type text]

8.6 Tipos de Puente H


Existen diferentes modelos de Puente de H según la corriente que pueden manejar, entre
los más populares están los integrados L293 que maneja hasta 1 Amperio y los puentes de H
L298 que manejan hasta 2 Amperios.

A continuación tenemos el integrado L298 en un Modulo tarjeta, el cual en su interior


contiene 2 Puente de H por lo que puede conectarse en el 2 Motores DC (Output A y Output
B), así mismo posee sus 4 entradas (recordar que son 2 motores y cada motor tiene 2
entradas) provenientes del arduino (Input) y su fuente de Alimentación Externa de donde
sacara la corriente y el voltaje (12V, GND y 5V).

Ejemplo 01:

Hace girar un motor por 3 segundos en un sentido, luego detenerlo por 1 segundo, luego
hacerlo girar en sentido opuesto al primero por 3 segundos y después detenerlo por 1 segundo,
repetir este proceso infinitamente, usar el esquemático propuesto.

[Type text]
[Type text]

[Type text]
[Type text]

1. PWM
La modulación por ancho de pulso o PWM consiste en generar una señal Periódica cuyo
periodo denominemos “T”, en donde un tiempo dado “Ton” estará en estado Alto, el resto del
tiempo estará en estado bajo “Toff”.

En base a esto se define el ciclo de Trabajo como:

La característica del PWM es que se puede variar el valor de Ton desde un mínimo
que es 0 hasta un máximo que es T, es decir: 0 <= Ton <= T.

Esta variación se utiliza en diversas aplicaciones, una de ellas es el control de


velocidad de un motor DC dado que al aplicarse una señal PWM en un terminal de motor
podemos simular pequeñas conexiones y desconexiones los cuales harán que varia su
velocidad según el Ton que posea, entonces el motor girara a máxima velocidad cuando
Ton = T, y girara a su mínima velocidad (detenido) cuando Ton = 0.

Arduino posee una función de generación de PWM (valido en los pines 3,5,6,9,10 y
11), cuyo Periodo T es de aproximadamente 2ms.

.) analogWrite (#pin, valor);


Donde: #pin : 3,5,6,9,10,11
Valor: de 0 a 255, representa el Ton, 255 equivale a Ton = T.

[Type text]
[Type text]

Ejemplo 02:

Considerando el siguiente esquemático, hace girar infinitamente el motor y variar su


velocidad con el Potenciómetro.

Ejemplo 03:
Conectar según el esquemático 2 motores al driver, usando una lógica adecuada en
sentidos de giro de cada motor según la posición del chassis, hacer que el chassis avance por 3
segundos, luego por 1 segundo se queda quieto, luego por 3 segundos gire a la derecha, luego por
1 segundo se queda quiero, luego por 3 segundos gira a la izquierda, luego por 1 segundo se
queda quieto, luego por 3 segundos retroceda, hacer esto infinitamente.

[Type text]
[Type text]

2. El Modulo Bluetooth
El Modulo Bluetooth es un dispositivo puente entre señal Bluetooth y comunicación Serial,
posee 4 pines de los cuales 2 son de fuente y 2 de comunicación Serial.

3.1. Cambio de Nombre al Modulo Bluetooth

Al energizar el modulo (5V y GND) ya empieza a irradiar señal Bluetooth,


dispositivos Móviles o tablets podrán “Pair” con el modulo, su password por defecto es
1234, una vez realizado eso necesitaran conectarse al modulo para poder enviar y recibir
información.

Al identificar al Bluetooth desde un móvil o Tablet, conviene colocarle un


“Nombre” propio al dispositivo para identificarlo fácilmente, para realizar este proceso
seguir el siguiente esquemático, luego escribir un programa en blanco (solo void setup y
void loop), abrir el Monitor Serial y escribir el comando AT. Con esto deberíamos recibir
del Bluetooth un “OK”, esto significa que si establece conexión, luego enviar el comando
AT+NAMENombre para cambiar el nombre del bluetooth, como ejemplo si quisiéramos
que el Bluetooth se llame “Creatividad” entonces deberíamos enviarle el comando
AT+NAMECreatividad.

[Type text]
[Type text]

Dado que el Bluetooth es Serial debería comunicarse con el Arduino en los pines 0
y 1, sin embargo no conviene dado que por estos pines el Arduino se comunica a la PC, por
consecuencia conviene usar un Serial por Software, es decir una comunicación Serial
implementada vía programa, el Serial por software utiliza una librería llamada
SoftwareSerial el cual permite crear un objeto, este objeto creado tiene las mismas
funciones que el Serial por hardware, aquí se describen los elementos básicos

Librería: SoftwareSerial.h

Objeto: SoftwareSerial sw(rxPin, txPin); //sw es el nombre del objeto, es escogido por el
que desarrolla el programa.

Funciones:

 sw.begin(9600); //Inicializa el software serial


 sw.print(valor); //Envia información sin salto de línea
 sw.println(valor); //Envia información con salto de línea
 sw.available(); //Devuelve el nro de bytes o caracteres esperando ser leídos en el buffer
del serial.
 sw.read(); // Devuelve un byte o carácter que haiga en el buffer del Serial.

Ejemplo04:
Descargar el software Bluetooth Terminal indicado en clase e instalarlo en su Móvil o
Tablet, luego siguiendo el siguiente esquemático, leer todos los valores que ingresen por el
softwareSerial (es decir que vengan del Bluetooth) e imprimirlos en el Monitor Serial. Conectarse
desde el móvil o Tablet con el programa descargado y desde ahí enviar letras al Arduino.

Ejemplo05
Bajar el aplicativo del PlayStore “Bluetooth RC Controller” e instalarlo en su Movil o Tablet,
usando el esquemático y mismo programa que en el ejemplo04, verificar que letras envía el
aplicativo con las flechas avanzar, atrás, derecha e Izquierda, tomar nota de esas letras.

[Type text]
[Type text]

3. Control de Flujo:
En Arduino existen condicionales que se usan para tomar de decisiones en ejecución de
bloques de códigos, estos control de flujo evalúan una condición la cual se puede cumplir o no.

1 Formatos de Condición

a>b, a<b,a==b,a!=b,a>=b, a<=b

 Entre los controles de flujo, tenemos la condicional if, básicamente evalúa una condición,
de ser verdad esta ejecuta un bloque de código encerrado entre llaves, si la condición no
es verdad entonces no ejecuta el bloque de código.

if(condición)

{
//sentencias a ejecutar si la condición es verdadera
}

 También pueden ir acompañados de else

if(condición){
//sentencia a ejecutar si la condición es verdadera
}else{
//sentencias a ejecutar si la condición es falsa
}

 También pueden ir if anidados evaluando diferentes condiciones

if(condicion1){

//sentencias a ejecutar si condicion1 es verdadera

}else if(condición2){

//sentencias a ejecutar si condicion2 es verdadera

}else if(condicion3){

//sentencias a ejecutar si condicion3 es verdadera

}else{

//sentencias a ejecutar si no se cumple ninguna condición.

[Type text]
[Type text]

Ejemplo06
Usando el siguiente esquemático, controlar con los botones del programa “Bluetooth RC
Controller” el chassis móvil, controlar su avanzado, derecha, izquierda y retroceso, puede
considerar que si no se presiona ningún botón el móvil quede detenido. Haga diversas pruebas.

[Type text]

You might also like