Chybně zapojený LCD HDD44780, maximální proud na podsvětlení

Zapojení jsem převzal. Mám tam dvě drobný úpravy. Jelikož podsvícení displeje vyžaduje 4,2V, mám tam toto napětí místo 5V a místo potenciometru 2k2 v knize jsem použil 10k dle datasheetu displeje. Když zapnu napájení, tak podsvícení funguje, ale na displeji se nic neukáže. Je nějaký jednoduchý způsob, jak ověřit, že funguje a že jsem ho neodpravil?

[code]'--------------------------------------------------------------------
’ LCD
'--------------------------------------------------------------------
$regfile = “m48def.dat”
$crystal = 8000000
$lib “lcd4.lbx”

Config Lcd = 16 * 2
Config Lcdmode = Pin

Cls
Lcd “Start”
Lowerline
Lcd “Funguje”
Wait 5
Cursor Off
Do
Locate 1 , 1
Lcd " "
Locate 1 , 1
Lcd “Text”
Wait 1 ’ prodleva 1 sec
Locate 1 , 1
Lcd " "
Locate 1 , 1
Lcd “Pokus”
Waitms 500 ’ prodleva 500 msec
Loop
End[/code]

:arrow_right: administrator: přejmenováno z “Další krok - displej, další problém”

:arrow_right: administrator: přiloženy externí soubory
dsh.513-138.1.pdf (483 KB)
LCD.rar (514 KB)

Vypni podsvícení a pusť to na 5V. Jsi totiž mimo toleranci napájení. Do série s podsvícením dej odpor 10R a můžeš svítit.

Odpor 10R nemám. Tak jsem to zapojil na druhý výstup zdroje na 4,2V a první nastavil na 5V. Displej je hezky podsvícený, ale je to bohužel vše co to dělá. To podsvícení je docela žravý. Bere si to 430mA.

Žhavý je to preto, lebo ho prepalujes. Vsetky diodove chcrakteristiky maju vyrazne koleno. Ak nan pripojis tvrdy zdroj napatia a si co i len trochu “za rohom”, dioda sa otvori az moc a prepusti velky rpud a suciastka sa casom (1ms-1000s) teplom znici. Ak si v katalogu nasiel, ze na podsvieteni ma byt 4,2V , tomu mas rozumiet tak, ze ak podvietenie napajas napatim Ucc tak medzi klady pol a anodu podsvietenia mas dat odpor, ktoreho hodontu vypocitas:

R=(Ucc-4,2)/Izelany

Izelany zavisi od katalogovych hodnot, ale ak si na zaciatok vyberies 20-40mA, chybu neurobis. Jasne, ze ziadna dioda nie je 100% rovnaka s inou a tak na jednej pri prude 20mA moze byt 4.1V a pri druhej 4.3V. Ak tam das 4.2V tvrdy zdroj, tu prvu podsvetlovaciu diodu/diody casom bezpecne zabijes. Ak das napajanie cez odpor, tento bude prud cez podsvetlenie stabilizovat. To znamena, ze ak
R=39ohm, potom v pri prvom display potecie cez podsvetlenie prud 23.08mA a v druhom pripade 17.95mA. Mozno sa Ti nezda byt stabilizacny ucinok “ocividny”, ale vermi, je. Inak moze prud cez rozne LED kludne kolisat aj 10 nasobne, ak si napatim vyhmatol prave to koleno.
Viac sa prejavi pri vyssom napatovom rozdieli medzi Ucc a napatim na LED diode v otvorenom stave. Urcite Ti ten odpor pomoze, aby si si podsvetlenie nezabil.

MAXIMÁLNÍ dovolený proud podsvětlení tvého displeje je 240 mA! Okamžitě zapomeň na to, že když výrobce napíše u diody 2V, že tam připojíš 2V a jdeš od toho. Je to přesně jak píše martin, to napětí je udávaný jen proto, aby sis mohl dopočítat předřadný odpor.

Každopádně pokud má elektronika 5V, problém je jinde.
Nikde v programu nevidím nic, čím bys mohl překladači říci, kde je displej zapojen.

Kde jsi našel Config Lcdmode = Pin?
Lcdmode je buď Port nebo Bus. Default je Port, takže nemusíš psát nic.

Až spravíš podsvícení tak se podívej v helpu na příklad u hesla “Config Lcdpin”.
Pin5 na displeji nepřipojuj k mproc, ale uzemni.

Podívej se na www.mp222.wz.cz
Je tam překlad příkazů a nějaké cvičné programy.

Psal jsem žravý, nikoliv žeravý, tj, že bere příliš, že hodně žere = hodně jí řečeno nespisovně. Daný odpor musím buď zajít zítra koupit a nebo to můžu nechat jak to je a na zdroji nastavit proudový omezení. Segmentovku automaticky zapojuji přes odpory, ale tady mě to vůbec nedošlo, že je to bez ochranných odporů. Je to můj první displej.

Viz níže - společná odpověď s následující citací.

Program jsem téměř bez úprav převzal z knížky od BENu Programování Atmel AVR Bascom Upravil jsem jen typ mcu a vlatní zobrazované texty. Tam jsem také nalezl zapojení, podle něhož jsem displej zapojil. Tam také píší “signál R/D určuje zápis/čtení do LCD”. Myslel jsem si, že má být zapojen, nicméně zkusím ho uzemnit. Vypadá to, že v knize jsou chyby.

Díky, to se bude hodit. V knížce moc příkladu není (navíc jsou některý evidentně špatně) a tak příklady s českými komenty jen vítám.

Ak tam das 4,25V moze byt zhavy aj zeravy sucasne :slight_smile:. Dufam, ze z mojho popisu bolo jasne co som chcel povedat. Nastav si momentalne prudove obmedzenie na nejakych 0.1A. 0.24A bude maximum.

Teď se dívám do té knihy a opravdu je to tam.
Příklad je pro knihovnu “lcd4lib.lbx”.
Používám raději kód bez této knihovny. Umožní to připojit piny k mproc libovolně.

Uzemni pin5 Lcd a zkus toto:

Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , _ Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.4 , Rs = Portb.5 Config Lcd = 16 * 2 Cursor Off Do Cls Waitms 500 Lcd "AAAAAAAAAAAAAAAA" Wait 1 Lowerline lcd "BBBBBBBBBBBBBBBB" Wait 1 Loop End
Displej můžeš ve dne zkoušet i bez podsvícení.

Tak diplej konečně zareagoval. Ale v horní řádce mám černé obdélníky. Tenhle problém jsem tu už někde na fóru viděl a myslím si, že to bylo špatným zapojením displeje. Jsem přesvědčený, že jsem to zapojil správně a ne zrcadlově, jako ten dotyčný. Ale radši to opět zkontroluju.

Číslování pinů (zepředu) je “naprosto logický”:
14,13,12,11,10,9,8,7,5,4,3,2,1,15,16 + 15 a 16 bokem

Edit: tak zapojení jsem zkontroloval a je imho správně. Jediný, co mě napadá to, že v datasheetu píšou pin 11-14 a symbol DB4-DB7, že by pin 11 nebyl DB4, pin 12 DB5 atd, ale pin 11 DV7, pin 12 DB6 atd. Ale to bude nejspíš blbost. Jinak pin 5 jsem prozemnil.

Černé obdélníky znamenají, že je připojeno napájení ale neproběhla inicializace.

U pinů Lcd jsou čísla, zkontroluj si to.

A ukaž kompletní kód, který jsi použil.

Už to funguje. Jsem ještě větší blbec, než jsem si myslel. Byla to triviální chyba. Pořád jsem kontroloval připojení displeje k Atmelu a nezkontroloval jsem okolí. Když jsem probíral napájení, tak jsem zjistil, že mě tam chybí jedna propojka. Doufám, že tímto tempem nevyčerpám vaši trpělivost příliš brzy. Tak to dopadá, když se strojař hrabe v elektronice.

Tyhle napájecí linky mám na poli propojený permanentně, tudíž se mi pak nestane, že na to zapomenu :wink:.

Displej jsem už rozběhal a další krok byl A/D převodník. Ten mě běhá, ale nějak nedokážu omezit počet desetinných míst. Ať dělám co dělám, tak pořád mě to ukazuje na 10 míst, což je naprosto zbytečný. Pokoušel jsem se to omezit na 2 místa, ale marně.

V bascicu na 8bitu jsem to dělal běžně tak, že jsem vynásobil číslo 100 (v případě na dvě desetinná místa), zaokrouhlil jsem ho a pak jsem ho vydělil 100. Tak jsem získal číslo aaa.bb z čísla aaa.bbbbbbbb. Tady to dělám stejně, ale jelikož číslo je cca 1000x větší než výsledný, tak postupně dělím 10, zaokrouhlím a pak 100. Jenže tady to nefuguje.

[code]$regfile = “m48def.dat”
$crystal = 8000000

Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , _
Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.4 , Rs = Portb.5

Dim X As Single
Dim Y As Single
Dim Z As Single
Dim V As Single
Dim A As Word
Config Adc = Single , Prescaler = Auto
Config Lcd = 16 * 2

Cursor Off
Lcd “Voltmetr”
Wait 1
Lowerline
Cls

Start Adc

Do
A = Getadc(0) 'Nacteni y AD prevodniku
X = 4.8875 * A 'Prepocet na volty
Y = X / 10 ’ Posunutí desetinné tečky o jednu vlevo
Z = Round(y) ’ Zaokrouhlení na celé číslo
V = Z / 100 ’ Získání čísla s dvěma desetinými místy
Locate 2 , 1
Lcd " "
Locate 2 , 1
Lcd Str(v) + " V "
Waitms 20 ’ Zobrazení na displeji
Loop
End[/code]
IMG_6292.JPG

Ale vyzera to cool. Na prvy pohlad je to presny voltmeter s bohovskym rozlisenim :slight_smile:

Please, do not mix idiotic american phrases in our nice language.

Sorry, opravujem v zmysle požiadavky

… vyzerá to kúl :slight_smile: :slight_smile: :slight_smile: