Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Computer Controls
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

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

wojlej 08 Wrz 2014 21:49 45363 124
  • #91 08 Wrz 2014 21:49
    MarekS6
    Poziom 14  

    niestety jestem tylko w weekendy w polsce gdzie mam dostęp do kwarców. Tu w Niemczech gdzie jestem mam do dyspozycji płytę testową na różne mikrokontrolery którą kiedyś wykonałem ze strony autora (http://mirley.firlej.org/uniwersalna_plytka_testowa_avr).

    Mam tam do dyspozycji atmegę 8 na tej płycie ale z kwarcem 16MHz. To ważne by było to 12MHz w tym odbiorniku?

    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
  • Computer Controls
  • #92 08 Wrz 2014 21:52
    wojlej
    Poziom 17  

    Nie, to nie jest istotne. Chodziło mi o to abyś zmienił kwarce w programie na takie jak Ty masz. W docelowym projekcie najlepiej jakby nadajnik i odbiornik miały takie same zegary, chociaż przy tak niskiej szybkości transmisji nie powinno mieć to specjalnego znaczenia. Ale ważne, aby były to kwarce a nie wewnętrzny RC Atmegi bo to szajs. I postaraj się użyć tym razem sprzętowego UARTa

  • #94 08 Wrz 2014 22:15
    wojlej
    Poziom 17  

    Uważam że większość problemu tkwi w nadajniku, podejrzewam że u Ciebie wyświetlacze 7seg psują wszystko. Może też coś wywaliłeś z odbiornika z mojego kody co było dość istotne. Kody które są w pierwszym poście pracują u mnie i to działa. Nie widzę powodu dla którego u kogoś innego by nie działały.

  • #95 09 Wrz 2014 00:42
    MarekS6
    Poziom 14  

    właśnie programuje to co pisałeś i zaraz będę sprawdzać. Wgrałem jednak część odbiornika do już poskładanej przeze mnie elektroniki odbiornika termometru (oczywiście zmieniając wyprowadzenia LCD w programie) i po włączeniu mam widoczne dwa 0 które od jakichś zakłóceń chyba co jakiś czas zmieniają się na jakieś liczby i znów zerują.

    Co do nadajnika, okroiłem kod nadajnika tak by zostawało samo nadawanie jak pisałeś i efekty były w dzisiejszym wcześniejszym poście...

    Dodano po 13 [minuty]:

    działa, to co mówiłeś działa poprawnie. Zwiększa si wartość temp'ów o 10

    Dodano po 40 [minuty]:

    coś mi ruszyło z tą transmisją - tą lepszą której ty używaż, z dodatkową daną check. Będę jeszcze grzebać i napiszę nabierząco. Jesdno jest pewne - odbiornik mam dobry bo odbiera i pokazuje już mi temperatury, ale tylko z nadajnika poskładanego na płycie testowej z atmega8 i tym przyciskiem. Po prostu naciskając ten klawisz i zwiększając te dane temp, zwiększam wskazania temperatury na odbiorniku.

    W tym momencie muszę dokładnie przeanalizować nadajnik

    Dodano po 1 [godziny] 28 [minuty]:

    zaprogramowałem mój nadajnik Twoim kodem, i wszystko działa. Teraz po prostu będę musiał już tak działający kod przerobić na bieżąco sprawdzając :-)

  • #96 09 Wrz 2014 16:08
    MarekS6
    Poziom 14  

    Poniżej przedstawiam działający już kod nadajnika. Jest to kod pod moją wersję z wyświetlaczami LED które są multiplexowane. I tu jest jeszcze jeden drobny problem.

    Co do WAIT'ów, doświadczalnie ustawiłem w instrukcji "Send" opóźnienie na 6ms. Z kolei te 50ms do wyłączenia nadajnika jest nie potrzebne. Termometr nadaje normalnie. Te gdzie jest 6ms jest wymagane gdyż jak go nie ma nadajnik chyba się nie zdąży się włączyć i do odbiornika nic nie dochodzi (ale dioda w nadajniku miga sygnalizując nadawanie).

    Te opóźnienie powoduje, że na czas nadawania wyświetlacze na tę chwilę gasną. Kombinuje jeszcze jak przerobić program by pozbyć się tego WAITa. W najgorszym wypadku tak zostawię gdyż termometr i tak będzie w kotłowni gdzie nie patrzy się na niego cały czas, jednak nie podoba mi się to, a staram się zawsze wszystko robić by miało ręce i nogi...


    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Dodano po 1 [godziny] 31 [minuty]:

    Chyba nic nie wykombinuje, bo jak się okazało te przygaśnięcie wyświetlacza w trakcie nadawania, nie jest z powodu tego opóźnienia. Winą jest same wysyłanie do UARTA. Gdy przerobiłem program by same wysyłanie odbywało się 20ms po włączeniu nadajnika (rozbiłem podprogram Send na dwa i wywoływałem poprzez flagi ustawiane z timera w programie głównym) to mignięcie nadal występowało.

    Domyślam się że to już pewnie wyższa szkoła jazdy by to wyeliminować więc chyba się poddaję.

  • #97 09 Wrz 2014 20:19
    wojlej
    Poziom 17  

    Cieszę się, że w końcu się udało. W takim razie gdzie była wina że nie działało od razu?

    Rozwiązanie Twojego problemu z przygasaniem wyświetlaczy to zastosowanie mikrokontrolera który ma zaimplementowane DMA, np. STM32. Wtedy mechanizm DMA zajmuje się wysyłaniem danych a rdzeń czym innym. W ATmedze nie sądze aby się dało jakoś pozbyć się tego migotania. Czekam na publikacje termometru na łamach forum :)

  • #98 09 Wrz 2014 20:26
    MarekS6
    Poziom 14  

    jeszcze nie tak szybko z tą publikacją gdyż teraz mam drobny problem z odbiornikiem. Niby działa ale po pierwsze ta adaptacyjna zmiana podświetlenia powinna być płynna? U mnie praktycznie albo świeci na maxa albo lekko, tzn są tylko dwa stopnie świecenia + wyłączony. To jeszcze nie tak źle, bo gorszy jest alarm. Próbuję rozwikłać jak działa to w programie który napisałeś bo u mnie jak ma zacząć piszczeć i sygnalizować zbyt wysoką temperaturę to procesor się zaczyna w kółko resetować.

    Na chwilę obecną mój okrojony kod od Ciebie wygląda następująco:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Dodano po 45 [sekundy]:

    temperaturę oczywiście odbiera i pokazuje poprawnie

    Dodano po 2 [minuty]:

    a wina leżała chyba w tym co pisałeś. Za długo czekałem chyba i moduł nadawczy przechodził w stan uśpienia. Nadawanie ruszyło gdy zrobiłem to od razu po tych 6ms, a nie jak miałem wcześniej po sekundzie od włączenia

  • #99 09 Wrz 2014 20:38
    wojlej
    Poziom 17  

    Regulacja podświetlenia powinna zmieniać się w miarę płynnie co jakiś czas. To zależy też od umieszczenia fotorezystora, bo jeśli pada na niego światło od LCD to będzie szaleć. Alarm z tego co pamiętam to trzeba wyłączyć przyciskiem jeśli chodzi o górny próg.

  • #100 09 Wrz 2014 21:56
    MarekS6
    Poziom 14  

    co do regulacji podświetlenia to już wiem czemu może nie działać poprawnie. Linia AVCC mikrokontrolera powinna być podłączona przez dławik 10mH do VCC. Z pośpiechu i braku dławika chciałem to zostawić na później i zapomniałem tak więc brakuje tam tego elementu i linia AVCC wisi niejako w powietrzu, gdyż jest jedynie podłączona do kondensatora 100nF.
    Tym się jednak nie przejmuję.

    Zastanawia mnie jednak dziwne działanie alarmu. Gdy mam górny próg ustawiony na 30 a dolny na 29, a zmierzona temperatura to 23 stopnie - nic się nie dzieje a powinna się chyba zaświecić dioda led sygnalizująca za niską temperaturę.

    Z kolei gdy ustawię górny próg na 15 stopni a dolny na 10 to przy zmierzonej temperaturze 23 stopnie udało mi się już uzyskać alarm lecz po jego wyłączeniu nie wiem co zrobić by znów go uruchomić. Jak to jest u Ciebie? Gdy termometr zmierzy zbyt wysoką temperaturę i zaczyna wyć, to po jego wyłączeniu co robisz by po następnym przekroczeniu znów wył? Trzeba też pamiętać że gdyby ten się od razu włączył to po następnym pomiarze za 30 sekund znów zacznie wyć bo przecież tak szybko temperatura pieca nie spadnie...

  • Computer Controls
  • #101 10 Wrz 2014 06:26
    wojlej
    Poziom 17  

    Linia AVCC wisi w powietrzu? Przecież powinna być podłączona do zasilania. To jest zasilanie przetwornika A/C i PORT.A.

    Z górnym progiem jest tak, że po wyłączeniu alarmu, temperatura musi spaść poniżej górnego progu i potem znów go przekroczyć aby go uruchomić. Moim zamysłem było to, że termometr inforuje Cię o przekroceniu temperatury i Ty robisz wszystko aby temperatura spadła z pieca, więc monitorujesz już ją sam bo wiesz że przekroczono limit. Dopiero jak temperatura spadnie, czyli Ty odetchniesz z ulgą i uśpisz swoją czujność, Alarm znowu jest aktywny.

    Z dolną nie pamiętam jak jest, ale być może właśnie tak, że na początku temperatura musi być pomiędzy dolnym a górnym progiem. Trzeba przeanalizować kod.

  • #102 10 Wrz 2014 10:20
    MarekS6
    Poziom 14  

    co do liniu AVCC, oczywiście wiem o co biega, ale tym się zajmę w weekend jak będę w Polsce, bo tu nie mam elementów elektronicznych.

    Co do alarmów, okazało się że miałem uszkodzoną diodę LED. wymieniłem i już działa. Jeszcze muszę tylko rozgryźć taki problem że zawsze gdy wchodzę w tryb programowania w menu, to po wyjściu wyje mi alarm zbyt wysokiej temperatury nawet gdy była przed i jest nadal w normie...

  • #104 10 Wrz 2014 23:37
    comer3
    Poziom 27  

    Pytanie, do autora tematu - czy odbiornik odbierze i wyświetli poprawną temperaturę jeśli nadajnik (czujnik) będzie się znajdował w 0 st. C? Czy w takim przypadku suma Crc będzie się zgadzać w nadajniku i odbiorniku? :-)

  • #105 10 Wrz 2014 23:50
    MarekS6
    Poziom 14  

    Ze swojej strony mogę powiedzieć że nie wiem jak oryginał ale przerobiony przeze mnie odbiornik pod atmega8 bez rejestracji danych testowałem w zamrażarce i temperaturę - 20 stopni normalnie odbiornik pokazywał jednak sam nadajnik juz oczywiście nie gdyż nie jest to możliwe fizycznie

  • #106 11 Wrz 2014 18:01
    comer3
    Poziom 27  

    :arrow: MarekS6

    Wiem, że działa, bo sam też go przerobiłem ;-) tylko nie poskładałem jeszcze fizycznie układu, a symuluje całość w Proteusie (bez modułów radiowych, tylko bezpośrednie połączenie procesorów). Nadajnik też mam na m8 i okrojony kod od kolegi :arrow: wojlej .
    W kodzie nadajnika jest tylko pomiar temperatury z czujnika DS18b20, wyświetlenie go na wyświetlaczu i wysłanie. Odbiornik również na razie oprogramowałem tylko do odbioru i wyświetlania temperatury.. I w zasadzie działa to jak mówisz - i dla wartości dodatnich i ujemnych. Wartość zmierzona i wysłana jest poprawnie odbierana i wyświetlana. Problemem jest tylko pomiar zerowej temperatury. Bo o ile nadajnik zmierzy taką i wyśle (widać po terminalu że wysyła) to odbiornik ignoruje ten pomiar. Wartość "synch" do odbiornika dochodzi poprawna (170) - nie analizowałem tego jeszcze bit po bicie, ale podejrzewam, że coś suma Crc się nie zgadza z powodu tych zer i dlatego Odbiornik nie wyświetla zmierzonej temperatury. Widać to na obrazku poniżej - z pomiaru wychodzi 0°C, a odbiornik trzyma wartość z poprzedniego pomiaru mimo wysyłania danych przez nadajnik. Wartość odebranej przez odbiornik temperatury zmienia się dopiero wtedy jeśli jest ona różna od zera (na plus, lub minus). Na razie nie mam pomysłu jak to obejść w tej ramce danych (bez robienia innej) ,która już działa od kolegi wojlej...

    Możliwe, że u Ciebie w fizycznym układzie może być podobnie (ale nie musi, bo to tylko symulacja) jeśli nie zmieniałeś ramki danych wysyłanych przez nadajnik i algorytmu odczytującego i sprawdzającego przychodzące dane w odbiorniku (ja nie zmieniałem). Możesz to sprawdzić jak masz jak, w szklance z lodem i zimną wodą - temperatura zmierzona wtedy powinna być koło zera.. ;-)

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

  • #107 11 Wrz 2014 18:29
    MarekS6
    Poziom 14  

    A no to w tej sytuacji narazie nic nie powiem. Jak będę miał chwile to spróbuję uzyskac równe 0 stopni, ale na pewno będzie ciężko tak trafić...

    Tak na marginesie - ciekawy ten symulator. Pierwsze słyszę o nim. Są gdzieś jakieś opisy?

  • #108 11 Wrz 2014 19:09
    comer3
    Poziom 27  

    Nie wiem - jestem samoukiem jeśli chodzi o ISIS Proteus ;-) Demo i opis programu można ściągnąć ze strony producenta - http://www.labcenter.com/download/prodemo_download.cfm .
    Trochę informacji też można znaleźć tutaj na forum.

    P.S.
    Tak jak przypuszczałem dla temperatury 0°C nie zgadza się suma kontrolna Crc w odbiorniku, ale tylko przy wykonywaniu sumy symetrycznej Xor dla końcowego Crc:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Po zrezygnowaniu ze sprawdzania tego warunku w nadajniku, jak i odbiorniku, wszystko działa poprawnie w pełnym zakresie temperatury :-)

    Suma kontrolna w odbiorniku nadal jest sprawdzana, ale tylko dla warunku:
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    i mam nadzieję, że jakoś znacząco nie wpłynie to w fizycznym układzie na błędy transmisji i odbioru.

  • #109 15 Wrz 2014 18:59
    wojlej
    Poziom 17  

    Możliwe, że dla wartości 0 suma kontrolna będzie niepoprawna, nie wiem. Ale po co sobie utrudniać, dajcie warunek w nadajniku że jeśli temperatura jest równa 0 stopni to wyślijcie np 456 stopni albo jakąś inną wartość. I w odbiorniku drugi warunek, że jeśli temperatura 456 stopni to znaczy że 0. Wszystko będzie załatwione :)

  • #110 16 Wrz 2014 18:55
    comer3
    Poziom 27  

    Można by było i tak, jak piszesz, ale dla temperatury zmierzonej równej 17 st, dzieje się to samo co z zerem, czyli też nie działa (bo Synch=170).. ;-) Łatwiej jest zmodyfikować ramkę danych wysyłanych, żeby wszystko działało tak jak powinno w pełnym zakresie temperatury..

  • #111 16 Sty 2015 16:52
    cimala
    Poziom 10  

    Witam.
    Termometr działa jednak zawyża pomiar o ok 5 stopni.

  • #112 16 Sty 2015 16:56
    wojlej
    Poziom 17  

    To musi być gdzieś błąd u Ciebie. Może coś z czujnikiem? Bo u mnie jest wszystko OK. Sprawdź przed przesłaniem w nadajniku jaka jest temperatura.

  • #113 17 Sty 2015 11:16
    cimala
    Poziom 10  

    Sprawdze na innych czujnikach.Generalnie urządzenie -super

  • #114 25 Sty 2015 13:34
    modelloo
    Poziom 12  

    Super projekt, jestem w trakcie budowy termometru, pytanie do autora, jak mają być ustawione fuse bits dla atmegi 32 i attiny 2313, może jakiś screern ?

  • #115 25 Sty 2015 14:48
    Freddy
    Poziom 43  

    modelloo napisał:
    Super projekt, jestem w trakcie budowy termometru, pytanie do autora, jak mają być ustawione fuse bits dla atmegi 32 i attiny 2313, może jakiś sceern ?
    Może tak przeczytaj temat, a nie tylko pierwszy i ostatni post. Wszystko jest wyraźnie powiedziane.

  • #116 25 Mar 2015 09:58
    porter_22
    Poziom 2  

    Witam
    Kolego a nie myślałeś żeby przerobić projekt na wyświetlacz graficzny ?
    Fajnie by to wyglądało
    No i ja jeszcze bym dodał datą i czas z DS1307 ale to kwestia gustu

  • #117 11 Kwi 2015 11:45
    pawel0414
    Poziom 20  

    Witam. Wie ktoś może czego może dotyczyć problem odnośnie tego , że cały czas w odbiorniku jest napis Czekaj na dane i na tym w zasadzie jego działanie się kończy. Jak mogę sprawdzić czy moduły są sprawne ? Połączenie kablem wyjść DATA w odbiorniku i nadajniku nie zmieniło niczego.

  • #118 11 Kwi 2015 11:51
    modelloo
    Poziom 12  

    pawel0414 napisał:
    Witam. Wie ktoś może czego może dotyczyć problem odnośnie tego , że cały czas w odbiorniku jest napis Czekaj na dane i na tym w zasadzie jego działanie się kończy. Jak mogę sprawdzić czy moduły są sprawne ? Połączenie kablem wyjść DATA w odbiorniku i nadajniku nie zmieniło niczego.

    Podłączyć trzeba tez masę, czy na nadajniku mruga dioda od nadawania co 30 sekund ?

  • #119 11 Kwi 2015 12:03
    pawel0414
    Poziom 20  

    Mruga tylko raz po kilkunastu sekundach a potem juz nie czyli nie nadaje ?
    Sprawdziłem dokładniej i po każdym resecie po ok 38 sekundach mrugnie ale potem już nie mruga, tak jakby się zawieszał program.
    Tak wygląda teraz program w odbiorniku ;

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Połączyłem masami i datami nadajnik z odbiornikiem ale dalej jest tylko info czekaj na dane ...

  • #120 20 Lis 2016 17:34
    DRAZEK87
    Poziom 12  

    Heyka :)

    Postanowiłem odświeżyć temat i zabrałem się do wykonania powyższego projektu jakim obdarował nas "wojlej" za co, na wstępie mu WIELKIE DZIĘKI...

    Pomysł wykonania własnego bezprzewodowego termometru urodził się z potrzeby kontroli temperatury pieca na odległość, a tym samym zmierzenie się z programowaniem układów avr w języku C. Czyli zrozumienie zasady działania samego w sobie urządzenia z możliwością jego przyszłościowej rozbudowy.

    Ponieważ jestem początkujący w programowaniu, ale zafascynowany mikrokontrolerami, a już kompletnie zielony z Bascoma to postanowiłem na start wykorzystać oryginalny wsad autora tematu w celu obserwacji poprawnego działania urządzenia. Do testów już na wstępie zmodyfikowałem płytkę drukowana nadajnika i przymierzam się do odbiornika tak aby przyjąć swoje szkicowe założenia. A dopiero po końcowych eksperymentach wykonać ostateczny projekt w technologi smd, co zminimalizuje wymiary urządzenia a jednocześnie oszczędzi czas na mozolne odwierty w laminacie czego osobiście nie lubię robić.

    Co do nadajnika w projekcje autora zabrakło mi w sumie dwóch ważnych rzeczy. Prostego wyświetlacza który by mi pokazywał obecną temperaturę na piecu wówczas była by możliwość porównania z temperaturą na sterowniku oraz złącza programowania aby nie wyjmować samego układu i narażać go na ewentualne uszkodzenie. Wiem w ostatecznej wersji można by było pominąć ISP ale po co jak daje nam to szybka możliwość przyszłościowych zmian, a tym bardziej teraz gdy będę go miał programować w języku C. Stąd też na mojej prototypowej płytce nadajnika pojawił się już brakujące moduły. Do wyświetlania temperatury użyłem 7 segmentowy wyświetlacz z trzema cyframi o wspólnej anodzie. Akurat taki miałem pod ręką więc go wykorzystam; jest mały, fajnie wygląda i wystarczająco czytelny na odległość. Za moduł nadawczy posłuży mi XY-FST FS1000A który jest troszkę inny od Tx433N. Zadbałem w druku płytki o ewentualną możliwość zmiany gdyby niepoprawnie funkcjonował w eterze mi moduł jaki mam. Procesor jaki wlutowałem to ATtiny2313 nowszy od poprzednika, taki miałem akurat zbędny. Reszta elementów pozostała bez zmian, plus wiadomo te które muszą być do obsługi wyświetlacza, ale to już zobaczycie sobie na schemacie. Dodatkowo dodałem diodę zabezpieczająca na wejściu zasilania tak na wszelki wypadek. Kwarc 8MHz i wiadomo highfuse na DF oraz lowfuse FD. Po zaprogramowaniu co 30s dioda DATA mrugnie co świadczy raczej o poprawnej pracy nadajnika, ale to wkrótce zweryfikuję. A o to kilka zdjęć z wykonania nadajnika. Prace nad odbiornikiem trwają. Wszelka pomoc w kodzie źródłowym w języku C mile widziana:)

    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 Bezprzewodowy termometr do pieca C.O. BASCOM 433MHz z zapisem danych na kartę SD