Control de belén
|
PRIMER PROYECTO:
Se trata de controlar la iluminación y los motores de un belén.
Una profesora del centro nos pidió ayuda para automatizar las lámparas de varios puntos del belén y controlar la velocidad de 4 motores (noria, torno de alfarero, bomba de agua y molino).
Para el encendido de luces empleamos una placa de 8 relés y para la regulación de la velocidad de los motores hemos montado tres transistores controlados por otras tantas salidas analógicas (PWM) que se regulan mediante potenciómetro
|
MATERIALES:
|
CÓDIGO:
//CONTROL DE BELÉN CON PLACA DE RELÉS Y SALIDAS ANALÓGICAS (PWM)
// Cuatro salidas a relé programadas aleatoriamente y 3 salidas PWM para control de motores
//Definición de un array con las salidas 0 a 3 para controlar 4 salidas ON/OFF. Asignación de pines digitales de salida
byte salida[]={0,1,2,3};
//Asignación de la duración de cada periodo de activación en los que va a mantenerse una determinada secuencia de salidas digitales, en segundos
int t1=2, t2=3, t3=5;
//Asignación de las secuencias de activación de las salidas digitales
int sec1[ ]={1,0,1,0};
int sec2[ ]={0,1,0,1};
int sec3[ ]={1,0,1,0};
// Declaración de las variables y asignación de las salidas reguladas
const int analogOutPin[]={9,10,11};
// Declaración de las variables y asignación de las entradas de potenciometros para ajustar el valor regulado
const int analogInPin1 = A0;
const int analogInPin2 = A1;
const int analogInPin3 = A2;
//Declaración y asignación de las variables de salida analógicas PWM. Lo hacemos en una sola instrucción separandolas con coma
int outputValue1, outputValue2, outputValue3 = 0;
//Declaración variables con los valores medidos
int sensorValue1, sensorValue2, sensorValue3;
void setup()
{
//Declaramos los pines del array salida[] como salidas digitales mediante un bucle
for(int f=0; f<4 ; f++)
{
pinMode(salida[f],OUTPUT);
}
//Declaramos pines del analogInPin como salidas analógicas
pinMode(analogOutPin[0],OUTPUT);
pinMode(analogOutPin[1],OUTPUT);
pinMode(analogOutPin[2],OUTPUT);
}
void loop ()
{
/* Escritura de las tres salidas analógicas */
// lee el valor de la entrada analógica, lo mapea a 256 valores y lo escribe a la salida analógica
sensorValue1 = analogRead(analogInPin1);
outputValue1 = map(sensorValue1, 0, 1023, 0, 255);
analogWrite(analogOutPin[0], outputValue1);
delay(500);
sensorValue2 = analogRead(analogInPin2);
outputValue2 = map(sensorValue2, 0, 1023, 0, 255);
analogWrite(analogOutPin[1], outputValue2);
delay(500);
sensorValue3 = analogRead(analogInPin3);
outputValue3 = map(sensorValue3, 0, 1023, 0, 255);
analogWrite(analogOutPin[2], outputValue3);
delay(500);
for(int i=0;i<4;i++)
{
digitalWrite(salida[i],sec1[i]);
}
delay (t1*1000);
for(int i=0;i<4;i++)
{
digitalWrite(salida[i],sec2[i]);
}
delay (t2*1000);
for(int i=0;i<4;i++)
{
digitalWrite(salida[i],sec3[i]);
}
delay (t3*1000);
}
|
"Fritzing"
|
FOTOS:
|
OBSERVACIONES:
El alumbrado se hizo con lamparitas incandescentes de 4,5V que se alimentan con una fuente de alimentación externa conectada a las salidas del módulo de relés. Las entradas del módulo de relés se pueden conectar directamente a las salidas digitales 0,1,2 y 3 y a +5V y GND de la placa Arduino.
Los motores se alimentaron mediante una fuente de alimentación externa y se conectaron a la placa Arduino mediante un transistor actuando como interruptor controlado por las salidas PWM 9, 10 y 11 de Arduino, permitiendo regular la velocidad de los motores mediante la señal de entrada de los potenciómetros.
Las corrientes de los motores pueden llegar a los 2 o 3 amperios por lo que fue necesaria una fuente de 5A.
|
AUTOR: Mario Baselga Carreras. IES “Ciudad Jardín”. Badajoz
|
Este blog está destinado a compartir los conocimientos adquiridos de los alumnos de tres centros educativos de Extremadura.
IES Ciudad Jardin
Suscribirse a:
Entradas (Atom)
Con ganas de comenzar ;)
ResponderEliminarCon muchas ganas e ilusión de comenzar el proyecto :)
ResponderEliminar