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

ATMEGA - Projekt nadajnika podczerwieni - wybór źródła zasilania

05 Maj 2015 13:39 2577 41
  • Poziom 9  
    Cześć

    Postanowiłem w celach czysto hobbystycznych zaprojektować oraz zrealizować termometr mierzący temperaturę zewnętrzną, przesyłający odczytany wynik do odbiornika, znajdującego się tuż za szybą, przy pomocy podczerwieni. Wybór podyktowany miał być prostotą takiego rozwiązania (zwłaszcza biorąc pod uwagę stronę programową), a jako iż odległość pomiędzy nadajnikiem a odbiornikiem ma być tylko troszkę większa niż grubość okna, wydało mi się to rozwiązaniem wystarczającym.

    Zasada działania nadajnika (bo na nim chce się skupić) nie jest szczególnie skomplikowana. Pomiar temperatury ma odbyć się przy pomocy czujnika 81 210, chciałbym wykorzystać np dzielnik napięcia, następnie uzyskane napięcie podać na wzmacniacz operacyjny (który zostałby poddany kompensacji), a następnie na wewnętrzny przetwornik ADC kontrolera (domyślnie Atmegi8/L). Wykorztałbym też wyjście DAC aby wysłać informację poprzez diodę IR. Oczywiście w celu zminimalizowania poboru mocy kontroler wysyłałby informację tylko co jakiś czas, po czym zapadałby w stan uśpienia.

    Na samym początku chciałbym zapytać, czy przyjęte przeze mnie założenia projektowe mają w ogóle "ręce i nogi" oraz czy istnieją może bardziej optymalne, a niewiele trudniejsze możliwości. Ponad to problemem jest dla mnie wybór źródła zasilania. Początkowo myślałem o baterii 9V, jednak jej niewielka wydajność prądowa oraz konieczność stabilizacji napięcia mnie odrzuciła.

    Poniżej przedstawiam roboczy schemat ideowy mojej koncepcji.
    ATMEGA - Projekt nadajnika podczerwieni - wybór źródła zasilania

    Pozdrawiam i dziękuje za każdą udzieloną pomoc. Czekam też na konstruktywną krytykę :)
  • AdexAdex
  • Moderator Projektowanie
    Atmega8L możesz spokojnie zasilać bezpośrednio z baterii 3V, do tego tryby głębokiego uśpienia i po kłopocie. Jeśli mnie pamięć nie myli, to uzyskałem w jednym projekcie 20uA. Programowy watchdog, licznik wybudzeń i masz urządzenie, które teoretycznie podziała kilka lat na jednej dobrej baterii.
  • Poziom 9  
    Wszystko się zgadza. Problemem będzie jednak duża niedokładność otrzymanego przeze mnie pomiaru. Chciałbym aby możliwy był pomiar temperatury w zakresie około od -30, do 30 stopni celciusza. Wartość rezystancji czujnika, według noty katalogowej wahałby się pomiędzy 624 a 1040 Omhami. Bez względu jaki rezystor zastosowałbym do dzielnika napięciowego zasilonego 3.3V razem z czujnikiem nie uzyskam na tyle dużych rozbierzności napięcia, aby dla rozdzielczości ADC w Atmedze uzyskać sensowny pomiar (zwłaszcza, że napięcie referencyjne ADC również wynosiłoby 3.3V). Nie wiem czy wyraziłem się jasno, jeżeli nie, to postaram się zrobić to jeszcze raz i poprzeć się wyliczeniami i screenami.

    Stąd też wymyśliłem wzmacniacz operacyjny, którym za pomocą potencjometru R8 mógłbym sobie odpowiednio wszystko wyregulować, aby zakres napięć dla temperatury najniższej (-30 stopni) jak i najwyżej (30 stopni) był jak największy. Niemniej wtedy i na potencjometr jak i przede wszystkim na zasilanie wzmacniacza muszę podać napięcie wyższe. Ponad to przy zastosowaniu baterii i tak niezbędne byłoby chyba zastosowanie stabilizatora, ze względu na zmienne napięcie baterii w zależności od stopnia rozładowania (a to wpłynęłoby na pomiar) ?
  • Pomocny post
    Moderator Mikrokontrolery Projektowanie
    1. czy jesteś pewien, że bateria ta będzie dobrze pracować w takich temperaturach ujemnych, jakie zakładasz?
    2. Czy jesteś świadomy strat jakie będziesz miał na tak skonstruowanym zasilaniu?

    Zastosuj DS18B20 i problem z głowy, a przy okazji zmienisz uC na mniejszy i tańszy.
  • Poziom 9  
    Faktycznie, przeglądając notę katalogową tego układu wychodziłoby na to, iż jest to chyba rozwiązanie najbardziej optymalne. Nie wiem czy w takim razie projekt nie staje się trywialny, mimo to i tak dla własnej satysfakcji postaram się go w najbliższym czasie wykonać. Dziękuje za pomoc
  • Poziom 9  
    Nie oczywiście żartuje, też jestem zdania że najprostrze rozwiązania są najlepsze. Zastanawiam się jednak nad zastosowaniem przetwornicy ze względu na jej duży koszt w stosunku do reszty wykorzystanych elementów. Czy nie lepiej byłoby zastosować baterie litowo jonową z jakiegoś starego niewielkiego telefonu, o napięciu ~3,6 V? Zanim taka bateria by się rozładowała, bądź jej napięcie zasilania spadłoby poniżej 3V przepłynęłoby napraaaawdę dużo wody w Wiśle, co byłoby chyba rozwiązaniem wystarczającym?
  • Moderator Mikrokontrolery Projektowanie
    Leeoonek napisał:
    Nie oczywiście żartuje, też jestem zdania że najprostrze rozwiązania są najlepsze. Zastanawiam się jednak nad zastosowaniem przetwornicy ze względu na jej duży koszt w stosunku do reszty wykorzystanych elementów. Czy nie lepiej byłoby zastosować baterie litowo jonową z jakiegoś starego niewielkiego telefonu, o napięciu ~3,6 V? Zanim taka bateria by się rozładowała, bądź jej napięcie zasilania spadłoby poniżej 3V przepłynęłoby napraaaawdę dużo wody w Wiśle, co byłoby chyba rozwiązaniem wystarczającym?

    I ten Twój post podoba mi się najbardziej :)

    Rozpocząć jednak powinieneś, od temperatury pracy by mieć pewność, że przy -30°C akumulator będzie pracował prawidłowo i nie zostanie uszkodzony. Tutaj 3 artykuły w temacie baterii: http://mikrokontrolery.blogspot.com/2011/01/bateria-zasila-mikrokontroler-czesc-1.html
  • AdexAdex
  • Poziom 9  
    Wziąłem sobie wasze rady do serca, a co do wyboru mniejszego mikrokontolera zastanawiam się nad Attiny13. Wydaje mi się że z pamięcią etc nie powinno być problemu, niemniej wyczytałem, iż wewnętrzny oscylator w tym układzie może być na tyle niedokładny, że nie pozwoli na przeprowadzenie transmisji. Stąd też moje pytanie, czy moglibyście polecić mi kontroler, który z całą pewnością sobie z tym poradzi i będzie miał stosunkowo niskie zużycie energii? Na ten moment najbardziej spodobał mi się ATtiny2313/V (stosunkowo niewielki pobór prądu), niemniej nie wiem czy dalej nie będzie to "przerost formy nad treścią".
  • Moderator Mikrokontrolery Projektowanie
    Spokojnie dasz radę, tym bardziej, że to Ty tworzyć będziesz protokół wymiany danych, więc bez problemu uniezależnisz go od ewentualnego wpływu temperatury części znajdującej się na zewnątrz budynku.

    Attiny13, ATtiny2313, czy inny, to Ty decydujesz więc nie stosuj takich określeń: "przerost formy nad treścią".
    Każdy ma jakieś zalety i wady, w stosunku do założeń projektu. Są jeszcze ATtiny 10, 22, 24, 25, 44, 45, itp.
  • Poziom 9  
    Może źle się wyraziłem
    Attiny13, 10 etc muszę chyba odrzuć odgórnie. Nie mam oscyloskopu, aby je wykalibrować, a transmisja przy 10% tolerancji związana z wewnętrznym oscylatorem nie może chyba wyglądać dobrze. Zainteresowałem się 2313, gdyż po (co prawda pobieżnym) przekartkowaniu noty katalogowej nie widzę takiego problemu (zastosuje się zewnętrzny rezonator). Niemniej zdaję sobię sprawę, że gdyby był on mniejszy, tańszy etc to nic wielkiego by się nie stało :D
  • Moderator Mikrokontrolery Projektowanie
    Jak już wspomniałem to Ty decydujesz jaki protokół sobie napiszesz. Możesz więc przewidzieć, np taki algorytm każdej transmisji:
    1 na początku transmisji część zewnętrzna wysyła sygnał o długości np. 10ms (tak się wydaje nadajnikowi),
    2 część odbiorcza zlicza czas trwania sygnału np. 11ms (bo temperatura zewnętrzna wpłynęła na nadajnik w taki sposób, że faktycznie zamiast 10ms wysłał 11ms.
    3 na tej podstawie część wewnętrzna dokonuje kalibracji, przyjmując odpowiednie poprawki do czasów impulsów transmitujących dane,
    4 część zewnętrzna odczekuje np. 5ms (by dać czas wewnętrznej na kalibrację) i wysyła paczkę danych,
    5 część zewnętrzna odbiera ją stosując skalibrowane czasy impulsów.
  • Użytkownik usunął konto  
  • Poziom 9  
    dondu napisał:
    Jak już wspomniałem to Ty decydujesz jaki protokół sobie napiszesz. Możesz więc przewidzieć, np taki algorytm każdej transmisji:
    1 na początku transmisji część zewnętrzna wysyła sygnał o długości np. 10ms (tak się wydaje nadajnikowi),
    2 część odbiorcza zlicza czas trwania sygnału np. 11ms (bo temperatura zewnętrzna wpłynęła na nadajnik w taki sposób, że faktycznie zamiast 10ms wysłał 11ms.
    3 na tej podstawie część wewnętrzna dokonuje kalibracji, przyjmując odpowiednie poprawki do czasów impulsów transmitujących dane,
    4 część zewnętrzna odczekuje np. 5ms (by dać czas wewnętrznej na kalibrację) i wysyła paczkę danych,
    5 część zewnętrzna odbiera ją stosując skalibrowane czasy impulsów.

    Zastanawia mnie tylko, czy w takim przypadku wzrost czasu trwania sygnału, czyli de facto też jego częstotliwości i długości fali nie wpłynie na możliwą odległość przeprowadzenia transmisji. O ile w przypadku odbiornika charakterystyka długość fali/czułość jest jeszcze ok, to w przypadku takiej zwykłej diody nadawczej przeznaczonej dla długości fali=950nm wygląda to już słabiej. Czy źle główkuje?

    albertb napisał:

    Ja bym poszedł więc zupełnie inną drogą.
    1 .masz już czujnik.
    2. Toto za oknem ma właściwie robić 2 rzeczy: przesyłać przetworzoną wartość temperatury i pobierać jak najmniej prądu.

    Poszedłbym więc w jak najprostszy i najtańszy procesor z małym poborem pradu i 1 komparatorem.
    Jak dla mnie to PIC12LF1501
    Na komparatorze zrobiłbym generator RC, który dawałby częstotliwość wyjściową proporcjonalną do R, a
    MCU wykorzystał do tego, aby przez większość czasu usypiać całość dla małego poboru prądu.
    Zamiast tranzystora wyjściowego połączyłbym 2 piny dla zwiększenia prądu.
    W efekcie całość (za oknem) składałaby się z MCU, czujnika, kondensatora, 4 rezystorów i LED nie licząc zasilania.

    Albert


    Hmmm. Pomysł na pewno ciekawy, niemniej wykorzystując mój czujnik i używając tu jedynie dzielnika napięciowego jestem w stanie uzyskać rozdzielczość pomiaru około ~0.8 C. Aby ją zwiększyć, musiałbym zastosować układ ze wzmacniaczem operacyjnym i tymi wszystkimi rezystorami, a to już szalenie zwiększa pobór prądu. Niemniej, idea jest o tyle dla mnie ciekawa, ze mam gdzieś układ PIC12F675. Pobiera on trochę więcej prądu, niemniej myślę, że dalej jak najbardziej się nada :D
  • Moderator Mikrokontrolery Projektowanie
    Wpływ temperatury na na długość fali emitowanej przez diodę jest w jej dokumentacji np. dla tej diody: http://www.tme.eu/pl/Document/496a4e9eb0a70fdb51c84c5ccd1820a5/LL-503IRC2E-2AC.pdf
    znajdziesz na wykresie: Peak Emission Wavelength & Ambient Temperature

    Nie wiem jaki odbiornik IR będziesz stosował, ale patrząc np. na popularne TSOPy: http://www.tme.eu/pl/Document/666c53d2772c9d94882ff887f36ba4a1/tsop41.pdf
    i wykres Figure 11. Relative Spectral Sensitivity vs. Wavelength
    jak widać zmiana temperatury LED nadawczego i związana z tym faktem zmiana długości fali nie wpłynie zbytnio na poprawny odbiór danych (czułość odbiornika) tym bardziej, że odległość między nimi będzie niewielka.

    Co do PICów, to warto rozważyć ich możliwości w tym zakresie w szczególności tych z technologią XLP.
    I w związku z tym pytanie: Czy to jednostkowy projekt, czy masówka?
  • Poziom 9  
    dondu napisał:
    Wpływ temperatury na na długość fali emitowanej przez diodę jest w jej dokumentacji np. dla tej diody: http://www.tme.eu/pl/Document/496a4e9eb0a70fdb51c84c5ccd1820a5/LL-503IRC2E-2AC.pdf
    znajdziesz na wykresie: Peak Emission Wavelength & Ambient Temperature

    Nie wiem jaki odbiornik IR będziesz stosował, ale patrząc np. na popularne TSOPy: http://www.tme.eu/pl/Document/666c53d2772c9d94882ff887f36ba4a1/tsop41.pdf
    i wykres Figure 11. Relative Spectral Sensitivity vs. Wavelength
    jak widać zmiana temperatury LED nadawczego i związana z tym faktem zmiana długości fali nie wpłynie zbytnio na poprawny odbiór danych (czułość odbiornika) tym bardziej, że odległość między nimi będzie niewielka.

    Co do PICów, to warto rozważyć ich możliwości w tym zakresie w szczególności tych z technologią XLP.
    I w związku z tym pytanie: Czy to jednostkowy projekt, czy masówka?


    Tak jak napisałem w pierwszym poście, projekt czysto hobbystyczny, mamie się taki termometr zamarzył, więc postanowiłem go wykonać, niemniej skoro już się za to biorę to chce to zrobić jak najlepiej :)
  • Moderator Mikrokontrolery Projektowanie
    Pytanie zadałem w kontekście kosztów, więc jak rozumiem nie ma to znaczenia, tym bardziej, że programator do PICów posiadasz (wnioskuję z posiadania PICów) :)
    Co do reszty mojej poprzedniej wypowiedzi rozumiem, że nie masz pytań?
  • Poziom 9  
    Zauważyłem dopiero teraz, że mój PIC12F675 nie ma wejścia analogowego, co go niestety przekreśla. Niemniej, jeszcze raz to sobie uporządkuje.

    Gdybym wykorzystał czujnik, który mam (81 210) i podał 3.3 V na dzielnik napięciowy składający się z owego czujnika i rezystora, przykładowo 1.8k, to mógłbym liczyć na otrzymaniu na czujniku napięcia w przedziale 1.368 V - 1.769 V (dla temp -30C mam 1274 omhów, dla 30C 2080 omhów), czyli mam do "dyspozycji" 0.4 V. Jako iż korzystałbym z kontrolera zawierającego ADC o rozdzielczości 10 bitów (1024 poziomy) to na mój przedział (0.4 V ) przypadają 124 poziomy. Daje mi to rozdzielczość około 0.5 stopnia.

    Mogę wykorzystać też czujnik DS18B20, który pewnie będzie dokładniejszy (81 210 to jednak chyba coś w stylu termistora ze zlinearyzowaną charakterystyką), ale najzwyczajniej w świecie musiałbym go kupić :)

    Na wejście komparatora podaje generator rc, który byłby moim ala rezonatorem. Wynik podaje na dwa wyjścia cyfrowe, które zwieram w celu w uzyskania większego natężenia prądu.
  • Moderator Mikrokontrolery Projektowanie
    Stosując KTY81-210 musisz posiadać stabilne temperaturowo źródło prądowe o wartości prądu np. 1mA.
    Jeśli źródło to nie będzie stabilne temperaturowo, to pomiary już na tym etapie będą obarczone błędem.

    Załóżmy że takowe źródło prądowe masz, więc dla Twoich pomiarów zgodnie z tym co odcvzytałeś z dokumentacji rezystancja czujnika wynosić będzie dla temp -30C mam 1274 omhów, dla 30C 2080 omhów.

    Jeżeli prąd będzie na poziomie 1mA, to oznacza, że spadek napięcia na czujniku wynosiłby:
    - dla -30°C 1,274V
    - dla +30°C 2,08V
    Różnica (przedział pomiarowy) wynosi więc: 0,806V
    przy czym nie zaczyna się od zero woltów.

    Dlatego należy zastosować taki układ, który rozciągnie w/w zakres na cały zakres napięć wejściowych przetwornika ADC. To z kolei pociąga za sobą zaprojektowanie takiego układu, który będzie stabilny temperaturowo.

    Dlatego też właśnie powstały scalone układy pomiarowe jak w/w DS18B20, które te problemy załatwiają.
  • Poziom 27  
    Leeoonek napisał:


    Mogę wykorzystać też czujnik DS18B20, który pewnie będzie dokładniejszy (81 210 to jednak chyba coś w stylu termistora ze zlinearyzowaną charakterystyką), ale najzwyczajniej w świecie musiałbym go kupić :)

    A jakby tak prosto, nie zmuszając tego termometru do ludzkich zachowań.
    UREF = zakres napięcia max. na termistorze i przez IR wysyłamy ADCW co godzinę.
    To samo z czujnika DS18B20,wysyłamy daną. Konwersja na użytek ludzki za szybą.
  • Poziom 9  
    Zdawałem sobie sprawę z potrzeby rozciągnięcia zakresu, stąd wzmacniacz operacyjny w schemacie w pierwszym poście. Ale rzeczywiście, takie zabiegi chyba faktycznie nie mają sensu, DS18B20 jest najlepszą, najprostrzą opcją.

    Mam jednak pytanie odnośnie postu albertb'a. Zaproponował on generator rc, przy czym jak czytam w datasheecie
    Cytat:
    16 MHz Internal Oscillator Block:
    - Factory calibrated to ±1%, typical


    Stąd też moje pytanie. Jaki jest sens dodawania tego kondensatora i rezystora, skoro wewnętrzny oscylator jest już chyba wystarczająco dokładny (zdaje sobie sprawę że cena jest prawie zerowa, tak jak miejsce zajęte przez te komponenty, ale mimo wszystko ;))
  • Poziom 27  
    A ja bym diodę nadawczą dał na TX i korzystał z UART. A gdybym chciał pomiar na żądanie, to fotodioda na RX. Jak myślisz - szyfrować dane?
  • Poziom 19  
    Witam,
    analogowy czujnik mcp9700 jest tańszy od ds18b20 i co ważne, działa z niższym napięciem. Wydaje mi się też, że będzie łatwiejszy w oprogramowaniu, nawet z kalibracją. Całość to np CR2032, attiny13a, mcp9700a, dioda i ze dwa kondensatory. Można by to zalać termoglutem i przykleić do szyby.

    Może z ADC Noise Reduction nawet bez kondensatorów?
  • Poziom 27  
    dondu napisał:
    W jakim celu stosować UART?

    Jest do dyspozycji. Do dyspozycji jest też generator nośnej. A tak właściwie do czego ma być ten generator w postach powyżej?
  • Użytkownik usunął konto  
  • Moderator Mikrokontrolery Projektowanie
    Wirnick napisał:
    dondu napisał:
    W jakim celu stosować UART?

    Jest do dyspozycji.

    Nie pytałem, czy jest do dyspozycji tylko do czego ma służyć.

    Wirnick napisał:
    Do dyspozycji jest też generator nośnej.

    Czyli ...

    Pisz proszę tak, by nie było wątpliwości co masz na myśli.
  • Poziom 27  
    Wirnick napisał:
    A ja bym diodę nadawczą dał na TX i korzystał z UART. A gdybym chciał pomiar na żądanie, to fotodioda na RX. Jak myślisz - szyfrować dane?

    Użyłbym sprzętowy UART do przesyłu informacji za pomocą wiązki światła (połączenie dupleks). ...