W handlu dostępne są testery, czasem w postaci zestawów do samodzielnego złożenia, pozwalające sprawdzić i przetestować działanie przetworników DAC i ADC. Większość z nich w wyniku starzenia elementów, po kilku latach stają się bez- lub małoużyteczne.
Zaproponowany w poniższym projekcie układ będzie działał poprawnie przez wiele dłuższy czas.
W naszym projekcie wykorzystano platformę Arduino. Stwarza to szerokie możliwości i łatwość programowania w zakresie software-u dla tego projektu. Pozwala się także przyjrzeć technice przetwarzania ADC i DAC w mikrokontrolerze ATmega 328P. Główną zaletą programowania w języku dla Arduino jest łatwość edytowania i korygowania błędów w szkicu-programie. Szerokie stosowanie platformy Arduino zaowocowało bogatymi narzędziami programistycznymi IDE, a upowszechnienie tej wiedzy stwarza łatwość tworzenia własnych „szkiców”.
Opis hardware-u układu i jego działanie
Zasadniczym elementem w tym układzie jest mikrokontroler ATmega 328P. Po magistrali I²C współpracuje on z wyświetlaczem alfanumerycznym LCD 4×20 znaków. W obsłudze wyświetlacza pośredniczy moduł MOD1 odbierający dane szeregowe z mikrokontrolera i umożliwiający aktualizowanie zawartości wyświetlacza w czasie rzeczywistym. Ponadto 8 dyskretnych diod LED pozwala na wyświetlenie 8-bitowego słowa, które w zależności od trybu pracy może być wyjściem lub wejściem. Pozostałe elementy to stabilizator 5-cio woltowy typu LM7805, dzielnik napięcia dla ustawienia analogowej wartości dla przetwornika ADC, 9 zwykłych diod 1N4148 oraz niewielka ilość elementów pasywnych takich jak rezystory i kondensatory.
W systemie użyto mikrokontrolera ATmega 328P z płytki Arduino Uno, który zawiera 6 przetworników ADC o rozdzielczości 10-cio bitowej oraz 6 8-bitowych przetworników DAC.
Od Red. EdW: Mikrokontroler ATmega 328P używany w płytce Arduino Uno nie posiada sześciu przetworników ADC, a co najwyżej 6 kanałów przetwornika ADC, które są przełączane (sam przetwornik ADC jest współdzielony). Ponadto ATmega 328P nie posiada przetworników DAC (cyfrowo-analogowych). Mikrokontroler ten umożliwia co najwyżej generowanie sygnałów zbliżonych do analogowych za pomocą modulacji PWM (szerokości impulsów), ale nie jest to przetwornik DAC.
Wyjściowy sygnał analogowy z DAC ma postać PWM, i jest to sygnał z modulacją szerokości impulsów.
Zastosowanie mikrokontrolera użytego na płytce Arduino pozwala na wykorzystanie oprogramowania Arduino IDE, które stało się najbardziej popularną, a przy tym dostępną nieodpłatnie, platformą do tworzenia software-u. Więcej informacji na temat Arduino i mikrokontrolera ATmega 328P można znaleźć na stronie www.arduino.cc. Dla nas istotne są przetworniki cyfrowo-analogowe dostępne w strukturze mikrokontrolera oraz wyjścia cyfrowe dostępne na platformie Arduino.
W obwodach zasilania wykorzystano transformator na napięcie przemienne sieci 230 V z symetrycznym uzwojeniem wtórnym 2×9 V. Napięcie pozyskiwane z użyciem transformatora prostowane jest na diodach D11 i D12, a następnie wartość szczytowa odzyskiwana jest na kondensatorach C1 i C2. Odfiltrowane napięcie stałe o wartości ok. 9 V stabilizowane jest za pomocą regulatora 7805. Z uwagi na zastosowanie diody D9 napięcie wyjściowe podbite jest o ok. 0,6 V do wartości 5,6 V. Ten zabieg zastosowano w celu umożliwienia dokładnego doregulowania Uref do wartości 5 V. Jako napięcie zasilania, wartość uzyskana z wyjścia stabilizatora 7805 jest ponownie obniżana o 0,6…0,7 V za pomocą diody D10. Tym samym zasilanie mikrokontrolera i modułu I²C pozostaje na poziomie nominalnej wartości +5 V.
Ewentualne szumy i tętnienia na linii zasilania filtrowane są kondensatorami C3, C4 i C5.
W obwodzie dzielnika napięcia dla ADC także oczekujemy 5 V. W celu precyzyjnego ustawienia tej wartości zastosowano dodatkowy potencjometr VR2. W celu zabezpieczenia wejścia ADC zastosowano diodę Zenera ZD1.
Nasz układ może pracować w dwóch trybach. Kiedy przełącznik S10 jest w pozycji ON, tester działa w trybie DAC (przetwarzanie cyfrowo-analogowe). Przełączenie S10 w pozycję OFF uruchamia tryb ADC testera. Diody LED1 do LED8 zastosowano w celu sygnalizowania danych, jakie generuje mikrokontroler w trybie ADC. Kiedy mikrokontroler generuje dane na wyjściach PD0…PD7, przyciski S1…S8 powinny być w pozycji wyłączonej. Załączenie któregoś z nich może skutkować zaświeceniem niewłaściwej diody LED. Natomiast diody D1…D8 pracują w charakterze zabezpieczenia, aby napięcie któregoś z wyjść portu PD nie przedostało się na wspólną linię zasilania w trybie DAC. Wyświetlacz alfanumeryczny 20×4 LCD oraz moduł I²C, który go obsługuje, zastosowano w celu wyświetlania dodatkowych danych generowanych przez software zarządzający testerem. Współpraca mikrokontrolera ATmega z modułem I²C odbywa się po magistrali szeregowej zgodnie z jej protokołem. Linia danych na MOD1 to A5, a linia zegara to A4. W ATmega 328P do pracy w trybie I²C skonfigurowano linie 4 i 5 portu PC.