Go Down

Topic: mi servirebbe un pin in più! (Read 2111 times) previous topic - next topic

vitoos

Vi illustro il mio progetto. Vorrei realizzare un termocontrollore con Arduino uno che legga 5 sensori di temperatura LM35, che visualizzi tutte e 5 le temperature su un display LCD, che ci sia un menù per modificare le 5 soglie di temperatura per aprire e chiudere 5 relè. Facendo i calcoli mi manca un pin analogico collegando LCD con l'i2c e più di uno collegando LCD direttamente ai pin digitali, avete idee a riguardo per recuperare qualche pin? Io avevo pensato per gestire il menú di usare 4 pulsanti da collegare a 4 pin digitali

astrobeed

Complessivamente Arduino dispone di 20 pin di cui 6 sono utilizzabili sia come ingressi ADC che come normali GPIO.
Facendo due conti:
Display 6 pin (4 dati e 2 di gestione)
Relè 5 pin
Pulsanti 4 pin
Ingressi LM35  5 pin
-----------------------
Totale  20 pin

In pratica basta che usi un ingresso analogico, p.e. A5, come ingresso per un pulsante (pull up attiva e pulsante che chiude verso GND) e sei a posto, se usi i pin 0 e 1 anche loro per i pulsanti non perdi la possibilità di poter programmare Arduino da USB anche quando tutto è collegato.

niki77

Però perderebbe la possibilità di scaricare informazioni via seriale durante l'esecuzione del programma.

Potrebbe collegare tutti i pulsanti sull'ultimo pin analogico rimasto utilizzando una rete di resistenze.

Potrebbe essere sufficientemente preciso l'adc a 10 bit per solo 4 valori.
Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

astrobeed


Però perderebbe la possibilità di scaricare informazioni via seriale durante l'esecuzione del programma.


No se non ci sono pulsanti premuti, il fatto di collegarne due a A0 e A1 non blocca la seriale, ovviamente è necessario prevedere una procedura che consente di passare dalla seriale a GPIO a comando, p.e. tenendo premuto il pulsante 4 per due secondi disattiva la seriale e consente l'uso dei pulsanti 1 e 2, poi dopo 10 secondi, o tot tempo a piacere, che non viene premuto nessun pulsante la seriale torna attiva.


PaoloP

Se usa l'I2C non può usare A4 e A5 come ingressi/uscite analogici o digitali.

pelletta

Usa uno shift register per il display lcd così usi solo 3 pin al posto di 6.
Lo stesso discorso vale per i relè, dato che ne hai 5 se li colleghi diretti useresti 5 pin mentre con un altro shift register ti basterebbero solo 3 pin.
Con questa soluzione con solo 6 pin controlli sia il display sia i relè...
Inoltre se al posto degli LM35 metti dei DS18B20 puoi collegarli tutti su un unico pin digitale.
Basta così? ;)

vitoos

Ho dimenticato di scrivere che il tutto verrà prototipizzato su una pcb, compreso l'atmega e quindi i pin TX e RX li vorrei lasciare per programmare. E multiplexare gli LM35? Tanto rilevare la temperatura di ogni sensore ogni 5 secondi sarebbe più che sufficiente veloce

astrobeed


Ho dimenticato di scrivere che il tutto verrà prototipizzato su una pcb, compreso l'atmega e quindi i pin TX e RX li vorrei lasciare per programmare.


Con la soluzione che ti ho proposto non perdi la programmabilità della scheda tramite seriale, in alternativa puoi collegare i quattro pulsanti su A5 in modo analogico creando un partitore variabile, quando premi un pulsante hai una tensione diversa abbinato allo stesso e in questo modo li puoi distinguere.

Michele Menniti

#8
Jan 04, 2013, 05:20 pm Last Edit: Jan 04, 2013, 05:25 pm by Michele Menniti Reason: 1
Certamente NON può usare l'LCD su I2C; visto che occupa A4 e A5 non avrebbe sufficienti pin analogici per gli LM35.
Usandolo a 4 bit prende 6pin (diciamo dal 2 al 7)
i relé li pilota dall'8 al 12
gli LM35 da A0 a A4
restano liberi solo il 13 ed A5 e ovviamente i pin della seriale, che non deve toccare per semplificarsi la vita futura
Non c'è altra soluzione, se non vuole aggiungere/sostituire componenti, che creare un partitore resistivo con 4 resistenze da 3k3 in serie tra loro tra 5V e GND, come PENSO stiano suggerendo Niki e Astro, uno schema del genere potrebbe funzionare?
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

pelletta


.... uno schema del genere potrebbe funzionare?


Meglio mettere anche una resistenza di pulldown su A5

PaoloP

Mi sembra che questo problema sia stato già affrontato concludendo che era difficile discriminare la pressione contemporanea di pù pulsanti. O sbaglio?

pelletta

Basta metterli distanti 3 metri uno dall'altro e il problema non si pone :smiley-yell:

astrobeed


Mi sembra che questo problema sia stato già affrontato concludendo che era difficile discriminare la pressione contemporanea di pù pulsanti.


Se sfrutti un ladder R/2R ottieni un semplice DAC a quatto bit che ti permette di sapere quali tasti sono premuti simultaneamente in base alla tensione in ingresso al ADC.

Michele Menniti

ma l'idea è quella di usare un pulsante per volta, immagino gli serva per muoversi sul menu....
Comunque le R andrebbero da 1-2-4-8 K (relativi valori commerciali)?
Concordo poi con BUD sulla necessità di una pull-down, ma verrebbe a trovarsi in parallelo a quelle "sotto" il pulsante premuto, a questo punto forse conviene lavorare in parallelo e non in serie, tra poco posto lo schema che ho in mente....
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

leo72

Io ho un vecchio shield Nuelectronics con un minijoystick a 4 vie più pulsante (pressione dello stesso joystick) letto da un'unica porta analogica, con 5 resistenze.
Ecco lo schemino dello shield, al centro c'è il joystick con le sue R
http://www.nuelectronics.com/download/projects/Nokia_3310_lcd.pdf

Go Up