Schemat blokowy przetwornika pokazano na rysunku 1. Jego zasadniczymi elementami są drabinka rezystorów oraz analogowy multiplekser. Drabinka jest złożona z 256 oporników o rezystancji ok 600 V. Do ostatniego, górnego rezystora jest dołączony dodatni biegun napięcia referencyjnego określającego maksymalne napięcie na wyjściu przetwornika. Napięciem referencyjnym może być: napięcie zasilające mikrokontrolera (VDD), napięcie z zewnętrznego źródła doprowadzone do wejścia Vref+ oraz napięcie z modułu FVR_buffer2. Ujemny biegun napięcia referencyjnego jest na stałe dołączony do VSS (masa mikrokontrolera).
Umieszczenie typowego przetwornika C/A w mikrokontrolerze daje wiele korzyści. Po pierwsze. można go użyć w roli programowalnego napięcia referencyjnego dla wbudowanych modułów komparatora lub przetwornika A/C. Innym popularnym zastosowaniem jest wytwarzanie regulowanego napięcia referencyjnego w konstrukcjach zasilaczy sterowanych cyfrowo. Można w ten sposób regulować napięcie wyjściowe i/lub ograniczenie prądowe. Można go użyć jako generatora napięcia o kształcie sinusoidalnym czy o dowolnie innym kształcie, na przykład w zasilaczach arbitralnych.
Do obsługi przetwornika są generowane dwie funkcje – DAC1_Initialize() i DAC1_SstOutput(). Pierwsza z nich zapisuje rejestr konfiguracyjny zgodnie z tym, co ustawiliśmy w oknie MCC oraz wpisuje do rejestru sterującego wartość domyślną 0x33. Druga funkcja zapisuje 8-bitowy rejestr DAC1CON1 ustalający napięcie wyjściowe. Zależy ono od dwóch parametrów: napięcia referencyjnego i wartości zapisanej do rejestru DAC1CON1. Dla ustawienia napięcia referencyjnego równego VDD=3,3 V zmiana najmłodszego bitu rejestru sterującego spowoduje zmianę napięcia na wyjściu o około 3,3 V/254= 0,013 V. Gdybyśmy chcieli, aby napięcie wyjściowe miało wartość np. 1 V, to powinniśmy zapisać do rejestru DAC1CON1 liczbę 1/0,013=77. Oczywiście, z powodu niezbyt dużej rozdzielczości przetwornika i błędów wynikających z zaokrągleń do wartości całkowitych nie będzie można ustawić dokładnie tego napięcia. Wybranie napięcia referencyjnego o wartości na przykład 2,048 V z modułu FVR trochę poprawia sytuację. Zmiana najmłodszego bitu powoduje zmianę napięcia na wyjściu dokładnie o 2,048/256=0,008 V. To „dokładnie” wynika z tego, że wynik dzielenia nie musi być zaokrąglany do wartości całkowitej. Dla 1 V na wyjściu do rejestru DAC1CON1 trzeba wpisać 1/0,008=125. Tu również należy przypomnieć, że napięcie z modułu FVR jest ustawianie z dokładnością 1…2%. Reasumując, jeżeli napięcie na wyjściu przetwornika musi być dokładnie ustalone, to trzeba zastosować dokładne zewnętrzne napięcie referencyjne o wartości będącej jedną z potęg liczby 2 (1,024 V lub 2,048 V). W każdym wypadku trzeba wziąć pod uwagę dokładność samego konwertera wynoszącą maksymalnie ±1,5 LSB.
Teraz zmienimy napięcie referencyjne na 2,048 V dla przetworników A/C i C/A. Ustawiamy oba bufory FVR na wartość ×2 (1,012 V×2) oraz konfigurujemy napięcie referencyjne z FVR dla obu przetworników. Tę konfigurację pokazano na rysunku 5. Teraz trzeba ponownie przeliczyć współczynniki, aby wartości cyfrowe odpowiadały napięciu w woltach. Dla napięcia Vref=2,048 V i przetwornika C/A już wiemy, że trzeba wpisać do rejestru DAC1CON1 liczbę 128. Dla przetwornika A/C mamy zakres pomiarowy 2,048 V i rozdzielczość 10-bitową. Zmiana najmłodszego bitu odpowiada napięciu 2,048 V/1024=2 mV. Program testowy będzie teraz wyglądał, jak na listingu 2.
Wynik testowania przetwornika C/A pokazano na rysunku 6. Zmierzone przez przetwornik A/C napięcie ma wartość 1,002 V, czyli o 2 mV większą od spodziewanej. Zastosowanie napięcia referencyjnego o wartości równej potędze liczby 2 (211) spowodowało widoczne zwiększenie dokładności pomiaru. Oczywiście, trzeba tu uwzględnić dokładność samego napięcia z FVR i dokładność przetworników. Jednak dla dużej liczby praktycznych pomiarów napięcia oraz generowania napięcia przez moduł przetwornica C/A ta dokładność będzie bardziej niż wystarczająca. Bardzo dokładne napięcia będą wymagały dokładnych, kompensowanych temperaturowo źródeł referencyjnych oraz dokładniejszych, zewnętrznych przetworników.
Wzmacniacz operacyjny
Mikrokontroler PIC16F1619 nie ma wbudowanego modułu wzmacniacza operacyjnego i dlatego do jego testowania użyłem mikrokontrolera 16f1769 zamówionego za pomocą programu próbek Microchipa. Schemat blokowy jednego modułu wzmacniacza pokazano na rysunku 7. Do każdego z wejść wzmacniacza można doprowadzać sygnały analogowe poprzez programowany multiplekser. W najbardziej typowym układzie do wejść wzmacniacza można dołączyć wyprowadzenia mikrokontrolera OPAxINx+ i OPAxINx–. Poza tym, multiplekser może przyłączyć do wejść wzmacniacza wewnętrzne sygnały z wyjść przetwornika C/A, źródła napięcia referencyjnego FVR_buffer2 oraz z wyjścia generatora przebiegu piłokształtnego (Programmable Ramp Generator). Wejście odwracające można wewnątrz układu programowo połączyć z wyjściem i wzmacniacz zaczyna pracować jako bufor ze wzmocnieniem 1 (wtórnik).
T
Tomasz Jabłoński, EP
![]() |
![]() |
![]() |