12 - Periféricos básicos en Arduino: E/S analógicas

Volver al curso

Los sistemas electrónicos digitales pueden recibir señales analógicas y también generarlas. La clave es que el rango de esas señales se ajuste al rango de funcionamiento del microcontrolador en cuestión. En el caso de Arduino, ese rango es de 0 a 5V.

Salidas analógicas

En Arduino son de mentira… utilizan modulación PWM, que consiste en encender y apagar la señal muchas veces en el tiempo para ajustar el voltaje eficaz

int pin = 9; // "~"
int valorsalida = 0;
pinMode(pin, OUTPUT);
analogWrite(pin,valorsalida);

El pin que vayas a utilizar debe tener el símbolo “virgulilla” (~).

Ese “valor” se transmite mediante un integer cuyo valor varía entre 0 y 255.

Recuerda que Arduino trabaja en niveles lógicos TTL (0-5V).

12.1 - LED de intensidad escalonada

Realizar un programa que haga encender progresivamente un led con cinco intensidades distintas cada segundo: 0%, 25%, 50%, 75% y 100%.

12.1b - LED de intensidad gradual

Usando bucles “while” y “for”, haz que la intensidad suba y baje suavemente (en 255 niveles).

Entradas analógicas

La entrada analógica no es “de mentira”. Mide valores analógicos entre 0 y 5 voltios y los mapea mediante un integer cuyo valor varía entre 0 y 1023.

const int sensorPin = A0;
int medida = 0;

void loop()
{
	medida = analogRead(sensorPin);
}

Fíjate que las entradas y salidas analógicas trabajan con rangos distintos: entradas de 0 a 1023 y salidas de 0 a 255.

12.2 - Potenciómetro

Realizar un programa que lea el valor de tensión en el cursor de un potenciómetro de 10kΩ y lo transfiera al ordenador por serial.

En la transmisión serie se debe de mostrar el porcentaje y los voltios.

Para escalar los datos, puedes hacer una regla de tres o bien usar la función map():

MyValue = map(analogRead(MyPin), 0, 1023, 50, 800); //  0 voltios equivale a 50 y 5 voltios equivale a 800 

12.3 - Sensor de luz (LDR: Light Dependent Resistor)

En las LDR, la resistencia disminuye cuando la luz cae sobre ellos y aumenta en la oscuridad.

Tal cual se plantea el montaje tenemos algo muy parecido a un pull down:

Realizar un programa que:

12.4 - Control de iluminación por pulsos

Periféricos:

Programa que incremente el nivel de luz de un LED en tramos de un 10% en cada pulsación. Deberá mostrar por serial el nivel en que se encuentra.

12.5 - Control de LED RGB

Hacer un programa que cambie periódicamente entre 8 combinaciones de colores sobre un led RGB. Puedes consultarlas en esta página. O bien puedes usar la función random(min, max).

En la figura se conecta una única resistencia en el cátodo. Como sabes, los diferentes colores requieren diferentes resistencias. Te recomiendo poner resistencias adecuadas en el ánodo de cada LED.

12.5b (NUEVO) - Control de LED RGB con potenciómetro

Ahora haz que el color se elija con tres potenciómetros que transmitan su posición a tres entradas analógicas.

Debes lograr que se muestre por puerto serie el valor de cada color (R, G, B) seleccionado.

12.6 - Generador de tonos con el zumbador

Periféricos:

El LED sirve para dar una indicación visual de cuándo debería oírse el zumbador. Es decir, cuando actives uno, activa también el otro.

Toca todas las notas de más grave a más aguda. Las frecuencias son:

Usando las funciones:

Las funciones anteriores emiten señales PWM (~) de 50% de ciclo de trabajo.

12.6b - Musiquita con el zumbador

Ericcson T10
Ericcson T10

En los años 90, los tonos de llamada se podían componer manualmente en el móvil. O bien, si te descargabas de internet la partitura, podías transcribirla. Yo le puse a mi padre la melodía de “El Padrino”.

Haz el siguiente programa y comprende su funionamiento: http://www.iescamp.es/miarduino/2016/02/15/buzzer-y-star-wars/

12.7 - Climatizador automático

Realiza un sistema de control de temperatura para una maqueta. Trabajaremos con dos actuadores (calentador, enfriador). Ambos llevan asociada un LED para informar de su encendido (azul enfriar, rojo calentar).

La alarma sonará cuando la diferencia de temperaturas entre consigna y medida se mayor de 15ºC

El potenciómetro tendrá un valor ohmico igual a la resistencia que tiene en serie. Si son 10k, pues 10k. Si pones 1k, pues 1k.

El LM35 mide la temperatura de la maqueta, y con un potenciómetro seleccionamos la temperatura deseada.

Deberás comprender cómo funciona una salida a transistor, y por qué y cuándo se utiliza diodo de libre circulación.

El algoritmo de control deberá hacer funcionar a distintas intensidades los actuadores proporcionalmente a la diferencia de temperatura respecto la real. Para eso necesitas usar salidas PWM.

Salidas digitales

No siempre conectaremos LEDs, habrá otros actuadores de más potencia. Motores, por ejemplo. Tipos de salidas digitales:


Fuente: “Introducción ao Arduino” - David Touceda Bugallo, 2014


Volver al curso