
Witam,
Korzystając z ostatnich wolnych dni przed studiami chciałbym zaprezentować moją ostatnią konstrukcję. Jest to mały przenośny barometr. Konstrukcja powstała na potrzeby osoby wrażliwej na zmiany ciśnienia oraz spełnia jej wymagania tzn. mały rozmiar( 20x40x9mm) oraz co się z tym wiąże - mobilność. W krótkim czasie planuję rozbudować urządzenie o pomiar temperatury oraz dodać funkcję pokazującą tendencję ciśnienia (wahania, spadek, wzrost).
Tak małe wymiary urządzenia udało mi się osiągnąć używając graficznego wyświetlacza z MP3 Creative muvo. Do tego wyświetlacza nie znalazłem żadnych informacji. Pinout wstępnie wypatrzyłem po ścieżkach na PCB odtwarzacza, a potem dokładniej zbadałem analizatorem stanów logicznych. Dzięki temu zabiegowi udało mi się uruchomić ten wyświetlacz oraz napisać program do jego obsługi. W konstrukcji wykorzystałem również pochodzącą z odtwarzacza folię elektroiluminescencyjną do podświetlania LCD oraz układ zasilający folię D355B i elementy powiązane z wyświetlaczem i jego podświetleniem. Do zalet tego wyświetlacza oprócz małych rozmiarów należy dobra widoczność w słońcu oraz przyjazne niebieskie podświetlenie. Jako czujnik ciśnienia zastosowałem sensor Freescale MLP3115A2 pracujący na magistrali I2C. Przy wyborze czujnika kierowałem się ceną (ok.5zł za szt. przy zamówieniu jako sample). Ponieważ maksymalne napięcie dla czujnika to 3.6V, a w pełni naładowany akumulatorek ma napięcie 4.2V zastosowałem stabilizator napięcia 3.3V TC1015 w obudowie SOT23-5. Zasila on wszystkie podzespoły oprócz przetwornicy zasilającej podświetlenie LCD i układu MCP73833. Przetwornica oparta na D355B zasilana jest wprost z akumulatorka, a MCP73833 pełni rolę ładowarki tego akumulatorka. Ładowanie odbywa się za pomocą zewnętrznej ładowarki do telefonów z napięciem wyjściowym 5V i ze złączem mikroUSB. Sam akumulatorek to jedna komora o pojemności 230mAh z układem zabezpieczającym od przeładowania, nadmiernego rozładowania oraz zbyt dużego prądu ładowania i rozładowania. Cały pakiet pochodzi z demontażu jakiegoś odtwarzacza mp3/4. Jako mikrokontroler zastosowałem AVR ATmega168PA w obudowie MLF. Układ ten zajmuje się odczytem wartości ciśnienia z MPL3115A2 i wyświetlaniem jej oraz pomiarem napięcia baterii, kontrolą podświetlenia i przycisku. Oprogramowanie zostało napisane w języku C w środowisku AVR Studio 5. Obecny kod da się zmieścić w mikrokontrolerze Atmega8 (a,l) lub w atmega88. Zastosowałem jednak uC z większą pamięcią flash, aby móc w przyszłości zrealizować dodatkowe funkcje opisane we wstępie. Obsługa LCD jest dość specyficzna - podzielony jest on na 4 bloki (8x96pix) oraz cały blok jest wysyłany jako jedna paczka danych. Sterowanie tego LCD realizuję przez stworzenie tablicy 4 wierszowej i 96kolumnowej w pamięci uC. Sama ta tablica zajmuje 384 z 1024 bajtów z dostępnej pamięci SRAM. Aby ograniczyć użycie pamięci SRAM, czcionki i grafiki przechowuję w pamięci EEPROM. Takie rozwiązanie nie spowalnia wyświetlania. Nie jest też widoczne migotanie lub inne niedogodności przy wyświetlaniu, ponieważ dane do wyświetlenia są buforowane, a następnie wysyłane po SPI dużymi blokami. Wyświetlacz utrzymuje przesłane dane w pamięci swojego kontrolera. Pomiar ciśnienia jest stabilny, więc nie jest potrzebne częste odświeżanie. Odświeżanie jest realizowane co ok. 250ms. Pomiar ciśnienia jest bardzo prosty i sprowadza się od odczytania 3bajtów z czujnika, potem przesunięcie bitowe i podział przez 100 aby uzyskać wynik w hPa. Pomiar napięcia baterii jest wykonywany przez wewnętrzny przetwornik ADC. Konieczne było zastosowanie dzielnika, ponieważ Vref wew. dla ATmegi168PA to 1.1V. Wykrywanie ładowarki jest sygnalizowane zarówno przez diody LED połączone z układem MCP73833, który jest niezależny od mikrokontrolera jak i przez ikonę na LCD. Ikona na LCD jest wyzwalana przerwaniem. Podobnie przerwaniem zrealizowane jest włączanie barometru. Po krótkim wciśnięciu barometr się włączy, ale jeśli przycisk przytrzymamy dłużej to włączy się też podświetlenie. Barometr podczas spoczynku jest usypiany. Po wybudzeniu spowodowanym przerwaniem następuje włączenia wyświetlacza i czujnika ciśnienia. Po zakończeniu działania wyświetlacz i czujnik ciśnienia są przechodzą w tryb zmniejszonego poboru prądu. Również układy wewnętrzne uC zostają wyłączone (TWI, SPI). W celu zmniejszenia poboru prądu uC pracuje na wewnętrznym oscylatorze 1MHz (8MHz z włączonym dzielnikiem). Pobór prądu w stanie czuwania wynosi 0.8mA, podczas dokonywania pomiaru i wyświetlaniu 5mA, a z włączonym podświetleniem 18mA. Czas wyświetlania wyniku to ok. 12sec. w tym czasie pomiar jest aktualizowany co ok. 750ms. Czas przejścia z trybu czuwania do prezentacji pomiaru to ok. 500ms, jest on spowodowany czasem przełączenia się czujnika ciśnienia i czasem dokonania pierwszego pomiaru. Skrócenie tego czasu powoduje chwilowe pojawienie się śmieci na LCD w miejscu przeznaczonym na prezentację pomiaru. Wyświetlacz w pewnym stopniu można spersonalizować obracając wyświetlane dane o 180°. Może to być ułatwienie dla osób leworęcznych. Można też regulować kontrast wyświetlacza, ale ze względu na małe rozmiary urządzenia takie zmiany trzeba dokonywać na etapie kompilacji programu. Jeszcze nie dysponuję informacją na jak długo starcza w pełni naładowany akumulator.

Płytka dwustronna została zaprojektowana w programie Eagle według powyższego schematu i wykonana samodzielnie w domu metodą fotochemiczną. Większość elementów biernych ma rozmiar 0603 i 0402. Ze względu na małe elementy płytka była częściowo lutowana z pomocą pasty lutowniczej do smd. Czujnik ciśnienia i uC były wlutowane hot-airem. LCD jak i podświetlenie jest wrażliwe na temperaturę, to też zostały wlutowane w ostatniej kolejności.
Koszt wykonania tej konstrukcji to ok. 39zł
{
koszty wykonania PCB - 15zł
złącze uUSB - 3zł
uSwitch - 2zł
ATmega168PA - 15zł
MPL3115A2 - 5zł
drobnica - 4zł
reszta części z demontażu lub własnych zapasów - 0zł
}
Obecna wersja nie posiada obudowy. Obudowa będzie w kolejnej wersji. Aktualnie na LCD widoczny jest zalążek softu do drugiej wersji - informacja o stanie ciśnienia. Tymczasowo jest ona wpisana na stałe i nie powinna być brana pod uwagę przy odczytywaniu wartości ciśnienia. Funkcja ta wymaga dokładnego zastanowienia się, gdyż w przypadku urządzenia przenośnego należy zwrócić uwagę na znaczną zmianę ciśnienia wraz z wysokością, która można zakłócić pomiar. Również samą funkcję korygującą należy zrobić tak aby błąd przy korekcji nie nasiał się z czasem i aby zachować minimalny pobór prądu w stanie spoczynku. Sam czujnik ciśnienia może dostarczać danych w postaci ciśnienia jak i wysokości,co może być bardzo przydatne. Do kolejnej wersji będzie poprawione PCB - usunięte błędy, dodane miejsce pod elementy, które zapomniałem dodać na etapie projektowania,poprawione rozmieszczenie elementów oraz dodanie padów kontrolnych i ulepszone mocowanie akumulatorka. Rozważam też prezentację stanu ciśnienia metodą obrazkową (strzałki).
Jestem otwarty na konstruktywną krytykę. Jak by ktoś dysponował datasheet wyświetlacza lub kontrolera z wyświetlacza to byłbym wdzięczny za namiary. Obecnie bazuję tylko na "funkcjach" podpatrzonych analizatorem logicznym.
Dziękuję za uwagę i pozdrawiam
Michał




Cool? Ranking DIY