Relay abbassa tensione di riferimento (credo)

Ciao a tutti,

scusate se la domanda è banale, ma sono veramente alla prime armi.

Seguendo quanto trovato sul sito di Arduino, e precisamente qui (http://playground.arduino.cc/Code/OneWireKeyPad) ho realizzato il progetto per leggere un tastierino numerico 4x3 con un solo pin analogico.

ora, finché lo uso, come nell'esempio riportato, con un led, tutto funziona alla grande.
Provando però a comandare, con uno dei tasti del tastierino, un relay, quando il relay è attivato, i tasti del tastierino sono letti male (non correttamente, sballa i valori), mentre a relay spento tutto funziona correttamente.

facendo un minimo di debug (per quanto sia in grado di fare) mi sono accorto che quando il relè è attivo, il valore analogico letto dal pin di riferimento del tastierino è diverso da quello letto quando è spento.

immagino qunidi che il relay attivo abbassi/modifichi la tensione di riferimento.

le domande sono qundi 2:

  1. è vera la mia deduzione?
  2. come posso risolvere?

Grazie a chi mi risponderà
Saluti
Saul

Come hai collegato il relè oppure è una scheda con relè ed optoisolatore?

Ciao,

è una scheda con un relè sopra (comperata in un kit di 37 sensori della elego) edi foto.
Ha in uscita 3 pin, segnale, VCC GND.

li ho collegati a VCC e GND (Di arduino, riportati su breadboard), segnale al pin 3 (ma è uno a caso).

Per ora il carico è a vuoto, ma preciso che ci voglio comandare una striscia led a 24V (vedi punto 15 del regolamento :slight_smile: ).

credo di dover realizzare un circuito di alimentazione esterna, non credo che arduino ce la faccia a comandarlo, anche se lo fa, ma sballa i riferimenti di tensione del resto del sistema :frowning:

Grazie dell’interessamento
Zaulno

Ho provato anche a dargli alimentazione dall'esterno, sia al relè che ad arduino, ma il comportamento è il medesimo :frowning:

non capisco, devo mettere qualcosa tra il pin di uscita e il relè?

Grazie
Zaulino

Il relè assorbe circa 80mA quando è attivato, dubito che questo assorbimento riduca la tensione di riferimento AREF se non di poco.

Se stai alimentando Arduino attraverso la USB, questa fornisce sino a 500mA.

Hai collegato qualcosa d'altro oltre al modulo relè ed al keypad con i suoi resistori?

Fai qualche foto nitida del Tuo progetto.
Ciao Uwe

zaulino:
immagino qunidi che il relay attivo abbassi/modifichi la tensione di riferimento.

Non è possibile che abbassa la tensione solo su Aref in quanto è la stessa di alimentazione del micro, come configurazione di default, se questa si abbassa per effetto di un eccessivo assorbimento di corrente anche Aref si abbassa di conseguenza.
Dato che il tuo utilizzo analogico è di tipo raziometrico (legato alla tensione di alimentazione) ne consegue che la lettura analogica, a parità di pulsante premuto, è costante indipendentemente dal valore della tensione di alimentazione/Aref.
Di quanto cambia la lettura analogica con il relè attivo e non attivo ?

Ciao a tutti,

innanzi tutto grazie per l’interessamento.

Pubblico foto del progetto e scratch che sto adoperando

i valori che ottengo con il relè sono i seguenti, prima relè spento poi (tra parentesi relè acceso) e infine con relè acceso come viene interpretato

Premuto: 1 Lettura analogica piedino: 975 (967)
Premuto: 1 Lettura analogica piedino: 974 (967)
Premuto: 1 Lettura analogica piedino: 975 (967)
Premuto: 2 Lettura analogica piedino: 491 (490)
Premuto: 2 Lettura analogica piedino: 491 (490)
Premuto: 2 Lettura analogica piedino: 491 (491)
Premuto: 3 Lettura analogica piedino: 330 (332)
Premuto: 3 Lettura analogica piedino: 330 (332)
Premuto: 3 Lettura analogica piedino: 330 (332)
Premuto: 4 Lettura analogica piedino: 177 (182)visto come 3
Premuto: 4 Lettura analogica piedino: 179 (183)visto come 3
Premuto: 4 Lettura analogica piedino: 178 (181)visto come 3
Premuto: 5 Lettura analogica piedino: 150 (154)visto come 4
Premuto: 5 Lettura analogica piedino: 152 (154)visto come 4
Premuto: 5 Lettura analogica piedino: 150 (155)visto come 4
Premuto: 6 Lettura analogica piedino: 131 (134)visto come 5
Premuto: 6 Lettura analogica piedino: 130 (134)visto come 5
Premuto: 6 Lettura analogica piedino: 130 (135)visto come 5
Premuto: 7 Lettura analogica piedino: 97 (103)visto come 6
Premuto: 7 Lettura analogica piedino: 96 (102)visto come 6
Premuto: 7 Lettura analogica piedino: 96 (102)visto come 6
Premuto: 8 Lettura analogica piedino: 89 (94)visto come 7
Premuto: 8 Lettura analogica piedino: 88 (92)visto come 7
Premuto: 8 Lettura analogica piedino: 88 (92)visto come 7
Premuto: 9 Lettura analogica piedino: 81 (87)visto come 8
Premuto: 9 Lettura analogica piedino: 81 (86)visto come 8
Premuto: 9 Lettura analogica piedino: 81 (86)visto come 8

davvero non riesco a capire, un po lo legge piu grande, un po piu piccolo…
Il progetto (e la schedina con le resistenze sono presi da qui: http://playground.arduino.cc/Code/OneWireKeyPad

Grazie a chiunque potrà darmi una mano
Buona notte
Zaulino

OnewireKeypad_TestRele.ino (1.18 KB)

i valori letti vanno bene, ma hai un problema di cablaggio

prima controlla a che piedinatura corrisponde il tuo keypad

ce n'e' anche un'altra di piedinatura
R1 - R2 - R3 - R4 - C3 - C2 - C1

Brunello, sono curioso.

Ho sempre apprezzato sia i tuoi schemi, sia quelli dei layout, il tutto con una velocità sorprendente: complimenti!

Cosa usi per generarli?

Ciao

innanzi tutto grazie per l'aiuto e l'nteressamento.

Ho verificato, il cablaggio del pinpad è corretto.
La verifica la ho fatta leggendo la resistenza (con il tester) tra VCC e il piedino di OUT della mia schedina saldata, premendo uno ad uno tutti i pulsanti, rilevando i corretti valori rispetto allo schema che è al link http://playground.arduino.cc/Code/OneWireKeyPad (fatto salvo la tolleranza della resistenza).

P.S. il mio pinpad è della serie R1R2R3R4C1C2C3.

Adesso provo a fare un altro esperimento, mettendo una resistenza direttamente sul piedino di ingresso analogico di Arduino e leggendo il valore con i rele acceso e spento.

A breve posto i risultati.

Grazie a dopo
Zaulino

Ciao a tutti,

allego circuito di prova e scratch (brutale, ma serve allo scopo).
di seguito i risultati

Lettura con rele spento: 180 - 180 - 180 - 180 - 180 - 180 - 179 - 180 - 180 - 180 - 180 - 180 - 180 - 180 - 179 - 179 - 180 - 180 - 180 - 180 - MEDIA: 179.00
Lettura con rele acceso: 183 - 184 - 184 - 183 - 184 - 184 - 183 - 184 - 183 - 183 - 183 - 184 - 184 - 184 - 184 - 185 - 184 - 184 - 184 - 183 - MEDIA: 183.00
Lettura con rele spento: 179 - 180 - 181 - 180 - 180 - 180 - 181 - 180 - 180 - 180 - 180 - 180 - 181 - 180 - 180 - 180 - 180 - 181 - 181 - 180 - MEDIA: 180.00
Lettura con rele acceso: 183 - 183 - 183 - 184 - 183 - 184 - 184 - 184 - 183 - 184 - 183 - 184 - 184 - 184 - 183 - 184 - 184 - 184 - 184 - 183 - MEDIA: 183.00
Lettura con rele spento: 179 - 179 - 180 - 180 - 180 - 180 - 180 - 181 - 180 - 179 - 180 - 179 - 180 - 180 - 180 - 180 - 179 - 180 - 180 - 180 - MEDIA: 179.00
Lettura con rele acceso: 184 - 184 - 184 - 184 - 184 - 184 - 184 - 184 - 183 - 184 - 184 - 184 - 183 - 184 - 183 - 183 - 183 - 184 - 184 - 183 - MEDIA: 183.00
Lettura con rele spento: 180 - 180 - 180 - 180 - 180 - 180 - 180 - 180 - 181 - 180 - 180 - 180 - 180 - 180 - 180 - 180 - 180 - 181 - 181 - 180 - MEDIA: 180.00
Lettura con rele acceso: 184 - 184 - 184 - 185 - 184 - 185 - 184 - 184 - 184 - 184 - 184 - 184 - 183 - 184 - 184 - 185 - 184 - 184 - 184 - 184 - MEDIA: 184.00
Lettura con rele spento: 180 - 180 - 179 - 180 - 180 - 180 - 180 - 180 - 180 - 180 - 180 - 180 - 180 - 180 - 180 - 179 - 180 - 180 - 180 - 180 - MEDIA: 179.00
Lettura con rele acceso: 183 - 184 - 183 - 184 - 184 - 184 - 184 - 184 - 184 - 183 - 184 - 184 - 184 - 184 - 184 - 183 - 183 - 184 - 184 - 184 - MEDIA: 183.00

c’è effettivamente un oscillazione degna di nota con il relè acceso e quello spento, che và oltre 1 punto.

La prova è fatta simulando la pressione del tasto 4 del tastierino, cioè partitore tra 4.7K e 1 K.

Idee sul come mai?
Grazie
Ciao
Saul

TestValoriRele.ino (988 Bytes)

Una oscillazione di +/- 1 count sul ADC durante una serie di letture consecutive è la norma, non avrai mai una lettura perfettamente costante.
Una variazione di 3-4 count con i relè accesi è sintomo di scarsa stabilizzazione/filtratura sull'alimentazione, quando attivi il relè l'incremento di consumo fa aumentare il rumore e questo porta ad una maggiore instabilità del ADC

astrobeed:
Una oscillazione di +/- 1 count sul ADC durante una serie di letture consecutive è la norma, non avrai mai una lettura perfettamente costante.
Una variazione di 3-4 count con i relè accesi è sintomo di scarsa stabilizzazione/filtratura sull'alimentazione, quando attivi il relè l'incremento di consumo fa aumentare il rumore e questo porta ad una maggiore instabilità del ADC

E' quindi questo comportamento che mi fa leggere valori sballati del tastierino a relè acceso?
Il valore che leggo è sempre quello prima (decodificato dalla libreria), quindi ha senso, almeno in teoria.
Come posso risolverlo?

Grazie 1k
Zaulino

zaulino:
E' quindi questo comportamento che mi fa leggere valori sballati del tastierino a relè acceso?

Un errore di qualche count del ADC non può farti sbagliare il tasto premuto, con 12 tasti puoi avere una separazione di oltre 80 count tra di loro, se hai errori di tasti premuti a questo punto vuol dire che hai anche dei problemi software.

Il mio codice, un po pasticciato, è in allegato.
non ho sempre un delta di 80 count tra i vari tasti (vedi valori riportati in un post precedente) , quindi, o uso male io la libreria (se potessi aiutarmi a correggerlo nel caso te ne sarei grato), o la libreria ha un difetto/bug (nel qual caso non ho minimamente le competenze per correggerla).

Grazie
Ciao
Zaulino

OnewireKeypad_TestRele.ino (1.18 KB)

astrobeed:
Un errore di qualche count del ADC non può farti sbagliare il tasto premuto, con 12 tasti puoi avere una separazione di oltre 80 count tra di loro, se hai errori di tasti premuti a questo punto vuol dire che hai anche dei problemi software.

ciao,

ho fatto 4 conti, secondo me sono dimensionate male le resistenze specificate nel progetto.
http://playground.arduino.cc/Code/OneWireKeyPad

prendiamo ad esempio la selezione del tasto "0".
Si ottiene mediante un partitore di tensione tra 1K e 15.1K. il valore teorico letto dall' ADC è 64

ora prendiamo ad esempio il tasto #
Si ottiene mediante un partitore di tensione tra 1K e 16.1K. il valore teorico letto dall' ADC è 60

il delta dei valori è 4, insufficiente considerando il mondo reale, dove l'ADC può avere le fluttuazioni che mi dici e le resistenze hanno una tolleranza

E' corretto il mio ragionamento?
Ed in caso sai dove posso trovare uno schema con resistenze dimensionate dividendo il range, come mi indicavi, con step paritari da 80?

Grazie mille
Zaulino