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

Bezprzewodowy termometr do pieca C.O. BASCOM 433MHz z zapisem danych na kartę SD

wojlej 28 Feb 2014 23:12 49452 124
Altium Designer Computer Controls
  • Bezprzewodowy termometr do pieca C.O. BASCOM 433MHz z zapisem danych na kartę SD

    Witam, dziś prezentuje swój bezprzewodowy termometr pracujący na częstotliwości 433 MHz. Urządzenie składa się z nadajnika i odbiornika. Nadajnik odczytuje temperaturę pieca C.O. i wysyła ją do odbiornika. W odbiorniku mamy możliwość ustalenia górnego i dolnego progu załączenia alarmu, który informuje użytkownika o zbyt niskiej lub wysokiej temperaturze na piecu. Dodatkowo ustalamy histerezę dla alarmu oraz mamy możliwość włączenia trybu oszczędzania energii, ale o tym później.

    Nadajnik:
    Sercem nadajnika jest Attiny2313, czujnik temperatury to sławetny DS18B20, a nadajnik 433 MHz to najtańszy i najprostszy TX433N. Nie ma nad czym się tu rozwodzić, procesor co około 30s odczytuje temperaturę z DSa i w dwóch częściach wysyła ją w eter. Dodatkowo zastosowałem załączanie nadajnika kluczem w celu oszczędzania energii, gdybym w przyszłości chciał zasilać układ z baterii. Poniżej zdjęcie, schemat i wzór płytki:
    Bezprzewodowy termometr do pieca C.O. BASCOM 433MHz z zapisem danych na kartę SD
    Bezprzewodowy termometr do pieca C.O. BASCOM 433MHz z zapisem danych na kartę SD Bezprzewodowy termometr do pieca C.O. BASCOM 433MHz z zapisem danych na kartę SD

    Protokół transmisji danych:
    Dane są przesyłane do modułów z wykorzystaniem sprzętowego UART. Na początku ramka wyglądała w następujący sposób:
    Bezprzewodowy termometr do pieca C.O. BASCOM 433MHz z zapisem danych na kartę SD
    Na początku był wysyłany znacznik początku ramki o wartości 170. Następnie dwa bajty danych Temp1 i Temp2 i na koniec suma kontrolna CRC = Temp1 xor Temp2 xor 170. Działało to dobrze, jednak co jakiś czas przychodziły do odbiornika śmieci które on akceptował. W konsekwencji odbiornik co jakiś czas wyświetlał bzdury. Aby temu zapobiec rozbudowałem ramkę do takiej postaci:
    Bezprzewodowy termometr do pieca C.O. BASCOM 433MHz z zapisem danych na kartę SD

    Zmniejszyło to efektywną szybkość transmisji danych jednak polepszyło pracę odbiornika. Teraz aby ramka została zaakceptowana nie wystarczy że CRC będzie zgodne, ale muszą być spełnione następujące warunki:
    - 4 bajt musi być równy 85
    - 3 i 5 bajt muszą być sobie równe
    - 2 i 6 bajt muszą być sobie równe
    - suma kontrolna musi być zgodna.

    Taka budowa ramki pozwoliła na bezbłędną transmisje danych.

    Odbiornik:
    Sercem odbiornika jest ATmega32. Do dyspozycji użytkownika są dwa przyciski umożliwiające ustawianie parametrów. Odbiornik również posiada swój czujnik temperatury który odczytuje temperaturę w pokoju. Dane są zapisywane na kartę SD. Odbiór danych z odbiornika RX433N następuje w przerwaniu. Odbiornik został wykonany na dwóch płytkach połączonych przewodami. W przyszłości będą umieszczone jedna pod drugą na jakiejś ładnej plexi. Teraz co nieco o funkcjach:
    - zdalny odczyt temperatury
    - możliwość ustawienia dolnego i górnego progu załączenia alarmu
    - możliwość ustawienia histerezy dla progów załączenia alarmów
    - adaptacyjna regulacja podświetlenia
    - tryb energooszczędny
    - zapis danych na kartę SD

    Adaptacyjna regulacja podświetlenia wyświetlacza LCD jest oparta o fotorezystor i wbudowany przetwornik A/C Atmegi, podświetlenie regulowane przez PWM, opierałem się na tym projekcie Ducha: https://www.elektroda.pl/rtvforum/topic1654862.html

    Tryb energooszczędny można włączyć, np gdy zasilamy odbiornik z baterii, wtedy wyświetlacz jest podświetlony tylko na 2s po odebraniu każdej ramki, czyli na około 2s co około 30s.

    Poniżej zdjęcia i schematy:
    Bezprzewodowy termometr do pieca C.O. BASCOM 433MHz z zapisem danych na kartę SD Bezprzewodowy termometr do pieca C.O. BASCOM 433MHz z zapisem danych na kartę SD Bezprzewodowy termometr do pieca C.O. BASCOM 433MHz z zapisem danych na kartę SD Bezprzewodowy termometr do pieca C.O. BASCOM 433MHz z zapisem danych na kartę SD
    Bezprzewodowy termometr do pieca C.O. BASCOM 433MHz z zapisem danych na kartę SD Bezprzewodowy termometr do pieca C.O. BASCOM 433MHz z zapisem danych na kartę SD

    Kod programu:
    Poniżej listingi programów nadajnika i odbiornika. Największy problem stanowiło zestawienie transmisji danych, na forum nigdzie nie udało mi się znaleźć gotowych kodów bo jak już ktoś to zrobił to kodów nie umieszczał. Poniżej całe kompletne kody, w odbiorniku cały odbiór realizowany jest w podprogramie Odbierz

    Nadajnik:
    Code: vbnet
    Log in, to see the code


    Odbiornik:
    Code: vbnet
    Log in, to see the code


    Myślę, że program dałoby się jeszcze poprawić, ale to jak znajdę trochę więcej czasu. Na sam koniec film, Jak widać kolejne ramki przychodzą co około 30s. Pierwszy pomiar z pokoju to 85 stopni, czyli pierwszy pomiar z czujnika DS. Kolejne już są poprawne. Na filmie nie słychać buzzera który wydaje dźwięki przy naciskaniu przycisków, prawdopodobnie mikrofon z telefonu nie rejestruje tak wysokich częstotliwości.





    Mile widziane wszelkie komentarze, mam nadzieje że projekt okaże się pomocny.

    Na koniec wielkie podziękowania dla kolegi Saabotaz za pomoc w zrealizowaniu transmisji danych.

    Pozdrawiam

    Dodaje projekty płytek z eagla w załączniku

    Cool? Ranking DIY
    About Author
    wojlej
    Level 17  
    Offline 
    Has specialization in: elektronika cyfrowa i analogowa
    wojlej wrote 366 posts with rating 96. Live in city Warszawa. Been with us since 2006 year.
  • Altium Designer Computer Controls
  • #2
    trance123
    Level 21  
    Jak dla mnie super projekt, zapytam o możliwość rozbudowy. Jest możliwość rozszerzenia ilości czujników radiowych? Oraz jak DS jest wpisywany w program trzeba to zrobić ręcznie ? Jak się ma sprawa zasięgu przez kondygnacje budynku, powiedzmy piec piwnica a urządzenie na piętrze, robiłeś jakieś testy ?
  • #4
    Dariusz Goliński
    Level 22  
    Super projekt
    Czy napotkałeś jakieś problemy z uruchamianiem modułów radiowych ?
  • #5
    wojlej
    Level 17  
    Quote:
    zapytam o możliwość rozbudowy. Jest możliwość rozszerzenia ilości czujników radiowych? Oraz jak DS jest wpisywany w program trzeba to zrobić ręcznie ? Jak się ma sprawa zasięgu przez kondygnacje budynku, powiedzmy piec piwnica a urządzenie na piętrze, robiłeś jakieś testy ?


    Jeżeli chodzi o możliwość rozbudowy to trzeba by dodać do ramki pole identyfikacji nadajnika i po nim rozpoznawać źródło przesyłanej ramki. Na pewno dałoby się to zrobić.
    Ds wpisywany w program? DS jest obsługiwany przez program nadajnika, a potem dane o temperaturze są wpisywane do dwóch bajtów ramki.
    Nie robiłem testów zasięgu, u mnie nadajnik jest w piwnicy w kotłowni, jest tam sporo rur i metalowych elementów, odbiornik znajduje się kondygnacje wyżej po skosie, myślę, że łącznie jakieś 10 m. W wolnej chwili sprawdzę czy na kondygnacji jeszcze wyższej odbiornik działa poprawnie.

    Quote:
    Trzeba by zmienić program, aby nie wyświetlał temp. 85°C w pokoju, podanej przez "niezainicjowany" czujnik.


    To prawda, w wolnej chwili też to zmienię, wystarczy wejść w obsługę DSa przed pętlą główną.

    Quote:
    Czy napotkałeś jakieś problemy z uruchamianiem modułów radiowych ?

    Jedyny problem sprowadzał się do poprawnego odbioru ramki w przerwaniu. Przy pomocy kolegi Saabotaz udało się to rozwiązać. Jak widać nadajnik i odbiornik są połączone bezpośrednio do pinów RXD i TXD. Ważne jest aby mikrokontrolery były taktowane przez kwarce (stabilność częstotliwości), i w programie były takie same ustawienia baud i com. Dla tych modułów gdzie nie jest zastosowane żadne kodowanie musi być zapewniona dość niska przepływność, tak aby bit trwał wystarczająco długo. Przepływność na poziomie 1200 bodów nie jest powalająca ale wystarczy do przesłania temperatury :)
  • #6
    Anonymous
    Anonymous  
  • #7
    dragonn
    Level 11  
    Jaki jest zasięg tych modułów? Przebije się to przez dwa piętra?
  • Altium Designer Computer Controls
  • #8
    wojlej
    Level 17  
    Dodałem pliki w pierwszym poście. Przeniosłem odbiornik kondygnacje wyżej, odbiornik odbiera dane poprawnie. W moim przypadku sygnał przechodzi przez dwa stropy i po skosie przez klatkę schodową i kilka ścian. Natomiast nie gwarantuje takiego zasięgu, to wszystko zależy od środowiska i warunków propagacji. W innym domu, gdzie jest np więcej stali w stropach czy ścianach może nie działać.
  • #9
    dragonn
    Level 11  
    Wiadomo, dzięki w każdym razie ;). Pomysł ten chodzi mi już dłuższy czas po głowie, ale ciężko było mi znaleźć jakiś przykład z wykorzystaniem właśnie takich, a tutaj widzę że to po UART działa, czyli zaprogramowanie tego to banał :P.
  • #10
    pier
    Level 24  
    Dlaczego ja nie wiedziałem że są takie proste w użyciu moduły rf jak robiłem swój bezprzewodowy termometr. Ja zrobiłem komunikację na bluetooth.

    Wyświetlacz który Użyłeś w odbiorniku jest mało praktyczny bo nie Odczytasz temperatury z większej odległości.
    Polecam Ci wyświetlacz graficzny typu COG. Ja takiego użyłem jest naprawdę czytelny. Lub Zastosuj dużą "czcionkę" jak tutaj: https://www.elektroda.pl/rtvforum/topic2658310.html
  • #11
    wojlej
    Level 17  
    Masz racje, z dużej odległości ciężko odczytać, dlatego są alarmy, aby informować użytkownika o przekroczeniu temperatury. Zastanawiałem się też nad użyciem wyświetlaczy 7-segmentowych, ale stwierdziłem, że lepszy będzie LCD. Na razie jest ok, może w przyszłości pomyślę nad większą czcionką.
  • #12
    sylwek tedi
    Level 13  
    Ogólne dostępne moduły radiowe są bardzo proste w obsłudze. Posługujemy się samymi przerwaniami nośnej. To tak jak by na sztywno połączyć ze sobą po RS232 dwa procki z tym że w tym przypadku tym "drutem" jest odbiornik oraz nadajnik radiowy. Do prostych projektów takich jak ten zamiast RS232 można bezpośrednio komunikować się po 1-WIRE.
    Osobiście wolę wojskowe moduły radiowe, bowiem komunikują się one na zmiennej częstotliwości, oraz szyfrują wysyłane paczki. (możemy również edytować oraz zmieniać tablice kodowania, jak również przypisywać szyfrujące klucze bezpieczeństwa. )

    Moderated By ANUBIS:

    Post raportowany.
    3.1.11. Publikowanie wpisów nie zawierających merytorycznej treści, zawierających szkodliwe porady, porady nie będące próbą rozwiązania problemu oraz publikowanie identycznych wpisów następujących po sobie lub powtarzających informacje ujęte w toku dyskusji.
    3.1.14. Zabronione jest publikowanie wpisów niezgodnych z tematyką danego forum lub wątku dyskusji.

  • #13
    wojlej
    Level 17  
    Quote:
    Osobiście wolę wojskowe moduły radiowe, bowiem komunikują się one na zmiennej częstotliwości, oraz szyfrują wysyłane paczki. (możemy również edytować oraz zmieniać tablice kodowania, jak również przypisywać szyfrujące klucze bezpieczeństwa.)


    Mówisz tutaj o czymś co nie jest możliwe do osiągnięcia tanim kosztem. Tryb pracy radiostacji wojskowych zwany FH (Frequency Hopping) wymaga przede wszystkim bardzo wysokiej stabilności częstotliwości, szerszego pasma, i co bardzo trudne do osiągnięcia synchronizacji nadajnika i odbiornika. Po drugie stopień wyjściowy nadajnika musi być na szersze pasmo. Wspominanie tutaj o szyfrowaniu kluczami TRANSEC i COMMSEC to jak wyciąganie armaty na muchę. Szyfrowanie takie odbywa się już na poziomie m.cz, ew. p.cz z użyciem procesorów sygnałowych. Mówisz że wolisz moduły wojskowe? To pokaż co na takich modułach zrobiłeś. I przede wszystkim pokaż cenę takich modułów i pasmo w jakim pracują. Wątpię, że to będzie pasmo ISM.

    Dodano po 1 [godziny] 38 [minuty]:

    Zaktualizowałem kod programu ponieważ znalazłem kilka błędów. Już nie ma pierwszego pomiaru równego 85 st. C. Ważniejszy problem był z dolnym progiem temperatury, otóż po zejściu temperatury poniżej progu, program wchodził w pętle nieskończoną w której migała dioda LED. W konsekwencji gdy w nocy piec przygasał, to do rana migała dioda aż do momentu kiedy ktoś nie wyłączył alarmu. Teraz przekroczenie dolnego progu jest sygnalizowane tylko poprzez włączenie diody LED.

    Na poniższym wykresie przykładowa prezentacja wyników z całej nocy:
    Bezprzewodowy termometr do pieca C.O. BASCOM 433MHz z zapisem danych na kartę SD

    Przydałaby się godzina pomiaru, ale to może w kolejnej wersji.
  • #14
    Maryush
    Level 22  
    Bardzo dobry projekt, nigdy bym nie przypuszczał, że w tak prosty sposób można zorganizować transmisję danych przy pomocy najprostszych układów RF, które praktycznie rzecz biorąc można dostać za kilkanaście złotych. Co do przebiegu zarejestrowanej temperatury, to z pewnością nie posiada Kolega sterownika kotła C.O. ze sterowaniem PID.
  • #15
    Mariojas
    Level 17  
    sylwek tedi wrote:
    Czemu to aż tak oscyluje? Warto by dodać funkcję "uczenia się" Sterownik winien być obserwatorem sytuacji dążącym do jak największej stabilności oraz ekologi regulowanego obiektu.

    Przepraszam za OT, ale mozesz to rozwinąć? Popełniłem u siebie sterownik CO, ale metoda sterowania wymusza takie same oscylacje (nie wiedziałem że to może być niekorzystne). Jakie zalety ma sterowanie PID w piecu?
  • #16
    Mariojas
    Level 17  
    To nie mój temat ;-)
    To, że to byłoby korzystne to racja, ale nie potrzebne przy sterowaniu temperatury pieca i niczym więcej. Nie ma możliwości reagowania na otwarcie okna.
    Myślałem, że są jakieś ekonomiczne aspekty tylko ze względu na oscylacje temperatury pieca.
  • #17
    sylwek tedi
    Level 13  
    Mariojas wrote:
    Mówisz o jakimś systemie automatyki domowej a ja o zwykłym sterowniku pieca co. Różnica stopnia na piecu jest nie odczuwalna w pokoju.

    1 stopień to sporo. Pytanie czy to jest zdrowe dla organizmu? Trzeba by przeprowadzić odpowiednie badania. (osobiście to dostaję alergii. Kiedyś miałem nie szczelne okno i w zimie miałem katar. Ciągle musiałem regulować zawór od kaloryfera, bo było za gorąco, albo za zimno)
    Inteligentna regulacja stosunkowo szybko wyprzedza skudli zdarzenia.

    Co do zwykłych sterowników pieca CO, to tego jest od zawalenia na rynku. Ty do swojego projektu dałeś M32. Chyba zdajesz sobie sprawę co na tym układzie można zrobić? (skoro mam stabilny oraz inteligentny regulator, to po co mi zapis na karcie SD?. W razie potrzeby podpinam laptopa, albo jakiś uniwersalny moduł rozwojowy po RS232 i rejestruję pracę regulatora)

    Moderated By ANUBIS:

    Post raportowany.
    3.1.11. Publikowanie wpisów nie zawierających merytorycznej treści, zawierających szkodliwe porady, porady nie będące próbą rozwiązania problemu oraz publikowanie identycznych wpisów następujących po sobie lub powtarzających informacje ujęte w toku dyskusji.
    3.1.14. Zabronione jest publikowanie wpisów niezgodnych z tematyką danego forum lub wątku dyskusji.

  • #18
    wojlej
    Level 17  
    Przedstawiony utaj projekt tylko odczytuje temperaturę z nadajnika a nie steruje piecem C.O. To podstawowa sprawa, nie mam zapewnionej tutaj dwukierunkowej transmisji danych tylko jednostronną, od pieca do odbiornika. Oscyluje tak dlatego, że na sterowniku pieca C.O. jest ustawiona taka a nie inna histereza. I oczywiście to nie jest sterownik z regulatorem PID. Skoki wzrostu to po prostu momenty czasu kiedy załączana jest dmuchawa pieca :). Przedstawiony tutaj projekt nie steruje piecem, tylko odczytuje temperaturę :)
  • #19
    sylwek tedi
    Level 13  
    To co w końcu steruje tym piecem? (gdyby nie ta karta SD, to atemegi które dałeś posiadają wystarczające zasoby do zrobienia fajnego sterownika)
  • #20
    shadow0013
    Level 34  
    sylwek tedi wrote:
    To co w końcu steruje tym piecem? (gdyby nie ta karta SD, to atemegi które dałeś posiadają wystarczające zasoby do zrobienia fajnego sterownika)

    Przeczytaj ze zrozumieniem temat - to tylko termometr z pamięcią. Piec ma swój sterownik, przy komunikacji w obie strony można by zastąpić sterownik pieca.
  • #21
    wojlej
    Level 17  
    Quote:
    To co w końcu steruje tym piecem? (gdyby nie ta karta SD, to atemegi które dałeś posiadają wystarczające zasoby do zrobienia fajnego sterownika)


    Piec wyposażony jest w swój własny (kupny) sterownik. Przedstawiony tutaj projekt służy do radiowej transmisji temperatury z pieca do odbiornika. DLaczego użyłem ATmegi32? Potrzebna była pamięć, dałoby radę na AT16, ale akurat pod ręką miałem AT32. Najwięcej pamięci zajmują biblioteki do karty SD. Na AT8 program by się nie zmieścił.

    Oczywiście można by zrobić zdalny sterownik pieca. Potrzebna by była transmisja dwukierunkowa, przykładowo moduły rfm12 lub ew. dwa komplety modułów TX433N i RX433N. Tylko wtedy trzeba by było zsynchronizować nadajnik z odbiornikiem tak aby się nie zakłócały. Ostatnim możliwym rozwiązaniem byłoby zastosowanie modułów na innych częstotliwościach, np 868 w jedną stronę, a w drugą 433. Ale można sobie taj gdybać w nieskończoność. Przedstawiony tutaj projekt nie jest sterownikiem pieca C.O. tylko bezprzewodowym termometrem.
  • #22
    waleryfw
    Level 14  
    A ja mam pytanie do autora tego ciekawego projektu . Jak wygląda jedna sekwencja zapisana do SD , bo chciałbym ją jakoś umieścić na wykresie i mieć w archiwum do dalszych przemyśleń . Proszę o przesłanie dowolnego pliku zapisanego na karcie .Czy wielkość pamięci ma znaczenie i jak ją sformatować - przygotować do zapisu . Oczywiście że godzina rejestracji będzie mile widziana , czy autor ma zamiar udoskonalić ten projekt .
  • #25
    wojlej
    Level 17  
    Quote:
    Piny D0÷D3 wyświetlacza LCD nie powinny być podłączane do GND.
    Proszę poczytać np. tutaj:


    Zgodzę się, ale tylko jeśli pin R/W jest używany, to znaczy gdy chcemy również coś odczytywać z wyświetlacza (np. gdy chcemy użyć go jako pamięci zewnętrznej). Zauważ, że na moim schemacie pin R/W podłączony jest również do masy co powoduje że szyna danych działa zawsze jako wejście. Więc na nim żadne stany wysokie się nie pojawiają.

    Quote:
    jaki byl koszt wykonania??


    Szczerze powiedziawszy nie liczyłem. Najdroższe są moduły, kosztują około 50zł za komplet. Do tego ATmega i gniazdo na kartę pamięci to jakieś 10zł. Do tego wyświetlacz, reszta elementów, złącza, diody, płytki itd. Myślę że w granicach 100zł.

    Quote:
    A ja mam pytanie do autora tego ciekawego projektu . Jak wygląda jedna sekwencja zapisana do SD , bo chciałbym ją jakoś umieścić na wykresie i mieć w archiwum do dalszych przemyśleń


    Do programu trzeba załączyć dwie biblioteki. Pomiary zapisywane są w pliku txt w dość wygodny sposób w mniej więcej taki:
    
    44.1	23.0
    45.0	22.9
    46.4	22.8
    47.9	22.8
    49.0	22.8
    49.9	22.8
    50.5	22.7
    50.5	22.7


    Kopiujemy do excela, wciskamy ctrl+f, dalej zakładka zamień, zamieniamy kropki na przecinki i już możemy tworzyć wykresy. W tym temacie użytkownika Duch Link jest opisany sposób zapisu. Tutaj zrealizowany jest w taki sam sposób.
  • #26
    szymon122
    Level 38  
    Zaciekawił mnie sposób transmisji radiowej. W nadajniku pin PD0(RxD) został użyty jako enable, czy to coś ma wspólnego z transmisją UART czy po prostu ten pin został użyty? Czy atmegę trzeba jakoś dodatkowo konfigurować aby połączenie UART działało tak samo radiowo jak po kablu? Czy samo zmniejszenie prędkości transmisji wystarczy aby mieć połączenie? Czy używał ktoś może modułów CC1000 do transmisji? Mają świetne parametry, nie są nawet drogie, sprzętowe szyfrowanie, chyba kilometr zasięgu ale obsługa ich to coś strasznego z czym poradzić sobie nie mogę ;/
  • #27
    wojlej
    Level 17  
    Quote:
    W nadajniku pin PD0(RxD) został użyty jako enable, czy to coś ma wspólnego z transmisją UART czy po prostu ten pin został użyty? Czy atmegę trzeba jakoś dodatkowo konfigurować aby połączenie UART działało tak samo radiowo jak po kablu?


    Został wybrany bo... został wybrany :). Był blisko, nadajnik tylko wysyła dane, więc pin RXD nie jest używany przez UART. W obu Atmegach trzeba dać taką samą konfiguracje np:
    Code: vbnet
    Log in, to see the code
  • #28
    prezeswal
    VIP Meritorious for electroda.pl
    wojlej wrote:
    na moim schemacie pin R/W podłączony jest również do masy


    No cóż, ja jednak mam zaufanie do wiedzy i doświadczenia kol mirekk36, który jednoznacznie napisał (w przywołanym przeze mnie poradniku):

    "Pamiętaj jednak, że obojętnie jak byś nie podłączał pinu R/W to nie daj się zwieść innym poradnikom czy schematom ale także (o zgrozo książkom!!!!), w których zobaczysz, że nie wykorzystywane piny D0...D3 podczas gdy stosujemy magistralę 4-bitową - ktoś podłącza do GND! TAK NIE MOŻNA !!!"

    i dalej:

    "Gdyby ktoś pytał dokładniej kiedy to może się pojawić na nich stan wysoki - to odpowiadam - że wtedy, gdy np dokonujemy odczytu danych z wyświetlacza. Np chociażby podczas badania flagi zajętości BusyFlag. Dlatego mam nadzieję, że dobrze to zapamiętasz i nie będziesz popełniał takiego błędu."
  • #29
    wojlej
    Level 17  
    Wchodzimy trochę na OT, ale czy nie jest tak, że flagę zajętości można odczytać dopiero po ustawieniu R/W w stan wysoki? Jeśli mam racje to kiedy możemy odczytać coś z wyświetlacza jeśli pin R/W jest w stanie niskim?

    Quote:
    "Gdyby ktoś pytał dokładniej kiedy to może się pojawić na nich stan wysoki - to odpowiadam - że wtedy, gdy np dokonujemy odczytu danych z wyświetlacza. Np chociażby podczas badania flagi zajętości BusyFlag. Dlatego mam nadzieję, że dobrze to zapamiętasz i nie będziesz popełniał takiego błędu."


    Mając pin R/W na stałe podłączony do masy nie odczytujemy nic z wyświetlacza bo nie mamy takiej możliwości, więc na pinach D0-D3 nie pojawiają się stany wysokie.

    Dodano po 11 [minuty]:

    Uważam, że macie racje jeśli wykorzystujemy pin R/W. W takim wypadku, nawet jeśli korzysta się z trybu 4-bitowego nie wolno podłączać D0-D3 do masy, bo gdy ustawimy R/W w stan wysoki to wtedy mogą pojawić się stany wysokie na szynie danych. W przypadku gdy szyna danych jest wykorzystywana cały czas jako szyna do zapisu to nie ma takiej możliwości. Bo jakim cudem jak wpisuje dane na piny D4-D7 to w tym samym czasie ma się pojawić coś na D0-D3?
  • #30
    prezeswal
    VIP Meritorious for electroda.pl
    To już ostatni cytat z dyskusji, która miała miejsce po publikacji poradnika (pod wcześniej podanym linkiem):

    mirekk36 6 maja 2012 12:50
    "...Otóż gdy wybiera się tryb pracy 4-bitowy to oznacza, że pozostałe bity w ogóle nie biorą udziału w komunikacji. Tylko że wbrew pozorom one nie są i nie mogą być CAŁY CZAS W STANIE WYSOKIEJ IMPEDANCJI!. Ponieważ to się dzieje dopiero po dokonaniu pełnej inicjalizacji wyświetlacza. A w jej trakcie działają normalnie jako porty I/O i panują na nich normalne stany ZERO albo JEDEN - i wtedy jak ktoś je łączy do GND tak wprost to właśnie powoduje często uszkodzenie takich wyświetlaczy..."