Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Sterowanie LCD bezpośrednio z GPIO

japko1024 24 Oct 2019 01:07 8592 61
Altium Designer Computer Controls
  • Sterowanie LCD bezpośrednio z GPIO
    Zazwyczaj elektronicy-amatorzy stosujący w swoich projektach wyświetlacze ciekłokrystaliczne posługują się dedykowanymi sterownikami (np. HD44780) pośredniczącymi pomiędzy mikrokontrolerem a LCD, a przynajmniej można wyciągnąć taki wniosek na podstawie wyników zwracanych przez wyszukiwarki. Jednak możliwe jest uruchomienie wyświetlacza bez dodatkowego układu scalonego - poprzez doprowadzenie sygnałów cyfrowych z GPIO standardowego mikrokontrolera na przezroczyste elektrody, pomiędzy którymi znajduje się ciekły kryształ. Można w ten sposób wykorzystać wyświetlacze wymontowane z różnorodnych urządzeń, których nie dało / nie opłacało się naprawiać, ale w razie ich braku w wielu sklepach z częściami elektronicznymi dostępne są nowe LCD nieprzylutowane do PCB ze sterownikiem.

    Podłączenie LCD


    Wyświetlacze pochodzące z różnych urządzeń mają rozmaite sposoby podłączenia. Jedne wyposażone są w polimerowe, elastyczne taśmy z naniesionymi ścieżkami, inne w piankowe paski zawierające materiał przewodzący (umieszczane pomiędzy PCB a krawędziami LCD), wreszcie inne posiadają wystające metalowe druciki. W przypadku tych ostatnich wykonanie połączeń elektrycznych będzie najprostsze - wystarczy przylutować przewody, które można podłączyć również do płytki stykowej (jeżeli rozstaw drucików jest taki sam, jak otworów na płytce, nawet to nie będzie konieczne).

    Zasilanie wyświetlacza - podstawy

    Aby dany segment wyświetlacza (obszar, który może być sterowany niezależnie od pozostałych segmentów - np. ikonki lub poszczególne kreski tworzące cyfry) stał się widoczny, pomiędzy tworzącymi go elektrodami musi pojawić się napięcie.

    UWAGA!!! Należy w tym celu stosować napięcie przemienne (o częstotliwości np. kilkudziesięciu Hz lub kilku kHz), ponieważ napięcie stałe może powodować nieodwracalną elektrolizę ciekłego kryształu i zniszczenie wyświetlacza!

    Jednak napięcie przemienne (o przebiegu prostokątnym) można łatwo dostarczyć za pomocą GPIO - na wyprowadzeniu podłączonym do jednej elektrody w danej chwili musi być stan niski, a na drugiej wysoki, po czym obydwa stany muszą być cyklicznie zamieniane na przeciwne (przez pewien czas pomiędzy tymi zmianami mogą być takie same, o czym będzie później, kiedy poruszymy temat regulacji kontrastu za pomocą PWM).

    Ważna jest również odpowiednia wartość napięcia - np. mój wyświetlacz działa prawidłowo przy 3,3 V, natomiast przy 5 V już nie (występują wtedy objawy podobne do podłączenia napięcia stałego, więc po chwili wyłączyłem zasilanie). Jednak obydwa napięcia mieszczą się w zakresie dopuszczalnym do zasilania zastosowanego mikrokontrolera ATmega8.

    Przyporządkowanie segmentów do wyprowadzeń

    Zazwyczaj producenci zepsutych urządzeń, które rozmontowujemy, nie udostępniają informacji o tym, które wyprowadzenia wyświetlacza odpowiadają poszczególnym segmentom (w dodatku przy braku zasilania często możemy nawet nie widzieć, jakie segmenty są dostępne). Jednak można to łatwo sprawdzić. Trzeba w tym celu podłączyć poszczególne piny wyświetlacza do oddzielnych pinów mikrokontrolera. Program musi działać w następujący sposób: na jednym wyprowadzeniu początkowo jest stan wysoki, a na pozostałych niski, a po pewnym czasie cyklicznie zmieniają się na przeciwne. Czas należy dobrać tak, aby przełączanie następowało co najmniej kilkadziesiąt razy na sekundę. Po uruchomieniu programu obserwujemy wyświetlacz i rysujemy na kartce widoczne segmenty. W następnych etapach przeciwfaza musi występować na kolejnych pinach. Ich przełączanie można zrealizować na różne sposoby:
    -po upływie zadanego czasu (musi być na tyle duży, żebyśmy zawsze zdążyli narysować widoczne segmenty)
    -po naciśnięciu przycisku / przekręceniu enkodera / odebraniu sygnału przez UART itp.
    -po uruchomieniu/zresetowaniu mikrokontrolera - trzeba w tym celu wykorzystać pamięć nieulotną (EEPROM, ew. FLASH), z której na początku programu odczytywany jest numer aktualnie "wyróżnionego" pinu, a następnie zapisywana wartość o 1 większa (lub zerowana, jeżeli osiągnie maksimum).

    Następnie rysujemy większy schemat, na którym widoczne są wszystkie segmenty, a na każdym z nich zapisujemy numery wyprowadzeń z przeciwfazą, dla których był widoczny. W ten sposób każdemu segmentowi odpowiada niepowtarzalna para wyprowadzeń wyświetlacza. Możemy przyjąć, że pierwsze liczby w poszczególnych parach odpowiadają elektrodom w jednej warstwie (górnej lub dolnej), a drugie - w pozostałej. Np. w moim wyświetlaczu pierwsze 4 druciki zasilają elektrody z jednej warstwy, pozostałe z drugiej.
    Sterowanie LCD bezpośrednio z GPIO

    Wyświetlacze multipleksowane

    W przypadku prostych wyświetlaczy jedna z elektrod jest wspólna dla wszystkich segmentów. Jednak w tych bardziej złożonych (multipleksowanych) konieczne jest ograniczenie liczby wyprowadzeń, co utrudnia sterowanie. Jeśli trafiliśmy na wyświetlacz multipleksowany, mogliśmy już w poprzednim kroku zauważyć, że nie da się zaczernić tylko jednego, wybranego segmentu, bo wraz z nim pojawia się kilka innych. Jak rozwiązać ten problem? Czy trzeba użyć więcej niż dwóch potencjałów i zrezygnować z bezpośredniego sterowania za pomocą GPIO?

    Chciałbym tutaj podziękować Użytkownikowi supercat z tego forum za opisanie interesującego rozwiązania. Polega ono na wygenerowaniu takiego sygnału, aby każdy segment był prawidłowo zasilany przez 3/4 czasu, a nieprawidłowo przez 1/4. Wprawdzie kontrast będzie nieco gorszy, ale takie rozwiązanie sprawdzi się w wielu aplikacjach.

    Konieczne jest napisanie odpowiedniej funkcji, która będzie wyznaczała kombinacje stanów wysokich i niskich na wyprowadzeniach LCD dla poszczególnych kroków czasowych. Dane wejściowe (obraz do wyświetlenia) mogą być przedstawione w formie tablicy, w której poszczególne wiersze odpowiadają elektrodom z jednej warstwy, kolumny - elektrodom z drugiej warstwy, a komórki - poszczególnym segmentom (odpowiadającym danej parze elektrod). Sygnał dla jednej z warstw musi zmieniać się jak kolejne liczby w systemie binarnym - proponuję wybrać tę warstwę, dla której liczba wyprowadzeń jest mniejsza, aby uzyskać większą częstotliwość odświeżania obrazu na LCD przy mniejszej częstotliwości przełączania GPIO. W moim przypadku na pierwszych 4 wyprowadzeniach sygnał zmienia się więc następująco: 0000, 0001, 0010, ..., 1111, po czym cykl się powtarza. Dla drugiej warstwy, która zawiera więcej elektrod, sygnał jest wyznaczany na podstawie obrazu do wyświetlenia oraz stanu pierwszej warstwy. Dla każdej kolumny obliczana jest suma XOR poszczególnych komórek tablicy i odpowiadających im stanom pierwszej warstwy - jeżeli ta suma osiągnie co najmniej połowę swojej maksymalnej wartości, na odpowiednim pinie pojawi się stan wysoki, jeżeli będzie mniejsza - niski.

    Na razie mój program wyświetlający napis testowy nie wykonuje tych obliczeń, a jedynie zapisuje w rejestrach PORTx gotowe liczby, które obliczyłem za pomocą załączonego arkusza kalkulacyjnego, wpisując do komórek A3:A6 poszczególne kombinacje 0 i 1.

    Regulacja kontrastu - PWM

    Niestety, po pierwszym uruchomieniu programu wszystkie segmenty zaczerniły się, jednak pod pewnymi kątami z trudem dało się dostrzec wyświetlaną informację. Okazało się, że rozwiązaniem tego problemu jest ustawienie odpowiedniego kontrastu za pomocą PWM (zrealizowanego programowo, ponieważ ATmega8 posiada wyjście sprzętowego PWM jedynie na 3 pinach). W dodatku współczynnik wypełnienia musi być bardzo mały - dla 500 us (mikrosekund) przypadających na każdą kombinację włączonych i wyłączonych segmentów (co daje częstotliwość odświeżania 125 Hz) jedynie przez 1 us podawany jest sygnał obliczony w sposób opisany w poprzednim akapicie. Przez pozostałe 499 us na wszystkich wyprowadzeniach wyświetlacza jest stan niski.

    Współczynnik wypełnienia należy dobrać do konkretnej aplikacji, mając na uwadze to, że widoczny kontrast może zależeć również od kąta patrzenia na wyświetlacz, ewentualnie umożliwić użytkownikowi jego regulację w odpowiednim zakresie.


    Bezpieczne wyłączanie wyświetlacza


    Jak już wspomniałem, pozostawienie napięcia stałego na elektrodach wyświetlacza może powodować jego awarię na skutek elektrolizy. Jeżeli w danej aplikacji przewiduje się ograniczenie zużycia energii poprzez uśpienie mikrokontrolera, trzeba pamiętać, aby wcześniej ustawić taki sam potencjał na wszystkich wyprowadzeniach wyświetlacza. W przeciwnym razie zatrzymanie wykonywania programu przy jednoczesnym pozostawieniu zasilania mikrokontrolera mogłoby zatrzymać GPIO w stanie, w którym część segmentów byłaby zasilana.
    Ważne jest również uniknięcie takich sytuacji w razie zawieszenia się programu - w takiej sytuacji rejestry GPIO również mogłyby nie być aktualizowane. Aby temu zapobiec, można wykorzystać wbudowany w mikrokontroler układ watchdog.

    Czy kiedykolwiek próbowaliście uruchomić LCD bez dedykowanego sterownika? Zapraszam do komentowania.
    About Author
    japko1024
    Level 18  
    Offline 
    japko1024 wrote 639 posts with rating 198, helped 3 times. Been with us since 2012 year.
  • Altium Designer Computer Controls
  • #2
    ArturAVS
    Moderator HP/Truck/Electric
    Po co wyważać otwarte drzwi? Istnieją kontrolery wyświetlaczy po SPI, czy I2C. Są też mikrokontrolery z wbudowanymi sterownikami LCD, czy też driverami.
  • Altium Designer Computer Controls
  • #3
    KhazAkar
    Level 12  
    ArturAVS wrote:
    Po co wyważać otwarte drzwi? Istnieją kontrolery wyświetlaczy po SPI, czy I2C. Są też mikrokontrolery z wbudowanymi sterownikami LCD, czy też driverami.

    1. Możliwość wykorzystania wyświetlacza z innego urządzenia, czyli ponowne wykorzystanie np. we własnym projekcie.
    2. Zaprojektowanie, nawet dla ćwiczeń, własnego kontrolera do takiego wyświetlacza - żeby zrozumieć, jak tego typu wyświetlacze działają.
    3. Zamiast go wyrzucać, można zrobić to, co w punkcie 1 lub 2, nawet dla ograniczania wyrzucania elektronicznych części/urządzeń na śmietnik.
  • #4
    japko1024
    Level 18  
    Możliwe, że gotowy sterownik byłby kompatybilny z takim wyświetlaczem z odzysku, ale nie każdy go ma, a zwykły mikrokontroler już prędzej - tak można wykorzystać części, które mamy w szufladzie. Poza tym w przypadku zewnętrznego sterownika (dodatkowego układu scalonego) trzeba znaleźć dla niego miejsce na PCB, co może wymusić zwiększenie jej wymiarów, a nawet całego urządzenia. Oprócz tego to dodatkowy koszt, jeśli okazałoby się, że mikrokontroler ma wystarczająco dużo pinów i mocy obliczeniowej.
    Będę musiał sprawdzić, czy jest możliwe współdzielenie pinów wyświetlacza z przyciskami. Podejrzewam, że tak - jeden styk przycisku musiałby być podłączony do GPIO, drugi do masy, a szeregowo odpowiednio dobrany rezystor (opór na tyle duży, żeby nie przekraczać dopuszczalnego prądu ani nie zakłócać pracy LCD, ale też dużo mniejszy, niż wbudowanego rezystora pull-up). Sprawdzanie przycisku następowałoby np. raz na każdy cykl odświeżania. Przed przełączeniem na wejście pin musiałby być przez odpowiednio długą chwilę wyjściem w stanie wysokim, żeby przy zwolnionym przycisku był naładowany dodatnio. Przy wyłączonym LCD (lub w fazie PWM, w której nie jest zasilany) na wszystkich jego wyprowadzeniach musiałby być stan wysoki. Oczywiście w trybie uśpienia zamiast cyklicznego sprawdzania można by zastosować przerwanie.
  • #6
    khoam
    Level 42  
    KhazAkar wrote:
    1. Możliwość wykorzystania wyświetlacza z innego urządzenia, czyli ponowne wykorzystanie np. we własnym projekcie.
    2. Zaprojektowanie, nawet dla ćwiczeń, własnego kontrolera do takiego wyświetlacza - żeby zrozumieć, jak tego typu wyświetlacze działają.
    3. Zamiast go wyrzucać, można zrobić to, co w punkcie 1 lub 2, nawet dla ograniczania wyrzucania elektronicznych części/urządzeń na śmietnik.

    Tego rodzaju argumenty były dobre, powiedzmy 10 i więcej lat temu. Teraz bardziej się opłaca kupić nowy (i tanio) wyświetlacz z odpowiednim i ulubionym interfejsem, do którego łatwo można dobrać bibliotekę, którą przetestowało już tysiące lub dziesiątki tysięcy osób.
    Nie neguję pracy, która wykonał Autor, ale ma ona raczej charakter poglądowy, zdecydowanie mniej praktyczny, nawet dla fascynatów poczciwych AVR ;)
  • #7
    ArturAVS
    Moderator HP/Truck/Electric
    khoam wrote:
    Tego rodzaju argumenty były dobre, powiedzmy 10 i więcej lat temu

    Wszystko w temacie.
  • #8
    KhazAkar
    Level 12  
    khoam wrote:

    Tego rodzaju argumenty były dobre, powiedzmy 10 i więcej lat temu. Teraz bardziej się opłaca kupić nowy (i tanio) wyświetlacz z odpowiednim i ulubionym interfejsem, do którego łatwo można dobrać bibliotekę, którą przetestowało już tysiące lub dziesiątki tysięcy osób.
    Nie neguję pracy, która wykonał Autor, ale ma ona raczej charakter poglądowy, zdecydowanie mniej praktyczny, nawet dla fascynatów poczciwych AVR ;)

    Jeśli chodzi o nowe projekty to oczywiście, ale jeśli ktoś ma takich kilka-kilkanaście na składzie z demontażu, to po co mają leżeć i się kurzyć lub, o zgrozo, je wyrzucać? Warto wykorzystać wszystko, co się ma pod ręką i ograniczyć choć trochę wydatki - jeśli nie są absolutnie konieczne.
  • #9
    vp32
    Level 11  
    ArturAVS wrote:
    Wszystko w temacie.

    Nie do końca rozumiem dlaczego niektórzy przypisują sobie funkcję mentora i dlaczego myślą, że to co oni uważają jest rzeczą świętą.
    Wg mnie sterowanie LCD może się akurat komuś przydać bez potrzeby stosowania dodatkowych kontrolerów i to wcale nie 10 lat temu tylko w każdej chwili zależnej od potrzeby.
  • #10
    japko1024
    Level 18  
    A co, jeśli chcielibyśmy wykorzystać w projekcie np. Raspberry Pi? Tutaj raczej nie ma możliwości zastąpienia mikrokontrolerem z wbudowanym sterownikiem LCD.
  • #11
    khoam
    Level 42  
    japko1024 wrote:
    A co, jeśli chcielibyśmy wykorzystać w projekcie np. Raspberry Pi? Tutaj raczej nie ma możliwości zastąpienia mikrokontrolerem z wbudowanym sterownikiem LCD.

    Sądzę, że byłoby to interesujące, gdybyś zademonstrował, jak obsługujesz ten wyświetlacz bezpośrednio z RPI.
  • #12
    japko1024
    Level 18  
    Loker wrote:

    Jeśli wyświetlacz ma być wyłączany, najlepiej doprowadzić + albo - do zasilania dzielników rezystorowych poprzez inny pin GPIO, żeby uniknąć przepływu prądu przez te oporniki, kiedy nie ma takiej potrzeby.
  • #13
    ArturAVS
    Moderator HP/Truck/Electric
    vp32 wrote:
    Nie do końca rozumiem dlaczego niektórzy przypisują sobie funkcję mentora i dlaczego myślą, że to co oni uważają jest rzeczą świętą

    Jak nie rozumiesz co czytasz, to potem piszesz takie rzeczy. To że coś się da zrobić, wcale nie znaczy że należy iść tą drogą.
  • #14
    pawelr98
    Level 39  
    japko1024 wrote:
    A co, jeśli chcielibyśmy wykorzystać w projekcie np. Raspberry Pi? Tutaj raczej nie ma możliwości zastąpienia mikrokontrolerem z wbudowanym sterownikiem LCD.


    To wtedy SPI/I2C i kontroler.

    Albo jak komuś naprawdę się nudzi to nic nie stoi na przeszkodzie żeby spiąć mikrokontroler z Raspberry Pi i napisać jakąś prostszą komunikację pomiędzy nimi.

    A dlaczego nikt się nie bawi w sterowanie "na piechotę" ?
    Bo po pierwsze to wymaga użycia wielu wyprowadzeń, które w wielu sytuacjach są potrzebne do czegoś innego. A po drugie te wszystkie linie trzeba pociągnąć po płytce drukowanej. Prościej dać dwie linie (I2C) lub trzy (SPI) tuż pod docelowy komponent i dopiero tam rozgałęziać na więcej linii.

    Ja akurat używam raspberry Pi 3 w mojej pracy inżynierskiej.
    Tam generalnie opieram się o I2C bo wystarczą dwie linie i od razu są gotowe biblioteki do obsługi. Ale jednocześnie korzystam z jednego układu równoległego i potrzebne jest aż 9 linii do obsługi (8 bitów danych + 1 sterujący). Trzeba było napisać jeszcze dedykowany fragment kodu do obsługi (ustawianie trybów wyjść,przestawianie bitów), układ użyty tylko dlatego że akurat się trafił z jakiegoś dysku twardego(wylut).
  • #15
    tmf
    Moderator of Microcontroller designs
    ArturAVS wrote:
    Po co wyważać otwarte drzwi? Istnieją kontrolery wyświetlaczy po SPI, czy I2C. Są też mikrokontrolery z wbudowanymi sterownikami LCD, czy też driverami.

    Uważam, że rozwiązanie autora ma sens i to z kilku powodów, poza wymienionymi. M.in. jeśli w projekcie mamy wolne piny IO to dlaczego z nich nie skorzystać? IMHO nie ma sensu w takiej sytuacji łączyć zewnętrzny układ, skoro to samo może zrobić sam MCU. Skoro ktoś używa np. MCU z wbudowanym sterownikiem, który też przecież trzeba oprogramować, to co za różnica, czy użyję gołego MCU i dodam te dodatkowe kilkanaście linii kodu realizujące niskopoziomową obsługę sterowania LCD. Przecież to żaden problem, a czasowo to może kilka minut pracy dodatkowo, w dodatku jednorazowo... Prawdę mówiąc porządne napisanie obsługi I2C jest bardziej skomplikowane niż obsługa programowa takich wyświetlaczy.
    khoam wrote:
    Teraz bardziej się opłaca kupić nowy (i tanio) wyświetlacz z odpowiednim i ulubionym interfejsem, do którego łatwo można dobrać bibliotekę, którą przetestowało już tysiące lub dziesiątki tysięcy osób.

    Niekoniecznie. Jest wiele dostępnych LCD bez sterownika, często tego typu LCD zamawia się nawet wg indywidualnego projektu. Możliwość przyłączenia ich bezpośrednio, bez dodatkowych urządzeń ma sporo zalet i jest tańsze niż użycie dodatkowego kontrolera, szczególnie jeśli trzeba go kupować w detalu. A biblioteki o których piszesz są tak proste, że czy ją przetestuje jedna osoba, czy tysiące jest bez znaczenia. Tym bardziej, że z tych tysięcy 99,99% to osoby, które nic w niej nie ulepszą, co najwyżej stwierdzą, że nie działa i użyją innej.
  • #16
    detomastah
    Level 8  
    To co autor wątku opisał jest jak najbardziej sensowną strategią. Ja stworzyłem własny sterownik na rejestrach z zatrzaskiem (nie przesuwnych), odświeżanie mam 50 hz. Dane przesyłam szeregowo, napięcie przemienne tworzę kontrolerem odwracając wartości, tak, że na segmencie mam 5-0 a potem 0-5. Te kontrolery do LCD nie są zbyt popularne dlatego zrobienie własnego ma sens i jest proste. Co do kontrastu, to nie miałem problemu - podane wartości napięcia AC to np. 3V, przy kontrolerze 5V mamy AC rzędu 2.5V i wszystko jest dobrze. Załączam zdjęcia.

    Sterowanie LCD bezpośrednio z GPIO
    Sterowanie LCD bezpośrednio z GPIO
  • #17
    khoam
    Level 42  
    tmf wrote:
    Możliwość przyłączenia ich bezpośrednio, bez dodatkowych urządzeń ma sporo zalet i jest tańsze niż użycie dodatkowego kontrolera, szczególnie jeśli trzeba go kupować w detalu.

    Bez przesady. Koszt takiego zintegrowanego kontrolera I2C, UART czy nawet SPI to w tej chwili przysłowiowe dodatkowe "grosze". Jak ktoś cierpi na nadmiar pinów w MCU, to oczywiście bez takiego kontrolera może się obejść. Nie neguję stosowania wyświetlaczy bez kontrolerów (np. z powodu chęci obniżenia poboru mocy przez układ), ale pisanie od zera kodu musi być jakoś zawsze sensownie uzasadnione, chyba że robimy to dla tzw. "sportu", co też jest jakimś uzasadnieniem ;)

    tmf wrote:
    A biblioteki o których piszesz są tak proste, że czy ją przetestuje jedna osoba, czy tysiące jest bez znaczenia. Tym bardziej, że z tych tysięcy 99,99% to osoby, które nic w niej nie ulepszą, co najwyżej stwierdzą, że nie działa i użyją innej.

    Skoro wiesz o jakich bibliotekach pisałem, to muszę Cię poprosić o jakiś oficjalny raport z badań statycznych, który mówi o tych 99,99% "nieuświadomionych" użytkownikach ;) To jest taki argument z rękawa, który może dotyczyć wszystkich bibliotek (nie tylko do wyświetlacza) i żadnej.
  • #18
    detomastah
    Level 8  
    khoam wrote:
    Bez przesady. Koszt takiego zintegrowanego kontrolera I2C, UART czy nawet SPI to w tej chwili przysłowiowe dodatkowe "grosze"


    Chętnie dowiem się o kontrolerach do tego typu wyświetlacza, które kosztują grosze. Z tego co się zorientowałem, to są słabo dostępne i niezbyt tanie. PCF8576CT kosztuje nieco ponad 10 zł. To nie jest tanio. Za tyle można mieć 2 Atmegi 328PB.
  • #19
    Slawek K.
    Level 35  
    detomastah wrote:
    khoam wrote:
    Bez przesady. Koszt takiego zintegrowanego kontrolera I2C, UART czy nawet SPI to w tej chwili przysłowiowe dodatkowe "grosze"


    Chętnie dowiem się o kontrolerach do tego typu wyświetlacza, które kosztują grosze. Z tego co się zorientowałem, to są słabo dostępne i niezbyt tanie. PCF8576CT kosztuje nieco ponad 10 zł. To nie jest tanio. Za tyle można mieć 2 Atmegi 328PB.

    A ile kosztuje taki wyświetlacz ?

    Pozdr
  • #20
    khoam
    Level 42  
    detomastah wrote:
    Chętnie dowiem się o kontrolerach do tego typu wyświetlacza, które kosztują grosze.

    Napisałem "grosze", więc nie należy tego interpretować dosłownie.

    detomastah wrote:
    PCF8576CT kosztuje nieco ponad 10 zł. To nie jest tanio. Za tyle można mieć 2 Atmegi 328PB.

    Według mnie, to pojedynczy PCF8576CT kosztuje ok. 1.5$ z wysyłką, jak się kupi hurtowo 50 szt. to się zapłaci mniej niż 40$ z wysyłką. Dostępne bez żadnego problemu.
    Jak się wszystko będzie porównywało do cen poczciwych AVR, no to faktycznie dyskusja też się mocno zawęża.
  • #21
    KhazAkar
    Level 12  
    detomastah wrote:
    To co autor wątku opisał jest jak najbardziej sensowną strategią. Ja stworzyłem własny sterownik na rejestrach z zatrzaskiem (nie przesuwnych), odświeżanie mam 50 hz. Dane przesyłam szeregowo, napięcie przemienne tworzę kontrolerem odwracając wartości, tak, że na segmencie mam 5-0 a potem 0-5. Te kontrolery do LCD nie są zbyt popularne dlatego zrobienie własnego ma sens i jest proste. Co do kontrastu, to nie miałem problemu - podane wartości napięcia AC to np. 3V, przy kontrolerze 5V mamy AC rzędu 2.5V i wszystko jest dobrze.

    I świetnie wygląda do tego. Można gdzieś znaleźć Twój projekt kontrolera do takiego wyświetlacza? Chętnie bym go sprawdził :)
  • #22
    tmf
    Moderator of Microcontroller designs
    khoam wrote:
    Napisałem "grosze", więc nie należy tego interpretować dosłownie.
    Nawet $1,5 to nie tak mało, biorąc pod uwagę, że za to można mieć cały mikrokontroler, do tego dodaj cenne miejsce na PCB.
    khoam wrote:
    Jak się wszystko będzie porównywało do cen poczciwych AVR, no to faktycznie dyskusja też się mocno zawęża.

    To porównaj to do cen mniej poczciwych ARMów.
    khoam wrote:
    Jak ktoś cierpi na nadmiar pinów w MCU, to oczywiście bez takiego kontrolera może się obejść.

    Nie demonizujmy liczby pinów - można multipleksować. Wyświetlaczy 7-segmentowych LED też raczej nikt nie łączy przez dedykowane kontrolery.
    khoam wrote:
    ale pisanie od zera kodu musi być jakoś zawsze sensownie uzasadnione, chyba że robimy to dla tzw. "sportu", co też jest jakimś uzasadnieniem

    Robisz z kodu zawierającego dosłownie kilkanaście linii jakiś problem, zupełnie nie zauważając, że obsługa np. I2C to będzie kilkaset linii, które też ktoś musi napisać. Dodatkowy kontroler w każdym projekcie to koniecznośc poświęcenia czasu na jego rozplanowanie na PCB i routowanie ścieżek. To zajmie więcej czasu niż dodanie do projektu tych kilkunastu linii kodu.
    khoam wrote:
    Skoro wiesz o jakich bibliotekach pisałem, to muszę Cię poprosić o jakiś oficjalny raport z badań statycznych, który mówi o tych 99,99% "nieuświadomionych" użytkownikach

    Wystarczy np. na githubie zobaczyć ile jest commitów, a ile pobrań. Zwykle za utrzymanie tzw. "biblioteki" odpowiada jedynie jej autor, a feedback ze społeczności jest praktycznie zerowy.
  • #23
    khoam
    Level 42  
    tmf wrote:
    Wystarczy np. na githubie zobaczyć ile jest commitów, a ile pobrań. Zwykle za utrzymanie tzw. "biblioteki" odpowiada jedynie jej autor, a feedback ze społeczności jest praktycznie zerowy.

    Przepraszam, ale nie masz bladego pojęcia, o czym piszesz. Nie tylko 'Commits' są istotne, bo te zwykle robi/ą sam/i autor/autorzy, którzy mają odpowiednie uprawnienia w repozytorium. Równie ważne, jeżeli nie ważniejsze są "Issues" oraz "Pull requests".
    Commit może zawierać jedną linię, a może tysiąc, więc ich liczba nie jest żadną miarodajną metryką.
    Dla mnie ten wątek stał się właśnie OT i nadaje się już tylko do HP.
  • #24
    2P
    Level 20  
    Oczywiście, że takie rozwiązanie jest bardzo przydatne. Sam się łamię czy nie zastosować tego w projekcie o planowanej produkcji rzędu 3000 sztuk rocznie. Piszecie tutaj tyle o tym jak bardzo to bez sensu bo kontroler można kupić za 1,5$. Otóż są projekty gdzie inżynier może dostać premię za usunięcie kilku rezystorów (z uzasadnieniem dlaczego nie wpływa to na bezpieczeństwo produktu). Pomijając koszty elementów, w produkcji seryjnej każdy element ma też koszt zamocowania, dodatkowy problem z zapewnieniem ciągłości dostaw, oraz zwiększenie potencjalnej awaryjności produktu. 1,5$ dla projektu produkowanego w 1000 sztuk to już 1500$. Przy 100 000 sztuk mamy już stawkę, przy której większość tutejszych malkontentów natychmiast zabrałaby się za pisanie kodu i to nawet biorąc pod uwagę, że przy takiej ilości zamówionych kontrolerów da się z ich ceną zejść zapewne poniżej 1$.
  • #25
    Anonymous
    Level 1  
  • #26
    ArturAVS
    Moderator HP/Truck/Electric
    robertar wrote:
    Czy rolą Moderatora powinno być torpedowanie dobrze napisanego artykułu i to w pierwszym poście po nim?
    Sytuacja wyszła tu taka, że jeden Moderator przyjął to do publikacji, a drugi z miejsca wszystko skrytykował. Nie mogliście, Panowie Moderatorzy, dokonać oceny artykułu wcześniej i dopiero wtedy podjąć decyzję o jego ewentualnej publikacji?

    Nie wiesz o czym piszesz. Moderator oprócz funkcji jest też zwykłym użytkownikiem, i ma prawo wyrażania swoich opinii. Stwierdzenie faktu nazywasz "torpedowaniem"? Skoro nie potrafisz odróżnić wpisu moderacyjnego od zwykłego postu, to może zamiast zabierać głos najpierw dużo poczytasz? Wtedy zauważysz różnicę.
  • #27
    tmf
    Moderator of Microcontroller designs
    robertar wrote:
    Czy rolą Moderatora powinno być torpedowanie dobrze napisanego artykułu i to w pierwszym poście po nim?
    Sytuacja wyszła tu taka, że jeden Moderator przyjął to do publikacji, a drugi z miejsca wszystko skrytykował.

    Tak jak pisze kol. @ArturAVS moderator jest także zwykłym użytkownikiem. Wpisy moderacyjne robi się na czerwono, każde inne są wpisami zwykłego użytkownika. Tak jak nie ma powodu, żeby wszyscy użytkownicy byli zgodni, tak samo nie ma powodu, aby moderatorzy, wysyłając post jako użytkownicy byli zgodni. Jednemu może się dana konstrukcja podobać, innemu nie. Dopóki opinie są poparte merytorycznymi przesłankami nie ma problemu.
  • #28
    detomastah
    Level 8  
    Slawek K. wrote:
    A ile kosztuje taki wyświetlacz ?


    Różnie, zależy od rozmiaru. Ale właśnie ich główną zaletą jest to, że są dużo tańsze od innych wyświetlaczy i praktycznie nie biorą prądu. Poza tym można kupić je w naprawdę dużych rozmiarach, część może być podświetlana od tyłu (lutro wtedy jest półprzezroczyste). Nie bez powodu montują takie wyświetlacze w miernikach i dawniej zabawkach, są tanie i niezawodne, nie drenują baterii.

    Ten który ja kupiłem ma 7.5 cm przekątnej wyświetlacza - zapłaciłem 15 zł.
  • #29
    ArturAVS
    Moderator HP/Truck/Electric
    detomastah wrote:
    Ten który ja kupiłem ma 7.5 cm przekątnej wyświetlacza - zapłaciłem 15 zł.

    Mam z demontażu pewnych urządzeń 6, lub 8-mio cyfrowe o wysokości cyfry 1". Do tego układy które "wyświetlały" ICM7211AIMPL ( 2szt na wyświetlacz). Chętnemu do testów mogę sprezentować, pisać na PW.
  • #30
    Anonymous
    Level 1