Jak zwiększyć w laptopie częstotliwość sterowania LED-ów podświetlenia matrycy (sterowanie PWM)? W moim laptopie SVE1713Y1EB wynosi ona zaledwie 200 Hz, co powoduje, że w połączeniu z odświeżaniem obrazu z częstotliwością 60 Hz (jedyną dostępną) dostrzegam migotanie obrazu na jednolitych powierzchniach obrazu, co jest drażniące i męczące dla oczu.
Jestem elektronikiem ,więc mogę wymienić elementy elektroniczne, mam do tego sprzęt, ale nie mam schematu laptopa. A może trzeba coś pozmieniać w sterowniku karty graficznej?
Po primo:
-jesteś pierwszy ,który chce poprawic "fabrykę" i to co wymyslił w swoim modelu z poswietlaniem LED
Ktoś musi być pierwszy
Cytat:
- podaj dane płyty głównej (co na niej napisano)
- jak masz driver > ukł. scalony w ukł. podswietlania ?
Laptopa narazie nie rozbierałem, bo liczę na to, że uda się sprawę załatwić software'owo.
EVEREST pokazał mi, że nazwa płyty jest taka jak model laptopa, czyli SVE1713Y1EB, natomiast ekran (matryca) to N173HGE-L11. Co do grafiki, to laptop ma dwa chipy, Intel HD 4000 i AMD Radeon HD 7650M.
Z tego co znalazłem w necie, to procesory graficzne Intela mają rejestry, których ustawienie pozwala regulować parametry podświetlenia (Backlight Control Registers), ale jeszcze nie doszedłem do tego, czy Intel HD 4000 pozwala podkręcić częstotliwość kluczowania LED-ów.
P.S. Zapoznałem się nieco ze specyfikacją matrycy i okazuje się, że faktycznie domyślna częstotliwość sterowania podświetleniem to 200 Hz (czyli taka, jaką zmierzyłem oscyloskopem), ale jej możliwości są znacznie większe, bo ma zakres do 2kHz. Częstotliwość oczywiście nie może być dowolna, tylko musi mieścić się w odpowiednim zakresie, żeby uniknąć jak to oni nazywają "efektu wodospadu":
(N + 0,33) x f <= fpwm <= (N + 0,66) x f
N: liczba całkowita >=3
f: częstotliwość odświeżania obrazu
fpwm: częstotliwość sterowania LED-ami podświetlenia
i teraz podstawiając za częstotliwość obrazu 60 Hz, dla N=3 dostajemy zakres częstotliwości (w zaokrągleniu) [200..220], dla N=4 [260..280], N=5 [320..340].
Jak widać w moim laptopie jest ustawiona najniższa możliwa częstotliwość. Jakby nie mogli ustawić większej. Może by to wpłynęło na pogorszenie innych parametrów obrazu.
Mam ten sam problem w monitorze Asus VS239. W podświetleniu jest znany OZ9998AGN (SOP-20), który jest w uproszczeniu sterownikiem przetwornicy Boost oraz kilkukanałowym źródłem prądowym kluczowanym zewnętrznym sygnałem PWM. I chcąc usunąc migotanie podświetlenia trzeba zwiększyć częstotliwość sygnału PWM z 200Hz do myślę, że minimum 800Hz, a może i powyżej 1KHz. Jest to wartość bardzo niska w porównaniu do możliwości samego scalaka ( OZ9998AGN) gdzie producent w pseudo nocie katalogowej podaje: "Up to 50kHz PWM dimming frequency; and 1000:1 PWM dimming ratio" (OZ9998H), a w prawdziwej nocie katalogowej prawie identycznego układu TPS61199 producent podaje: "PWM dimming signal input pin. The frequency must be in the range of 100Hz to 22 kHz". Temat niskiej częstotliwości podświetlenia jest dość znany głównie na zagranicznych forach i wcale nie jest to problem wyimaginowany. Są nawet specjalne (oczywiście drogie ) monitory reklamowane jako nie migające. A wracając do naszego PWM to wychodzi on oczywiście z procesora i jeżeli nie ma w trybie serwisowym (w TV LCD spotkałem taką regulacje i to w szerokich granicach) możliwości zmiany to trzeba "rzeźbić". Pozdrawiam.
Częstotliwość 200Hz to standardowa częstotliwość PWM we wszystkich laptopach jakie spotkałem.
Może mylnie uważam ale ta częstotliwość raczej nie ma znaczenia z miganiem podświetlania.
Kanał PWM steruje driverem ledów znajdującym się na elektronice matrycy i raczej ten układ ma znaczenie, a te układy z reguły są tworzone lub markowane przez producenta.
Dodam, że podawałem na matrycę sygnał PWM ok 1KHz i nie widziałem żadnej różnicy.
Zawsze możesz zamiast sygnału PWM podać stałe napięcie 3V i sprawdzisz różnicę.
Jak koniecznie chcesz mieć częstotliwość ok 1KHz można zastosować np. attiny45 z programem który będzie mierzył PWM na wyjściu z laptopa a innym pinem układu wysyłał sygnał na matrycę.
Dodam że najczęściej sygnał PWM jest wysyłany z układu KBC płyty głównej.
Układ wielonóżkowy (ok 40pin) niestety nie można podmieniać na dowolny podobny (jest zaprogramowany).
Częstotliwość 200Hz to standardowa częstotliwość PWM we wszystkich laptopach jakie spotkałem.
Może mylnie uważam ale ta częstotliwość raczej nie ma znaczenia z miganiem podświetlania.
W zasadzie 200 Hz to dla ludzkiego oka bardzo dużo, bo przecie komputerowy monitor CRT z odświeżaniem 100 Hz to już też było sporo i niezauważalne było migotanie, ale widocznie połączenie częstotliwości kluczowania LED-ów 200Hz z częstotliwością 60 Hz LCD powoduje, że tylko na niektórych gładkich powierzchniach, np. jednolitej bitmapie z R, G i B na poziomie 40, widać chyba właśnie ten "efekt wodospadu" opisywany w serwisówce matrycy:
"If PWM control frequency isapplied in the range less than 1KHz, the “waterfall” phenomenon on the screen may be found. To avoid the issue, it’s a suggestion that PWM control frequency should follow the criterion as below. PWM control frequency fPWMshould be in the range:"
i dalej podany (przeze mnie ostatnio) wzór za zakres odpowiedniej częstotliwości sterowania LED-ów w zależności od częstotliwości odświeżania LCD (strona 12):
Zawsze możesz zamiast sygnału PWM podać stałe napięcie 3V i sprawdzisz różnicę.
Jak ustawię jasność na maxa, to oczywiście nie ma efektu migotania, bo kluczowanie LED-ów nie występuje (wypełnienie 100%), co potwierdza moje badanie oscyloskopem (fototranzystorem przyłożonym do matrycy).
aprillo napisał:
Jak koniecznie chcesz mieć częstotliwość ok 1KHz można zastosować np. attiny45 z programem który będzie mierzył PWM na wyjściu z laptopa a innym pinem układu wysyłał sygnał na matrycę.
Chętnie bym poprzerabiał, ale laptop jeszcze na gwarancji, ale jak minie czas gwarancji, to już nie będę się zastanawiał.
aprillo napisał:
Dodam że najczęściej sygnał PWM jest wysyłany z układu KBC płyty głównej.
Układ wielonóżkowy (ok 40pin) niestety nie można podmieniać na dowolny podobny (jest zaprogramowany).
A nie da się zaingerować w sterownik karty graficznej, żeby podkręcić częstotliwość kluczowania LED-ów?
Na pewno nie zrobisz tego z poziomu systemu(czyli za pomocą sterowników).
Może ingerencja w bios laptopa(też wątpię).
Niektóre układy KBC mogą korzystać z zewnętrznego programu zapisanego w oddzielnej kości (KBC bios) i modyfikacja tego biosu może coś zmienić.
Dodam jeszcze że niedawno sprawdzałem matryce N173HGE-L11 pod kontem subpixeli przy dostawie. Dla mnie matryca bardzo dobra kontrast 650:1, mocne podświetlenie.
Ostatnio w laptopach (oraz MacBook) zaczęto stosowac jako LED drivery układy z serii LP8550/8551/ 8545
Link *(i mu podobne rozwiązania innych producentów)
Driver ledów jest na elektronice matrycy w tym laptopie i w większości standardowych laptopów tak jest. W MacBook'u owszem w niektórych modelach na płycie głównej ale wtedy zupełnie inne matryce siedzą w środku np. LP133WX2-TLC1
Oznaczenie drivera ledów matrycy N173HGE-L11 to:
p39r 5968 - co pewnie nic nie powie nikomu bo jak wcześniej pisałem są to układy markowane lub tworzone przez producenta konkretnej matrycy.
Apple pewnie powiedziało hola! my chcemy mieć lepszą kontrole nad podświetleniem i mają.
Witam po dłuższej przerwie w rozpracowywaniu problemu.
Rozebrałem w końcu (całkowicie) tego laptopa, żeby dostać się już nie tylko do LVDS-a, ale do układu, który wystawia sygnał PWM, sterujący LED-ami podświetlenia matrycy.
Tak jak napisał kolega @aprillo, wygląda na to, że jest to układ KBC, którym w przypadku mojego laptopa jest układ NPCE885PA0DX. Przy nim jest zamontowany flash MX25L2006E, zapewne z załadowanym programem do sterowania tym KBC-em.
Niestety w necie nie udało mi się zbyt wiele znaleźć o tym układzie KBC, jedynie schemat od jakiegoś PC-ta, w którym ten układ występuje.
Układ występuje na schemacie na stronie 27 i widać, że ma kilka portów, dla których w opisie występuje _PWM, ale tylko dwa porty kojarzą się ze sterowaniem LED-ami: CHARGE_LED i PWRLED.
Pojawia się pytanie: czy da się coś z tym zrobić, tzn. zwiększyć częstotliwość sygnału PWM sterującego LED-ami? Obawiam się, że będzie to wymagało ingerencji w program sterujący układem KBC, a to by wymagało zczytania programu, deasemblacji, wprowadzenia poprawek, kompilacji i wgrania z powrotem do flasha. Chyba mało realne.
Mało realne, że to będzie możliwe do wykonania.
Nie masz specyfikacji układu. Tak jak każdy układ pewnie ma ograniczenia co do częstotliwości wysyłanego sygnału a w biosie kbc raczej producent określa stopnie jasności (oczywiście także inne ustawienia ale nas interesuje podświetlenie).
Sam sobie odpowiedziałeś.
Poczytaj co Koledzy powyżej pisali.
A Ty przeczytaj, co sam napisałeś i zastanów się, czy Twoja odpowiedź wniosła coś mądrego do dyskusji, oprócz nabijania sobie licznika postów.
Chyba to oczywiste, że czytam wątek, którego sam założyłem.
A Ty przeczytaj, co sam napisałeś i zastanów się, czy Twoja odpowiedź wniosła coś mądrego do dyskusji, oprócz nabijania sobie licznika postów.
Chyba to oczywiste, że czytam wątek, którego sam założyłem.
Obiecałeś w kwietniu że będziesz pierwszy który to zrobi i mamy wrzesień rozwiązania nie widzę.
Chyba nie do końca czytasz skoro kilka osób twierdzi że marne szanse ale skoro wiesz lepiej pracuj nad rozwiązaniem.
Jak zrobisz możesz opatentować.
Powodzenia.
Trzymam kciuki.
Obiecałeś w kwietniu że będziesz pierwszy który to zrobi i mamy wrzesień rozwiązania nie widzę.
Niczego nie obiecałem. Gdzie tak przeczytałeś?
Cytat:
Chyba nie do końca czytasz skoro kilka osób twierdzi że marne szanse ale skoro wiesz lepiej pracuj nad rozwiązaniem.
Gdzie napisałem, że wiem lepiej? Mam tylko jakieś przypuszczenia i zdaję sobie sprawę, że może być kiepsko z rozwiązaniem problemu. Czytaj uważniej i już nie nabijaj sobie licznika, bo jak dotąd w trzech odpowiedziach nie napisałeś niczego konstruktywnego, jedynie przyklepujesz rzeczowe wypowiedzi innych.
Cytat:
Jak zrobisz możesz opatentować.
Powodzenia.
Trzymam kciuki.
Może jak już rozkręciłeś lapka i nie dasz rady z wsadem KBC to skorzystasz z mojej starej sugestii.
aprillo napisał:
Jak koniecznie chcesz mieć częstotliwość ok 1KHz można zastosować np. attiny45 z programem który będzie mierzył PWM na wyjściu z laptopa a innym pinem układu wysyłał sygnał na matrycę.
-ingerencja w linie sygnału pwm
-jeden układ attiny45 lub attiny85 standardowo 500Hz można podkręcić
-zasilanie 3.3V
-napisanie programu
Skończyłem podobny projekt ale ja pozostałem na 500Hz także jak coś to pomogę.
Z efektu jestem zadowolony bo mi chodziło by była dobra regulacja podświetlenia, a nie kładłem nacisku na częstotliwość.
Startowałem od braku podświetlenia lub migotania.
Nie jestem ekspertem i moje wszystkie dane opierają się głównie na notach katalogowych, pomiarach multimetrem oraz symulacjach.
Pięknie to wygląda na filmiku, tylko pogratulować efektu Właśnie się przymierzam do ingerencji w sygnał sterujący podświetleniem LED-ów, który wchodzi na LVDS, ale mam taki problem. Nie chciałbym przecinać przewodu tego sygnału (psuć wtyku), ani podważać pinu przylutowanego do padu na laminacie, tylko zastosować przejściówkę z dwóch dodatkowych LVDS-ów, tzn. polutować piny dodatkowego gniazda LVDS z pinami dodatkowego wtyku LVDS z wyjątkiem pinu wspomnianego sygnału (tu się wpiąć ze swoim sygnałem), a następnie dodatkowy wtyk wetknąć w gniazdo LVDS zamontowane na laminacie, a wtyk od matrycy w dodatkowe gniazdo. Niestety w necie nigdzie nie znalazłem sklepu sprzedającego takie gniazda i wtyki. Trzeba będzie wyszukać ścieżkę na laminacie.
Kombinuję też software-owo dobrać się do tego kontrolera programem RW - Read & Write Utility. Jest w nim dostęp do rejestrów Embedded Controller-a (czyli właśnie tego układu). Np. program Notebook FanControl (polecam!) do zarządzania obrotami wentylatora odwołuje się do rejestrów tego kontrolera i można sobie samemu poustawiać obroty wg aktualnej temperatury procka. Być może z częstotliwością kluczowania LED-ów podświetlenia matrycy też da się pokombinować w ten sposób. Póki co zauważyłem, że podczas zmiany jasności podświetlenia (współczynnika wypełnienia sygnału sterującego) żaden bajt nie zmienia się na mapie rejestrów tego kontrolera, jak to ma miejsce przy zmianie obrotów wentylatora.
By zdobyć gniazdo i wtyk wystarczy kupić uszkodzoną płytę i taśmę, przynajmniej większość serwisów tak robi.
Ja bym "pruł" lekko taśmę albo ingerował w elektronikę matrycy.
Matrycę zawsze można kupić pękniętą do testów, a jak na jednej będzie działać to i na drugiej.
Trzeba uważać na linię PWM jak dojdzie do zwarcia układ KBC do wymiany.
Co do software'owego rozwiązania podstawową sprawą jest to czy to w ogóle wykonalne. Zmiana obrotów wentylatora raczej do tego nie można porównać tak czy inaczej wentylator kręci się zgodnie z założeniami producenta, a jedynie inne progi temperaturowe są ustawione.
Dodatkowo tak jak pisałem nie wiadomo czy układ w ogóle jest w stanie dać sygnał większy niż 200Hz. Największą częstotliwość spotkałem w jakimś HP 400Hz.
Swoją drogą ciekawe czy ten problem dostrzega wielu ludzi.
Można by było zrobić adapter wpinany w gniazdo matrycy, a z drugiej strony wpinać taśmę z laptopa.
Znalazłem banalne rozwiązanie problemu z wpięciem się w obwód sterowania LED-ami. Otóż każdy gold-pin (bardziej wsuwka) we wtyku LVDS ma taki klin/zatrzask zabezpieczający przed wysunięciem się, który wystarczy wcisnąć i można wsuwkę wyciągnąć.
Poza tym, na początek zrobiłem sobie na układzie NE555 generator prostokąta 1 kHz (3,3Vpp) z regulowanym współczynnikiem wypełnienia (żeby móc regulować jasność obrazu) i wpiąłem się z sygnałem z tego generatora w wypięty z LVDS-a pin (LED_PWM). Teraz mój generator steruje podświetleniem (jasnością) matrycy i z taką częstotliwością jak ja chcę. Matryca w swojej specyfikacji ma napisane, że LED-y podświetlenia można sterować z częstotliwością do 2 kHz. Migotanie obrazu zostało wyeliminowane, ale żeby zmienić jasność, muszę kręcić potencjometrem. W dalszym etapie przeróbki chciałbym zapewnić możliwość regulacji z poziomu systemu, więc trzeba będzie wykorzystać sygnał wychodzący z układu KBC. A to wymaga zaprzęgnięcia jakiegoś mikrokontrolera. W tym temacie nie czuję się jeszcze na siłach, żeby samemu to zrobić. Zapewne trzeba będzie zmierzyć czas trwania stanu wysokiego i niskiego sygnału z KBC, wyliczyć współczynnik wypełnienia i potem wygenerować prostokąt o częstotliwości np. 1 kHz o takim samym wypełnieniu.
Swoją drogą, co przeszkadzało konstruktorom laptopa, żeby dać większą częstotliwość sterowania LED-ami podświetlenia matrycy, żeby absolutnie nikt nie dostrzegał migotania obrazu? Oszczędność energii na pewno nie. Więc co?
To jest chwyt marketingowy poniżej pasa z tą częstotliwością. Ustawiają tak nisko, żeby sztucznie zredukować smużenie. Podświetlenie jest zsynchronizowane z odświeżaniem obrazu i jak wynosi 60Hz to podświetlenie wynosi np. 240Hz. Działa to w ten sposób, że zmiana treści obrazu następuje w czasie kiedy podświetlenie jest wyłączone. W przypadku TV LCD można już na kartonie napisać 100-200/120-240Hz mimo matrycy 50/60Hz. Gdyby częstotliwość była wyższa to okres "ciemny" trwał by zbyt krótko w porównaniu do czasu reakcji matrycy i nie maskowałby smug, a poza tym w napis "2000Hz" na kartonie już nikt by nie uwierzył Ja przerobiłem swój monitor na ok. 3,5kHz i różnica jest ogromna. Dużo mniejsze zmęczenie oczu. Wcześniej te migotanie tak mi dawało sie we znaki, że czasami ustawiałem na 100%, aby tylko nie migało. Przeróbka najprostsza z możliwych czyli NE555 jako generator PWM 3-99% (zmierzone oscyloskopem) i potencjometr w z tyłu obudowy. Może nie elegancko, ale szybciej i w większym zakresie sie reguluje niż w menu.
Zamiast 555 wystarczy tiny13 bez żadnych zewnętrznych elementów z prostym programem który będzie odczytywać szerokość impulsu z płyty i wpisywać do timera który wygeneruje pwm.
Wiem, że wystarczy. Należy jednym licznikiem (najlepiej 16 bitowym, aby działało w dość szerokim zakresie częstotliwości wejściowych) zliczać impulsy zegarowe z preskalera osobno dla stanu niskiego i wysokiego sygnału wejściowego PWM, można do tego użyć wejścia INT0, odczytywać i zerować licznik w przerwaniu, ustawiać na przemian wykrywanie zbocza opadającego lub wzrastającego. Z okresu jednego i drugiego obliczać współczynnik i wartość ładować bezpośrednio do rejestru drugiego timera 8 bitowego bo w zupełności wystarczy. Nic nie stoi na przeszkodzie, aby PWM generować też programowo przy częstotliwościach ponad 1kHz (fwe << fwy), jakieś drobne zakłócenia czasowe (obsługa przerwania) nie mają znaczenia.