Automatyczne sterowanie podswietlenia LCD Mega16


Czesc wszystkim.

Jestem nowy na tych stronach i tym forum. Zabawe z mikrokontrolerami zaczalem niedawno i zafascynowaly mnie one.
Pisze w BASCOM. Po pierwszych probach z diodami wzialem sie za stworzenie sterownika do akwarium (taka inna wersja skalara - opisywanego na innych forach).
Jak na razie caly czas dodaje nowe funkcje, testuje rozne zaleznosci i wylapuje bledy w sofcie czekajac miedzyczasie na podzespoly.

Sterownik moj ma sterowanie 5-ma kanalami, oczywiscie LCD, 4-przyciskowa klawiaturka (wystarcza w zupelnowci), zegar RTC.

Pojawia sie pytanie. Jak zrobic tak, by podswietlenie LCD nie swiecilo sie caly czas.
Efekt jaki chcialbym uzyskac to wygaszony caly czas, wlaczajace sie podswietlenie tylko wtedy, gdy zalacza sie jakis kanal, lub nacisne jakikolwiek klawisz. Dodam, ze nie doszedlem jeszcze do PWM (nie wiem z czym i jak sie to je).

Jaka metoda bedzie dobra by to zrobic?

Pozdrawiam
Robert




Portret użytkownika mirley

Re: Wyświetlacz

Jak chcesz tylko sterować włącz/wyłacz to nie potrzebny jest do niczego PWM a daj tylko tranzystor sterujący diodą wbudowaną w LCD. W wielu moich projektach mam tak zrobione, np Sterownik C.O Jeden pin mikrokontrolera przeznaczysz na sterowanie tranzystorem.

W programie w najprostszym przypadku dajesz licznik liczący w dół np co 1s (napewno masz timer uzyty więc nie będzie z tym problemu). jak dojdzie do zera to ma zostać na zerze. Dla stanu Zero podśw wyświetlacza ma nie działać a dla pozostałych świeci. Przy naciśnięciu przycisku ustawia sie ten licznik np na 10 co daje czas świecenia jeszcze 10s od ostatniego naciśnięcia

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika gray77

Tak. Dokladnie tak juz

Tak. Dokladnie tak juz zrobilem (mam tak wykonany autopowrot z menu do ekranu glownego i dopisuje instr do podswietlenia). Wspomnialem o PWM bo ladniej by wygladalo sciemnianie do zera lub rozjasniania. Probowalem przyklad PWM od Megi8 na mojej 16-tce ale niestety nie dziala i sie wysypuje. Bladego pojecia nie mam jak to ugryzc. Nadmienie, ze Timer1 mam juz wykorzystany do sprawdzania klawiszy i wracania do ekranu glownego.

Jesli wiedzialbys jak to zrobic (obsluzyc PWM z 16-tki), poprosilbym o przykladowy kod i jak to zastosowac w praktyce (jednorazowe rozjasnianie i sciemnianie). Niesty nie znalazlem jakiegokolwiek kodu albo po prostu zle szukam.

-

Robert

Portret użytkownika rafliczek22

Ale po psa do tego pwm

Ale po psa do tego pwm sprzętowy (i to w dodatku 16-bitowym) równie łatwo da się to zrobić na programowym pwm-ie( dla oświetlenia starczy nawet 40Hz i nie będzie migać) ale jeśli koniecznie na sprzętowym to timer0/timer2 i ustawiasz w rejestrze tccr0/tccr2 tryb fastpwm (tryb 3), jak chcesz to można przez konfig ale sam się przekonałem że nie ma to sensu bo pisania więcej a nie zawsze zapyka, pozostałych rejestrów (TIFR i TIMSK nie ruszaj, jeśli użyjesz t2 to dla zasady ustaw ASSR na 0x00, ocr0/ocr2 zmieniasz wypełnienie) a co do tego co napisałeś to może lepiej nie licznik 10->0 co 1s tylko 1000->0 co 1ms i kiedy licznik będzie na np 128 to co licznik będzie -1 to pwm będzie -2 (bo 8-bitowy i liczy do 256 więc -2) i kiedy dojdzie do 0 to pmw też będzie równy 0 efekt będzie taki że kiedy zostanie jeszcze 1,28 s do końca będzie się powoli wygaszać.

Edit:

I koniecznie tryb fastpwm można pwmphasecorect ale wtedy w.cz bo gó**o jedno wielkie uzyskasz.

Portret użytkownika czareq

Kondensator zamiast PWM ?

A może zamiast PWM użyć kondensatora przed tranzystorem ?
Sam tak kiedyś zrobiłem w jednym projekcie gdzie chciałem zrobić łagodne wygaszanie/zapalanie podświetlania a nie chciałem używać PWM. Tranzystor nie będzie się przegrzewał bo jego rezystancyjne obciążenie będzie krótkie.

-

Cezary Rodziewicz
www.czareq.pl