"Klasické" alfanumerické LCD displeje s řadičem HD44780 nebo ST7066 všichni dobře znáte. Není tedy potřeba se zdržovat nějakým představováním. Protože ale existuje nespočet různých variant s různým řešením napájecího napětí, předpětí pro LCD driver a podsvícení, dovolím si předložit malý rozcestník jak modul připojovat (nejen) k 3V systémům.
Z optického hlediska se displeje dělí na takzvané "Pozitivní" a "Negativní". Pozitivní zobrazují tmavé znaky na světlém pozadí. Nepotřebují ke své činnosti podsvícení a jsou čitelné díky okolnímu osvětlení. Vyrábějí se ale typicky i s podsvícením, které poslouží hlavně v noci nebo v tmavém prostředí. "Negativní" displeje zobrazují světlé znaky na tmavém pozadí (například rozšířený "bílý text na modrém pozadí"). Negativní displeje jsou čitelné jedině s podsvícením a ztrácejí kontrast při silnějším vnějším osvětlení (sluneční svit třeba). Jejich jedinou pozitivní stránkou je dle mého názoru vzhled (někdy prostě chcete bílé písmo na černém pozadí). Pro představu si níže dovolím zveřejnit portfolio od Raystar. A teď proč o tom píšu. Běžně jsou k dostání moduly dle dokumentace určené k napájení napětím 3.3V. Podsvícení na většině modulů tvoří LED a většina má prahové napětí větší jak ~3.5V (bílá, modrá atd), případně ~4.2V (žlutozelené varianty). Takové podsvícení není možné přímo napájet ze 3.3V systému. U Pozitivních displejů vám to nemusí vadit, protože jdou provozovat i bez podsvícení. Ale negativní displeje budou k ničemu. Nebo přesněji řečeno budete muset ve vaší aplikaci někde sehnat vyšší napětí a nebo postavit nějaký jednoduchý step-up měnič. Tak či onak vás bude čekat práce navíc, tak pozor na to.
Displeje o kterých je řeč jsou řízeny driverem HD44780 nebo ST7066(U) (případně dalšími ekvivalenty). Hned na první stránce datasheetů si můžeme přečíst "Low power operation support 2.7 to 5.5V" . Což znamená, že digitální část driveru bude v pohodě pracovat na 3.3V. Smutná zpráva je, že s tak malým napětím driver nedosáhne rozumného kontrastu. Napětí pro driver se přivádí na pin označený VO (Vlcd) a kontrast se řídí rozdílem proti napájecímu napětí. Pro rozumný kontrast musí být rozdíl mezi VCC-VO někde mezi 3.8 až 4.8V (na VO musí být tedy o tuto hodnotu nižší potenciál). Čehož lze s 5V napájením dosáhnout hravě pomocí jediného trimru. Touto informací se dostáváme zpět k tomu jaký je rozdíl mezi "3V" a "5V" provedením displejů. Klíčový rozdíl je v tom, že "3V" varianty jsou vybaveny nábojovou pumpou (např. ICL7660) generující záporné napětí (přibližně -3V). S její pomocí lze přivést na VO mezi -0.5V až -1.5V nutné k dosažení dobrého kontrastu. U většiny "3V" displejů s 16ti pinovým konektorem je záporné napětí z modulu vyvedeno na samostatný pin (typicky je na místě anody LED podsvětlení - pin 15). Z toho plyne, že "3V" variantu lze beze všeho napájet 5V (a výstup nábojové pumpy nevyužít). Stejně tak "5V" variantu lze napájet nižším napětím, ale vhodné napětí pro VO si musíme obstarat sami. Jak na to si samozřejmě ukážeme.
Zřídka se můžete setkat s ne úplně povedenými kousky jako je například RC0802A-TIY-ESV. Tento negativní "3V" modul je osazen pouze 14pinovým konektorem. Nemá tedy vyvedeno ani podsvícení (musíte si dráty připájet na odpovídající místa sami) a ani výstup z (osazené) nábojové pumpy. V dokumentaci se nic nedočtete, takže musíte podstoupit "reverse engineering" vedoucí ke zjištění, že výstup nábojové pumpy je přes odpor 1k přiveden na pin VO (pin 3). Stačí tedy "naznačený" dělič napětí dokončit (připojit proti VCC) pomocí vnějšího odporu nebo reostatu odpovídající hodnoty.
Často se můžete dostat do situace kdy máte ve vaší aplikaci k dispozici 5V napájení, v šuplíku spoustu 5V displejů a chcete je provozovat s STM32 běžícím na 3.3V. Řešení takové situace je velice jednoduché. Datovou sběrnici displeje připojíte k "FT" (Five volt tolerant) pinům STMka. Typ výstupu v programu zvolíte jako "open drain" a k Enable pinu (E) displeje připojíte pullup rezistor (např 10k) na 5V. Toť vše. Všechny ostatní piny displeje mají interní pullup tranzistor, který dodává proud mezi 50-200uA. Vzestupné hrany budou pomalejší (typicky okolo 1us) a někdy bude potřeba tento fakt zohlednit v použité knihovně. Vzhledem k tomu, že spotřeba těchto displejů (pozitivních) bývá nízká, vyplatí se během nečinnosti držet všechny piny v log.1 (HiZ). V takovém stavu totiž neteče pullup tranzistory žádný proud.
Pokud v aplikaci 5V napětí nemáte a jste zcela odkázáni na 3.3V (případně 2.5V) máte dvě možnosti. Buď na displej osadíte nábojovou pumpu (většina displejů na to má prostor) - čímž displej povýšíte na "3V" variantu. A nebo si snadno připravíte vlastní. Z generátoru obdélníkového průběhu (např. timeru v MCU) a páru diod a kondenzátorů. Přirozeně si nemusíte lámat hlavu s "FT" piny, pullupy a pomalou dynamikou vzestupných hran.
Pro zajímavost jsem proměřil spotřebu několika různých displejů ve dvou "základních" režimech použití. Při měření spotřeby byly všechny piny krom E v úrovni H (kvůli eliminaci spotřeby zabudovaných pullup rezistorů). Zobrazen byl řetězec "0123456789". Pokud není uvedeno jinak tak jsem displeje testoval s 5V napájením (zapojení A) a s 3.3V napájením (zapojení E), potenciometr pro nastavení kontrastu byl 100k a jeho spotřeba není zahrnuta. Kontrast je udán jako napětí mezi VDD a vývodem LCDE.
Napájecí napětí | 5.0V | 3.3V | ||||
---|---|---|---|---|---|---|
Název displeje | Kontrast [V] | Odběr [uA] | Kontrast | Odběr | Poznámka | Fotografie |
DEM16101-TGH/V | -4.51 | 296 | -4.56 | 240 | ||
ED16250-TRH | -3.39 | 515 | -3.60 | 403 | ||
EC1602S-FL-YBS | -4.04 | 586 | -4.00 | 486 | ||
RC2001A-FHY | -4.23 | 530 | -4.35 | 595 | Osazen nábojovou pumpou, zapojení C při 3.3V |
|
RC2004A-YHW | -4.23 | 369 | -4.35 | 284 | ||
RC0802A-YHY | -4.39 | 295 | -4.24 | 230 | ||
RC1602B-GHW | -3.34 | 273 | -3.58 | 246 |
Home
| V1.52 5.7.2022 - (upraven 27.7.2022)/
| By Michal Dudka (m.dudka@seznam.cz) /