
Projekt powstał z czystej ciekawości… co można zrobić na Attiny13? Otóż można, i to dużo. W tym przypadku ten malec zmierzy nam napięcie, prąd, temperaturę, przeliczy, a wyniki w przystępny sposób pokaże na wyświetlaczu alfanumerycznym (typu HD44780). Jak by tego było mało, program został napisany w bascomie. Pomimo nietypowych rozwiązań, układ może z powodzeniem służyć jako tytułowy miernik do zasilacza w miejscach gdzie nie jest wymagana duża dokładność. Wymiary płytki to tylko 35mm x 16mm. Polecam osobom które do lampki RGB pchały mikrokontrolery wielkości atmega8

Zakres pomiaru napięcia to 0-99V z rodzielczością 0.1V, zrealizowany na dzielniku R/R. Zakres pomiaru prądu to 0-9.99A z z rodzielczością 10mA, zrealizowany na boczniku R 0.1 ohm. Napięcie odniesienia to wewnętrzne napięcie referencyjne 1.1V, przy prądzie 10A spadek napięcia wynosi aż 1V, ale w zamian mamy w miarę wysoką rozdzielczość w całym zakresie i brak potrzeby stosowania wzmacniacza operacyjnego (i tworzenia mu ujemnego napięcia zasilającego). Zakres pomiaru temperatury 0-99*C z rozdzielczością 0.1*C – sam pomiar zrealizowany na analogowym czujniku LM35. Oczywiście dzielnik R/R napięcia jak i bocznik pomiaru prądu należy dobrać tak aby nie przekroczyć napięcia referencyjnego 1.1V, a tym bardziej dopuszczalnego napięcia portu 5V.
Ustalanie zakresu pomiaru i klibracja:
Przede wszystkim dobrze jest wiedzieć w jakim zakresie napięcia miernik ma pracować, będzie dokładniejszy w mniejszym (potrzebnym) zakresie, a mniej dokładny w wiekszym (którego przecież nie wykorzystamy). Aby to ustawić należy obliczyć dzielnik napięcia. Przykładowo dla uzyskania pomiaru do 10V, dzielnik powinien wynosić 1/10 (mnożymy x 10 ponieważ napięcie wejściowe będzie 10 razy większe od referencyjnego 1V), dla 30V będzie to 1/30 itp. W takim przypadku rezystor R.DZIEL będzie wynosił 3Kohm, ale doliczając 2K5ohm potencjometr do kalibracji powinniśmy użyć rezystora ok 1K8ohm aby mieć pełną regulację. Następnie należy dostosować program do danego zakresu (przykładowo 30V). Nasze 30V mnożymy przez 640, a wynik dzielimy przez 1023. Uzyskaną liczbę w przybliżeniu wpisujemy na początku programu do stałej const napiecie a program kompilujemy (standardowo jest to zakres 100V, R.DZIEL wynosi wtedy 8K2ohm). Pomiar prądu również możemy dostosować w podobny sposób, dać inny dzielnik, inny zakres i przeliczyć, ale nie będę już tego opisywał. Nie ma analogowej kalibracji temperatury bo wydała mi się ona całkowicie zbędna. Temperaturę dobrałem doświadczalnie w programie, odpowiada za to stała const temp. Rezystor 1K pomiędzy GND a wyjściem czujnika ustawia jego prąd, można go zmniejszyć nawet do 100ohm ale należy liczyć się z tym że czujnik zacznie się grzać i wprowadzać błąd.
Wady:
Tak prosty układ ma oczywiście swoje wady. Pierwszy rezystor dzielnika jest stały i powinien wynosić 100ohm. Tutaj wyjaśnie problem używania tych samych pinów do obsługi LCD i pomiaru ADC… Linie LCD w stanie wejścia wymagają ok. 80uA prądu aby je ściągnąć całkowicie do GND, decydują o tym wewnętrzne pullupy. Rezystor dzielnika 100ohm nie ściągnie oczywiście tej linii tak jak trzeba, pozostawiając około 7mV względem GND – i jak nie trudno się domyśleć przetwornik taką wartość odczyta (ok. 7/1023). Ponieważ zastosowanie rezystora o jeszcze większym oporze nie wchodziło w grę – z powodu zbyt dużego obciążenia portu podczas wysyłania danych do LCD – najprostszym sposobem okazało się zwykłe odejmowanie tych 7mV w programie (stała const pullup). I tutaj dochodzimy do sedna, wyniki pomiarów nie będą idealnie liniowe, szczególnie w zakresie 0-5V kiedy wyświetlacz wprowadza błąd pomiarowy. Drugi problem to pomiar prądu, bez wzmacniacza operacyjnego nie można się pokusić o odpowiednią regulację – prąd możemy regulować tylko “w dół”, czyli to co odłoży nam się na boczniku możemy ściągnąć jeszcze do GND potencjometrem 10K – i tutaj uwaga, wpływ na regulację prądu ma znowu pullup wyświetlacza więc należałoby trochę tutaj poeksperymentować przez wlutowaniem elementów, być może będzie trzeba dać potencjometr o szerszym zakresie, lub jeśli napięcie odkładające się na boczniku będzie za małe, podnieść nieco wartość stałej const prąd w programie. Program tiny13lcd_9_64-sample wykonuje 64 próbki dla każdego pomiaru i wyświetla średnią. Dodatkowo wyświetlane wartości nie przekroczą 999 i wyświetlanie się nie rozjedzie.

Co i jak:
Do punktu V+ na płytce dołączamy napięcie które chcemy mierzyć, do punktu GND dołączamy wejście masy zasilacza, a do punktu V- dołączamy wyjście masy (pomiar odbywa się na masie). Między punkty GND a V- dołączamy bocznik. Zasilanie dla układu pobierane jest z punktu V+ poprzez stabilizator typu 7805. Na płytce jest miejsce na stabilizator w obudowie TO252, ale z powodzeniem można użyć stabilizatora 78L05 w obudowie TO92 (układ wraz z podświetleniem LCD pobiera około 35mA). To stabilizator decyduje o tym jakie maksymalne napięcie możemy podać do punktu V+, dla zwykłego 7805 będzie to do 35V, dla 78L05 będzie na pewno mniejsze, nie więcej jak 30V. Aby mierzyć większe napięcia, układ należy zasilić oddzielnie – po stronie druku należy przerwać ścieżkę pod potencjometrem regulacji napięcia a zasilanie podać do punktu ZAS. Układ współpracuje z wyświetlaczem o organizacji 16*1 pól ze sterownikiem HD44780 lub kompatybilnym, do demonstracji zastosowałem wyświetlacz 16*2. Płytka jest dostosowana tak aby można było ją podlutować pod wyświetlacz, w prezentacji do połączenia użyłem taśmy ATA bo nie miałem wyświetlacza bez pinów.
Fusebity:
Należy ustawić pin reset jako zwykły pin (włączyć fusebit RSTDISBL) – UWAGA! – przed wykonaniem tej czynności upewnij się 10 razy że odpowiednio zaprogramowałeś procesor i wszystko dobrze ustawiłeś, bo po wyłączeniu resetu nie będziesz miał już dostępu do procesora zwykłym programatorem! Program zoptymalizowałem najlepiej jak mogłem, w chwili obecnej zajmuje 1020 bajtów. Źródła jak zawsze są u mnie dostępne, jeśli ktoś zechciałby napisać ten program w C to proszę bardzo









Filmik, jeszcze z pierwszej wersji programu który nie wykonywał wielu próbek i nie wyświetlał średniej. Druga wersja nie posiada ustawień i domyślnie mierzy w zakresach 0-100.
W załączniku niezbędne pliki.
Cool? Ranking DIY