Niektóre linie mikrokontrolerów STM32 mogą pełnić rolę wyjść analogowych. W artykule przedstawiamy sposoby obsługi wbudowanych w mikrokontrolery 12-bitowych przetworników DAC.

Obsługa przetworników DAC

Przetworniki DAC (ang. Digital To Analog Converter – przetwornik cyfrowy-analogowo) służą do przetwarzania słowa cyfrowego na napięcie stałe lub sygnału cyfrowego na sygnał analogowy. Mikrokontrolery STM32F429ZIT6 zostały wyposażone w dwa przetworniki DAC o rozdzielczości 12 bitów. W bibliotece zestawu uruchomieniowego zostały przypisane im nazwy Channel0_PA4 oraz Channel1_PA5. Do obsługi przetworników DAC służy klasa AnalogOutput znajdująca się w przestrzeni nazw Microsoft.SPOT.Hardware. Do wpisania słowa 12-bitowego (od 0 do 4095) do przetwornika DAC służą dwie metody: Write() oraz WriteRaw(). Parametrem drugiej są słowa 12-bitowe, natomiast w przypadku metody Write() parametrem są zmienne typu double oznaczające stosunek wpisywanego słowa do maksymalnego (tj. 4095). Poniższy program ustawia połowę napięcia zasilania tj. 1,5 V na oba przetworniki za pomocą dwóch metod:

 

 

Generowanie fali sinusoidalnej za pomocą wbudowanego przetwornika DAC

Chociaż przetworniki DAC wykorzystuje się do zastosować stałoprądowych sterując cyfrowo blokiem analogowym, to jednak najważniejszym zastosowaniem jest przetwarzanie lub generowanie sygnałów. Za pomocą przetwornika DAC można zbudować prosty odtwarzacz audio. W poniższym przykładzie zostanie zaprezentowany sposób generowania fali sinusoidalnej. Maksymalny zakres generowanych sygnałów znajduje się między stanem niskim a wysokim włącznie. Stosując pełen zakres można jednak doprowadzić do lekkiego nasycenia sygnału i jego zniekształcenia. W ćwiczeniu przyjęto amplitudę 1 V i składową stałą równą 1,5 V dla generowanego sygnału, co można zapisać wzorem:

Uwzględniając rozdzielczość przetwornika oraz dzieląc okres sygnału na N części można zapisać pełen okres sygnału:

Kompletny program generujący falę sinusoidalną przedstawiono poniżej:

 

 

Na rysunku 1 przedstawiono przebiegi generowanego sygnału dla trzech wartości parametru N.

Rys. 1. Przykładowe przebiegi sinusoidalne, generowane przez przetwornik DAC

 

Ponieważ przetworzenie wartości cyfrowej na analogową zajmuje określoną ilość czasu częstotliwość generowanego sygnału jest większa dla mniejszej ilości podziału okresu, a mniejsza dla większej liczby N. Niestety stosowanie małej liczby podziału N powoduje, że sygnał generowany mocno odbiega od rzeczywistego sygnału. W celu zmniejszenia częstotliwości można wstawić opóźnienie w pętli for.

Krzysztof Gońka