Witam
Chciałbym przedstawić swój projekt nad, którym ostatnio pracowałem. Cała idea zrodziła się z potrzeby posiadania termometru. Potem doszły to tego inne pomysły, aby mierzyć takie wartości jak wilgotność i ciśnienie atmosferyczne. Ostatecznie powstał kombajn, który zapewnia sporą funkcjonalność.
Opis sprzętu
Jako główny mózg urządzenia został użyty dosyć czasowy juz mikrokontroler ATMEGA128. Program zajmuje praktycznie całą dostępną pamięć tj. około 120kB. Urządzenie zostało wyposażone w uproszczony port RS232 oraz moduł bluetooth (BTM-112), który zapewnia bezprzewodowe przesyłanie danych np. na komputer. Swego czasu podczas prac nad stacją powstał prosty program na HTC M3100(Windows Mobile 6), który był w stanie odebrać wysyłane dane oraz sterować dołączonym na czas testów przekaźnikiem, ale prace nad nim zostały wstrzymane. Stacja rejestruje ciągle dane z tej racji została wyposażona w kartę SD, która zapamiętuje wszystkie pomiary. Odczytem rezystancyjnego touch panela zajmuje się mikrokontroler, nie stosowałem dodatkowych układów. Sterowanie podświetlaniem oraz kontrastem przebiega za pomocą sygnałów PWM generowanych przez procesor. Układ RTC to DS1307, który służy również jako awaryjna pamięć, ale o tym później. Jako czujniki temperatury użyłem popularnych i bardzo fajnych czujników DS18B20. Można podłączyć trzy takie czujniki. Pomiar wilgotności dokonywany jest czujnikiem SHT11, napisałem własną bibliotekę do obsługi tego czujnika z uwzględnieniem obliczania sumy kontrolnej CRC. Jako czujnik ciśnienia wykorzystałem komponent MPXA6115. Testowo obsługiwany jest on poprzez wewnętrzny ADC, ale docelowo pomiar jego będzie dokonywany zewnętrznym dokładniejszym przetwornikiem. Zasilanie zapewnia prosta przetwornica impulsowa LM2675, którą cechuje wysoka sprawność. Napięcie 3.3V pozyskuje z stabilizatora LM1117-3.3. Całość zasilam z nie wielkiego zasilacza wtyczkowego.
Progam
Został napisany praktycznie od zera za wyjątkiem biblioteki obsługującej kartę SD tj. Fatfs. Powstał w środowisku WinAVR. Prace nad nim trwały od listopada 2010 aż do teraz. Zostały w sumie małe zabiegi kosmetyczne. Obsługa touch panela jest mojego autorstwa. Przy pracy z urządzeniem okazało się, że czasami gubiło ono obsługę przyciśniętego punktu. Sprawę rozwiązałem w taki sposób, że dodałem kolejkę "komunikatów". Cała obsługa touch panela znajduje się w przerwaniu. Jeśli mikrokontroler jest zajęty np. rysowaniem obrazka na ekranie, a w tym czasie przyciśniemy jakiś punkt na ekranie to zdarzenie to pomimo zajętości zostanie zapisane i odłożone w kolejce. Po skończonym zadaniu zawartość kolejki jest sprawdzana i w razie potrzeby są wykonywane odpowiednie działania. Kalibracja ekranu przebiega w czterech punktach, które należy dosyć precyzyjnie nacisnąć. Pomierzone nastawy są uśredniane i następuje obliczenie nastaw kalibracyjnych. Dokładność kalibracji wynosi ±1px. Do pomiaru położenia zastosowałem dodatkowo filtry medianowe, które poprawiają trochę dokładność pomiarów. Zapis na kartę dokonuje się co 6 minut. W tym czasie wszystkie pomiary są zapisywane do oddzielnych akumulatorów oraz zapamiętywana jest liczba pomiarów. Podczas zapisu obliczana jest średnia arytmetyczna i dokonywany jest zapis na kartę. W razie braku karty dane zapisywane są do pamięci NVRAM układu DS1307 i jak tylko karta znów zjawi sie w urządzeniu dokonywany jest ich zapis. Pamięć ta mieści maksymalnie trzy pomiary. W razie braku karty jakakolwiek próba odczytu wykresu zakończy się informacją No SD Card lub No file w wypadku braku odpowiedniego pliku. Istnieje także opcja, która pozwala na przeglądanie poprzednich zapisów, wysłanie ich poprzez RS232, bluetooth lub zapis na kartę jako plik BMP. Istnieje możliwość zmiany loga początkowego. Wystarczy w tym celu nagrać na kartę plik LOGO.BMP o odpowiednich wymiarach i w trybie monochromatycznym oraz ponownie uruchomić urządzenie. Podczas startu obrazek zostanie zgrany do pamięci EEPROM. Dzięki klawiaturze ekranowej można także podpisać każdy z czujników tak, aby po włączeniu wykresu było wiadomo, z którym czujnikiem mamy doczynienia. Narazie powstało oprogramowanie w języku angielskim jak widać. W najbliższym czasie nie przewiduje w tej sferze zmian.
Podsumowanie
Projekt spełnia wymagania, które mu postawiłem. Codziennie służy mi swoją pracą. W przygotowaniu jest już obudowa, mało brakuje do jej ukończenia. Możliwe w najbliższym czasie dopracuje ją.Informuje też, że nie przewiduje udostępnienia kodu źródłowego, schematu, płytki. Za to jeśli ktoś potrzebuje mogę jeśli będę w stanie służyć radą.
Pozdrawiam
Fajne? Ranking DIY