logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak zrealizować termometr cyfrowy z pamięcią i komunikacją z PC?

mrozio85 17 Gru 2007 12:50 4535 34
Najlepsze odpowiedzi LABEL_AI_GENERATED

Jak zbudować niskoprądowy termometr cyfrowy, który co 5 minut zapisuje pomiar do pamięci i pozwala potem odczytać dane na PC?

Zrób to jako prosty rejestrator: mały mikrokontroler w trybie uśpienia, wybudzany co 5 minut, zapisujący kolejne próbki liniowo do pamięci zewnętrznej zamiast obsługiwać MMC/FAT [#4677801][#4854548][#4869993] Do takiego logowania wystarczy 64 kB pamięci, a przy zapisie tylko temperatury, bez znaczników czasu, taki rozmiar ma starczyć na ponad 220 dni; jeśli chcesz jeszcze zmniejszyć zużycie pamięci, można stosować kompresję lub blokowy zapis [#4854548][#4677801] Jako pamięć proponowano zewnętrzny EEPROM I2C 64 kB albo układy DataFlash Atmela AT45DBxxx — bez systemu plików i szybciej niż EEPROM [#4858377][#4869993] Do komunikacji z PC najprościej użyć UART/COM i prostego programu po stronie komputera, bo FAT na małym AVR jest zbyt ciężki; w wątku padło też, że minimalne wymagania dla FAT zaczynają się od ok. 150 bajtów RAM [#4858532][#4870526][#4948895] Jeśli priorytetem jest minimalny pobór prądu, sugerowano MSP430 albo AVR z bardzo agresywnym sleepem; podawano budżet rzędu 30 µA w czuwaniu i wybudzanie watchdoga co 2 s [#4854463][#4677801]
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
  • #1 4596753
    mrozio85
    Poziom 11  
    Posty: 23
    Witam. Mam za zadanie zrealizowanie termometru cyfrowego.
    Dokladna zasada dzialania:
    -pomiar temperatury co 5min
    -zczytany pomiar zapisany do pamieci
    -maly pobor mocy (nieprzerwana praca okolo 6 miesiecy na jednym akumulatorze 3V)
    -mozliwosc zczytania z pamieci wszystkich pomiarow za pomoca PC
    -nie jest wymagany wyswietlacz


    Ma ktos moze jakies pomysly?:D
    Wszystkim z gory dzieki za checi:D
  • #2 4596858
    Ch.M.
    Poziom 27  
    Posty: 1009
    Pomógł: 62
    Ocena: 15
    Witaj
    To jest ponad 50tyś. zapisów, przyjmując dla ułatwienia, ze 8bitów rozdzielczości Ci nie wystarcza, otrzymujemy wymagania rzędu 128kbajtów pojemności. Można próbować zapisu na wbudowanycm flashu, ale tyle to ma dopiero M128, która jest dosyć spora...
    Lepszym rozwiązaniem jest mniejszy kontroler zapisujący poprzez SPI czy I2C dane w zewnętrznej pamięci flash. Podobne wątki już były, poczytaj sobie o problemach wynikłych w trakcie projektowania. Opcja szukaj nie gryzie :)
    Pozdrawiam
  • #3 4671179
    mrozio85
    Poziom 11  
    Posty: 23
    No przeszukalem spora czesc forum i takiego projektu nigdzie nie widze...
    Sa projekty z zapisem Tmax i Tmin ale nie ma zapisu do jakiejs pamieci wewnetrznej badz zewnetrznej...
    Nie ma tez jak komunikowac sie z komputerem zeby wyslac dane z pamieci takiego termometru...

    Wiec prosze o podjecie tematu...
    Moze przyda sie nie tylko mi:D
  • #5 4671407
    mrozio85
    Poziom 11  
    Posty: 23
    No tak tu jest duzo wiadomosci ktore mowia o zmniejszeniu poboru mocy itp.
    A mi chodzilo mi bardziej o jakies rozwiazania techniczne. Jakies schematy. Jesli bedzie zapis na karte pamieci to nie potrzebuje juz innej komunikacju z PC. Zakres temperatur to od -50C do 50C ze skokiem co 0,5C. Zapis na karcie pamieci. Wymiary sie az tak bardzo nie licza. A czas dzialania?? Hmmm pol roku w zupelnosci starcza.
  • #6 4674083
    Ch.M.
    Poziom 27  
    Posty: 1009
    Pomógł: 62
    Ocena: 15
    Ale jakie schematy Ci sa potrzebne? Podłączenia napędu kart SD/MMC czy podłączenia czujnika temperatury? Myślę, że obydwa znajdziesz bez problemu i właśnie dlatego każdy poszczący nie umieszcza schematów, które są powszechnie znane i dostępne.
    Podałeś już wystarczająco dużo danych i na pewno da się z tego coś sklecić.
    Zapis co 5min 1bajt na temperature i np.7bajtów na datę (mi się podoba pomysł ze zliczaniem sekund od daty 1.1.2008 ale dla komputera to chyba można wysłać już przerobioną datę w formacie H:M:S D/M/R) Zapis z roku zajmie Ci niecały 1Mbajt
  • #7 4674753
    mrozio85
    Poziom 11  
    Posty: 23
    Wie Pan najbardziej cieszyl bym sie z gotowego rozwiazania ale takowego tu pewnie nie otrzymam. Chodzi mi o schemat polaczenia termometru z czytnikiem kart oraz jakiegos kodu ktory uwzglednia zapis na jakiejs karcie np. MMC. Wiem ze juz duzo pomocy otrzymalem za ktora dziekuje ale jak widac Pan jest duzo bardziej zorietowany na tym forum. Ja szukalem slowa kluczowego "termometr" a okazalo sie ze temat zostal nazwany jak ograniczyc pobor mocy. Niestety ale nie jestem w stanie przejrzec calego forum post po poscie gdyz mam ograniczony dostep do internetu. Wiec prosze Was o pomoc...

    pozdrawiam i dziekuje
  • #8 4677801
    Ch.M.
    Poziom 27  
    Posty: 1009
    Pomógł: 62
    Ocena: 15
    Tak jak już pisałem na email, możesz sobie darować obsługę MMC, jeśli wystarczy Ci zapis tylko odczytów bez znaczników czasowych z dokładnością stałej czasowej rzędu 20% (bo przy takich różnicach temperatur mierzonych, na pewno temperatura samego procka też będzie mocno się wahać). Sprawa mocno się uprości, a wystarczy procek z 64kbajtami pamięci flash. Idąc dalej tym tropem, zostaje tylko znalezienie odpowiedniego czujnika o takiej rozpietości temperatur i małym poborze prądu.
    Pobór prądu całego układu nie powinien przekraczać 30uA w czuwaniu, bo sumując pobór prądu podczas czuwania i pracy powinieneś zmieścić się w 220mAh. być może wystarczy nawet DS1820. Dodam jeszcze, że M128L z włączonym watchdogiem w trybie power down pobiera kilkanaście uA i można wybudzać procka co 2s przerwaniem od watchdoga i inkrementować rejestr puki nie osiągnie on zadanej wartości. Wtedy wykonujemy pomiar temperatury (niestety trwający 0,75s w przypadku DS... co zmusza nas do kolejnego uśpienia i wybudzenia procka) i zapis do EEpromu lub flash
  • #9 4677849
    PiotrPitucha
    Poziom 34  
    Posty: 2658
    Pomógł: 201
    Ocena: 424
    Cześć
    Jeśli chcesz prawie gotowca to zerknij do firmy JM, mają fajne moduły na Atemgach serii P, z prezentowanych kiedyś na szkoleniu pomiarów wynikało że płytka z zabudowanym transmiterem na 433MHz może pracować na baterii CR2032 kilka lat, goście mają doświadczenie w minimalizacji poboru mocy z udokumentowanymi pomiarami dla wyłączenia poszczególnych funkcji procesora.
    Piotr
  • #10 4854237
    mrozio85
    Poziom 11  
    Posty: 23
    Przedstawiłem pomysł prowadzącemu...
    Niestety nie podobał sie...
    Chciał jeszcze mniejszy pobór prądu....
    mówił coś o jakiś nowych procesorach które idealnie pasują do tego... Niestety nie pamiętam dokładnie o jakim mówił...
    Jakieś jeszcze pomysły macie?
  • #12 4854450
    mrozio85
    Poziom 11  
    Posty: 23
    Mojego prowadzacego nikt chyba nie jest w stanie zrozumiec.
    Stwierdzil ze to nie ma prawa dzialac i wywalil nas za drzwi...
    Wiec moze jakis inny pomysl?
  • #14 4854548
    Fyszo
    Poziom 37  
    Posty: 3987
    Pomógł: 223
    Ocena: 115
    Czasu nie trzeba zapisywać, wystarczy zależność że liczymy od teraz i zawsze co 5 min. Kolejne próbki z definicji będą n*5min. Wystarczy ciągiem zapisywać próbki w pamięci. 64kB starczy na ponad 220 dni. Co nam oszczędza również zasilanie (pobór prądu przez pamięć zależy od jej rozmiaru).

    Ja rozumiem prowadzącego. On chce żebyście zastosowali nie super oszczędny sprzęt (który można kupić), ale użyli superoszczędnych rozwiązań i się ich nauczyli używać. Czyli to nie dyskusja jaki MPU ma niski pobór tylko jak obniżyć ogólnie pobór w dowolnym MPU.
  • #15 4854553
    Ch.M.
    Poziom 27  
    Posty: 1009
    Pomógł: 62
    Ocena: 15
    Chyba Twój promotor miał okres...
    A co to za róznica czy ATtiny ciągnie w stanie aktywnym 0,5mA/MIPS czy msp430 2x mniej?
    Najniższe stany uśpienia to też raptem 3x krotna różnica, która jest na poziomie samowyładowywania ogniw...
    Przez 99,9% czasu procek śpi, a zysk z zastosowania najoszczędniejszego procka zamiast dowolnego tiny jest kilku-kilkunasto procentowy.
  • #16 4854562
    asembler
    Poziom 32  
    Posty: 2099
    Pomógł: 123
    Ocena: 11
    Jakie róznice temperatur mogą zaistnieć pomiedzy śąsiednimi pomiarami.
  • #17 4854806
    Fyszo
    Poziom 37  
    Posty: 3987
    Pomógł: 223
    Ocena: 115
    asembler napisał:
    Jakie róznice temperatur mogą zaistnieć pomiedzy śąsiednimi pomiarami.


    W ostateczności jak się mierzy wolnozmienne temperatury to można skompresować, i podejrzewam że 4bit DPCM będzie w sam raz - delta=8stopni. Wtedy rozmiar spadnie do 32kB. I oczywiście zapis blokami z pamięci podręcznej do MMC.
  • #18 4858086
    mrozio85
    Poziom 11  
    Posty: 23
    Pytanie dodatkowe"
    lepiej dać kartę pamięciową-chipową czy MMC?
  • #19 4858377
    asembler
    Poziom 32  
    Posty: 2099
    Pomógł: 123
    Ocena: 11
    Najtaniej i najszybciej to chyba bedzie EEprom wstawic zewnetrzny 64kB za 2 zł chyba sterowany I2C.
  • #20 4858415
    mrozio85
    Poziom 11  
    Posty: 23
    A jak wtedy przenieść dane na komputer?
    Chodzi o prosty i szybki sposób komunikacji z PC.
  • #21 4858532
    asembler
    Poziom 32  
    Posty: 2099
    Pomógł: 123
    Ocena: 11
    UART--------->COM
    Z innej strony: Dallas produkuje pastylki które maja w sobie pamiec czujnik temperatury i baterie, i realizują wlaśnie takie zadania jak tu próbujesz zrobić. Wrzuca sie taką pastylke np. do auta chłodni a po drugiej stronie czyli przy odbiorze odczytuje sie . Informacja czy była prawidłowa temp podczas całego czasu podrózy bardzo sie przydaje zeby kogoś nie zatruć. Odczyt z pastyli za pomocą 1-Wire.
  • #22 4867051
    mrozio85
    Poziom 11  
    Posty: 23
    Na jakiej zasadzie to działa?
    Co ile i w jaki sposób zapisuje temperaturę?
    Jaki czas działania?
    I co najważniejsze cena:)
  • #23 4867242
    asembler
    Poziom 32  
    Posty: 2099
    Pomógł: 123
    Ocena: 11
    O ile dobrze pamietam to odstepy miedzypomiarowe można programowac. Cena nie jest chyba wysoka biorąc pod uwagę funkcjonalność (miniatura) urządzenia. Trzeba by poszukac w googlach dallas lub cos takiego. Mialem kiedys CD ze wszystkimi dallasami moze znajdę.
    O ile sie nie myle pamiec nie ta już to symbol tej pastylki DS1921 i nazywa sie chyba termochron recorder czy cos tak podobnie:-)

    Niesety dośc drogie około 70zł i najwyżej 8k pamieci.
    W takim razie takie rozwiazanie.
    8 nóżkowy procesor AVR 8 nóżkowy eeprom 64kB lub dwa i czyjnik temperatury. na baterii CR2032 powinno wytrzymac 6 miesiecy.
  • #24 4868358
    mrozio85
    Poziom 11  
    Posty: 23
    A jakiś procesor proponujecie?
    Może ktoś ma jakieś schematy? Pomysły? wsady do procka?
  • #25 4868435
    asembler
    Poziom 32  
    Posty: 2099
    Pomógł: 123
    Ocena: 11
    Mam płytkę z atmega8 i pamiecią EEprom z wyjsciem RS oraz mozliwoscia podłaczenia czujnika DS18B20. Na bazie tej płytki w prosty sposób mógłbys zrobic to co zamierzasz. Na płytce jest cały zasilacz i również wyjscie na wyswietlacz LCD.
    80% pracy mialbyś zrobione zastanów się.
  • #27 4869993
    gothye
    Poziom 33  
    Posty: 2421
    Pomógł: 183
    Ocena: 60
    polecam pamieci Dataflash atmela np. AT45dbxxx ,niemusisz stosować systemu plików ,mozesz wykozystać taką karte jak zwykłą pamieć eeprom (przy zapisie/odczyt) i jest szybsza od eepromów :)

    po za tym obsługa FAT dla Attiny ,przerosnie ją program ,wieloktornie :D
  • #28 4870418
    mrozio85
    Poziom 11  
    Posty: 23
    Dajac FAT mam ulatwienie w komunikacji z PC
  • #29 4870526
    gothye
    Poziom 33  
    Posty: 2421
    Pomógł: 183
    Ocena: 60
    ja zastosowałbym uart do wysyłaniania danych z pamieci DF do PC ,prosty program w VB załatwi sprawe
  • #30 4871520
    mrozio85
    Poziom 11  
    Posty: 23
    A jakie są minimalne wymagania do obsługi MMC z FAT?
    Chodzi mi o RAM i pamięć procesora.
    Odrazu zapytam czy są już pod to gotowe biblioteki w Bascomie?

Podsumowanie tematu

LABEL_AI_GENERATED
Dyskusja dotyczy realizacji cyfrowego termometru z pamięcią i komunikacją z PC, mierzącego temperaturę co 5 minut, z zapisem danych do pamięci, niskim poborem mocy (około 6 miesięcy pracy na baterii 3V) oraz możliwością odczytu pomiarów przez komputer. Wskazano, że do przechowywania około 50 tys. pomiarów potrzebna jest pamięć rzędu 128 kB, co przekracza możliwości wbudowanej pamięci niektórych mikrokontrolerów (np. ATmega128). Proponowano zastosowanie zewnętrznej pamięci flash lub EEPROM sterowanej interfejsem SPI lub I2C. Dyskutowano o wykorzystaniu kart pamięci MMC/SD, jednak obsługa systemu plików FAT na małych mikrokontrolerach (np. ATtiny15L) jest trudna ze względu na ograniczone zasoby RAM i pamięci programu. Alternatywnie sugerowano użycie pamięci Dataflash (np. Atmel AT45dbxxx) bez systemu plików, co upraszcza obsługę i przyspiesza zapis/odczyt. Propozycje mikrokontrolerów obejmowały ATmega8, ATtiny85 oraz MSP430 ze względu na niski pobór mocy. Wskazano, że najważniejsze jest minimalizowanie poboru energii przez odpowiednie tryby uśpienia i optymalizację pracy procesora, gdyż różnice między najoszczędniejszymi układami są niewielkie. Jako czujnik temperatury rekomendowano DS18B20 lub układy Dallas (np. DS1921 Thermochron) z wbudowaną pamięcią i baterią, umożliwiające rejestrację temperatury i późniejszy odczyt przez interfejs 1-Wire. Komunikację z PC można realizować przez UART (RS232) lub odczyt bezpośrednio z karty pamięci. Poruszono też kwestie kompresji danych (np. 4-bitowy DPCM) dla zmniejszenia wymagań pamięciowych. Ostatecznie podkreślono, że wybór rozwiązania zależy od kompromisu między złożonością, kosztami, poborem mocy i łatwością integracji z komputerem.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA