accendere ventola 12 volt con relè e sensore di temperatura

Ciao a tutti :slight_smile:
Mi scuso per non aver fatto la presentazione ma l’altra volta un utente mi ha postato dove farla ma non riesco più a ritrovarmi la sezione giusta , quindi se qualcuno è così gentile da postarmi la sezione sarò lieto di farla . Nel frattempo avrei qualche domanda da fare , ho realizzato un circuito per controllare l’attivazione di una ventola 12 volt con un relè a due canali quelli sulle basette per intenderci, in funzione però della temperatura rilevata dal sensore dht 11 ( quando la temperatura supera i 23 gradi voglio accendere la ventola e quando cala sotto i 23 voglio spegnerla ). Per poi visualizzare tutto su un display 20x4. Una volta scaricato il programma le schermo si accende visualizzo temperatura e umidità correttamente ma quando vado a far salire la temperatura sopra i 23 gradi la ventola non parte. Sto utilizzando arduino mega 2560. Ora vi posto il programma che ho realizzato magari qualcuno riesce a capire subito dove ho sbagliato ( io ancora sono un principiante ). Grazie in anticipo :slight_smile:

#include "DHT.h"
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
#define DHTPIN 8 // pin sensore temperatura
#define relè 7  // pin relè
#define DHTTYPE DHT11 // definisco il tipo di sensore che uso
DHT dht(DHTPIN, DHTTYPE); // convalido pin e sensore 
LiquidCrystal_I2C lcd(0x27,20,4);  // indirizzo comunicazione dysplay 20x4 


void setup()
{
  // Attivo il display 20x4
  
  lcd.init();                      // inizializzo lcd
  lcd.init();
  
  // stampo messaggio sull'lcd
  
  lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("Temperatura :");
  lcd.setCursor(0,1);
  lcd.print("Umidita % :");
  lcd.setCursor(0,2);
  lcd.print("Umidita terra % :");

  // Imposto il pin 9 sul relè
  
  pinMode(7, OUTPUT);

  // Attivo il sensore di temperatura (DHT11)

  dht.begin();
  
}
  
void loop()
{
  // Lettura umidità e temperatura del sensore DHT11
  
  int t = dht.readTemperature();
  int h = dht.readHumidity();

  lcd.setCursor(18, 0);
  lcd.print(t);
  lcd.setCursor(18, 1);
  lcd.print(h);

// Misura la temperatura e se maggiore di 26 gradi attiva relè per accendere la ventola

if (t >= 23 ) 
   digitalWrite (7, HIGH); // Attiva Relè 2

else

   digitalWrite (7, LOW); // Spegni Relè 2
   delay (2000);

}

sembra comunqe che la tua presentazione ci sia...
ad uno sguardo veloce il tuo programma dovrebbe andare, ma ci lascia alcuni dubbi:
alla riga 30 imposti il pin 7, ma scrivi di impostare il 9
alla riga 26 stampi una scritta che non usi
alla riga 5 definisci una macro che non usi
alla riga 16 inizializzi 2 volte il display
alle rige 42 e 43 inizializzi di continuo variabili che potevano essere globali
tutti appunti minori, il programma dovrebbe essere funzionante, anche se un po' zoppicante

anche alla riga 58 hai dei dubbi su quanto "dura" una IF o una ELSE
magari il programma non è tuo, ma lo hai solo copiato?

controlla bene il cablaggio, perchè il programma dovrebbe andare
casomai sposta il releè sul pin 13
perchè non partite subito col 13, così vi togliete i dubbi fin da subito?

hai fatto qualche errore di sintassi if - Arduino Reference

void loop(){

--------
--------



if (t >= 23 ) digitalWrite (7, HIGH); 
else{

   digitalWrite (7, LOW);
   delay (2000);
}

}

beh, si'
ma funzionerebbe lo stesso, semplicemente la pausa la farebbe sia dopo lo spegnimento che dopo l'accensione, non sarebbe nemmeno male

Anche spostando sul pin 13 non funziona…

Controllato anche i cablaggi sembrano corretti ..
Boh non capisco dovrebbe essere una cosa semplice

Non e' che tu sia stato molto chiaro:
cosa non va? non si accende il led? non scatta il rele? non si accende la ventola? non paete il motore dell'autobus?
hai messo a posto anche qualche cosa d'altro? i problemi che ti ho indicato?, lo schema?
insomma aiutaci ad aiutarti

Allora non scatta il relè e di conseguenza non si accende la ventola ..problemi che dicevi sistemati.
Schema purtroppo non so come realizzarlo

il led va?

Lucab:
Schema purtroppo non so come realizzarlo

Lo fai su un pezzo di carta, gli scatti una foto (nitida) e la alleghi (max 1.2 MB).

Guglielmo

Se ti riferisci al led sopra la scheda relè si è rosso però

Non son come allegare la foto

Lucab:
Non son come allegare la foto

Ma il REGOLAMENTO lo sai leggere ? ? ? >:( >:( >:(

Guglielmo

Ecco lo schema fatto così alla meno peggio spero che si capisca qualcosa.

non vedo in comune i GND di arduino e della scheda relè, sbaglio?

Inverti i valori
Codesta scheda relè funziona al contrario ( HIGH=Spento LOW=Acceso )

if (t >= 23 ) 
   digitalWrite (13, LOW); // Attiva Relè 2
else
   digitalWrite (13, HIGH); // Spegni Relè 2

uno_vent_dht.jpg

Lucab:
Se ti riferisci al led sopra la scheda relè si è rosso però

mi riferivo al led interno allo arduino, che si accende spegne assieme al pin 13
Viene comodo sia per collaudare arduino nuovi che per check rapidi senza mettete un led esterno
Nel caso attuale, se si illumina il led interno il programma va, cerchi il.problema nel cablaggio. Viceversa: viceversa

No effettivamente non sbagli.. Riusciresti a spiegarmi bene come collegarlo nel modo giusto ??:slight_smile:

Brunello l unica differenza nel tuo schema è che la scheda relè che sto utilizzando bisogna alimentarla a 12 volt sennò non da segni di vita ??
Dici che il funzionamento è lo stesso , cioè funziona sempre al contrario ??

Hai un link a codesta scheda ?