IES Ciudad Jardin


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:
  • Placa de Arduino
  • Cable USB de conexión
  • Placa de relés
  • Transistores
  • Resistencias
  • Potenciómetro

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

2 comentarios: