Curso de Arduino

¿Qué es Arduino?

Es una plataforma libre formada por un hardware, un software y un lenguaje de programación.

MCU: Es un circuito integrado que puede ser reprogramado y que está diseñado para el control de procesos mediante la lectura y generación de señales.

Fundamentos de electricidad

Corriente eléctrica

Existen dos tipos de corrientes eléctricas, la corriente continua (DC) y la alterna (AC).

Nos centraremos en la DC que es con la que opera nuestro Arduino. La principal diferencia entre ambas es que la DC no varía con el tiempo y la AC sí.

Intensidad

La intensidad o corriente eléctrica es el “combustible” que consumen nuestros dispositivos electríonicos. Este combustible no es más que el movimiento de partículas (cargadas eléctricamente) a través de un material conductor (por ejemplo, el cobre de un cable).

  • Se mide en Amperios (A).

Tensión

Se mide en Voltios (V).

La tensión, al igual que la intensidad, tiene un sentido, el cual se indica desde la tensión mayor hacia la menor (la intensidad siempre tiene el mismo sentido que la tensión).

Antes de realizar cualquier conexión debemos tener en cuenta las limitaciones de tensión e intensidad de Arduino (5V y 20 mA) y también del componente o componentes que se pueden encontrar conectados a nuestro Arduino, ya que, al igual que este, se pueden dañar por un exceso de tensión o intensidad.

Si un componente o componentes no se encuentran sometidos a una diferencia de tensión, no circulará intensidad a través de ellos.

Resistencia

Su principal función es limitar la cantidad de intensidad que circula por un circuito electrónico para la protección de sus componentes.

Cuanto mayor sea la resistencia que conectemos, menos será la intensidad que circule por ella.

La unidad de medida de las resistencias son los ohmnios (Ω).

Para saber el valor de una resistencia tenemos dos opciones:

  • Usar un multímetro. Giraremos el selector hasta el indicativo Ω y conectaremos los terminales a los extremos de las patillas (indistintamente, puesto que no tiene polaridad.)
  • Utilizar su banda de colores. De todos los colores de la banda hay uno que nos indica cómo se debe leer, por lo general, el dorado. El color dorado nos indica que debemos empezar a codificar los valores empezando por el otro extremo, recorriendo todos los colores hasta volver a la banda dorada (y esta última no se cuantifica).
Curso de Arduino 1

Calculadora de resistencias online.

Algunas resistencias típicas

Curso de Arduino 2
230 Ω
Curso de Arduino 3
10k Ω
Curso de Arduino 4
1k Ω

Si vamos a una tienda y pedimos una resistencia nos preguntarán dos datos: valor y potencia. El valor de la resistencia se refiere al tamaño de esta, es decir, a los ohmnios. En cuanto a la potencia se refiere a cuanta soporta, que viene de la multiplicación de la intensidad que atraviesa la resistencia por la tensión a la que se encuentra sometida.

Ley de Ohm

Con la ley de Ohm podemos calcular el valor de la resistencia mínima para asegurarnos de que en ningún momento se supera la demanda de 20mA por cada pin (sabemos por la tabla de características que la tensión que puede aportar cada pin es de 5V).

R = V/I = 5/0,020 = 250 Ω

Con un valor de resistencia mínimo de 250 Ω es seguro que conectemos lo que conectemos a continuación de ella (leds, pulsadores, …) no se dañará el Arduino por un exceso de consumo de intensidad, pero esto no quiere decir que si por ejemplo también conectamos un led, este no se pueda dañar. También debemos tener en cuenta las limitaciones de los componentes que se vayan a conectar.

Leyes de Kirchoff

Para entender cómo se comporta la intensidad en un circuito se suelen hacer símiles con el agua.

  1. Supongamos que la intensidad circula por un circuito al igual que el agua por las tuberías.
  2. Siendo así, podemos cosniderar que la toma principal de agua (que es donde se obtiene todo el caudal que circulará por los circuitos de tuberías) es equivalente a una pila (puesto que también es de donde surge toda la intensidad que circula).
  3. Las tuberías son similares a los cables de nuestro circuito puesto que en ambos casos sirven como medio de transporte de agua o intensidad.
  4. Y la demanda de caudal por cada ramal (ya bien sea para un grifo, un lavabo, etc.) es como una resistencia que demanda una cantidad de intensidad.
  5. Así, podemos asegurar que el caudal total que salga por la toma principal es igual a la suma de caudales que salgan por todos los dispositivos conectados al circuito de agua.
  6. Del mismo modo, podemos asegurar que la intensidad que salga por la pila es igual a la suma de intensidades de cada uno de los nodos del circuito.
  7. En conclusión, la intensidad de entrada (aportada por la pila) es igual a la de la salida (a la que se consume).

La ley de intensidad de Kirchhoff estasblece que el sumatorio de intensidades sobre un nodo (intensidades de entrada + salida) es igual a cero. Para estudiar las tensiones en cada elemento de un circuito debemos dividirlo en lo que se conoce como mallas.

  • la tensión de la pila es igual a la caída de la tensión de la resistencia más la del diodo:
Vpila = Vres + Vdiodo
  • Como conocemos los valores de la tensión de la pila y la que soporta el diodo podemos obtener la tensión de la resistencia:
Vres = Vpila - Vdiodo = 9 - 1,8 = 7,2
  • Conociendo el valor de la tensión de la resistencia y queriendo limitar el flujo de intensidad a 10mA calculamos el valor de la resistencia:
R = Vres / 1 = 7,2 / 0,010 = 720 Ω

Componentes de un circuito eléctrico

Diodos

Un diodo tiene dos modos de funcionamiento:

  • Polarización inversa. No permite la circulación de corriente (como si fuese un interruptor abierto).
  • Polarización directa. Permite la circulación de corriente (como si fuese un interruptor cerrado).

Para que un diodo se encuentre polarizado en directa, la intensidad debe entrar por el ánodo (patilla más larga) y salir por el cátodo (patilla más corta).

Por lo general, los leds más comunes demandan una tensión de funcionamiento de alrededor de 1.8V (incluso de 2 B). Pero también es una tensión de limitación, no podemos superar ese valor de tensión, de ser así se quemaría.

Al principio explicábamos que, cuanta más intensidad pase por un diodo led, más luz emitirá; pero al igual que ocurre con la tensión, esta intensidad debe encontrarse entre un rango de valores. La intensidad de los diodos más comunes suele oscilar entre 5 y 20 mA. Con todo esto, lo primero que advertimos es que no podemos conectar un led directamente a una pila o al Arduino, puesto que por el valor de la tensión (9V y 5V respectivamente), se quemaría.

Lo que haremos será conectar una resistencia para limitar el consumo de intensidad y que en la resistencia caiga la tensión necesaria y así no dañar el led.

Cables

Por convenio cuando conectemos algún componente con el pin de 5V o de 3.3V identificaremos eta unión por un cable rojo, y en caso de ser a GND por un cable negro.

La protoboard

  • Distinguimos varias partes en función del modo de conexión interno de los puntos: una parte superior y una inferior en las cuales todos los puntos de una fila están conectados entre sí; dos partes intermedias en las que los puntos de una misma columna están conectados entre sí.
  • En la parte media nos encontramos una ranura que separa cada columna de dos partes, las cuales son independientes entre sí.

Android ONE

Disponemos de 14 pines digitales, enumedados del 0 al 13.

Esos pines se pueden comportar como salidas (controlar procesos) o entradas (tomar lecturas); este comportamiento deberemos configurarlo por programación.

Es importante tener siempre presente sus características de tensión e intensidad: 5V y 20mA.

Arduino IDE

Se puede descargar en https://www.arduino.cc/en/software.

pinMode digitalWrite

El valor por defecto es 0.

El pin 13 se quedaría configurado como salida:

pinMode(13,1);
pinMode(13, OUTPUT);

El pin 13 se quedaría configurado como entrada:

pinMode(13,0);
pinMode(13, INPUT);

Activamos el pin 13:

digtalWrite(13, 1);
digitalWrite(13, HIGH);

Desactivamos el pin 13:

digitalWrite(13, 0);
digitalWrite(13, LOW);

Primer programa – Conectar un led a arduino

Cáculo de la resistencia aplicando las leyes de Kirchoff:

Vcc = Vres + Vdiodo
Vres = Vcc - Vdiodo = 5 -1.8 = 3.2V
Vres = I * R
R = Vres / I = 3.2 / 0.01 = 320 Ω

Por estandar emplearemos una resistencia de 330 Ω o 470Ω , por lo tanto si rehacemos los cálculos la intensidad será de:

I = Vres / R = 3.2 / 330 = 0.0096A = 9.6mA
void setup() {
  pinMode(13, OUTPUT);
  digitalWrite(13, HIGH);
}
Curso de Arduino 5

Variación en el código: con luz intermitente:

void setup() {
  pinMode(13, OUTPUT);
}

void loop() {
  digitalWrite(13, HIGH);
  delay(1000);
  digitalWrite(13, LOW);
  delay(1000);
}

Variación en el diseño: con pulsador

Mantendremos el código del primer ejemplo.

Curso de Arduino 6

Variación en el diseño: añadimos un buzzer

Sustituiremos el diodo por un buzzer. Ten en cuenta que al igual que el diodo, el buzzer también tiene polarización (el anodo suele mostrarse sobre la superficie del buzzer).

Monitorización (mostrar trazas)

Para trabar con esta comunicación emplearemos diferentes instrucciones, todas ellas comenzarán con el “prefijo” Serial.

  1. Debemos configurar e inicializar la Comunicación Serie, para ello utilizaremos la instrucción Serial.begin();. Entre paréntesis debemos definir la velocidad de la transferencia de datos que deberá ser la misma que tenga el Monitor Serie.
  2. En la programación de Arduino disponemos de varias instruccions para enviar información, pero nos decantaremos por Serial.println();
void setup() {
 Serial.begin(9600);

}

void loop() {
  Serial.println("Hola mundo");
  delay(1000);
}

Para ver las trazas iremos a Tools → Serial Monitor.

Analogic Write

Señales PWD (pulse with modulation)

Una señal PWM es una señal que varía periódicamente entre sus dos posibles estados: encendido y apagado. Esos dos valores, en el caso de Arduino son 0 y 5V.

La frecuencia es el número de veces que se repite un evento en un segundo, y su unidad de medida es el hercio (Hz).Por ejemplo, si digo que, escribiendo con el teclado mi frecuencia de escritura es de 5Hz, esto quiere decir que escribo con cinco palabras por segundo.

Hay pines digitales que permiten la programación de señales PWM: 3, 5, 6, 9, 10 y 11. Los podemos identificar en el hardware con el símbolo~.

Los Timers son el mecanismo que utiliza el MCU para generar una señal PWM. Tenemos 3 Timers: el 0, 1 y 2.

  • El timer0 de 980 Hz asociado a los pines 5 y 6.
  • El timer1 de 490 Hz asociado a los pines 9 y 10.
  • El timer3 de 490Hz asociado a los pines 3 y 11.
Curso de Arduino 7

El periodo es el tiempo que dura una señal.

T (periodo) = 1 / f (frecuencia)
T (segundos) = 1 / f(hercios)

En el caso de usar el timer de 490Hz, cada periodo durará aproximadamente 2 milisegundos. Si queremos que un led esté encendido con la mitad de nergía (2.5V) jugaremos con los tiempos de encendido y apagado de cada señal.

Si generamos 500 señales por segundo (490 redondeado) y cada una de ellas dura 2 milisegundos, si programamos que dicha señal esté activa un milisegundo y apagada un milisegundo, la tensión media a la que trabajará el led será 2.5V.

La función analogicWrite de Arduino nos permitirá imitar los valores analógicos, pudiendo pasarle como parámetro valores comprendidos entre 0 y 255.

Curso de Arduino 8

Ejercicio potenciometro

int led = 6;
int brillo;
int pot = 0;
void setup() {
  pinMode(led, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  brillo = analogRead(pot) / 4;
  Serial.println("brillo: "+ brillo);
  analogWrite(led, brillo);
}
int brillo = 0;
int ledPin = 6;
void setup() {
  pinMode(ledPin, OUTPUT);
  digitalWrite(11, HIGH);

}

void loop() {
  for (brillo = 0; brillo < 256; brillo ++) {
    analogWrite(ledPin, brillo);
    delay(15);
  }
  for (brillo = 255; brillo >= 0; brillo --) {
    analogWrite(ledPin, brillo);
    delay(15);
  }
}
Curso de Arduino 9

Electro imán

Cuando la electricidad circula por un cable genera un campo magnético. La dirección de este campo magnético sigue la dirección definida por la regla de la mano derecha.

En el siguiente ejemplo, si agarrásemos la bobina con la mano derecha, veríamos que se esta generando un campo magnético que sale del interior de la bobina por el lado izquierdo y se vuelve a introducir por el lado derecho.

En un imán el polo positivo está determinado por donde salen las líneas de campo y el negativo por donde entran.

Curso de Arduino 10
Curso de Arduino 11

Para hacer nuestro electroiman necesitaremos:

  • Una pila.
  • Alambre de cobre barnizado.
  • Un imán de neodinio (son más fuertes que los de hierro.)

Para que el contacto con el alambre sea mejor, puede ser útil presionar con los dedos el alambre contra los polos de la pila.

Curso de Arduino 12

Motor eléctrico I

Un motor eléctrico convierte energía eléctrica en cinética, o energía cinética en eléctrica. En este ejemplo, converitremos energía eléctrica en cinética.

Para crear nuestro propio motor eléctrico usaremos:

  • Una pila.
  • Alambre de cobre barnizado.
  • Un imán de neodinio (son más fuertes que los de hierro.)
Curso de Arduino 13

Principio de inducción (ley de Faraday Lenz)

Ley de Faraday: Un campo magnético variable (mover o girar un imán) cerca de un conductor, genera corriente eléctrica.

Ley de Lenz: La dirección de la corriente será tal que se opone a la causa que la ha generado.

Motor eléctrico II

El siguiente motor convertirá energía cinética en eléctrica.

Curso de Arduino 14

Este motor tiene un sistema que se encarga de invertir la polaridad cuando el conductor da media vuelta. Si no invirtiesemos la polaridad, la mitad del recorrido el imán estaría empujando y la otra mitad frenando. Al invertir la polarid cada media vuelta, haremos que el motor siempre esté emujando.

ServoMotor

Los servomotores hacen uso de la modulación por ancho de pulsos (PWM) para controlar la dirección o posición de los motores de corriente continua. La mayoría trabaja en la frecuencia de los 50 hertz, así las señales PWM tendrán un periodo de veinte milisegundos. La electrónica dentro del servomotor responderá al ancho de la señal modulada. Si los circuitos dentro del servomotor reciben una señal de entre 1 a 1,4 milisegundos, este se moverá en sentido horario; entre 1,6 a 2 milisegundos moverá el servomotor en sentido antihorario; 1,5 milisegundos representa un estado neutro para los servomotores estándares. 

Un servomotor tiene un suele ser alimentador por un cable rojo y el cable oscuro (negro, azul o marrón) usele ir a tierra.

El cable de señal puede ser amarillo, naranja o blanco.

Curso de Arduino 15
Curso de Arduino 16

Modulando el ancho del pulso entre 1 y 2 milisegundos tendremos la totalidad del rango de giro de 0 a 180º. Por ejemplo, un puloso de 1.5 milisegundos equivaldrá a 180º.

Curso de Arduino 17

Curso de Arduino 18
#include <Servo.h>

Servo servo1;

int PINSERVO = 6;
int PULSOMIN = 1000;
int PULSOMAX = 2000;

void setup() {
  servo1.attach(PINSERVO, PULSOMIN, PULSOMAX);
}

void loop() {
  servo1.write(0);
  delay(1000);
  servo1.write(180);
  delay(1000);
}

Aviso Legal | Política de privacidad