W ósmej części publikacji KickStart omówione są sposoby tworzenia i wykorzystania wyjść analogowych w układach opartych na prostych mikrokontrolerach.
Przetworniki analogowo-cyfrowe i cyfrowo-analogowe (odpowiednio ADC i DAC) zapewniają możliwość połączenia cyfrowego świata mikrokontrolerów z zewnętrznym światem analogowym. Większość mikrokontrolerów zawiera wbudowane układy ADC, niestety, nie można tego powiedzieć o ich odpowiednikach DAC. Jest to przedstawione w tabelach 1 i 2, w których porównane zostały właściwości przetworników ADC/DAC wbudowanych w trzy najpopularniejsze moduły z mikrokontrolerami.
Zastosowanie techniki PWM
Jak wynika z tabeli 2, większość tanich mikrokontrolerów nie zawiera przetwornika cyfrowo-analogowego. Zamiast tego stosowane są układy oparte na technice PWM, gdzie średnia wartość ciągu impulsów prostokątnych stanowi analogową reprezentację napięcia wyjściowego.
Na rysunku 2a przedstawiony jest przebieg prostokątny o współczynniku wypełnienia równym 50%. Średnia wartość tego przebiegu będzie wynosić dokładnie 50% jego wartości szczytowej. Przebieg prostokątny o współczynniku wypełnienia równym 25% i wartości średniej równej 25% jego wartości szczytowej. Na podobnej zasadzie przebieg będzie miał wartość średnią równą 75% jego wartości szczytowej. Prowadzi to do konkluzji, że zmieniając współczynnik wypełnienia impulsów prostokątnych można wytwarzać przebieg analogowy, mieszczący się w zakresie od zera do wartości szczytowej tych impulsów.
Technika PWM jest użyteczna dla niekrytycznych aplikacji i może być łatwo zastosowana w urządzeniach opartych na prostych mikrokontrolerach, nie zawierających przetworników cyfrowo-analogowych. Wszystkim, co jest wymagane do realizacji tego pomysłu jest garść dodatkowych komponentów, które uśrednią sygnał wyjściowy.
Elementy R1 i C1 tworzą prosty filtr dolnoprzepustowy zaś układ IC1 pełni rolę bufora o jednostkowym wzmocnieniu, o wysokiej impedancji wejściowej, zdolnego do tolerowania relatywnie niskiej rezystancji obciążającej jego wyjście. Ciąg zmodulowanych impulsów pobierany z wyjścia GP16 modułu Raspberry Pi Pico ma amplitudę równą 3,3 V, stąd napięcie wyjściowe na pinie 6 układu IC1 może zmieniać się w zakresie od 0 do 3,3 V.
Analogowe napięcie wyjściowe w układzie można łatwo regulować za pomocą zaledwie kilku wierszy kodu w języku Python. Na przykład poniższy kod wygeneruje analogowe napięcie wyjściowe równe 1 V: