Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Kategoria: Kamery IP / Alarmy / Automatyka Bram
Montersi
Kategoria: Akumulatorki / Baterie / Ładowarki

Bardzo prosty termometr na ATMedze

ghost666 27 Sty 2017 20:16
  • Bardzo prosty termometr na ATMedze
    Poniższy opis prezentuje jak, krok po kroku, skonstruować prosty termometr oparty na mikrokontrolerze. Układ ten mierzy i wyświetla temperaturę powietrza. Nie jest to może najdokładniejszy termometr świata, ale jest dobrym projektem który zrealizować można w domu ucząc się jednocześnie np. programowania.


    Krok 1: Potrzebne elementy

    Do skonstruowania układu potrzebne będą:

    1 x Mikrokontroler ATMega8
    2 x wyświetlacz siedmiosegmentoiwy LED
    1 x opornik 1800 Ω
    7 x opornik 160 Ω
    1 x termometr KTY-13-5

    Krok 2: Układ

    Bardzo prosty termometr na ATMedze


    Autor starał się, aby układ był możliwie prosty, ale też nie wymagał napisania skomplikowanego programu. Schemat termometra widać na rysunku powyżej. Projekt płytki drukowanej w pliku Eagla znaleźć można tutaj .

    Krok 3: Program

    Jeśli używamy innego termometru w układzie lub innych oporników musimy zmienić ich wartości zapisane w programie i wykorzystywane do obliczania temperatury.

    Poniżej znajduje się kod programu - temp_sensor.c:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Krok 4: Wykorzystanie

    Bardzo prosty termometr na ATMedze


    Po skompilowaniu powyższego programu należy wgrać go do pamięci mikrokontrolera i już można z niego korzystać. Jakie zastosowanie może mieć tego rodzaju termometr? Można z jego pomocą mierzyć temperaturę np. wewnątrz obudowy komputera PC, wystarczy wstawić w obudowie okienko z pleksi, aby widoczne były liczny wyświetlane przez układ. Można mierzyć nim także temperaturę w pokoju, szklarni itp.

    Źródło: http://www.instructables.com/id/DIY-Digital-Thermometer/?ALLSTEPS

  • #2 28 Sty 2017 10:46
    anonimg3
    Poziom 8  

    Taki projekt ląduje na głównej? Elektrodo quo vadis ? Przecież tutaj powinien pojawić się tytuł jak NIE należy robić prostego termometru. Brak żadnego filtrowania napięcia, brak rezystora podciągającego pin reset, brak dławika mimo, że jest wykorzystywany przetwornik ADC. Jednym słowem masakra. Jeszcze takie coś pojawia się na facebooku z waszego profilu.

  • #3 28 Sty 2017 12:52
    Aroni525
    Poziom 6  

    No przyznam rację przedmówcy. Termometr niby prosty, ale ten projekt aż razi. Naprawdę dorzucenie tutaj paru kondensatorów, rezystorów, dławika, może jakiegoś źródła prądowego dla czujnika by go specjalnie nie skomplikowało, a projekt byłby bardziej profesjonalny.

    No może i będzie to działać, choć może okazać się, że nie u każdego.

  • #4 28 Sty 2017 17:41
    R-MIK
    Poziom 35  

    goreckidiy napisał:
    (...)płytkę mającą same otwory - można przerabiać projekt i dodawać nowe połączenia.

    To sprzętowa FPG'a :-)
    Nie wiem czemu bardzo dużo projektów powstaje na Atmega8 zamiast na Atmega88. Jest dużo lepszy i przeważnie tańszy, o debugowaniu nie wspomnę.

  • #5 28 Sty 2017 18:23
    tronics
    Poziom 34  

    R-MIK napisał:
    goreckidiy napisał:
    (...)płytkę mającą same otwory - można przerabiać projekt i dodawać nowe połączenia.

    To sprzętowa FPG'a :-)
    Nie wiem czemu bardzo dużo projektów powstaje na Atmega8 zamiast na Atmega88. Jest dużo lepszy i przeważnie tańszy, o debugowaniu nie wspomnę.

    Debugowanie debugwire to nie jest ani proste, ani tanie. Nie wiem gdzie kolega widział mega88 taniej niż mega8 - te drugie chińczycy albo dobrze podrabiają, albo sprzedają jakieś "defective" natomiast kupowałem dawno temu po 3PLN z marżami (gdy mega88 tqfp była 2x drożej) i wszystkie działały ok. Jedna zaleta 88mki - wbudowany termometr :) tylko trzeba się przełączyć na wewnętrzne źródło iirc. Druga - 4MHz więcej max taktowanie. Inna sprawa, że w tej aplikacji MCU będzie się jednak grzał więc wbudowany termometr na niewiele się przyda.
    Ogółem przedstawiona przez kolegów lista zarzutów długa, ale średnio poważna przy małym prostym projekciku.

  • #6 28 Sty 2017 20:09
    R-MIK
    Poziom 35  

    tronics napisał:

    Debugowanie debugwire to nie jest ani proste, ani tanie.

    300zł to nie majątek. Czy proste, czy krzywe, mnie to nie interesuje, kupuje sprzęt i używam.

    tronics napisał:

    Nie wiem gdzie kolega widział mega88 taniej niż mega8

    Choćby w TME.

  • #7 28 Sty 2017 23:13
    mkpl
    Poziom 37  

    Schemat uproszczony do granic ale to się da naprawić programowo!.


    Pin reset ma wewnętrzny pullup ~40k tak więc do środowiska bez większych zakłóceń może pracować. Tak samo jest w przypadku wykorzystania resetu jako pin IO.

    Podciągnięcie jest istotne w środowisku gdzie panują duże zakłócenia.

    Zasilanie uP powinno być odfiltrowane by zniwelować indukcyjności połączeń. Głównie ze względu na spadki napięć orac emisję zakłóceń.

    Jeśli zasilanie przetwornika nie jest krytyczne gdy ref też jest dołączony do Avcc i jeśli sygnał pomiarowy też jest odniesiony do tego napięcia. Upadek napięcia będzie tak samo oddziaływał na zasilanie przetwornika, ref i sygnał mierzony a więc się skompensuje (kto jest przeciw niech wyprowadzi wzory i przeliczy).

    Filtrowanie zakłóceń samego przetwornika da się wykonać jako średnią kroczącą np z 256 próbek.

    Sam wykonałem podobny układ na attiny2313 i działa bezproblemowo już któryś rok z rzędu :).

  • #8 29 Sty 2017 00:24
    R-MIK
    Poziom 35  

    mkpl napisał:

    Sam wykonałem podobny układ na attiny2313 i działa bezproblemowo już któryś rok z rzędu :).

    Zrób 10.000 szt i będziesz miał 100 reklamacji, użytkownicy będą reklamować, taka darmowa reklama. To, że działa na stole u autora, nie znaczy , że zadział na innym stole, a skąpienie wzrostu ceny o 1% na elementach to, delikatnie mówiąc, przesada.
    Kolega daje kondensatory przy oscylatorze tak jak w nocie napisali czy nie?

  • #9 29 Sty 2017 08:45
    domin122
    Poziom 15  

    Żeby się coś nauczyć programowania przy takim przykładzie to niemożliwe. Żeby chociaż były komentarze w programie i to po Polsku. Skoro umiał przetłumaczyć tekst to i komentarze w programie też mógł.

  • #10 29 Sty 2017 09:02
    R-MIK
    Poziom 35  

    Tłumaczenie to jest w stylu Google Translator więc wyobrażam sobie tłumaczenie programu. Aby to zrobić trzeba program rozumieć, a to nie klika zdań prozy.
    Co do konstrukcji, to wspólna anoda/katoda sterowana z wyprowadzeń mikrokontrolera? To albo wyświetlacz pobiera bardzo mały prąd (rezystory ograniczające prąd segmentu sugerują coś innego), albo wydajność prądowa portu jest na poziomie 200mA (producent AVR pisze coś innego). To, że działa i nie dymi wynika z kilku faktów, ale jeśli jakiś "młody geniusz" zastosuje to rozwiązanie z większą liczbą wyświetlaczy czy innym jego typem to sie bardzo zdziwi.
    No i multipleksowanie i brak odsprzęgania! Ciekawe czy przy włączonym BOD to działa.

  • #11 29 Sty 2017 10:52
    drobok
    Poziom 17  

    Totalna głupota, rozumiem gdyby rozmiar miał znaczenie - czyt. attiny13 smd, 2wyświetlacze, czujnik i pcb wielkości wyświetlaczy - olewamy dokładność kosztem rozmiaru. Ale, bierzesz przerośniętego proca po to by większość pinów zostawiać wolnych. Ani to dokładne, ani kompaktowe, ani nawet niezawodne - a redaktor "tłumaczy" jakże skomplikowany projekt którego alternatywy są lepsze tutaj :P

    PS. kto tu widzi skomplikowany kod ?

  • #13 29 Sty 2017 11:23
    mkpl
    Poziom 37  

    R-MIK napisał:
    mkpl napisał:

    Sam wykonałem podobny układ na attiny2313 i działa bezproblemowo już któryś rok z rzędu :).

    Zrób 10.000 szt i będziesz miał 100 reklamacji, użytkownicy będą reklamować, taka darmowa reklama. To, że działa na stole u autora, nie znaczy , że zadział na innym stole, a skąpienie wzrostu ceny o 1% na elementach to, delikatnie mówiąc, przesada.
    Kolega daje kondensatory przy oscylatorze tak jak w nocie napisali czy nie?


    Trochę tego zrobiłem. Rezystor od resetu oczywiście też mam. Czujnik też nieco inny bo DS18B20 i na około 50 powstałych sztuk działają wszystkie. Układ zasilany z baterii 9V wystarcza spokojnie na pół roku (zima zabija baterie). Sam układ aktywowany jednym przyciskiem robi pomiar, wyświetla przez 10s i odcina się całkowicie od baterii.

    Ja po prostu ratowałem konstrukcję w obecnym układzie. Pomijam już kwestię, że główne piny zasilające wyświetlacz powinny być obciążone max 25mA więc 3.5mA na segment.

  • #14 29 Sty 2017 11:39
    DziadzioMiecio
    Poziom 27  

    Bardzo dobrze że ten projekt tu się znalazł. Można sporo się nauczyć, dzięki komentarzom. Szkoda tylko że wylana krytyka nie zaowocowała schematami poprawek układu z opisem, dlaczego tak? Co do kodu się nie wypowiem.

  • #15 29 Sty 2017 11:51
    R-MIK
    Poziom 35  

    DziadzioMiecio napisał:
    Bardzo dobrze że ten projekt tu się znalazł. Można sporo się nauczyć ,dzięki komentarzom . Szkoda tylko że wylana krytyka nie zaowocowała schematami poprawek układu z opisem, dlaczego tak ? Co do kodu się nie wypowiem.

    Średniointeligentny na podstawie komentarzy wniesie stosowne poprawki. Jeśli chodzi o kondensatory przy kwarcu, o których wspominałem (nie dotyczy tego projektu) to w 90% nie trzeba ich stosować (zapobiegają oscylacji kwarcu poza częstotliwością podstawową, na harmonicznych). Taki układ najczęściej działa w domu, na stole, wykonany przez inne osoby niekoniecznie.
    Filtrowanie zasilania - sprawa oczywista, skutki jak powyżej.
    Przekroczenie dopuszczalnego prądu, w domu działa u kolegi nie (czary jakieś czy co?).

  • #16 29 Sty 2017 11:56
    drobok
    Poziom 17  

    mkpl napisał:
    ...

    Twój czujnik jest cyfrowy - więc nie masz adc i poprawne zasilanie, czy porządne napięcie odniesienia cię nie interesuje. Wyświetlacz działa chwilę - więc i nie przeciążasz zanadto tranzystorów (chociaż nie neguję że da się te wyświetlacze podłączyć w ten sposób na stałe, tyle że nie każde). Dodając podciąganie pinu rst twój układ jakoś dziwnym trafem staje się zgodny z zasadami*. No może poza kondensatorem odsprzęgajacym (który pewnie też masz, albo siejesz zakłócenia).

  • #17 29 Sty 2017 12:01
    DziadzioMiecio
    Poziom 27  

    Ja się z tą krytyką zgadzam . Wychodzę z założenia że to nie polityka (wystarczy krytykować bez podania rozwiązań) i jakieś schematy co zrobić żeby to poprawić. Ja sobie poradzę ale wielu początkujących jak słusznie zauważyłeś nie .

  • #18 29 Sty 2017 19:12
    domin122
    Poziom 15  

    drobok napisał:
    Totalna głupota, rozumiem gdyby rozmiar miał znaczenie - czyt. attiny13 smd, 2wyświetlacze, czujnik i pcb wielkości wyświetlaczy - olewamy dokładność kosztem rozmiaru. Ale, bierzesz przerośniętego proca po to by większość pinów zostawiać wolnych. Ani to dokładne, ani kompaktowe, ani nawet niezawodne - a redaktor "tłumaczy" jakże skomplikowany projekt którego alternatywy są lepsze tutaj :P

    PS. kto tu widzi skomplikowany kod ?


    Jest napisane że kod jest dobrym do nauki, a skoro tak to powinien być dobrze opisany. Dla Ciebie może nie jest skomplikowany, ale dla tych co umieją zapalać tylko diody led to na pewno jest skomplikowany. Opis bibliotek też by się przydał, albo przynajmniej jednej.
    Co to jest "//Prikazi drgo stevilko" albo to "//prepreci premocno gorjenje druge"?

  • #19 29 Sty 2017 20:55
    mariano79
    Poziom 10  

    Liczy sie checi zrobienia czegoś samemu, popieram kolego ghost666. Pozdrawiam

  • #20 29 Sty 2017 21:03
    drobok
    Poziom 17  

    domin122 napisał:
    Co to jest "//Prikazi drgo stevilko" albo to "//prepreci premocno gorjenje druge"?

    Ogólnie rzecz ujmując kod jest napisany źle - na zdjęciu widać że gościowi prześwitują te liczby (coś w stylu smurzenia w lcd).

    Mam tablicę - w niej kody dla cyfr, i mam numer w zmiennej. Gdy używam zmiennej jako indeksu tablicy to pod tym indeksem mam kod dla tego numeru - taka prosta konwersja bin2kody_segmentów.
    które_segmenty_zapalić=tablica_kodów[cyfra_którą chcę_wyświetlić]

    Gość nie kasuje poprzedniego stanu(liczby) przy zmienie segmentu, tylko robi to na końcu pętli - więc jeden wyświetlacz mu będzie mu prześwitywał na drugi, a drugi na pierwszy nie ;)

    Podpiął sobie pod portb (piny 1, i 2) pin wspólny wyświetlacza i poprzez instrukcję
    PORTB = 0x04;//albo 02 wybiera odpowiedni wyświetlacz - to można zaakceptować, o ile na innych portach nic nie ma.

    Następna linijka jest jeszcze lepsza. Są 2 rodzaje wyświetlaczy, wspólna katoda i wspólna anoda. Jeden aktywujesz wyświetlacz vcc i świecące segmenty 0, a w drugim aktywujesz wyświetlacz zerem i świecące segmenty vcc. No i teraz gość wziął sobie kody (stany portu dla liczb) z jednego a użył drugiego - dlatego to odejmowanie - taka negacja w stylu nie chce mi się poszukać / napisać własnych kodów.

  • #21 30 Sty 2017 06:29
    rs6000
    Poziom 16  

    mariano79 napisał:
    Liczy sie checi zrobienia czegoś samemu, popieram kolego ghost666. Pozdrawiam

    Przecież to jest przekopiowany opis z instructables, kolega tego nie zrobił.

    Pozdr

  • #22 30 Sty 2017 17:54
    mkpl
    Poziom 37  

    drobok napisał:
    mkpl napisał:
    ...

    Twój czujnik jest cyfrowy - więc nie masz adc i poprawne zasilanie, czy porządne napięcie odniesienia cię nie interesuje. Wyświetlacz działa chwilę - więc i nie przeciążasz zanadto tranzystorów (chociaż nie neguję że da się te wyświetlacze podłączyć w ten sposób na stałe, tyle że nie każde). Dodając podciąganie pinu rst twój układ jakoś dziwnym trafem staje się zgodny z zasadami*. No może poza kondensatorem odsprzęgajacym (który pewnie też masz, albo siejesz zakłócenia).


    Co do resetu to zobacz sobie jak jest fizycznie zbudowany w procesorze. Z tego co pamiętam to w trybie portu jest tam wystawiany tranzystorem stan niski a stan wysoki powstaje przez podciągnięcie wewnętrznym rezystorem, który jest tym samym rezystorem co dla funkcji RESET. Można tam oczywiście dołączyć też kondensator do masy i zrobić opóźnienie startu.


    Kondensator na zasilaniu to obligatoryjnie trzeba zastosować i o tym też pisałem.


    Sam przetwornik ADC też będzie poprawnie pracować. Wraz z zmianami zasilania zmienia się też Vref tak wiec w w/w układzie przetwornik tak w zasadzie bada dzielnik. Gdyby było mierzone zewnętrzne napięcie to wtedy jest to błąd kardynalny.

    Pomiaru za pomocą NTC nie stosuję bo termistory są zwyczajnie ciężko dostępne. Mnogość typów i charakterystyk mnie zwyczajnie odrzuca (trzeba kupować dokładnie jeden wybrany i przebadany typ). Do celów masowych oczywiście bym je stosował ale dla celów prywatnych mogę się szarpnąć na DS18B20 i jest ok.