Ho un moduletto relè 12V ad un canale, vorrei farlo funzionare con arduino ma, collegando vcc e gnd ai 12v, non "sente" il passaggio di stato LOW-HIGH sul piedino IN, in pratica il relè sta sempre eccitato.
Ho notato che sta diseccitato inviandogli i +12v ed eccitato mandandogli GND (o, in generale, qualsiasi segnale inferiore ai 12v).
Se provo ad attaccare il modulino alimentandolo a 5v, funziona regolarmente ma ovviamente il relè non ce la fa a scattare.
C'è una soluzione?
Grazie,
dimenticavo, il moduletto naturalmente ha un fotoaccoppiatore...
Dato che non abbiamo la "palla di vetro" ... il LINK al modulo è il minimo che dovresti mettere ... :
Guglielmo
gpb01:
Dato che non abbiamo la "palla di vetro" ... il LINK al modulo è il minimo che dovresti mettere ... :Guglielmo
scusate, pensavo potesse dare noia indicare il "negozio"...
è questo:
posto anche la foto:
un amico mi ha suggerito, visto che alimentando il modulo a 5v il led del relè si accende e spegne regolarmente coi segnali LOW-HIGH di arduino, di tranciare la pista che invia i +5v alla bobina e mandarli sulla base di un transistor, che possa inviare così i 12v alla bobina, ma ho paura di combinare un pasticcio...
Non è che esistono tanti modi di collegare codesta scheda relè
Semmai, avevi messo il GND che arriva dai 12V in comune con quello di Arduino ?
è quello che ho fatto... ma essendo la scheda a 12v, il segnale LOW di arduino non riesce ad essere abbastanza LOW, stessa cosa per HIGH. In pratica, pur commutando lo stato da programma, il relè rimane SEMPRE eccitato. L'unico modo di diseccitarlo è disconnettere il piedino IN.
Ti ricordo che, alimentando il moduletto a 5v, il led in parallelo alla bobina del relè si comporta in maniera "regolare" ma, ovviamente, il relè non riesce ad eccitarsi.
niente da fare, la 12 si comporta come la 13
perché 12v anziché 5v? solo un errore, e riaverne uno da 5v in tempi brevi la vedo dura...
maverich:
niente da fare, la 12 si comporta come la 13
perché 12v anziché 5v? solo un errore, e riaverne uno da 5v in tempi brevi la vedo dura...
Verifica direttamente il modulo relè mettendo a massa il pin IN e successivamente a +5V
se messo a massa relè eccitato, se +5v eccitato; se +12v diseccitato.
Ma, come suggerivo, uno schemetto tipo questo proprio non va, eh?
... domanda sciocca ... naturalmente nel setup() il pin che usi per pilotare il relè lo hai dichiarato come OUTPUT vero?
Guglielmo
int i; // definisce la variabile “i” utilizzata in un ciclo di for
unsigned long ora;
const long interval = 3000; // 7200000=2 ore
void setup()
{
pinMode(8, OUTPUT); // definisce la porta 7 come una porta di output
pinMode(7, OUTPUT); // definisce la porta 4 come una porta di output
pinMode(2, INPUT); // definisce la porta 4 come una porta di input
pinMode(4, INPUT); // definisce la porta 4 come una porta di input
digitalWrite(7, HIGH); // diseccita il rele
}
void loop()
{
if (digitalRead(4)==HIGH)
{
if (ora==0) ora=millis();
if (millis()-ora > interval)
{
digitalWrite(7, LOW); // eccita il rele
delay(1000);
digitalWrite(7, HIGH);
ora=0;
}
}
else
{
ora=0;
}
amici, vi ringrazio per il vostro aiuto, ho rimediato sostituendo nel modulo il rele 12v con uno da 5, anche se sono convinto che con la soluzione del transistor avrei risolto facilmente comunque.
Il codice so che era grezzo, ma funzionale. come abitudine prima penso ai fatti, poi al cesello.
saluti,