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

Mikrokontroler o niskim poborze prądu

1234567890 13 Sie 2017 22:17 1149 21
  • #1 13 Sie 2017 22:17
    1234567890
    Poziom 12  

    Witam.
    Szukam mikrokontrolera o bardzo niskim poborze prądu (najlepiej poniżej 0,2mA) który odczytywałby ilość impulsów z czujnika halla a także odczytywał temperaturę z czujnika DB18B20 a następnie wysyłał obydwie te wartości poprzez interfejs UART do nadajnika radiowego.
    Ponieważ monitoring prędkości obrotowej musi odbywać się w sposób ciągły (wartość wysyłana co 1 sekundę) a jedynie wartość temperatury będzie mierzona sporadycznie (co 20s) w związku z czym nie ma możliwości wykorzystania trybu uśpienia który jest dostępny w we wszystkich mikrokontrolerach.

    0 21
  • #2 13 Sie 2017 23:13
    excray
    Poziom 39  

    Nawet AVR jeśli zasilisz niskim napięciem i przy niskim taktowaniu rdzenia. Poza tym prawie każdy inny przy podobnych założeniach. Generalnie rodzina MSP430.

    Dodano po 2 [minuty]:

    1234567890 napisał:
    Ponieważ monitoring prędkości obrotowej musi odbywać się w sposób ciągły (wartość wysyłana co 1 sekundę) a jedynie wartość temperatury będzie mierzona sporadycznie (co 20s) w związku z czym nie ma możliwości wykorzystania trybu uśpienia

    To na przykład MSP430 i tryb uśpienia wszystkiego poza licznikiem.

    0
  • #3 13 Sie 2017 23:21
    LED5W
    Poziom 32  

    Sekunda to sporo czasu. Impulsy można liczyć w uśpieniu. ;) Tylko trzeba procesor jakoś wybudzić. RTC? Zasil z możliwie niskiego napięcia.

    0
  • #4 13 Sie 2017 23:28
    excray
    Poziom 39  

    Nowe AVRki (np. Atmega168BT) mają błyskawiczny czas wybudzenia z uśpienia. Nie chce mi się szukać w ds'ie, ale chyba coś poniżej 1us. Jakby co, to proszę mnie poprawić.

    EDIT> 6 cykli zegara:
    Mikrokontroler o niskim poborze prądu
    Czyli przy wewnętrznym 8MHz mamy poniżej sekundy. Oczywiście nie dotyczy taktowania zewnętrznym kwarcem, bo wtedy dochodzi znaczny czas na wystartowanie oscylacji na kwarcu.

    0
  • #5 13 Sie 2017 23:53
    Marek_Skalski
    Moderator Projektowanie

    Dowolny STM32L0x1 będzie tutaj pasował. Pędzony w trybie low power run zegarem 131kHz będzie potrzebował <100uA z włączonymi wszystkimi peryferiami, kiedy jest stale aktywny.
    Możesz go też usypiać (<15uA z włączonymi peryferiami), a impulsy będzie zliczał wewnętrzny licznik (LPTIM), który pracuje asynchronicznie. Do wybudzania możesz użyć wbudowanego w RTC wakeup timer, który pozwala na wybudzanie w zakresie do pojedynczych ms do 32s z rozdzielczością rzędu 1ms. Więcej opcji zegara, przez co możesz lepiej zbalansować pobór prądu. Wbudowane napięcie referencyjne pozwala mierzyć napięcie zasilania i stosownie do tego korzystać z mocy.
    Układ znacznie bardziej przyjemny w programowaniu i debugowaniu niż atmegi. I tańszy.
    Nie wiem co to jest Atmega168BT i Microchip również. Ale jeżeli to ma być Atmega168PB, to żadna się nie nadaje. Najmniejszy pobór prąd w stanie aktywnym to 0,21mA przy 1MHz i 2V. Wolniejszy zegar to dodatkowy koszt i pobór prądu.

    1
  • #6 14 Sie 2017 00:05
    excray
    Poziom 39  

    Marek_Skalski napisał:
    Najmniejszy pobór prąd w stanie aktywnym to 0,21mA przy 1MHz i 2V. Wolniejszy zegar to dodatkowy koszt i pobór prądu.

    Przy 128kHz @1,8V schodzisz poniżej 50uA w trybie aktywnym. Który STM to potrafi?
    Mikrokontroler o niskim poborze prądu
    Marek_Skalski napisał:
    Układ znacznie bardziej przyjemny w programowaniu

    Hahaha! Ale kolega raczył zażartować.

    0
  • #7 14 Sie 2017 00:28
    Marek_Skalski
    Moderator Projektowanie

    STM32L031K6: Przy wewnętrznym zegarze 131kHz, w temperaturach -40+55, kod wykonywany z RAM, pobór prądu bez peryferiów 21uA max. Z włączonym licznikiem i RTC to będzie 36uA max. I nie trzeba obniżać napięcia do 1,8V :) Można też zejść do 9uA przy zachowaniu zliczania impulsów i bez wybudzania przez 20s (i więcej). Inna opcja to zliczanie impulsów w przerwaniu po wybudzeniu. Wtedy uC pobiera ~1,2uA przez większość czasu i 21uA w czasie aktywnym. Która Atmega to potrafi?
    Ty piszesz o wartościach typowych, ja o maksymalnych, które często są 2x większe od typowych.

    1
  • #8 14 Sie 2017 00:35
    excray
    Poziom 39  

    Jak policzysz czas potrzebny na wybudzanie, to kto wie.

    Marek_Skalski napisał:
    Inna opcja to zliczanie impulsów w przerwaniu po wybudzeniu. Wtedy uC pobiera ~1,2uA przez większość czasu i 21uA w czasie aktywnym. Która Atmega to potrafi?

    Ta o której pisałem. Jak policzysz jeszcze czas potrzebny na wybudzenie procesora to nawet lepiej ta atmega energetycznie wychodzi. Szczególnie, że atmega ma uruchomione wszystkie peryferia, a w stmie policzyłeś bez peryferii. Oczywiście przy napięciu 1,8V.

    0
  • #9 14 Sie 2017 00:45
    Marek_Skalski
    Moderator Projektowanie

    Atmega nie ma uruchomionych wszystkich peryferiów. Dokumentacja mówi o tym dość wyraźnie w sekcji 34.2.1 (notka odsyła do 15.10), 34.2.2 (notka odsyła do 15.10), 35.1.3, 35.2.3. Dlatego uważam, że atmega nie jest lepsza.
    Na zliczenie impulsu potrzebuję znikomą ilość taktów (<100). W tej sytuacji jest to zwykłe równanie liniowe w funkcji częstotliwości sygnału wejściowego. Znalezienie optymalnej opcji nie stanowi problemu.

    0
  • #10 14 Sie 2017 00:49
    excray
    Poziom 39  

    Ok, niech będzie, że STM jest lepszy. Zawsze to 32 bity a nie 8. Jakby nie było założenia autora spełniają oba, a także wiele innych procesorów. Jest to tylko kwestia odpowiedniego wykorzystania możliwości poszczególnych procesorów.

    0
  • #11 14 Sie 2017 01:04
    Marek_Skalski
    Moderator Projektowanie

    Nie chodzi o to, że STM jest lepszy. Chodzi o to czego szukać w dokumentacji i jak to wykorzystać. Tak się składa, że całkiem niedawno szukałem uC, który ma bardzo podobne założenia i przekopałem bardzo dużo dokumentacji dotyczącej AVR, PIC, STM8, STM32, LPC8xx. Być może jeden z LPC81x będzie tutaj nawet lepszy. Ja go odrzuciłem z braku ADC, a LPC82x ma ADC, ale nie potrafi zmierzyć napięcia zasilania. STM8 też jest bardzo fajny, tylko z lenistwa nie chcę instalować kolejnego IDE, aby zaoszczędzić 0,1uA w układzie o czasie życia rzędu 2 lat. AVR i PIC są robione w starych technologiach (130um). Ich oszczędność wynika tylko z mniejszego rdzenia (8-bitów), ale przegrywają w aplikacji gdzie trzeba coś policzyć, znaleźć i naprawić błędy transmisji i szybko dostarczyć dane. Finalnie wybrałem jeden z uC, ponieważ jest bardzo dobrze skalowalny: zarówno w funkcji pobór prądu-prędkość, jak też w obudowach i peryferiach.
    Pozdrawiam,
    Marek :)

    1
  • #12 14 Sie 2017 08:24
    dondu
    Moderator Mikrokontrolery Projektowanie

    1234567890 napisał:
    Ponieważ monitoring prędkości obrotowej musi odbywać się w sposób ciągły (wartość wysyłana co 1 sekundę) a jedynie wartość temperatury będzie mierzona sporadycznie (co 20s) w związku z czym nie ma możliwości wykorzystania trybu uśpienia który jest dostępny w we wszystkich mikrokontrolerach.

    Wręcz przeciwnie. Właśnie w takim przypadku powinieneś wykorzystać tryby uśpienia. Dlatego w tym przypadku potrzebny jest mikrokontroler, który oferuje:
    - wybudzanie z zewnętrznego przerwania,
    - wybudzanie z timera,
    a to potrafi 99% z nich.

    1
  • #13 14 Sie 2017 12:33
    JacekCz
    Poziom 36  

    dondu napisał:
    1234567890 napisał:
    Ponieważ monitoring prędkości obrotowej musi odbywać się w sposób ciągły (wartość wysyłana co 1 sekundę) a jedynie wartość temperatury będzie mierzona sporadycznie (co 20s) w związku z czym nie ma możliwości wykorzystania trybu uśpienia który jest dostępny w we wszystkich mikrokontrolerach.

    Wręcz przeciwnie. Właśnie w takim przypadku powinieneś wykorzystać tryby uśpienia. Dlatego w tym przypadku potrzebny jest mikrokontroler, który oferuje:
    - wybudzanie z zewnętrznego przerwania,
    - wybudzanie z timera,
    a to potrafi 99% z nich.


    Zyski prądowe z uśpienia są bardzo duże, większe niż dobór mitycznego procesora "o niskim poborze" który będzie zapieprzał w for(;;){}
    Fakt, wiele bardziej wymagające od programisty (oraz projektant peryferiów też to i owo musi)

    0
  • #14 14 Sie 2017 14:23
    1234567890
    Poziom 12  

    Jak wyglądałaby sprawa w przypadku Attiny2313?
    W nocie katalogowej producent deklaruje pobór prądu rzędu 230uA 1MHz i 20uA przy częstotliwości 32kHz

    0
  • #15 14 Sie 2017 14:29
    dondu
    Moderator Mikrokontrolery Projektowanie

    1234567890 napisał:
    Jak wyglądałaby sprawa w przypadku Attiny2313?
    W nocie katalogowej producent deklaruje pobór prądu rzędu 230uA 1MHz i 20uA przy częstotliwości 32kHz

    Nadal tak samo, używasz przerwań i usypiasz mikrokontoler. Dzięki temu przez prawie 100% czasu zużywać będzie pojedyncze uA, a nie setki. A jeśli 32kHz Ci wystarczą, to pewnie zejdziesz ze średnim zużyciem poniżej 1uA (należy sprawdzić w DS).

    0
  • #16 14 Sie 2017 14:47
    1234567890
    Poziom 12  

    Chyba jednak zdecyduję się skorzystać z Attiny2313 z przerwaniem i częstotliwością taktowania 32kHz.
    Wprawdzie prąd podany przez producenta został zmierzony przy napięciu 1,8V a w moim zastosowaniu attiny będzie działał przy napięciu około 3,3V ale prąd nadal powinien się utrzymywać na bardzo niskim poziomie.

    0
  • #17 14 Sie 2017 14:50
    Marek_Skalski
    Moderator Projektowanie

    Z jaką prędkością ma pracować port szeregowy? 1200 bps? Brak drugiego portu szeregowego+DMA uniemożliwia sprzętową obsługę DS18B20. Przy 32kHz programowo tego też nie zrobisz.

    0
  • #18 14 Sie 2017 14:59
    2675900
    Użytkownik usunął konto  
  • #19 14 Sie 2017 15:02
    1234567890
    Poziom 12  

    Jeżeli chodzi o UART to myślałem, żeby dać 9600 lub wyżej.

    0
  • #20 14 Sie 2017 16:23
    LED5W
    Poziom 32  

    W notach są charakterystyki prądu w funkcji częstotliwości dla różnych napięć. ATtiny2313A ma 190µA. Dla napięcia 3,3V prąd jest ponad dwukrotnie wyższy (a moc jakieś cztery razy większa ;) ). To wszystko przy zewnętrznym generatorze. Dla wewnętrznego oscylatora też są wykresy.

    0
  • #21 14 Sie 2017 16:49
    2675900
    Użytkownik usunął konto  
  • #22 14 Sie 2017 17:20
    1234567890
    Poziom 12  

    Piotrus_999 napisał:
    1234567890 napisał:
    żeby dać 9600 lub wyżej.
    Zresztą 1200 na 32k proste nie będzie (o ile możliwe, bez bardzo głebokiej wiedzy o AVR-ach pisania w asemblerze itp) (całe 28 taktów na bod), ale @excray pokaże pewnie jak to latwo i przyjemnie na AVR-ku zrobić, skoro STM-y są takie trudne.

    Zależy mi, żeby całość zrobić w jak najprostszy sposób, bez zbędnych komplikacji.
    Jeżeli częstotliwość 32kHz nie jest odpowiednia to użyję innej to samo tyczy się mikrokontrolera.
    Liczę na wasze podpowiedzi który procek dał by się łatwo zaprogramować a przy okazji spełniałby wspomniane przeze mnie kryteria.

    0
  Szukaj w 5mln produktów