Go Down

Topic: Help accensione / spegnimento LCD (Read 2 times) previous topic - next topic

vitalife

Buongiorno a tutti,
sono un nuovo iscritto al forum.. Ed esordisco subito con una domanda!

Sto facendo un progettino (una mangiatoia a tempo per il mio gatto), e avrei bisogno di controllare da arduino l'accensione e lo spengimento di un display LCD, vorrei poterlo spegnere del tutto, anche se poi lo devo ri inizializzare.

L'LCD è collegato come da tutorial:

http://arduino.cc/en/uploads/Tutorial/LCD_bb.png

con in  più collegati anche LED+ e LED+.

Ho provato a controllare tutti negativi col mosfet che viene dallo starter kit:

Mosfet transistors [IRF520]

In pratica ho messo tutti i negativi sul drain, collegato il source a massa e controllo il gate con un pin,
ma l'LCD non si spegne!

Qualcuno mi sa dire come posso fare in alternativa, o se ho sbagliato qualcosa?

Grazie in anticipo!

Federico

Testato

Due cose, primo e' meglio che interrompi il positivo, secondo per fare delle rpove stacca fisicamente i cavi interessati in modo da capire se stai sbagliando son il sw o con l'hw
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

vitalife

Intanto grazie mille per aver risposto! Mi daresti qualche indicazione su come interrompere i positivi? Mi pare che con il mosfet bisogna collegare il source a massa per pilotarlo ... grazie ancora!

uwefed

Devi fare 2 cose: devi togliere le tensioni su tutti i pin di entrata e poi interrompere l' alimentazione positiva compreso la tensione sul pin di contrasto. Questo perché (quasi) tutti gli integrati non sopportano tensioni superiori a quella applicata sui piedini di alimentazione.

Per togliere le tensioni sui pin di entrata usa un tristate bus driver come per per esempio il 74HC244. Per portarlo in stato di alta impedenza devi dare H sui 2 pin enable.

Per interrompere l' alimentazione usa un transistor PNP o P-MOSFET.

Ciao Uwe

Testato

devi cambiare mosfet, ed usare un canale P

uwe dici che se interrompe solo il positivo si rompe qualcosa ? cosa ? perche' ? non ho capito il tuo discorso
stacca direttamente il 5V dal pin arduino, prima che arriva al potenziometro e basta secondo me
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

uwefed

Ciao Testato
Se leggi le specifiche del HD44780 (per Esempio: http://www.sparkfun.com/datasheets/LCD/HD44780.pdf) a pagina 47 trovi:
Absolute Maximum Ratings
...
Input voltage Vt: -0.3 to VCC +0.3 V
...
Se Vcc é 0V la tensione sui Pin input del HD44780 deve essere anche 0V.
Percui non puoi togliere solo la tensione di alimentazione.

Ciao Uwe

Testato

non sono d'accordo, indi passo ai test.
ho tenuto per 1 ora il mio display senza alimentazione ma con i pin connessi, e non si e' rotto.

Ne deduco che quello che dice il datasheet e' vero, ma solo se il tutto e' alimentato. Se manca i positivo di alimentazione non succede nulla ai pin di ingresso.
Hai altri test in merito ?
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

pelletta

E se spegni solo la retroilluminazione del display dato che è quella che consuma di più?
Ti basterebbe solo un transistor

cece99


E se spegni solo la retroilluminazione del display dato che è quella che consuma di più?
Ti basterebbe solo un transistor

STavo pensando: se è la mangatoia x un gatto deve stare sempre accesa e se visualizza sempre la stessa cosa non si bruciano i cristalli sempre utilizzati (fenomeno tv plasma della stazione che mostra gli orari delle partenze e degli arrivi?).
Secondo me è meglio spegnere tutto :D
Il Vero Programmatore non ha bisogno di manuali sull'assembler, sono
  sufficienti i data sheet dei microprocessori.

leo72

Quello che dice Uwe è vero, staccando Vcc ma continuando a mandare i segnali ai pin all'interno di un chip scorre comunque corrente. Potete benissimo verificarlo collegando 5V ad un pin qualunque di un Arduino ed uno dei pin GND al negativo dell'alimentazione esterna usata: poi staccate il cavetto USB. Vedrete che i LED della schedina si accendono come se fosse sotto tensione dalla porta USB.

E' però anche vero il discorso che spesso è inutile togliere completamente l'alimentazione all'intera logica del display. Staccata la retroilluminazione, si può usare il comando lcd.NoDisplay() per eliminare la visualizzazione. In questo modo il display consuma solo gli 1/2 mA della logica, accettabile se il progetto è qualcosa alimentato da rete. Per riattivare la visualizzazione basta usare lcd.Display()

uwefed

#10
Dec 08, 2012, 08:49 pm Last Edit: Dec 08, 2012, 09:02 pm by uwefed Reason: 1

non sono d'accordo, indi passo ai test.
ho tenuto per 1 ora il mio display senza alimentazione ma con i pin connessi, e non si e' rotto.

Ne deduco che quello che dice il datasheet e' vero, ma solo se il tutto e' alimentato. Se manca i positivo di alimentazione non succede nulla ai pin di ingresso.
Hai altri test in merito ?

Il Tuo test significa solo che il TUO display ha sopportato per un ora le condizioni con le quali lo hai pilotato.
Nient altro. Da questo non puoi dedurre, ne se la sua vita viene riditto da queste condizioni o no, ne cosa succede con altri modelli o esemplari dello stesso modello di display.

Ciao Uwe

uwefed


STavo pensando: se è la mangatoia x un gatto deve stare sempre accesa e se visualizza sempre la stessa cosa non si bruciano i cristalli sempre utilizzati (fenomeno tv plasma della stazione che mostra gli orari delle partenze e degli arrivi?).
Secondo me è meglio spegnere tutto :D

Ciao CECE99
Il pincipio di funzionamento di un display al plasma é diverso da un LCD.

In un display al plasma hai dei elettroni che vengono spinti su un colore fosforescente (molto simile come un tubo catodico, ma a differenza la produzione della nube di elettroni e l' accelerazione avviene singolarmente per ogni pixel) I fosfori della superfice che emana colore col tempo si degradano (come un colore sbiancato) in funzione della quantitá di elettrodi che sono arrivati (= luminositá alta per molto tempo) oltre che la produzione di calore é notevole e peggiora col tempo tutto il display. Il vantaggio é che ai un immagine di singili pixel che emana colore.

I singoli pixel del LCD fanno passare luce o meno. Nei display a colore la luce arriva da una retroilluminazione. Per questo non si puó bruciare un immagine come nei tubi catodici o i display al plasma. L' usura consiste nel degrado della retroilluminazione e nei guasti di pilotaggio dei singoli pixel (dove ci sono transistori).

Ciao Uwe

vitalife

grazie a tutti per gli interventi! Di lavoro sviluppo software per disposistivi embedded, ma non mi sono mai occupato di HW, e si capisce dalle mie domande  :* , ho iniziato a giocare con arduino da pochissimo, ma mi sto già divertendo parecchio :)

vitalife

#13
Dec 08, 2012, 11:57 pm Last Edit: Dec 09, 2012, 12:00 am by vitalife Reason: 1

Devi fare 2 cose: devi togliere le tensioni su tutti i pin di entrata e poi interrompere l' alimentazione positiva compreso la tensione sul pin di contrasto. Questo perché (quasi) tutti gli integrati non sopportano tensioni superiori a quella applicata sui piedini di alimentazione.

Per togliere le tensioni sui pin di entrata usa un tristate bus driver come per per esempio il 74HC244. Per portarlo in stato di alta impedenza devi dare H sui 2 pin enable.

Per interrompere l' alimentazione usa un transistor PNP o P-MOSFET.

Ciao Uwe


Credo di aver capito come interrompere l'alimentazione con un P-MOSFET, appena ho un po' di tempo disegno il circuito così vediamo se ho capito davvero :)

Per togliere le tensioni sui pin del display potrebbe essere sufficiente impostare i corrispettivi pin su arduino come input così vanno in alta imopedenza?

Mi devo documentare su cos'è e come si usa un tree state bus driver!


vitalife


Quello che dice Uwe è vero, staccando Vcc ma continuando a mandare i segnali ai pin all'interno di un chip scorre comunque corrente. Potete benissimo verificarlo collegando 5V ad un pin qualunque di un Arduino ed uno dei pin GND al negativo dell'alimentazione esterna usata: poi staccate il cavetto USB. Vedrete che i LED della schedina si accendono come se fosse sotto tensione dalla porta USB.

E' però anche vero il discorso che spesso è inutile togliere completamente l'alimentazione all'intera logica del display. Staccata la retroilluminazione, si può usare il comando lcd.NoDisplay() per eliminare la visualizzazione. In questo modo il display consuma solo gli 1/2 mA della logica, accettabile se il progetto è qualcosa alimentato da rete. Per riattivare la visualizzazione basta usare lcd.Display()


Il principio di funzionamento della mangiatoia che ho in mente è semplicissimo: programmi un timer, lo avvii e quando scade si apre la ciotola. Mi serve perché quando lavoro il mio micetto sta a casa da solo e vorrei che mangiasse alle ore giuste, se no si "autoregola" mangiando subito tutto ! una volta avviato il timer vorrei che l'LCD si spegnesse del tutto per minimizzare i consumi, non prevedo alimentazione da rete, ma a batterie ...

Go Up