pop up facebook

mercoledì 26 marzo 2014

2° step: colleghiamo il Releè

Ora aggiungiamo il releè che servirà per controllare l'elettrovalvola che permetterà di irrigare il terreno. Arduino, infatti, lavora a 5 volts, potenza sufficiente per molto ma non per tutto. Se, infatti, vogliamo controllare una pompa ad acqua da 220 volts, o un'elettrovalvola da 24 volts, non possiamo farlo direttamente con Arduino ma dobbiamo utilizzare un releè.



Alimentiamo quindi il releè con le uscite di arduino (come per il sensore di umidità), aggiungendo un diodo per evitare danni al microcontrollore,  e colleghiamo il releè come si vede dal seguente schema.

Ora non rimane che ampliare lo sketch che avevamo scritto per utilizzare il sensore di umidità.
Il sensore umidità è nel nostro esperimento collegato al PIN A0.
Iniziamo con definire le costanti indicando il pin di output del releè all'inizio del codice subito dopo le costanti del sensore di umidità.

Poi procediamo nel void setup con definire il Pin a cui è collegato il rele come un PIN di OUTPUT.

All'interno del void loop non ci rimane altro da fare che dire al microcontrollore quando vogliamo che il relèe venga eccitato, ovvero a sotto che livello di umidità debba aprirsi l'elettrovalvola collegata al relèe.
Definiamo i nostri valori "soglia" (massimo 900 e minimo 500 - questi sono i valori "grezzi" dell'umidità percepita dal sensore). A questo punto dobbiamo dire ad Arduino che quando la soglia massima viene superata (umidità bassa) il relèe deve aprirsi, permettendo così all'acqua di bagnare il terreno, e al contrario quando l'umidità del terreno è sufficiente l'elettrovalvola deve chiudersi (questo avviene quando il valore "soglia" minimo viene raggiunto - ne nostro esempio 500).
Ecco come dovrebbe apparire lo sketch completo:


int sensorPin = A0;
int sensorValues = 0;
const int relePin=0;

void setup() {
  Serial.begin( 9600 );
  pinMode(sensorPin, INPUT);
  pinMode(relePin, OUTPUT);
}

void loop() {
  sensorValues = analogRead(sensorPin);
  float sensorValue = map (sensorValues, 0, 1023, 100, 0);
  Serial.print("Valore: ");
  Serial.println( sensorValue );
  Serial.print("Valore Soglia: ");
  Serial.println( sensorValues ) ;
  delay(500);
  if (sensorValues>900.00) {
    digitalWrite (relePin, LOW);
    } 
   if {sensorValue<500
    digitalWrite (relePin, HIGH);}
}



I valori "soglia" possono, ovviamente, essere modificati a seconda delle necessità della pianta.

Rimane invariata la possibilità di visualizzare i valori rilevati dal sensore umidità aprendo il monitor di sistema, con l'aggiunta del valore grezzo o come l'abbiamo chiamato noi "valore soglia". Mediante il monitor sarà così possibile, in modo empirico, definire correttamente i valori soglia.

Spero di essere riuscito a spiegare tutto, cosa abbastanza difficile per un autodidatta come me, se qualcuno leggendo e provando avesse dubbi chieda pure, appena avrò tempo cercherò di rispondere!

Nessun commento:

Posta un commento