Zrobiłem sobie zadajnik napięciowy z pomiarem.
Możliwości:
- ustawialne 2 kanały PWM w zakresie 0-4095
- jeden kanał wyjściowy z zakresem ok -2V5 - 2V5
- jeden kanał wyjściowy z zakresem ok 0V1 - 2V5
- pomiar na 3 wejściach: 2V5 25V 100V
- możliwość ustawienia trybu przetwornika
- max szybkości pomiaru: 50,25,10,5 smps (12,14,15,16 bit)
- komunikacja UART ustawiona na 57600, ale można w plikach zmienić
Polecenia są w formacie "#A opcje":
#A - nic nie rób
#B - ustaw PWM dla kanału: kanał, PWM
#D - ustaw przetwornik ADC: wzmocnienie, bit
#E - zmierz: kanal_U
#F - mierz i wysyłaj: kanal_U czas(ds)
#G - ustaw kolejne PWM z krokiem i mierz
#I - kalibracja: co kanal_U
#V - wersja
Szczegóły opcji oraz kalibracji w katalogu doc
Fotki:
Przykładowe użycie z konsoli:
(PWM 2 , pomiar 1, zakres pwm 0-4000 z krokiem 1000 w odstępie 500ms )
echo "#G 2 1 0 4000 1000 50" >> /dev/ttyS0 && cat /dev/ttyS0
2 0000 +0000586
2 1000 +0000586
2 2000 +0000586
2 3000 +0000586
2 4000 +0000586
Na końcu wysyłany jest znak końca transmisji.
Zadajnik działa w oparciu o mikrokontroler ATmega8.
Dwa wyjścia PWM po przefiltrowaniu podawane są na wzmacniacze operacyjne.
Natomiast pomiar odbywa się na przetworniku ADS1100.
Wprawdzie są to przetworniki 16 bitowe ale konstrukcja umożliwia korzystanie z zakresu o 1 bit mniej ze względu na podpięcie jednego wejścia na stałe do masy.
Stabilizacja w oparciu o LM385 lub LM336. Który przez stabilizator (npn i lm358) daje zasilanie na atmege i plus na wzmacniacze operacyjne.
Istnieje możliwość ustawienia innego zakresu bitowego przetwornika i uzyskanie szybszych wyników pomiaru. Możliwa też jest zmiana wzmocnienia, ale tutaj uwaga, standardowo działa on na wzmocnieniu 2, ponieważ zakres mierzonego napięcia jest od 0-2V5, natomiast przetwornik mierzy w zakresie ok 0-5V. Dla wzmocnienia 1 nie będzie wykorzystywał całego zakresu, a dla 4 i 8 zmocnienie będzie za duże.
Pomiar wyjścia PWM2. Różnice pomiędzy kolejnymi pomiarami:
Nie do końca rozumiem skąd bierze się błąd wynikający z opóźnienia ustalenia napięcia. Tzn podczas pomiaru w trybie 16 bitowym jest wolniejszy niż 12 bitowym. Zmiejszyłem stałe czasowe ale stabilizacja wyniku jakby się nie zmieniła.
Wady:
Niestety elektronika wejściowa jest nieprzemyślana do końca, miałem jakąś pomroczność podczas robienia układu wejściowego. I mogłoby to być lepiej zrobione. Niestety zrobiłem konfiguracje odwracającą, co sprawia że na wejście trzeba podać sygnał małej impedancji, inaczej dostaniemy błąd. Ja się początkowo tym nie przejmowałem ponieważ układ miał służyć tylko do ściągania charakterystyk i tam drobny błąd nie był istotny, ale można to zrobić lepiej stosując normalne konfiguracje dodatnią wzmacniacza.
W planach może zrobie automatyczne wykrywanie szybkości transmisji, oraz sposób prezentowania wyniku. Może poprawie kod na nieblokujący dla przetwornika adc.
Kod będzie dostępny na gitlabie: https://gitlab.com/trolsix/esem.git
Wrzucam schemat, pcb nie wrzucam ze względu na błędy.
W załączniku (zip lub gz) są także program w wersji 0.1.0 ze zródłami.
Fusebity ustawić na oscylator kwarcowy, boden i bodlevel.
low: 0x3f
high: 0xc9
--------------
Fajne? Ranking DIY