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

Jak zbudować zegar z dużym wyświetlaczem dla osób słabowidzących?

Dar.El 01 Lut 2007 13:37 22770 60
Najlepsze odpowiedzi

Jak zaprogramować zegar z dużym wyświetlaczem i dodatkowymi funkcjami, żeby nie utknąć w jednym zbyt rozbudowanym programie?

Tak — taki zegar da się zrealizować programowo, ale najlepiej podzielić go na moduły zamiast robić jeden wielki program: główny mikrokontroler (np. ATmega16/32/128) może obsługiwać zegar, wyświetlacze i „bajery”, a osobny ATmega8 może zająć się temperaturą i 1-Wire [#3515762] [#3516174] [#3516519] Komunikację między układami można prowadzić po I2C, a do PC dać RS232; przy takiej architekturze łatwiej też później dodawać kolejne rozszerzenia [#3519906] [#3520491] Jeśli chcesz zostać przy jednym MCU, ATmega128 ma dość portów i pamięci, żeby ogarnąć LED-y i LCD, ale trzeba dobrze rozplanować sygnały i podzielić kod na logiczne części [#3524093] [#3527795] Przy DS18B20 problemem nie jest sam 1-Wire, tylko obsługa w tle bez psucia czasów przez przerwania, więc potrzebny jest własny sterownik, który nie koliduje z resztą systemu [#3522020] [#3542249] Dla uproszczenia części wyświetlacza warto też rozważyć ULN2803 albo dedykowany sterownik zamiast dużej liczby tranzystorów [#3524193]
Wygenerowane przez model językowy.
  • #1 3514835
    Dar.El
    Poziom 41  
    Posty: 5450
    Pomógł: 750
    Ocena: 888
    Witam
    Chciałbym zrobić jakiś wypasiony zegarek/budzik. Robiłem wcześniej różne projekty zegarków, ale czym bardziej był „full wypas” tym trudniej było dokończyć, aż w końcu mam taki który nie został skończony z powodu „umieszczenia zbyt wysoko poprzeczki”. Teraz też mam ochotę zaszaleć, ale konsultując się tu na forum z kolegami a w szczególności z Mirekk36 i z pomocą jego umiejętności programistycznych mam nadzieję zrobić upragniony projekt zegarka „full wypas”. Z powodu słabego wzroku mojej żony, zegarek musi mieć duże wyświetlacze, tak aby w nocy bez okularów mogła zobaczyć godzinę. Niestety, wyświetlacze o wysokości 56mm są drogie, ale takie muszę zastosować i przy okazji z tyłu zmieści się bez problemu cała elektronika na jednej płytce. Z tego powodu że będą zastosowane drogie wyświetlacze (około 10zł/1szt.), układ będzie miał możliwość zastosowania ich na wspólnej katodzie jak i anodzie, wybór będzie dokonywany w trakcie montażu PCB. Zasilacz będzie 12V o mocy 10W, poza zegarkiem, wtyczkowy (fabryczny).
    Najpierw chciałem zrobić zegar mirekk36
    https://www.elektroda.pl/rtvforum/topic678948.html
    Jest bardzo ładny i ma bardzo dużo pożytecznych funkcji, ale potrzebuję na dużo większych wyświetlaczach, co spowoduje podniesienie kosztów i nie każdemu spodoba się to. Zmienił bym jeszcze brzmienie budzika przez dodanie scalaka ISD1420 który można kupić na allegro za 15zł. Mam pełno pomysłów, ale panowie hamujcie mnie bo znowu postawię za wysoko poprzeczkę. Jeśli chodzi o schemat i PCB, to dam sobie radę nawet z kosmicznymi trudnościami, chodzi mi czy programowo jest to do zrealizowania.
  • #2 3514947
    Mirek D
    Poziom 15  
    Posty: 120
    Pomógł: 8
    Ocena: 12
    Kup kit w AVT "pecel" i będziesz miał to wszystko, i jeszcze więcej. Do pomiaru temperatury musisz dołożyć DS1820 lub inny czujnik i do tego wszystkiego napisać program (8kB pamięci do wykorzystania) w Baskomie AVR. Świetny kit, ja go wykorzystuję do projektowania układów na mikrokontrolerach i świetnie się do tego nadaje, ma złącze ISP co bardzo ułatwia programowanie i poprawianie kodu programu. Klawiatura 4x4 jest też bardzo przydatna do obsługi programów, poza tym odbiornik podczerwieni, interface I2C, RS232, 1-Wire są już na płytce. RTC rownież już jest. Naprawdę warte polecenia.
  • #3 3514996
    Dar.El
    Poziom 41  
    Posty: 5450
    Pomógł: 750
    Ocena: 888
    Witam
    No właśnie, ja nie mogę kupić KITu, to tak jakbyś namawiał piekarza do kupienia chleba w sklepie. Satysfakcja ze zrobionego układu własnoręcznie jest bardzo duża i nie można tego porównać do zlutowania KITu.
  • #4 3515036
    Mirek D
    Poziom 15  
    Posty: 120
    Pomógł: 8
    Ocena: 12
    To kup książę o programowaniu mikrokontrolerów np. "Programowanie mikrokontrolerów w języku BASCOM" M Wiązania. I jeszcze lepiej nie szukaj gotowych schematów tylko sam je stwórz, satysfakcja gwarantowana.
    Powodzenia życzę.
  • #5 3515050
    madart
    Poziom 26  
    Posty: 892
    Pomógł: 79
    Ocena: 64
    Pomysł bardzo się mi podoba :)
    Myślę że dobrym pomysłem jest umieszczenie wyświetlaczy na osobnej płytce co umożliwia zastosowanie wyświetlaczy LED bądź lamp NIXIE. Taki projekt myślę bedzie bardziej uniwersalny.
    Moje pmysly to wyświetlanie godziny i przez krótki czas temperatury, nie wiem czy jest sens wyświetlanie daty.
    Czas oczywiście myślę odczytywane z PCF po I2C.
    Czujnik temperatury jak najbardziej DS1820 maxima, pomiar w pokoju czy wiecej miejscach? Jesli zegar będzie blisko okna to myślę że pomiar temp. zewnętrznej i wewnętrznej jest jak najbardziej na miejscu.
    Budzik wbudowany, może być ustawiany na pilot, żeby się za szybko z łóżka nie zwlekać :)
    Myślę, że klawiatura może się przydać oprócz sterowania zdalnego.
    Możliwość zmiany czasu wyświetlania godziny i temperatur jest dyskutowalna, zawsze można ją zmienić w programie.
    Procek, to może ATmega8 ? Myślę że można by się w nim zmieścić, ewentualnie okroić parę funkcji :)
    Myślę, że to tyle na początek.
  • #6 3515104
    Dar.El
    Poziom 41  
    Posty: 5450
    Pomógł: 750
    Ocena: 888
    Witam
    Aż tak uniwersalny projekt to nie będzie. Możliwość sterowania lamp NIXIE raczej nie będzie, ale jak zrobię ten zegarek to następny będzie na lampkach. Podyktowane jest to wysoką ceną płytek dwustronnych i cały zegar musi się zmieścić na jednej pod wyświetlaczami i jakoś nie wyobrażam sobie jak do tego dorzucić NIXIE.
    Procesor ATMega8 może i by wystarczył, ale ma za mało wyprowadzeń i potrzeba by było dodać scalaki rozszerzające które też kosztują i komplikują układ, więc łatwiej kupić trochę droższy µP a w końcowym rozrachunku zegar nie będzie droższy, ale będzie miał większe możliwości.
    Dodatkową funkcją mógłby być pomiar ciśnienia atmosferycznego (barometr), ale to wymaga dodania jeszcze jednego wyświetlacza a może nawet dwóch.
  • #7 3515285
    madart
    Poziom 26  
    Posty: 892
    Pomógł: 79
    Ocena: 64
    Ale oczywiscie wyswietlacze będą multipleksowane? Tylko o ta mozliwosc mi chodzilo :)
    Co do czujki ciśnienia, to są jakieś w miarę przystępnych cenach?
    Procek moze byc wiekszy, w cenie koncowej tego ukladu jego cena bedzie tylko ulamkiem :D
  • #8 3515350
    Dar.El
    Poziom 41  
    Posty: 5450
    Pomógł: 750
    Ocena: 888
    Wyświetlanie będzie multipleksowe, to jest pewne. Co do pomiaru ciśnienia, to nie tylko problemem jest cena czujnika, ale również konieczność wydłużenia wyświetlacza i raczej zegar będzie bez tej funkcji :cry: .
  • #9 3515564
    madart
    Poziom 26  
    Posty: 892
    Pomógł: 79
    Ocena: 64
    A ile będzie tych wyświetlaczy? Sześć? Do wyświetlania również sekund? Taka opcja bardzo się mi podoba. Przy sześciu ciśnienie by się zmieściło, ew. można rozważyć montaż dwóch mniejszych na końcu.
    Ale zastanawiam się też nad prądożernością tych wyświetlaczy. Czy ten zasilacz 10W da sobie radę? Jakie parametry będą miały użyte wyświetlacze?
  • #10 3515624
    Dar.El
    Poziom 41  
    Posty: 5450
    Pomógł: 750
    Ocena: 888
    Pomyliłem się że do wyświetlenia ciśnienia nie wystarczą 4 wyświetlacze, 1024 to jest całkiem przyzwoity sposób pokazania ciśnienia. Na 4 wyświetlaczach 56mm, powierzchnia płytki wyniesie około 1,28dm², a to już jest dużo i dodanie jeszcze dwóch nawet mniejszych wyświetlaczy, jeszcze bardziej powiększy PCB. Pobór prądu przez 4 wyświetlacze 56mm nie przekroczy 0,5A z 12V, reszta jest już pmijalna.
  • #11 3515762
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    Cytat:
    Jeśli chodzi o schemat i PCB, to dam sobie radę nawet z kosmicznymi trudnościami, chodzi mi czy programowo jest to do zrealizowania.


    fajnie ;) ... ja tylko bym dodał jednak, że o wiele więcej programowo można zrobić jeśli jednak podeszłoby się w ten sposób aby obsługę niektórych gadżetów jak np IR, temperatura i może kilka jeszcze innych zrobić w taki sposób aby przeznaczyć dla ich obsługi małe dedykowane procki typy ATtiny13/15 i komunikację z głównym procem przez I2C. Do takich wniosków dochodzę przy tym co robię teraz. Wprawdzie udaje mi się to jeszcze opanowywać jakoś i ogarniać w jednym procku ale wolałbym nie grzebać się w jednym wielkim programie, który robi wszystko tylko podzielić to jednak na wyraźne moduły i sprzętowe i programowe. Miałoby to wg mnie ogromne znaczenie ponieważ każdy mógłby sobie zbudować taki zegarek jakby z tych klocków, które mu odpowiadają i to byłoby ciekawe. Wtedy można byłoby dołożyć jeszcze odnośnie tych bajerów w takim zegarku nawet synchronizację radiową DCF jeśli ktoś nie ma w pobliżu kompa to mógłby właśnie sobie wybrać czy wstawić "klocek" z DCFem czy może przez RS232 z PCtem łączyć

    .... to takie ogólne przemyślenia ale to zależy jaka będzie opinia większości jak do tego podejść ;)

    pozdrawiam
  • #12 3515824
    Dar.El
    Poziom 41  
    Posty: 5450
    Pomógł: 750
    Ocena: 888
    Witam
    Ale w ten sposób projekt zaczyna bardzo rozrastać się i nigdy nie zostanie skończony. Jeżeli będziesz miał problem z pomiarem temperatury i niezakłóconym działaniem zegarka, można rozbić ATMega16 na dwa ATMega8, jeden byłby do obsługi zegara drugi do obsługi innych peryferii, co Ty na to mirekk36? A tak przy okazji twój zegar w DIY ma pierwsze miejsce. :D
  • #13 3515875
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    ... hmm ooo pierwszy raz w zasadzie zajrzałem tam do konkursów gdy powiedziałeś mi o tym miejscu i jestem mocno aczkolwiek mile zaskoczony ;) a co twojej propozycji aby dać dać dwa procki - to jak najbardziej - jestem za jakimkolwiek rozdzieleniem programowym i logicznym w ten sposób aby oddzielić samą obsługę czystego hardware (robiłaby to wtedy ATmega8) a w głównym procku można byłoby już na spokojnie zająć się czystym "szaleństwem" i obsługą bajerów i gadżetów. Tak byłbym nawet za takim rozwiązaniem jak mówisz a komunikacja wtedy między nimi po I2C.

    Dodano po 34 [minuty]:

    aha Dar.El a ty myślisz o ATmega16 w wersji DIP czy SMD ? chyba tak? - a jeśli już to może ATmega32 bo droższa jest w TME tylo o ok 2zł ;) ... więc jak szaleć to szaleć... a tak pomyślałem o jeszcze większym procku bo i pamięci RAM byłoby już na spokojnie dużo nawet gdyby coraz nowsze pomysły do głowy przychodziły ;) ... ale nie mówię, że się upieram przy tym
  • #14 3516174
    Dar.El
    Poziom 41  
    Posty: 5450
    Pomógł: 750
    Ocena: 888
    Witam
    Można nawet zastosować ATMega128, nie będzie wtedy problemu ze sterowaniem diody RGB, mamy tam 6 PWM i 128kB flash i wszystkiego dużo. Ułatwi to rozwiązanie wielu problemów a nawet umożliwi pisanie programu w Bascom, ale cena jest duża. Mogę załatwić ATMega128 za 16zł, ATMega32 9zł a ATMega8 3zł, oczywiście ceny netto :D . Scalaki lepiej jak będą w SMD, w dużej obudowie robi się tylko na uniwersalnych płytkach, prototypy. Myślę że uda mi się zaprojektować płytkę w miarę bezbłędnie, nie trzeba robić prototypu i za to mnie szanują w pracy, omijam jeden proces produkcyjny.
  • #15 3516335
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    myślę więc, że nawet i ATmega128 mogłaby wchodzić w grę bo przecież przy całości to i tak aż tak mocno nie podraża całego rozwiązania a za to staje się bardzo rozwojowe. Ale jak mówię nie upieram się i zdaję się także na sugestie innych. Dla mnie ważne jest tylko aby główny procek to był właśnie minimum Atmega16 lub 32 ...
  • #16 3516519
    Dar.El
    Poziom 41  
    Posty: 5450
    Pomógł: 750
    Ocena: 888
    OK więc mamy wybrane uP od ATMega16 do ATMega128 + ATMega8 do obsługi DS18B20. Procesor wybierzemy później jak będzie wiadomo jakie wodotryski mają być zastosowane w tym zegarku. Czekam na pomysły, co tu jeszcze dodać.
    Można dodać jeszcze dwa mniejsze wyświetlacze pokazujące sekundy a przy temperaturze °C i dla barometru hp. Przydałby się jeszcze wyświetlacz dni tygodnia np. 7 diod LED i coś co pokazywało by który termometr jest na wyświetlaczu. Jak to ma wszystko wyglądać?

    Jak na razie cena takiego zegarka w dużym przybliżeniu:
    40zł - 4x wyświetlacz 56mm
    15-24zł - procesory
    20zł - PCB
    10zł - 2x DS18B20
    5zł - zegar PCF
    20zł - przyciski LEDy i inne pierdółki
    20zł - ISD1420 + głośniczek
    Razem 130zł

    ----------------------------
    02.02.07
    Chodzi mi po głowie pomysł zastosowania dodatkowo wyświetlacza LCD 2x16 znaków z podświetlaniem RGB, albo jeszcze lepiej, wyświetlacza graficznego 192x64 i do tego dołożyć ekran dotykowy. W pierwszym wypadku koszt zegara wzrośnie o 30zł a w drugim przypadku o 100zł.
    Weźcie pod uwagę że taki zegarek robię dla siebie i będę na niego patrzył i korzystał z niego przez 10 lat albo i dłużej jak się nie zepsuje. Nie opłaca się robić byle czego na tak długi okres, policzcie ile będzie kosztował 1 dzień przy amortyzacji 10 lat. Przy cenie 200zł, jeden dzień będzie kosztował 5,5gr. a ilu z was codziennie puszcza z dymem 10zł i nie przejmuje się tym faktem że przez 10 lat traci 36500zł.
  • #17 3519858
    Dar.El
    Poziom 41  
    Posty: 5450
    Pomógł: 750
    Ocena: 888
    Witam
    Po dłuższym zastanowieniu się, zdecydowałem się na takie rozwiązanie:
    1 - wyświetlacze 4x56mm + 2x33mm, czyli razem 6
    2 - wyświetlacz 2x16 LCD z podświetlaniem RGB
    3 - dodatkowo 7 LED prostokątnych a na nich widoczne cyfry od 1 do 7
    4 - pomiar temperatury na DS18B20 x2
    5 - budzik na ISD1420 podzielony na kilka dźwięków
    6 - µP to ATMega128 i ATMega8 połączonych na RS
    7 - zegarek na PCF8583 + bateryjka
    8 - połączenie z PC przez RS232 i możliwość upgrade firmware :D
    9 - Dwa wyjścia optoizolowane, funkcja termostatu.
    10- Gniazdo rozszerzeń dla np. barometru.

    Jak coś sobie jeszcze przypomnę to dopiszę.
    Mirekk36 co o tym sądzisz, może jeszcze coś dodasz?
  • #18 3519906
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    tak fajne zestawienie tylko ja bym może tak wstępnie proponował zorganizować komunikację pomiędzy prockami jednak na I2C zamiast RS. Natomiast RS232 oczywiście użyłbym do połączenia z PCtem.

    Założenia dosyć śmiałe i duże ale to z kolei fajny cel. Ja jeszcze osobiście nigdy nie robiłem nic z bootloaderem przez RSa ale może tutaj coś dzięki temu się nauczę bo napewno warto.

    Tak z ciekawości zapytam - podasz mi jakiegoś linka do wyświetlaczy LCD z podświetleniem RGB?

    i jeśli planujemy już jakieś gniazda rozszeżeń to może nieśmiało zaproponuję choć tym też jeszcze się nie zajmowałem ale też warto - więc gniado czy jak to nazwać dla podłączenia DCFa czyli synchronizacji przez radio. Bardzo dużo ludzi mnie o to pytało przy moim zegarku.

    kolejna sprawa to czy mógłbyś chociaż w jakiś schematyczny prosty sposób rozrysować jak widziałbyś ty połączenie zarówno wyświetlaczy LED i LCD jednocześnie? CHodzi mi o taką ogólnąwizję - gdyż mi zwykle troszkę gryzło się stosowanie jednego i drugiego rozwiązania razem w jednym urządzeniu - ale może ktoś mnie przekona? ;)

    czy coś chciałbym dodać jeszcze do gadżetów tego mega zegarka? hmmm już mnie ciarki przechodzą na samą myśl o oprogramowaniu tego wszystkiego co do tej pory jest przedstawione ;) ... więc narazie siedzę cicho ;) chyba, że coś mi się jeszcze koniecznie potrzebnego urodzi ;)
  • #19 3519955
    Dar.El
    Poziom 41  
    Posty: 5450
    Pomógł: 750
    Ocena: 888
    Wolałbym komunikację po RS między uP, a to dlatego że ATMega128 ma ich 2, więc nie będą kolidować z komunikacją PC. Wyświetlacze LCD są na allegro, więc zajrzyj tam i pooglądaj. Gniazdo do podłączenia DCF, nie ma problemu, to tylko gniazdko, ale jak mielibyśmy robić radio na płytce, to ja nie wiem skąd brać elementy. Połączenie wyświetlacza LED i LCD nie powinno nastręczać problemów, ATMega128 ma bardzo dużo portów. Jak masz jakieś pomysły to pisz, bo jak zaprojektuję płytkę, to będzie za późno.
  • #20 3519997
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    ok - więc odnośnie komunikacji pomiędzy prockami to żeby pójść na kompromis można chyba spokojnie zaprojektować cały układ tak aby poza połączeniem procków przez RS istniało też połączenie w magistrali I2C to w końcu tylko po 2 piny z każdego procka a będzie można później podejść do tego tematu bardzo uniwersalnie.

    jeśli chodzi o DCF to jeszcze nie mam przemyślanego na tyle szczegółowo projektu aby zproponować jakieś złącze ... więc ok dajmy sobie narazie z tym spokój - w końcu dzisiaj net każdy ma ;)

    ale może zanim zaprojektujesz płytkę pokażesz jeszcze jak to widzisz chociaż na schemacie ok?
  • #21 3520491
    Dar.El
    Poziom 41  
    Posty: 5450
    Pomógł: 750
    Ocena: 888
    Wolę RS bo można najpierw wysłać rozkaz 9bitów a potem lecą 8bitowe dane, trudno o pomyłkę i mam już to dopracowane. Jeśli chodzi o upgrade przez RS, to jest to jeszcze przede mną, ale ułatwi to innym poprawianie softu w zegarku. Przypomniał mi się z DIY zegarek imieninowy, mając ATMega128 do dyspozycji, możemy wpisać wszystkie imiona i wyświetlać je na LCD.
    Wszystkie niewykorzystane wyprowadzenia z µP wystawię na złącza na płytce i można będzie robić rozszerzenie kanapkowe, płytka nad płytką, później pomyśli się co tam można dodać.
    Jak narysuję schemat to od razu tu umieszczę do wglądu a jak międzyczasie coś Ci wpadnie do głowy to pisz.
    Może komukolwiek z forum który czyta ten post wpadł jakiś genialny pomysł, niech tu napisze i nie boi się, nigdy nie wiadomo co może być do zrobienia a co nie.
  • #22 3521483
    skalny7
    Poziom 17  
    Posty: 109
    Pomógł: 24
    Ocena: 4
    Szanowni Budowniczowie,

    Chciałbym wtrącić parę słów mojego komentarza do projektu...

    Sam noszę się ze skonstruowaniem "dla siebie" czegoś podobnego, ale jak chcę wymyślić funkcjonalność takiego zegara to jakoś nie mogę wszystkiego do "kupy" poskładać.

    Natomiast funkcjonalność, o której mówicie jest spokojnie do obsłużenia przez jeden procesorek -> niekoniecznie nawet przez ATmega128, który jeżeli chodzi o wydajność, jest najbardziej wydajnym, "popularnym" procesorem 8-mio bitowym.

    Jeżeli chodzi o pomiar ciśnienia atmosferycznego to odpowiedni czujnik w jednej z większych firm dystrybucyjnych kosztuje kilkadziesiąt złotych (>60zł).

    A jeżeli chodzi o "duże" wyświetlacze, to spokojnie można by takowy zrobić łącząc szeregowo choćby diody SMD, co z bliska zdecydowanie lepiej by wyglądało niż segment wyświetlacza złożony np. z led'ów 5mm. Zaletą takiego rozwiązania jest możliwość tworzenia dowolnie dużych wyświetlaczy.

    W każdym razie, chętnie służę pomocą przy projekcie!

    A na zdjęciu poniżej tablica meteo, która znajduje się w Będzinie (Śląsk), gdzie cała elektronika jest mojego autorstwa (HW+SW), a całością "zawiaduje" ATmega128 (czas jest z GPS), wyświetlacze 10cm, każdy segment to 9 led'ów.


    Pozdrawiam,
    DS

    Jak zbudować zegar z dużym wyświetlaczem dla osób słabowidzących?
  • #23 3521559
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    o fajny zegarek ;) hyhyhy tylko zbyt ogromny do domciu ...

    .... ale ok skoro kolega pisze, że służy pomocą to mam pytanko albo kilka pytanek:

    1. w czym kolega programuje?
    2. czy pomiar temperaturki robiony jest w oparciu o czujniki 1-Wire?
    3. Jeśli kolega programuje w asemblerze to może jakaś ogólna uwaga jak sobie zorganizować odczyt temperatury po 1-Wire z DS18B20 ? (a może nawet jakiś fragmencik kodu odnośnie tego odczytu w asm? o ile to nie tajemnica zawodowa oczywiście)
    (bo rzeczywiście można by i na jednym procku ATmega128 to spokojnie może zrobić - ale mi akurat ciągle ten odczyt 1-Wire się gryzie z czymś tam innym i nie mogę dojść do ładu - najchętniej skorzystałbym z jakiejś gotowej procedurki w asm do tego)

    pozdrawiam
  • #24 3521675
    skalny7
    Poziom 17  
    Posty: 109
    Pomógł: 24
    Ocena: 4
    Faktycznie, taki zegarek akurat do domu nie bardzo się nadaje :)

    A co do reszty to:
    1) Programuje praktycznie tylko w C/C++, a to dlatego, że jak się ma jednocześnie do czynienia z 4 rodzinami procesorów to już trudno assembler spamiętać (szczególnie w przypadku ARM'ów) :)
    Do AVR'ów używam WIN-AVR opartego na GCC.
    2) W tym przypadku pomiar temperatury odbywał się za pomocą czujnika SHT-15 firmy Sensirion - bardzo fajny zintegrowany czujnik temperatury i wilgotności z magistralą podobną do I2C, ale dość drogi ~150zł.
    3) Co do problemów z 1-Wire: standardowym problemem jest to że jak sobie gdzieś w procedurce "gadamy" po 1-Wire a przyjdzie nam przerwanie to się robi bałagan z zależnościami czasowymi i zazwyczaj nadane/odebrane dane są do kosza. Rozwiązanie -> blokowanie przerwań, co oczywiście nie jest zawsze możliwe (np. przerwanie od UARTa), ale są pewne "sztuczki" programowe, które pozwalają na praktycznie niezakłóconą pracę 1-Wire w pętli głównej programu, gdy przerwania są odblokowane.

    Tak w ogóle moim (i pewnie nie tylko moim) zdaniem pisanie bardziej rozbudowanych aplikacji w assemblerze nie ma sensu, ponieważ w w pewnym momencie ta aplikacja robi się na tyle skomplikowana, że jakiekolwiek poprawki/usprawnienia w assemblerze stają się trudne do opanowania lub zrobienia.

    Jak uda mi się jutro pobawić trochę 1-Wire to może wrzucę tu jakąś procedurkę w C do obsługi DS18B20, która poprawnie działa z włączonymi przerwaniami -> jak nie wrzuce, a potrzebna takowa to "molestować" na PW :D

    Pozdrawiam,
    DS
  • #25 3522020
    Dar.El
    Poziom 41  
    Posty: 5450
    Pomógł: 750
    Ocena: 888
    Witam
    Za 3zł nie będę martwił się jak to ze sobą sprzęgnąć, naprawdę ktoś się wysilił i wymyślił 1-Wire. ATMega128 będzie dla zabawy, żeby nigdy nikomu niczego nie zabrakło a ATMega8 aby się nie martwić o zależności czasowe 1-Wire. W asemblerze też można robić duże programy, ale trzeba robić to umiejętnie, potrzebna jest duża wiedza. Jeśli chodzi o transmisję danych po jednym drucie, to zrobiłem własną i do tego bardzo odporną na zakłócenia i nieprzeszkadzającą w realizowaniu przez procesor innych zadań. Potrafi sama się dostosować do zmian szybkości transmisji, dość często zapominam przełączyć taktowanie z 1MHz na 8MHz, a komunikacja działa dalej.

    Mam dobrą wiadomość dla mirekk36, znalazłem sposób na bez konfliktową obsługę DS18B20, ale trzeba będzie umieścić oba na jednej linii. Trzeba było szukać u źródła :D , przejrzyj załącznik.

    Mała próbka schematu, następne części jak tylko coś namaluję.:D
    Załączniki:
    • doc2579.pdf (128.74 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • WysLED.pdf (86.13 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #26 3524093
    Dar.El
    Poziom 41  
    Posty: 5450
    Pomógł: 750
    Ocena: 888
    Założenia wykorzystania ATMega128:
    Wys.LED + Key - PA + PC + PD7
    PCF8583 - PD0 + PD1 + PE7
    DS18B20 - PD2 + PD3
    Kontrast LCD - PB4
    Podświetlanie RGB - PB5 + PB6 + PB7
    JTAG - PF4-PF7
    RS do PC - PE0 + PE1
    Wys.LCD - PG0-PG4 + PD5 + PD6
    Fototranzystor - PF0
    Przyszłościowo:
    DCF - PE6
    Barometr - PF1

    Pozostałe wyprowadzenia z tym że część wykorzystam do podłączenia ISD1420:
    PB0-PB3
    PE2-PE5
    PF2-PF3
    PD4

    Teraz chyba już jest w miarę dobrze.
  • #27 3524193
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    jeśli chodzi o DS18B20 to ja obsługuję tymi swoimi choć narazie kulawymi procedurkami w zasadzie dowolną ilość układów DS na jednej magistrali. Praktycznie zrobiłem już tak w jednym ze swoich układów, że są podłączone 4szt na jednej magistrali.... ale ok to źródełko też sobie przeanalizuję może uda mi się poprawić te moje procedurki ;)

    .... natomiast mam jedno pytanko - czy może nie uprościc jakoś mocniej tego schematu wyświetlacza dając np jakieś ULN'y zamiast takiej kosmicznej ilości tranzystorków? .... ja używam zwykle ULN2803 do sterowania segmentami a tylko tyle tranzystorów ile jest wyświetlaczy - czyli w tym przypadku byłoby 6szt tranzystorów i jeden ULN. Pomijam oczywiście dodanie kilku elementów aby zrobić klawiaturkę i ew zabezpieczenie wyświetlacza, które widzę, że wstawiłeś. To tylko tak nieśmiało proponuję ... bo jak miałoby być potem tyle lutowańska to zastanawiam się w ogóle czy nie użyć jakiegoś MAX'a dedykowanego do sterowania wyświetlaczami LED przez I2C - wtedy to już tylko jeden scalak by starczył...
  • #28 3524595
    Dar.El
    Poziom 41  
    Posty: 5450
    Pomógł: 750
    Ocena: 888
    Witam
    Wcześniej napisałem o możliwości zastosowania wyświetlaczy o wspólnej katodzie lub anodzie. Ja posiadam o wspólnej katodzie, a w TME na obecną chwilę są ze wspólną anodą. Wiem że tych tranzystorów jest za dużo, ale schemat jest tak wymyślony, aby można było zastosować oba typy wyświetlaczy, wystarczy wlutować tranzystory o odwrotnej polaryzacji. Jeśli znasz jakieś inne rozwiązanie tego problemu, to nie zwlekaj tylko pisz.
    Sporo wyprowadzeń potrzeba do ISD1420, chyba z 9 i teraz zastanawiam się czy ograniczyć ilość sygnałów na płytkę rozszerzającą, czy dodać 74HC4094.
  • #29 3525184
    Konto nie istnieje
    Konto nie istnieje  
  • #30 3525483
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    arcu -> gdyby ten TMP100 miał chociaż tylko 4 wyprowadzenia i mniejszą obudowę to już bym wyrzucił swoje DS'y ;) ... bo wolę 100razy bardziej czytać po I2C niż po 1-wire.... ale w związku z tą obudową i minimalną ilością wyprowadzeń - bo można użyć tylko 2 - to DS jest o wiele bardziej funkcjonalny z kolej - prawda? chyba sam przyznasz?

Podsumowanie tematu

✨ Dyskusja dotyczy projektu zegara z dużym wyświetlaczem LED o wysokości 56 mm, przeznaczonego dla osób słabowidzących, z możliwością odczytu godziny bez okularów, także w nocy. Projekt zakłada zastosowanie wyświetlaczy o wspólnej anodzie lub katodzie, z wyborem podczas montażu PCB, oraz multipleksowane wyświetlanie. Proponowane mikrokontrolery to rodzina ATMega (8, 16, 32, 128) z rozdzieleniem zadań na dwa układy (np. ATMega128 do obsługi głównej i ATMega8 do obsługi czujników 1-Wire). Wykorzystywane są zegary RTC (PCF8583, PCF8583 w DIP8), czujniki temperatury DS18B20 (1-Wire) oraz ewentualnie DS1629 i TMP100/101 (I2C). Dyskutowano o problemach z obsługą magistrali 1-Wire w systemach wielozadaniowych i możliwych rozwiązaniach, w tym implementacji 1-Wire przez RS232. Projekt przewiduje także wyświetlacz LCD 2x16 z podświetleniem RGB, dodatkowe diody LED do wskazywania dni tygodnia, budzik (pierwotnie z ISD1420, później zrezygnowano na rzecz telefonu komórkowego), a także możliwość rozszerzeń, np. barometr, termostat, synchronizacja radiowa DCF. Zasilanie wymaga stabilizowanego 12V 1A lub niestabilizowanego 15V z własną stabilizacją, ze względu na wysokie napięcie przewodzenia dużych wyświetlaczy. Schematy uwzględniają zastosowanie tranzystorów PNP/NPN umożliwiających obsługę różnych typów wyświetlaczy, a także układy rozszerzające (np. 74HC4094). Komunikacja między mikrokontrolerami planowana jest głównie przez RS (RS232) z możliwością I2C jako alternatywy. Projekt jest rozwijany z myślą o modularności i łatwości rozbudowy, z możliwością aktualizacji firmware przez RS232. Dyskusja obejmuje także kwestie programowania w BASCOM, C/C++ (WIN-AVR), asemblerze oraz organizacji pamięci fontów ASCII do wyświetlaczy. Cena komponentów i dostępność wyświetlaczy (m.in. w TME, Maritex) oraz możliwość zamówienia płytek PCB w małej serii są również poruszane.
Wygenerowane przez model językowy.
REKLAMA