Arduino impazzito con modulo relè

Buonasera a tutti,
oggi ho collegato due moduli relè alla mia scheda Arduino Uno ma una volta caricato lo sketch sulla scheda, Arduino impazziva.
[Premetto che questo collegamento lo avevo effettuato già qualche settimana fa e funzionava perfettamente]
Allego i video che mostrano ciò che accade ai moduli relè al momento del caricamento dello sketch.
Lo sketch inizializza semplicemente i relè, non fa assolutamente nulla.
Nel primo video si vede ciò che accade quando sono collegati i due moduli relè, nel secondo video ciò che accade quando è collegato solo un modulo relè.

Il collegamento è stato effettuato nel modo seguente:

  • Ho utilizzato i pin digitali dallo 0 al 7 per il primo modulo relè e dal 8 al 12 per il secondo modulo relé.
  • I relè sono alimentati esternamente con un alimentatore da 5V 22A.
  • I pin VCC dei due relè (quello che si trova a fianco dei pin che comandano i singoli relè per intenderci) li ho collegati ai 5V di Arduino (messi in parallelo…)

Sembra che Arduino impazzisca con il pin digitale 0/1 perché dopo quel primo “impazzimento” a seguito del caricamento dello sketch, se provo ad attivare i singoli relè funzionano tutti tranne il 1 e il 2 (quelli comandati dai pin digitali di Arduino 0 e 1). Tuttavia come potete vedere ottengo problemi anche al secondo modulo relè.
Non capisco cosa possa esser successo e spero che non si sia bruciata la scheda.
I moduli relè dovrebbero funzionare perfettamente perché invertendo i pin sono riuscito a provare tutti i singoli relè.

Grazie in anticipo a chiunque voglia aiutarmi :slight_smile:

Tu ricordi vero che i pin 0 e 1 sono riservati alla porta seriale ed al colloquio con la USB ? ? ?

E che quindi se usi tali pin NON puoi colloquiare tramite la USB con il PC né fare debug né usare il monitor seriale ...

Giusto per ricordartelo ... ::slight_smile:

Guglielmo

gpb01:
Tu ricordi vero che i pin 0 e 1 sono riservati alla porta seriale ed al colloquio con la USB ? ? ?

E che quindi se usi tali pin NON puoi colloquiare tramite la USB con il PC né fare debug né usare il monitor seriale ...

Giusto per ricordartelo ... ::slight_smile:

Guglielmo

Avevo letto questa particolarità ma onestamente ho provato ad usarli lo stesso nelle scorse settimane (sono come S.Tommaso, le cose preferisco testarle con le mie mani :smiley: ) e funzionava bene.

Comunque sia mi dai una buona notizia. Quindi quel tipo di problema è dovuto al fatto che inizializzo quei due pin per i relè? E' compatibile col tipo di problemi (che si evincono anche dai video) che ottengo?

E per finire: dovrei quindi evitare di utilizzare quei due pin e quindi di fatto con la scheda Arduino posso collegare solamente 12 relè/dispositivi?

Grazie!

........ di fatto con la scheda Arduino posso collegare solamente 12 relè/dispositivi?

Guarda che ci sono anche i 6 pin Analog che puoi benissimo usare come normali pin digitali

arduinopro44:
Avevo letto questa particolarità ma onestamente ho provato ad usarli lo stesso nelle scorse settimane (sono come S.Tommaso, le cose preferisco testarle con le mie mani ...

In elettronica questo atteggiamento si chiama ...
... va be' evito di usare un insulto ! :grin:

In elettronica l'unica cosa che fa testo sono i datasheet, non le sciocche prove che si fanno senza fondamento tecnico e che, in vari casi, rischiano solo di fare danni.

Poi vedi tu ... ::slight_smile:

Guglielmo

@gpb01 hai ragione!

Comunque avrei un quesito adesso: avendo inizializzato i pin 0 e 1, come faccio adesso a mettere del codice corretto? Qualsiasi sketch carico -ovviamente- non funziona (perché immagino non carichi niente)
Come resetto tutto??

Grazie!

Devi staccare i collegamenti ad essi e lascare liberi i pin 0 ed 1 ... normalmente il bootloader dovrebbe prendere il controllo e permettere il caricamento del codice da parte dell'IDE.

Guglielmo

Nella fase di esecuzione adesso funziona: i relè vanno tutti bene.
Ma in fase di setup sembra impazzire: quando carico lo sketch si attiva il pin 0/1 per qualche secondo (come nei video che avevo pubblicato)
Come risolvo??

Grazie ancora!

Te lo hanno detto vero che i pin 0 e 1 sono usati dalla seriale e dalla usb?

Perché ti meravigli che quando programmi da usb i pin reagiscono?

È normale che facciano così...

Elimina dalla sketch tutti i riferimenti ai pin 0 e 1.

arduinopro44:
Come risolvo??

Cosa non ti è chiaro in ... NON DEVI USARE I PIN 0 ED 1 ? ? ?

Guglielmo

Forse non sono stato chiaro: ho eliminato ogni riferimento a quei due pin ma nonostante questo una volta caricato lo sketch parte un rele senza motivo

Posta programma, che vediamo cosa si può fare....

Utilizzo dai pin 2 a 9 per il primo modulo relè e i pin 12,13, A0, A1, A2 per il secondo modulo relè.
Quando carico lo sketch si attiva per circa 6-7 secondi il relè collegato al pin 13.
Anche se non inizializzo quel pin esso si attiva.
Ovviamente se scollego il pin 13 non ho quel problema. Noto comunque che si attiva un led che lampeggia, lo stesso che si illumina quando parte il rele del pin 13..
Il pin 13 ha qualche proprietà che mi sfugge?

arduinopro44:
Il pin 13 ha qualche proprietà che mi sfugge?

SI, è quello del LED, cambia pin, usa A3.

Guglielmo

gpb01:
SI, è quello del LED, cambia pin, usa A3.

Guglielmo

Grazie!

Ma comunque, che senso ha che un pin si attivi in corrispondenza del led (che non comando io) ?
Così facendo “perdo” un altro pin…

Sul pin 13 c'è un led ad uso generico, nulla vieta di usare quel pin per altre cose.
Il led L viene fatto lampeggiare dal bootloader quando viene attivato, se la cosa crea problemi basta disattivare il lampeggio del led quando il bootloader è attivo, c'è una apposita opzione nel relativo sorgente, ovviamente è necessario rimpiazzare il bootloader di serie con la versione senza led attivo.

arduinopro44:
Forse non sono stato chiaro: ho eliminato ogni riferimento a quei due pin ma nonostante questo una volta caricato lo sketch parte un rele senza motivo

Ti è stato detto... Quando vuoi caricare via USB il nuovo sketch DEVI STACCARE I RELE'. Finito il caricamento, ricolleghi tutto e fai riavviare Arduino e funziona tutto. Stesso discorso per il pin 13.

Ma fino a che non hai la certezza del funzionamento del programma, ti conviene tenere liberi i pin 0 e 1 per poter fare debug sulla seriale, quindi usare i pin analogici ad esempio per la seconda scheda.

arduinopro44:
Grazie!

Ma comunque, che senso ha che un pin si attivi in corrispondenza del led (che non comando io) ?
Così facendo "perdo" un altro pin..

Ti ha risposto Astro ...
... quel LED viene fatto lampeggiare dal "bootloader" come indicazione che è attivo ... ovviamente, se un qualche cosa è collegato a quel pin, all'avvio riceve gli stessi impulsi che fanno lampeggiare il LED.

La soluzione è ... o usi un altro pin o, sempre come ti ha detto Astro, ti occorre un programmatore ISP (o un secondo Arduino configurato come tale) e puoi rimpiazzare il Bootloader con una versione che non fa lampeggiare il LED all'avvio.

Guglielmo

docdoc:
Ti è stato detto... Quando vuoi caricare via USB il nuovo sketch DEVI STACCARE I RELE'. Finito il caricamento, ricolleghi tutto e fai riavviare Arduino e funziona tutto. Stesso discorso per il pin 13.

Ma fino a che non hai la certezza del funzionamento del programma, ti conviene tenere liberi i pin 0 e 1 per poter fare debug sulla seriale, quindi usare i pin analogici ad esempio per la seconda scheda.

Volevo aprire un topic nella sezione apposita per segnale un'altra "anomalia" ma visto che l'argomento l'hai tirato in ballo lo affronto ora stesso.

Io sto utilizzando la scheda Arduino con i moduli relè tramite un programma scritto da me. Senza dilungarmi dico semplicemente che invio dei dati ad Arduino tramite USB e la scheda attiva i relè in base al comando ricevuto.
Una volta acceso il PC, e collegato Arduino tramite USB, se provo ad inviare dei comandi non ricevo risposta. Se apro l'ide di Arduino posso verificare che la scheda è riconosciuta e collegata alla solita porta COM ma, ancora, non riceve i comandi inviati dal mio programmino.
L'unico modo per "svegliare" la scheda è quindi quello di:

  • Caricare nuovamente lo sketch (non se sia necessario, ormai lo faccio per abitudine).
  • Aprire il monitor seriale dall'ide di Arduino (e qui si attiva quel led [-> impazziva il relè 13]).
    Fatto ciò, posso tranquillamente inviare dati dal mio programma alla scheda e tutto funziona perfettamente.

Se tutte le volte che accendo il PC io debba scollegare i relè, per poi ricollegarli, perderei troppo tempo (e pazienza). Quindi lascio tutto connesso e avvio la scheda. Da qui capisci il motivo del mio post iniziale.

Detto ciò ne approfitto per chiedervi: sapreste dirmi perché Arduino resta in standby (?) finché non avvio il monitor seriale dell'ide?