logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[ATmega32][C] - Zegar na ściane z wyświetlaczem 12x30

komax3 22 Gru 2014 14:28 2796 22
  • #1 14245794
    komax3
    Poziom 11  
    Witam, jestem tu nowy więc proszę o wyrozumiałość.

    1) Chce zrobić zegarek ścienny do pokoju, prosił bym o sprawdzenie schematu. Na stykówce nie mam miejsca żeby podłączyć wyświetlacz więc głównie mi o niego chodzi. Czyli rejestry 74hc595, traznystory, i elementy zwiazane z wyświetlaczem.

    2) Prosze jeszcze o ogólnie czy to wszystko ma prawo działać na tym procku, multipleks nie bedzie kolidował np z odczytem i przerwaniem z rtc lub DS18B20, itd.

    3) W pętli main mam ifa sprawdzającego flagę przerwania z rtc 1hz w której jest odczyt czasu i odczyt temp wraz z delay 750ms. Myślę przyspieszyć clkout z rtc do 32hz i odliczac na nim kiedy oczytać temp z ds. Czy lepiej zrobić to na innym przerwaniu np tego z multipleksowania wyświetlacza? jaka tolerancje ma czas na konwersje temp?

    4) Na CLKOUT pojawiają się szpilki przy odczycie z DS (niestety nie mam oscyloskopu zeby sprawdzić dokładnie co sie dzieje) nie wpływa to teraz na nic bo flaga sie zeruje dużo po tych szpilach.

    LCD podłączone do testów urządzeń, RTC i czujnik temp działają poprawnie. Na razie wewn 8mhz, jak będzie wyrabiać to tak zostawię jak nie to kwarc 16mhz.
    Jestem początkujący programista i elektronik ale jestem bardzo cierpliwy więc jeżeli da się to zrobić to to zrobię:) Za każdą pomoc będę wdzięczny, pozdrawiam:)

    // na razie odczytem rc5 się nie zajmuję - to plany na odległą przyszłość



    [ATmega32][C] - Zegar na ściane z wyświetlaczem 12x30 [ATmega32][C] - Zegar na ściane z wyświetlaczem 12x30 [ATmega32][C] - Zegar na ściane z wyświetlaczem 12x30 [ATmega32][C] - Zegar na ściane z wyświetlaczem 12x30

    [ATmega32][C] - Zegar na ściane z wyświetlaczem 12x30 [ATmega32][C] - Zegar na ściane z wyświetlaczem 12x30 [ATmega32][C] - Zegar na ściane z wyświetlaczem 12x30 [ATmega32][C] - Zegar na ściane z wyświetlaczem 12x30 [ATmega32][C] - Zegar na ściane z wyświetlaczem 12x30
  • Pomocny post
    #2 14246237
    BlueDraco
    Specjalista - Mikrokontrolery
    Anodą do minusa to LED raczej Ci nie zaświeci. Multipleksowanie na 12 faz też czarno widzę. Potrzebujesz sterować wspólne anody prądem powyżej 1 A - niezbędny byłby tranzystor PMOS. Z kolei do katod lepiej byłoby użyć gotowego układu źródła prądowego do LED, np. SCT2167 zamiast ledwie dyszących HC595.

    żeby nie zakłócać multipleksowania - musiałbyś zrobić nieblokującą obsługę DS18B20. Na AVR jest to trudne, ale zapewne możliwe. Nie wiem, czy gdzieś w sieci znajdziesz stosowny przykład programu, bo zwykle na AVR robi się wszystko byle jak, jak to na zabawce.
  • Pomocny post
    #3 14246302
    tmf
    VIP Zasłużony dla elektroda
    Poza uwagami kolegi @BlueDraco pomyśl nad przepięciem DSa na USART, którego nie wykorzystujesz. Dzięki temu z łatwością zrobisz nieblokującą obsługę 1-wire, dokładnie tak samo, jakby to kolega @BlueDraco zrobił na ARM.
    Poza tym zastanów się nad eliminacją układu RTC - w końcu mikrokontroler już ma go w sobie, tyle, że zachodzi potrzeba przeliczenia tyknięć timera na datę i czas - całe kilkanaście linii kodu. Zastosowanie zewnętrznego RTC bez podtrzymania bateryjnego kompletnie nie ma sensu. W prosty sposób podtrzymanie można zrobić także dla mikrokontrolera, jeśli chciałbyś go wykorzystać w roli RTC.
    Zmieniłbym też multipleskowanie - tak jak pisał @BlueDraco do sterowania należy użyć jakiegoś dedykowanego układu, np z serii SCT, a jeden 595 dać do sterowania bramkami p-mosfetów, dzięki czemu całe multipleksowanie to 4 sygnały. W takim układzie można zrobić duty cycle 1:8, co umożliwi zmniejszenie prądu diod i poprawi ich jasność. Warto też rozważyć jakiś fortoelement i regulację jasności diod. Podobnie jak dodanie odbiornika DCF77 - kosztuje to 14zł a znacznie ułatwia życie.
    Po tych zmianach wszystko zmieści się w ATMega8, lub nowszej np. XMEGA8E5.
  • Pomocny post
    #4 14247425
    BlueDraco
    Specjalista - Mikrokontrolery
    Kol. BlueDraco na ARM robi to na timerze, nie na UART - jakoś się przekonać nie mogę... ;)

    Skąd się bierze odbiornik DCF77 za 14 zł?
  • Pomocny post
    #5 14247528
    piotrva
    VIP Zasłużony dla elektroda
    Hmm, no też bym taki za 14 zł kupował :D
    Chyba, ze mówimy o demontażu z jakiegoś chińskiego zegarka :D
  • #6 14247747
    komax3
    Poziom 11  
    Dziękuję za wszystkie odpowiedzi, na pewno poczytam o tym wszystkim co omówiliście.

    Cytat:
    Anodą do minusa to LED raczej Ci nie zaświeci.

    oczywiście mój błąd, polutowane mam dobrze

    Parametry diody:

    PARAMETRY DOPUSZCZALNE MIN TYP MAX UWAGI
    Napięcie przewodzenia VF [V} - 1,9 - @ IF =20 [mA]
    Prąd przewodzenia IF [mA] - - 20 -
    Napięcie wsteczne VR [V] - - 5 -
    Światłość IV [mcd] - 10 - @ IF =20 [mA]
    Długość fali l [nm] 585 - 595 -
    Zakres temperatur pracy T [°C] -30 - +85 -


    skąd się bierze ponad 1A? 20mA*30LED daje 600mA. BC337 wytrzymuje max 800mA. Prawie nigdy nie będzie włączona cała linia a fotoelement to dobry pomysł aby to działało tak żeby w nocy delikatnie żarzyło a w dzień było widoczne. Poczytam o tych układach co napisaliście i na pewno je niebawem kupie bo okaże się że macie racje.

    DS'a podłącze pod USART tak jak mówicie tylko muszę się dowiedzieć z czym to się je.

    nad RTC męczyłem się długo i będzie mi się ciężko teraz z nim pożegnać, ja naprawdę dopiero się uczę elektroniki cyfrowej wiec DCF77 sobie odpuszczę :)

    a może zamiast tranzystorów dać jakiś driver, mam gdzieś jakieś ULN'y? jutro popatrzę jakie.
  • Pomocny post
    #7 14247778
    BlueDraco
    Specjalista - Mikrokontrolery
    Chyba jednak nie masz dobrze polutowane, albo schemat, który pokazałeś jest całkowicie nieprawdziwy. ULN w tym zastosowaniu się nie sprawdzi.
  • Pomocny post
    #8 14248149
    tmf
    VIP Zasłużony dla elektroda
    komax3 napisał:

    skąd się bierze ponad 1A? 20mA*30LED daje 600mA. BC337 wytrzymuje max 800mA.


    Przy sterowaniu multipleksowym, aby skompensować utratę jasności spowodowaną tylko okresowym świeceniem diody (np. przez 1/8 czasu) zwiększa się jej prąd przewodzenia. W nocie każdej diody masz tzw. max surge current, często wynosi on 1-2A, oczywiście taki prąd możesz wykorzystać tylko przez krótki czas, np. 1 do kilku us, lub prądy rzędu kilkuset mA przez kilkaset us (ale pamiętaj aby sprawdzić to w nocie użytej diody). P-MOSFETy zamiast tranzystorów bipolarnych sprawdzą się przy zasilaniu niższym napięciem - zasadniczo nap. zasilania matrycy LED powinno być tylko ciut wyższe niż napięcie przewodzenia diod. Cała reszta idzie niepotrzebnie w ciepło.
    Co do reszty - wiele przykładów związanych z RTC i sterowaniem multipleksowym, a także realizacją 1-wire po UART i DCF77 znajdziesz w darmowych przykładach do książek, które mam w stopce.
  • #9 14249673
    komax3
    Poziom 11  
    Niestety od tych LED-ów więcej info pewnie nie dostane, ale dzisiaj zobaczę jak będą świecić wysterowane na 20mA przy 1/12 czasu świecenia. A może mi starczy:) Elementy będę kupował po nowym roku bo teraz to już nie ma jak, wiec na razie testy na tym co mam. Dzięki za odpowiedzi, po nowym roku także kupie książkę o której piszesz.
  • #10 14252229
    komax3
    Poziom 11  
    BlueDraco napisał:
    Chyba jednak nie masz dobrze polutowane, albo schemat, który pokazałeś jest całkowicie nieprawdziwy. ULN w tym zastosowaniu się nie sprawdzi.


    Masz racje, nie wiem jak mogłem popełnić tak ogromny błąd, cała matryca polutowana na odwrót. ;( jakoś sobie to ogarnę. Może dało by się z hc595 brać GND a na pin tranzystor pnp??

    [ATmega32][C] - Zegar na ściane z wyświetlaczem 12x30

    Jak rozumiem to ma być tak, jak na obrazku. R przeliczyłem na 150Ω, po testach świecenia na 1/12 myślę że tragedii nie ma, w końcu to ma być widoczne tylko. czyli na razie nie będzie przekraczać 600mA na tranzystor.

    //EDIT

    Zrobiłem tak jak napisałem wyżej czyli tranzystor PNP BC327
    do prób 1 rejestr przesuwny + 8xBC327 czyli 8x8 matryca. Jak widać działa. Nie ma żadnej różnicy czy świeci 1 LED na linii czy 8. Macie jakieś uwagi co do takiego podłączenia? na 74hc595 obowiązują takie same warunki na logiczne "0" jak na "1" czyli 20mA?

    [ATmega32][C] - Zegar na ściane z wyświetlaczem 12x30 [ATmega32][C] - Zegar na ściane z wyświetlaczem 12x30

    na zdjęciach LEDy wysterowane na ok 14mA wiec można trochę więcej.

    //EDIT2

    TAKI SZYBKI MAŁY TEST:


  • Pomocny post
    #11 14253363
    tmf
    VIP Zasłużony dla elektroda
    Tak, możesz sterować tak jak to narysowałeś, chociaż mam wrażenie, że pokazany schemat jest niepełny. Tranzystor steruje 8 diodami, które, każda przez własny rezystor połączone są do HC595. Gdybyś zastsował sugerowane ukłądy z serii SCT, to nie potrzebowałbyś rezystorów.
  • #12 14253545
    komax3
    Poziom 11  
    Skoro mówisz że tak może być to tak będzie. teraz jest dokładnie w ten sposób podłączone i w programie zanegowane wyjścia. Teraz więc zajmuje się robieniem całej płytki a potem program mnie pochłonie na długie wieczorne dni:)

    [ATmega32][C] - Zegar na ściane z wyświetlaczem 12x30

    Przemalowałem schemat:
    [ATmega32][C] - Zegar na ściane z wyświetlaczem 12x30
    z UART żeby korzystać to muszę mieć taki układ?
    [ATmega32][C] - Zegar na ściane z wyświetlaczem 12x30
    Zamiast BC547 mogę dać BC337 albo BC414? Tych drugich akurat mam spory zapas:)
    Nie mam pojęcia jak to zaprogramować, ale będę dążył do celu:)
  • #13 14258810
    komax3
    Poziom 11  
    I mam jeszcze pytanie na temat DCF'a. Dokładnie jak to jest podłączane, czyli ile i jakie piny wyprowadzić na zewnątrz płytki tak na przyszłość?

    znalazłem taki najtańszy, nic ciekawego nie pisze w nocie
    http://www.mas-oy.com/uploads/Data%20sheets/DAEV6180B1COB.pdf

    *VCC
    *INT2 dla Time pulse output
    *Jakiś pin dla PDN (power down) control pin
    *GND

    Musi być pin przerwania? PDN jest konieczne czy można do VCC?

    tu jeszcze jakiś info znalazłem o obsludze
    http://and.elektroda.eu/elektronika/inne/DCF77decoding/
  • #14 14259063
    tmf
    VIP Zasłużony dla elektroda
    Co do konwertera 1-wire na USART to niepotrzebne są aż dwa tranzystory. Jeśli chodzi o moduł DCF - PDN to pin służący do usypiania modułu, przydaje się przy zasilaniu z baterii. Pin INT łączysz z pinem dającym przerwania w mikrokontrolerze.
  • #15 14259523
    BlueDraco
    Specjalista - Mikrokontrolery
    Z BC327 i HC595 nie wysterujesz matrycy multipleksowanej na 12 faz. przekroczysz dopuszczalny prąd kolektora i będziesz miał za duży spadek napięcia na BC327 oraz przekroczysz dopuszczalny prąd sumaryczny HC595.

    Pomyśl też o mocy obliczeniowej potrzebnej do sterowana takiej matrycy. 12 * 40 * 300 Hz - tyle bitów na sekundę chcesz wysuwać programowo, po min. 5 instrukcji na bit przy kodowaniu w asemblerze - tu już trzeba dobrze wiedzieć, co się robi na cienkim obliczeniowo AVR. Dlaczego nie używasz sprzętowego SPI do tego celu?

    Przemyśl ten projekt dobrze, zanim wpakujesz się w koszty związane z płytką - na moje oko to nie ma prawa działać.
  • #16 14259729
    komax3
    Poziom 11  
    Cytat:
    Dlaczego nie używasz sprzętowego SPI do tego celu?
    5

    Bo nie wiem co to. Napisałem w pierwszym poście że jestem początkujący i właśnie takich podpowiedzi się spodziewałem. Poczytam, ale płytkę już wczoraj zrobiłem:(

    Cytat:
    przekroczysz dopuszczalny prąd kolektora


    Pisałeś już o tym, po świętach kupie jakieś mosfety, na razie przy wysterowaniu na 20mA nie przekroczy prąd ponad 600mA a bc327 wytrzyma 800mA. No chyba że już przy takich prądach będą widoczne spadki?

    A jeszcze zapytam o zasilanie. Mam 2 stare zasilacze, który do tego celu ?
    * 5V 2A MAX impulsowy ładowarka z palmtopa HP
    *7,5V 1.5A transformatorowy z routera D-link
    Bardziej ufam transformatorom:)
  • #17 14259920
    BlueDraco
    Specjalista - Mikrokontrolery
    Do spalenia matrycy diod ten drugi będzie lepszy. Do działania - zdecydowanie ten pierwszy, bo całość musisz zasilać z max. 5V. Sprawdź jeszcze prąd sumaryczny HC595 - ja tam widzę 70 mA, a Ty chcesz wpuścić 160. No i pomyśl, że przy 20 mA Twoje diody będą świeciły mniej więcej podobnie do tego, jak świecą przy prądzie ciągłym 1.6 mA.
  • #18 14260014
    komax3
    Poziom 11  
    Ale oczywiście z tego 7.5V da się zrobić 5V, myślałem że tego nie muszę pisać:)

    Racja, tego nie doczytałem że w sumie 595 nie może przekraczać 70mA, sugerowałem się tym że może na pin dać 20mA. A już taką piękną płytkę zrobiłem:(
    Jak wysterować z 595? Driver? Mam też dużo tranzystorów niskiej mocy (100mA) więc je mogę dać np bc414. to że będzie słabo świecić to przeżyje:)

    [ATmega32][C] - Zegar na ściane z wyświetlaczem 12x30 [ATmega32][C] - Zegar na ściane z wyświetlaczem 12x30
  • #19 14260033
    BlueDraco
    Specjalista - Mikrokontrolery
    Jak wysterować tak dużą matrycę - to już pisaliśmy wielokrotnie. Po pierwsze - multipleksowanie na nie więcej niż 8 faz, może być np. 6. Tranzystory PMOS od góry, SCT2167 lub podobny układ od dołu. Taki układ ma kilka zalet, m.in. tę, że zmiana prądu 8 diod wymaga wymiany tylko jednego rezystora.
  • #20 14348119
    komax3
    Poziom 11  
    Czyli jednak się da,

    Tranzystory NPN BC414 100mA 32 szt.
    Tranzystory PNP 2SA1359 3A 12 szt.

    Na razie każdy LED wysterowany na 14mA co mi daje możliwość zasilania nawet z USB poprzez programator i nie muszę się martwić o zatrzymanie programu i upalenie linijki. Jak wszystko zrobię poprawnie i linia nie będzie się zapalać na dłużej niż na 1/12 ms to wysteruje ledy na ok 60mA

    Sterowanie 74hc595 udało mi się obsłużyć po SPI, więc to usprawni działanie programu, jeszcze muszę 1wire po UART, ale dojdę do tego w swoim czasie

    Problem mam teraz z zoptymalizowaniem cyfr,

    obsługa wyświetlacza w przerwaniu przyjmuje mi uint32_t na każdą linie
    myślę zrobić każdą cyfrę w uint8_t *12linii i w zależności od tego gdzie sie ma pojawić to przesunięcie bitowe i nałożyć na zmienną 32bitową. Znacie jakiś lepszy sposób?

    Później dopiero podepnę moduł zegarka i 18b20 itd






    [ATmega32][C] - Zegar na ściane z wyświetlaczem 12x30 [ATmega32][C] - Zegar na ściane z wyświetlaczem 12x30 [ATmega32][C] - Zegar na ściane z wyświetlaczem 12x30 [ATmega32][C] - Zegar na ściane z wyświetlaczem 12x30 [ATmega32][C] - Zegar na ściane z wyświetlaczem 12x30 [ATmega32][C] - Zegar na ściane z wyświetlaczem 12x30 [ATmega32][C] - Zegar na ściane z wyświetlaczem 12x30 [ATmega32][C] - Zegar na ściane z wyświetlaczem 12x30 [ATmega32][C] - Zegar na ściane z wyświetlaczem 12x30 [ATmega32][C] - Zegar na ściane z wyświetlaczem 12x30 [ATmega32][C] - Zegar na ściane z wyświetlaczem 12x30 [ATmega32][C] - Zegar na ściane z wyświetlaczem 12x30 [ATmega32][C] - Zegar na ściane z wyświetlaczem 12x30 [ATmega32][C] - Zegar na ściane z wyświetlaczem 12x30
  • #21 14433631
    komax3
    Poziom 11  
    Witam, jako że jutro chcę zrobić ostatni PCB mojego projektu prosze o ogólne sprawdzenie

    1. Czy dla modułu BT HC-05 wystarczy dzielnik napięcia na linii TXD?
    2. Do wysterowania tranzystorów 2S A1359 może być 1.5k rezystor z uC?
    3. Na zasilanie może być 470uF? czy dać mniejszy?

    //CON1 niewykorzystane
    //wszystko co na czerwono to zwykłe kabelki, tak to sobie wymyśliłem.
    //Zasilanie z impulsówki 2A 5V
    [ATmega32][C] - Zegar na ściane z wyświetlaczem 12x30 [ATmega32][C] - Zegar na ściane z wyświetlaczem 12x30

    PS. Na stykówce już działa. Liczy czas, mierzy temp, łączy przez BT z terminalem:)
  • #22 14433879
    BlueDraco
    Specjalista - Mikrokontrolery
    Czyli zamiast 4 szt. SCT2167 i 4 rezystorów użyłeś 4 szt. HC595, 64 rezystorów i 32 tranzystorów. ;)

    Kondensator 470uF nie zawadzi - z powodu matrycy. Uważaj na wydzielanie ciepła na tranzystorach anod, skoro uparłeś się na bipolarne zamiast PMOS. Rezystor 1.5 k w bazie może być za duży - musisz nasycić te tranzystory przy prądzie kolektora rzędu 1A, czyli prąd bazy powinien (zgaduję) być rzędu 10 mA - to są uroki tranzystorów bipolarnych.

    Płytka poprawna, chociaż wielka i nie wiedzieć czemu w THT. Mam wrażenie, że cofnąłem się w czasie o 15 lat... Kiedy to ja ostatnio użyłem 8-bitowego uC w DIP? Teraz już by mnie nie było stać na takie drogie układy i duże płytki. :)
  • #23 14434099
    komax3
    Poziom 11  
    Dziękuję ślicznie, za 15 lat zrobię całość w pudełku od zapałek:) Ważne dla mnie że działa:)
REKLAMA