Higrometr+termometr zasilany bateryjnie.

Projekty użytkowników forum zarówno sprzętowe, jak i związane z programowaniem w dowolnym języku.
Awatar użytkownika
Antystatyczny
Geek
Geek
Posty: 1168
Rejestracja: czwartek 03 wrz 2015, 22:02

Higrometr+termometr zasilany bateryjnie.

Postautor: Antystatyczny » poniedziałek 31 lip 2017, 21:16

Witam,

Ostatnie upały powodują, że mam coraz więcej niekoniecznie mądrych pomysłów. Jednym z nich jest higrometr + termometr zasilany bateryjnie, który chciałbym przedstawić oraz, niejako przy okazji, zadać kilka pytań pomocniczych.

Znaleziony w szufladzie DHT11 służy jako czujnik temperatury oraz wilgotności względnej, zaś dane odczytywane są przez mikrokontroler PIC16F716 w obudowie DIP18. Prezentacja danych realizowana jest wyświetlaczem CBS084A00-TJN. Początkowo chciałem użyć ATtiny2313, ale gdzieś się schowała, a podczas poszukiwań wpadł mi w ręce PIC. Mały, zgrabny i z wylutu (wydaje mi się, że wytargałem go z jakiegoś uszkodzonego chińskiego ekspresu firmy Zelmer). Projektu nie przeniosłem jeszcze na płytkę docelową, ale układ cały czas pracuje na płycie testowej o wdzięcznej nazwie ZEPIC. Przygotowałem już projekt płytki oraz oczywiście schemat ideowy. Tak się prezentuje schemat:
Higrometr_sch.png

Oraz płytka:
Higrometr_brd.png


Jak widać projekt jest banalnie prosty. Mikrokontroler taktowany jest zewnętrznym kwarcem o bazowej częstotliwości 12MHz. Początkowo miał być 4MHz, ale okazało się, że obróbka pomiaru szerokości impulsu nie mieściła się w reżimie czasowym ustalonym przez producenta DHT11. Nieużywane piny są zwarte do GND, by uchronić się przed stanami nieustalonymi na nich, a w efekcie zwiększonym poborem prądu.

Ogólna zasada pracy jest nieprzyzwoicie prosta. Po włączeniu zasilania układu, mikrokontroler dokonuje inicjalizacji wyświetlacza, warstwy sprzętowej odpowiedzialnej za odbiór danych z czujnika DHT11, a następnie idzie spać. Po ok. 2.3 sekundy układ jest budzony wbudowanym licznikiem "watchdog". Następuje odczyt danych, a potem ich prezentacja na wyświetlaczu. Następną operacją jest ponowne wprowadzenie mikrokontrolera w stan uśpienia. Czas pracy wynosi 0.025s, a czas snu 2.128s. Na potrzeby pomiarów wprowadziłem do układu dodatkowy pin, na którym wystawiany jest stan wysoki tuż po przebudzeniu, a przed drzemką stan zmieniany jest z powrotem na stan niski.

Zasilanie układu jest dowolne, ale pod warunkiem, że jego napięcie będzie wynosiło nieco ponad 3V. Początkowo celowałem w dwie bateryjki AA lub AAA, ale po zmianie kwarcu z 4MHz na 12MHz należy nieco podnieść napięcie (zgodnie z dokumentacją mikrokontrolera). Póki co mam jakieś trzy akumulatorki NiMH o łącznym napięciu 3.6V, więc się tym nie przejmuję. Po zakupie koszyka na dwie bateryjki AA lub AAA wykonam testy działania na napięciu 3V.

Program napisałem oczywiście w języku C, a pętla główna jest mało ciekawa, bo niemal pusta. Wygląda ona mniej więcej tak:

Kod: Zaznacz cały

/* Uncomment the following line to measure mcu wake up time on RB0 pin. */
//#define APP_DEBUG

/* Function shows data collected by DHT11 sensor. */
void ShowData(DHT_DataType  *data);

/* DHT11's data container. */
DHT_DataType dht;

int main(void)
{
#ifdef APP_DEBUG
    /* Debug pin configuration. */
    TRISB &= ~_TRISB_TRISB0_MASK;
#endif /* APP_DEBUG */
   
    /* LCD initilization. */
   CBS084A00_Init();
   
    /* Display "*C". */
    CBS084A00_SetDigitValue(2, 11);/* Degree sign. */
    CBS084A00_SetDigitValue(1, 12);/* 'C' letter. */
   
    /* Display "rH". */
    CBS084A00_SetIcons(CBS084A00_Icons_H1, CBS084A00_State_Enabled);
    CBS084A00_SetIcons(CBS084A00_Icons_R, CBS084A00_State_Enabled);
   
    /* DHT11 initialization. */
    DHT_Init();
   
    /* Enable global & peripheral interrupts. */
    INTCON = _INTCON_GIE_MASK | _INTCON_PEIE_MASK;
   
   while(true)
   {
        /* Clear watchdog. */
        CLRWDT(); /*  <--- good practice. */
       
        /* Sweet dreams... */
        SLEEP();
       
#ifdef APP_DEBUG         
        PORTB |= _PORTB_RB0_MASK;
#endif /* APP_DEBUG */
       
        /* Collect data from DHT11 sensor. */
        DHT_GetData(&dht);
       
        /* Prepare & show collected data. */
        ShowData(&dht);
       
#ifdef APP_DEBUG
        PORTB &= ~_PORTB_RB0_MASK;
#endif /* APP_DEBUG */
       
    }
}


No i jeszcze efekt działania całego układu:
WP_20170731_001.jpg


A teraz pytania:

1. Czy do układu mam jeszcze dołożyć jakąś filtrację?
2. Macie jakieś sprawdzone metody obliczania zapotrzebowania układu na energię, czy do każdego projektu trzeba podchodzić indywidualnie?
3. Lepiej nieużywane piny zwierać na zewnątrz do GND lub VCC, czy raczej w programie ustalać kierunek wyjściowy pinów oraz wymuszać na nich stan? Producent mikrokontrolera wspomina jedynie, by ustalić stan, ale nie określa konkretnej metody.

Może macie jakieś sugestie, wskazówki... Chętnie je "przyjmę na klatę".
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
"The true sign of intelligence is not knowledge but imagination" Albert Einstein.

Awatar użytkownika
dambo
Expert
Expert
Posty: 645
Rejestracja: czwartek 17 mar 2016, 17:12

Re: Higrometr+termometr zasilany bateryjnie.

Postautor: dambo » poniedziałek 31 lip 2017, 22:15

co do przeliczania czasu pracy - w cubeMX jest takie narzędzie w osobnej zakładce, ale przyznam, że nie testowałem.

Z wymuszeniem na pinach - chodzi, żeby przerzutniki na wejściach nie pobierały prądu przy zbieraniu szumów. Z punktu widzenia "miiiiiikrozysku energii" lepiej popodciągać je na PCB, chociaż wtedy się nie można dolutować kynarem żeby uzyskać dodatkowy pin :p
Nowy blog o tematyce embedded -> https://www.embedownik.pl/

Awatar użytkownika
Antystatyczny
Geek
Geek
Posty: 1168
Rejestracja: czwartek 03 wrz 2015, 22:02

Re: Higrometr+termometr zasilany bateryjnie.

Postautor: Antystatyczny » poniedziałek 31 lip 2017, 22:19

dambo pisze:w cubeMX jest takie narzędzie w osobnej zakładce, ale przyznam, że nie testowałem.


Tak, to wiem, ale projekt wykorzystuje zupełnie inny mikrokontroler, więc użycie cubemx jest bez sensu :)

Co do dolutowywania się do pinów... Mam tam wyprowadzony jeden pin na złącze JP1, więc teoretycznie jest do wykorzystania.
No a z tym wymuszaniem stanów na pinach to wiem, czemu ma to zapobiegać, ale zastanawiałem się, czy lepiej wrzucić trzy linijki kodu ustalającego stany, czy raczej pozwierać fizycznie piny. Jeśli z punktu widzenia szumów lepiej zewrzeć piny, pozostawię projekt tak, jak jest... No ale jeśli lepiej zrobić to mosfetami w procku, to mogę dorzucić kawałek kodu, a połączenia na druku usunąć.
"The true sign of intelligence is not knowledge but imagination" Albert Einstein.

Awatar użytkownika
ZbeeGin
User
User
Posty: 492
Rejestracja: sobota 08 lip 2017, 17:16
Lokalizacja: Śląsko-Zagłębiowska Metropolia
Kontaktowanie:

Re: Higrometr+termometr zasilany bateryjnie.

Postautor: ZbeeGin » poniedziałek 31 lip 2017, 22:29

Antystatyczny pisze:Może macie jakieś sugestie, wskazówki... Chętnie je "przyjmę na klatę".

Miałbym dwie co do PCB:
  • C3 i C5 niepotrzebnie są tuż obok siebie. C5 można całkowicie wyeliminować, ewentualnie zamienić na elektrolita by jego pozycja miała sens.
  • Można też wyeliminować zworki, przeciągając obie ścieżki pod scalakiem.

Awatar użytkownika
Antystatyczny
Geek
Geek
Posty: 1168
Rejestracja: czwartek 03 wrz 2015, 22:02

Re: Higrometr+termometr zasilany bateryjnie.

Postautor: Antystatyczny » poniedziałek 31 lip 2017, 22:34

ZbeeGin pisze:C3 i C5 niepotrzebnie są tuż obok siebie


Nie do końca wyszło tak, jak chciałem, a chciałem jeden kondensator tuż przy procku, a drugi tuż przy lcd. Rozważę montaż kondensatora elektrolitycznego (a może tantalowego?).

Ze ścieżkami PGD i PGC miałem trochę kłopot. Jedną bez problemu zmieściłem pod prockiem, ale gdybym chciał dać jeszcze jedną, reszta musiałaby być znacznie cieńsza. Przy wykonywaniu druku termotransferem jest to nie bez znaczenia. Popróbuję jeszcze coś z tym zrobić, dzięki.
"The true sign of intelligence is not knowledge but imagination" Albert Einstein.

Awatar użytkownika
xor
User
User
Posty: 169
Rejestracja: poniedziałek 05 wrz 2016, 21:44

Re: Higrometr+termometr zasilany bateryjnie.

Postautor: xor » poniedziałek 31 lip 2017, 23:45

Co do p.3: Nie wiem jaka jest wydajność prądowa wyjść w PIC ale w AVR na pewno nie zwarł bym nogi wprost do GND czy Vcc.

Awatar użytkownika
Antystatyczny
Geek
Geek
Posty: 1168
Rejestracja: czwartek 03 wrz 2015, 22:02

Re: Higrometr+termometr zasilany bateryjnie.

Postautor: Antystatyczny » poniedziałek 31 lip 2017, 23:51

xor pisze:Nie wiem jaka jest wydajność prądowa wyjść w PIC


Dokumentacja mówi, że absolutne maksimum dla "sink" i "source" wynosi 25mA. Dlaczego nie podłączyłbyś bezpośrednio?
"The true sign of intelligence is not knowledge but imagination" Albert Einstein.

Awatar użytkownika
xor
User
User
Posty: 169
Rejestracja: poniedziałek 05 wrz 2016, 21:44

Re: Higrometr+termometr zasilany bateryjnie.

Postautor: xor » wtorek 01 sie 2017, 00:07

Bo w razie ustawienia nogi jako wyjście może być zwarcie.

Awatar użytkownika
Antystatyczny
Geek
Geek
Posty: 1168
Rejestracja: czwartek 03 wrz 2015, 22:02

Re: Higrometr+termometr zasilany bateryjnie.

Postautor: Antystatyczny » wtorek 01 sie 2017, 00:13

Nie planuję użycia tych pinów.
"The true sign of intelligence is not knowledge but imagination" Albert Einstein.

Awatar użytkownika
dambo
Expert
Expert
Posty: 645
Rejestracja: czwartek 17 mar 2016, 17:12

Re: Higrometr+termometr zasilany bateryjnie.

Postautor: dambo » wtorek 01 sie 2017, 00:15

taki dokument od microchipa "Microcontroller Low Power Tips ‘n Tricks" - tam są fajne rzeczy opisane i tez jest o pinach. link: http://ww1.microchip.com/downloads/en/d ... er%202.pdf

w skrócie - zalecają albo softwarowy output i ustawienie dowolnego stanu, albo danie go jako input i zewnętrzne podciągnięcie.
Nowy blog o tematyce embedded -> https://www.embedownik.pl/

Awatar użytkownika
Antystatyczny
Geek
Geek
Posty: 1168
Rejestracja: czwartek 03 wrz 2015, 22:02

Re: Higrometr+termometr zasilany bateryjnie.

Postautor: Antystatyczny » wtorek 01 sie 2017, 00:21

Dambo, super, dzięki. Jakoś umknął mi ten dokument, a w nim jest znacznie więcej informacji. Zaraz zmodyfikuję schemat i program.
"The true sign of intelligence is not knowledge but imagination" Albert Einstein.

Awatar użytkownika
Nefarious19
Newb
Newb
Posty: 80
Rejestracja: sobota 02 sty 2016, 20:45

Re: Higrometr+termometr zasilany bateryjnie.

Postautor: Nefarious19 » wtorek 01 sie 2017, 08:37

Zawsze można piny dać przez rezystorki 0805 smd np 0 Om a w razie potrzeby je wylutowac. Ewentualnie zworke smd
Plany na przyszłość: C, C++, C#

Awatar użytkownika
xor
User
User
Posty: 169
Rejestracja: poniedziałek 05 wrz 2016, 21:44

Re: Higrometr+termometr zasilany bateryjnie.

Postautor: xor » wtorek 01 sie 2017, 09:04

Nie chodzi o ewentualne wykorzystanie tylko pomyłki w software. Zawsze można się machnąć np. w masce konfiguracji. Albo jak się program wykrzaczy może coś zmodyfikować. Może mało prawdopodobne, ale IMHO teoretycznie możliwe.

Awatar użytkownika
dambo
Expert
Expert
Posty: 645
Rejestracja: czwartek 17 mar 2016, 17:12

Re: Higrometr+termometr zasilany bateryjnie.

Postautor: dambo » wtorek 01 sie 2017, 12:15

no ale też weźmy pod uwagę, że to zalecenia bardziej dla końcowych wersji komercyjnych/masowych produktów - tam już wszystko byłoby dopięte na ostatni guzik i można dać nieużywane piny do masy
Nowy blog o tematyce embedded -> https://www.embedownik.pl/

Awatar użytkownika
Antystatyczny
Geek
Geek
Posty: 1168
Rejestracja: czwartek 03 wrz 2015, 22:02

Re: Higrometr+termometr zasilany bateryjnie.

Postautor: Antystatyczny » wtorek 01 sie 2017, 21:10

No dobra, naniosłem kilka zmian oraz poprawek. Usunąłem testowy pin, na którym mierzyłem czas pracy i snu układu. Zmieniłem obudowę kwarcu na pionową, bo znalazłem pionowy niskoprofilowy w gratach. Przy okazji poprawiłem ekranowanie okolic kwarcu i kondensatorów 22pF. Kilka zmian prowadzenia ścieżek, usunięte obie zworki oraz zamiana C5 z 100nF na tantalowy 22µF/25. Nieużywane piny wysterowane są programowo i utrzymują stan logicznego zera.

Schemat:
Higrometr_sch.png

Płytka:
Higrometr_brd.png
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
"The true sign of intelligence is not knowledge but imagination" Albert Einstein.

Awatar użytkownika
ZbeeGin
User
User
Posty: 492
Rejestracja: sobota 08 lip 2017, 17:16
Lokalizacja: Śląsko-Zagłębiowska Metropolia
Kontaktowanie:

Re: Higrometr+termometr zasilany bateryjnie.

Postautor: ZbeeGin » wtorek 01 sie 2017, 23:47

Jeszcze ten zawijas koło R2. :D
Higrometr_brd.png
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Awatar użytkownika
Antystatyczny
Geek
Geek
Posty: 1168
Rejestracja: czwartek 03 wrz 2015, 22:02

Re: Higrometr+termometr zasilany bateryjnie.

Postautor: Antystatyczny » wtorek 01 sie 2017, 23:50

Który?
"The true sign of intelligence is not knowledge but imagination" Albert Einstein.

Awatar użytkownika
dambo
Expert
Expert
Posty: 645
Rejestracja: czwartek 17 mar 2016, 17:12

Re: Higrometr+termometr zasilany bateryjnie.

Postautor: dambo » piątek 11 sie 2017, 17:59

Co do pytania odnośnie wyliczania czasu pracy - artykuł z dziś:
http://mikrokontroler.pl/2017/08/10/obl ... cjach-iot/
Nowy blog o tematyce embedded -> https://www.embedownik.pl/

Awatar użytkownika
Antystatyczny
Geek
Geek
Posty: 1168
Rejestracja: czwartek 03 wrz 2015, 22:02

Re: Higrometr+termometr zasilany bateryjnie.

Postautor: Antystatyczny » sobota 12 sie 2017, 19:51

Ciąg dalszy:
WP_20170812_001.jpg

WP_20170812_002.jpg

WP_20170812_003.jpg

WP_20170812_004.jpg

WP_20170812_005.jpg


Jak widać układ działa i teraz pozostaje mi poczekać, aż padną bateryjki. Wypadałoby jeszcze przeszlifować brzegi płytki, bo wyglądają nieestetycznie. Póki co traktuję ten układ jako testowo-badawczy, bo nigdy dotąd nie projektowałem niczego, co byłoby napędzane bateryjką/akumulatorem.

Dzięki wszystkim za porady.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
"The true sign of intelligence is not knowledge but imagination" Albert Einstein.

Awatar użytkownika
dambo
Expert
Expert
Posty: 645
Rejestracja: czwartek 17 mar 2016, 17:12

Re: Higrometr+termometr zasilany bateryjnie.

Postautor: dambo » niedziela 13 sie 2017, 17:53

Sprawdzałeś może pobory prądu/wyliczyłeś ile mniej więcej układ będzie mógł działać?
Nowy blog o tematyce embedded -> https://www.embedownik.pl/

Awatar użytkownika
Antystatyczny
Geek
Geek
Posty: 1168
Rejestracja: czwartek 03 wrz 2015, 22:02

Re: Higrometr+termometr zasilany bateryjnie.

Postautor: Antystatyczny » środa 20 wrz 2017, 17:45

dambo pisze:Sprawdzałeś może pobory prądu


Sprawdzałem jakieś (niecałe) dwa miesiące temu, ale gdzieś posiałem kartkę z notatkami. W każdym razie sytuacja nie przedstawia się różowo. Mija 50 dni, a ja zaczynam zauważać, że wyświetlacz blednie, czyli bateryjki już ledwie zipią. Przypomnę, że bateryjki są firmy Varta, a ich model to AAA "Longlife". Nawet jeśli dociągnę do 60 dni, to i tak wynik ogólny jest kiepski. Kupię nowe baterie i przeprowadzę ponowne pomiary, by ustalić źródło "wycieków prądu".
"The true sign of intelligence is not knowledge but imagination" Albert Einstein.


Wróć do „DIY”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 8 gości