RISOLTO - Difficoltà di gestione di relay con Arduino UNO

Ciao a tutti,
purtroppo sono alle prime armi quindi scusatemi per eventuali imprecisioni e banalità.

Ho trovato in internet uno Sketch che fa al caso mio.

L'ho adattato alle mie esigenze ed è quasi tutto ok.

Il sensore ad ultrasuoni HC-SR04 quando rileva un oggetto nel range da 3 a 35 cm. deve fare intervenire il relè, e questo è ok, unico problema è che il relè è sempre sotto tensione quando non ho ostacoli rilevati dal sensore mentre il pin 13 è spento.

Io vorrei che il relè lavorasse come il pin 13 cioè quando il sensore rileva una presenza attiva il relè e il pin 13 mentre quando questo non succede relè e pin devono essere in posizione di riposo (senza tensione).

Tutti i miei tentativi per ottenere quanto descritto sono stati vani.

Confido nel vostro aiuto, grazie .

ULTRASUONO_PER_RELAY.ino (697 Bytes)

se dici che il relè è comandato dal pin 13, e che mentre il pin è LOW il relè è eccitato direi che il problema è hw. posta qualche foto e se riesci fai uno schema con fidocadj/eagle/quellochetipare

Grazie Boschi.
Ti ho allegato lo schemino.
Cosa intendi per hw.
Ciao a presto

che relé hai?
Ciao Uwe

Ciao uwefed,
ti invio in allegato il modello del relè.
Mi succede che quando il led collegato al PIN 13 della scheda arduino è spento il led rosso del relè è acceso, quindi il relè è alimentato.
Mentre quando il sensore ad ultrasuoni rileva un ostacolo il led PIN 13 di arduino si accende e quello del relè si spegne.
Ovviamente posso giocare sui contatti ( aperto-chiuso) del relè ma il fatto è che in posizione di riposo, cioè quando il sensore non mi rileva nulla, ho il relè alimentato che mi consuma la batteria.
Grazie ancora

Relay.png

... probabilmente hai preso un relè comandato a logica inversa ... ovvero con il pin LOW il relè è acceso, con il pin HIGH è spento.

L'unica cosa che puoi fare ... è invertire tu la logica sul pin ... quando lo vuoi a riposo, tieni il pin HIGH e quando lo vuoi eccitato metti il pin LOW :wink:

Guglielmo

Ciao Guglielmo,
avevo già tentato di cambiare lo sketch invertendo HIGH con LOW ma purtroppo non cambia nulla.
Sicuramente dipende dalla mia incapacità.
Comunque un grazie per la vostra pazienza e disponibilità.
Un salutone
Massimo

Scusa Massimo,
ma se nel tuo codice cambi l'ultima riga in :

digitalWrite(13, !(distanceCM >= 3 && distanceCM <= 35));

inverti la condizione e ... dovrebbe andare ... ::slight_smile:

Guglielmo

P.S. : In pratica, usi l'operatore not per invertire il risultato logico

E il gioco è fatto.

Perfetto Guglielmo, seguendo il tuo suggerimento ho cambiato la riga

digitalWrite(4, !(distanceCM >= 3 && distanceCM <= 35));

così il relè collegato al PIN 4 e il LED PIN 13 lavorano in parallelo e si trovano in posizione di riposo quando
non ci sono oggetti rilevati dal sensore HC-SR04.

Purtroppo i principianti si perdono "in un bicchiere d'acqua"

Grazie Guglielmo

Un saluto da Venezia
Massimo

Bene Massimo :slight_smile:

Ora fai una cosa, edita il tuo primo post e modifica il titolo aggiungendoci in testa [RISOLTO] ... :wink:

Guglielmo