8-bitowe mikrokontrolery ADuC firmy Analog Devices w układach

Transkrypt

8-bitowe mikrokontrolery ADuC firmy Analog Devices w układach
Sławomir Marczak – III rok
Koło Naukowe Techniki Cyfrowej
Dr inŜ. Wojciech Mysiński – opiekun naukowy
8-bitowe mikrokontrolery ADuC firmy Analog Devices w układach pomiarowych
8-bit microcontrollers ADuC manufactured by Analog Devices in measurement
circuits.
Keywords: microcontroller, ADUC, measurement circuits, Analog Devices, 8052
Sława kluczowe: mikrokontroler, ADUC, układ pomiarowy, 8052
Mikrokontrolery ADuC firmy Analog Devices są rodziną mikrokontrolerów 8-bitowych,
których architektura wewnętrzna bazuje na znanym mikrokontrolerze 8052. Producent zadbał
szczególnie o moŜliwość ich zastosowania w precyzyjnych systemach pomiarowych. Obecnie
najwięcej zastosowań znajdują w systemach wagowych, czujnikach ciśnienia, pomiarach
temperatury, systemach akwizycji danych pomiarowych.
Rys. 1 Schemat blokowy architektury mikrokontrolera, na przykładzie ADuC845
Źródło – www.analog.com
Dzięki małemu poborowi mocy i niewielkim rozmiarom (8x8mm) moŜliwe jest stosowanie układu
takŜe w urządzeniach przenośnych zasilanych bateryjnie. Ich budowę wewnętrzną przedstawia
rysunek 1.
Mikrokontroler ten jest jednotaktowy, do jego taktowania stosowany jest kwarc
32.768kHz i dzięki wbudowanemu układowi PLL (Phase-locked loop) uzyskuję się częstotliwości
pracy 12 MHz. Jest on wyposaŜony w 62kB wbudowanej pamięci,2kB pamięci RAM. Posiada on
wbudowany czujnik temperatury o dokładności 2°C, a takŜe 16-bitowy generator PWM oraz 16bitowy przetwornik cyfrowo – analogowy. WyposaŜono go takŜe w dwa źródła prądowe o
wydajności 200uA kaŜde lub 400uA przy ich połączeniu. Jest ono bardzo uŜyteczne przy budowie
układów do dokładnego pomiaru temperatury opartych na czujnikach rezystancyjnych RTD, mogą
one mierzyć temperaturę z dokładnością do 0.02°C.
Zastosowania tego układu w precyzyjnych systemach pomiarowych umoŜliwia
wbudowany w strukturę układu 24-bitowy przetwornik analogowo – cyfrowy Sigma – Delta.
Układ ma moŜliwość pomiaru napięcia za pośrednictwem 10 multipleksowanych wejść
analogowych.
Układ posiada równieŜ dodatkowy przetwornik – pomocniczy o tej samej dokładności lecz o
mniejszej moŜliwości regulacji trybu pracy. PoniŜsza tabela przedstawia wybrane parametry
przetwornika analogowo cyfrowego na przykładzie układu ADuC845
Tab. 1 Wybrane parametry przetwornika analogowo – cyfrowego
Rozdzielczość
24-bity
Szybkość konwersji w trybie Chop On
5.4 – 105Hz
Szybkość konwersji w trybie Chop Off
16.06 – 1365Hz
Wbudowane napięcie odniesienia
1.25V ±1%
Dryft temperaturowy
±10nV/°C
Dokładność
±3uV
Przetwornik ten jest oparty na metodzie modulacji Sigma – Delta. W uproszczeniu zasadę
jego działania przedstawia Rysunek 2. Mierzone napięcie podawane jest na wejście odwracające
wzmacniacza operacyjnego, jednocześnie na wejście nieodwracające tego wzmacniacza jest
podawane napięcie z jednobitowego przetwornika cyfrowo – analogowego który znajduje się w
pętli sprzęŜenia zwrotnego. Następnie róŜnica tych dwóch sygnałów jest przekazywana na układ
całkujący (integrator) na którym jest ona zapamiętywana do chwili następnego pomiaru i
dodawana do wartości z poprzedniego pomiaru. Następnie trafia ona na wejście komparatora na
którym jest porównywana do zera. Jeśli jest ona mniejsza od 0V to na wyjściu układu pojawia się
logiczne 1, w przeciwnym wypadku na wyjściu tym jest logiczne 0. Stan ten jest wyjściem układu
skąd jest przekazywany na zespół filtrów cyfrowych których zadaniem jest zmniejszenie zakłóceń
wprowadzanych przez przetwornik. Wyjście z komparatora jest jednocześnie wejściem
jednobitowego przetwornika cyfrowo – analogowego.
Rys. 2 Uproszczony schemat przetwornika Sigma – Delta; źródło – www.analog.com
Przetwornik analogowo – cyfrowy jest najczęściej wykorzystywanym układem
peryferyjnym tego mikrokontrolera, dlatego teŜ posiada on wiele trybów pracy w celu uzyskania
jak najlepszej dokładności pomiaru napięcia.
Podczas projektowania płytki drukowanej do budowanego układu pomiarowego
producent zaleca rozdzielenia masy cyfrowej oraz masy analogowej, oddzielne powinno być teŜ
napięcie zasilające. Dwa moŜliwe warianty podłączenia układu przedstawia rysunek 3 i 4.
W przypadku braku moŜliwości niezaleŜnego zasilania części analogowej i cyfrowej naleŜy
połączyć je poprzez rezystor i koralik ferrytowy którego zadaniem jest ochrona części analogowej
przed zakłóceniami powstającymi w części cyfrowej układu.
W celu eliminacji zakłóceń zaleca się takŜe maksymalne zmniejszenie częstotliwości
taktowania układu w chwili wykonywania pomiaru napięcia. Jest to moŜliwe dzięki zastosowaniu
generatora PLL. Wartość częstotliwości ustala się przez wpisanie słowa do rejestru PLLCON.
Rys. 3 Zasilanie układu z dwóch niezaleŜnych źródeł; źródło – www.analog.com
Rys. 3 Zasilanie układu z jednego źródła napięcia; źródło – www.analog.com
Przetwornik posiada dwa tryby wejścia mierzonego napięcia: bipolarny i
unipolarny. Wejścia te przedstawia rysunek 4. Maksymalne wartość mierzonego napięcia w
przypadku trybu bipolarnego wynosi 2.5V (mierzona w odniesieniu do masy analogowej
AINCON) i ±2.5V dla trybu unipolarnego.
Rys. 4 Wejście na mierzonego napięcia w trybie unipolarnym i bipolarnym
źródło – www.analog.com
Mikrokontrolery rodziny AduC zostały dodatkowo wyposaŜone w sprzętową obsługę
protokołu SPI i I2C (dla I2C tylko w trybie slave tryb master jest programowy). Został on takŜe
wyposaŜony w dodatkowy zegar TIC (Time Interval Counter) który potrafi zliczać od 0 do 255
godzin z dokładnością do 1/128 s, posiada on takŜe moŜliwość generowania przerwań. MoŜe on
zliczać czas ciągle lub odmierzać zadane odcinki czasu.
W przypadku zastosowania mikrokontrolera w układach akwizycji danych pomiarowych
waŜna jest moŜliwość współpracy z zewnętrzną pamięcią. W przypadku AduC producent
umoŜliwił adresowanie do 16MB pamięci. Uzyskano to dzięki adresowaniu pamięci zewnętrznej
trzema bajtami (w przypadku standardowego mikrokontrolera 8052 do adresowania
wykorzystywano dwa bajdy). Adres komórki pamięci zewnętrznej jest przechowywany w 3
rejestrach DPP, DPH i DPL. Taki tryb adresowania wymaga zastosowania dwóch zewnętrznych
zatrzasków. Schemat takiego podłączenia przedstawia rysunek 5.
Rys. 5 Sposób podłączenia pamięci zewnętrznej o rozmiarze 16MB
źródło – www.analog.com
Firma Analog Devices dodatkowo na swojej stronie internetowej udostępnia bezpłatne
oprogramowanie do programowania układu za pośrednictwem portu szeregowego, nie wymaga to
stosowania specjalnych programatorów. Do zaprogramowania mikrokontrolera wystarczy
komputer PC i układa konwertera napięć ze standardu RS232 do TTL. Dzięki pełnej zgodności
architektury wewnętrznej jest moŜliwe tworzenie oprogramowania w standartowych
kompilatorach do mikrokontrolerów 8051. Wsparcie przy tworzeniu oprogramowała zapewniła
firma Keil, program uVision2 i uVision3 umoŜliwiają pełną symulację wszystkich jego układów
peryferyjnych. Wygląd tego środowiska programistycznego przedstawia Rysunek 6.
Rys. 6 Przykład wyglądu programu Keil uVision2
Przykład programu napisanego w języku C w programie uVision2 przedstawia Listing 1.
Po uruchomieniu wprowadza się częstotliwość próbkowania i ilość uśrednień. Cały program
wykonywany jest w pętli przerwania przetwornika ADC pętla główna programu jest pusta.
Po wykonaniu pomiaru wartość zmierzonego napięcia jest przesyłana przez łącze szeregowe wraz
z dokładnym czasem pomiaru.
#include <stdio.h>
#include <ADuC845.h>
#define U_REF 2.56
union {
unsigned long napiecie;
struct {
unsigned char ADC_0;
unsigned char ADC_H;
unsigned char ADC_M;
unsigned char ADC_L;
}bajty;
}nap;
double U;
unsigned long temp,Usr;
unsigned int sr,f,i;
void konfiguracja(void)
{
do
{
printf("Podaj częstotliwosc próbkowania 17-1365Hz:\n");
scanf("%d",&f);
}
while (f<17 || f>1365);
do
{
printf("Uśrednianie co : 1-20\n");
scanf("%d",&sr);
}
while (sr<1 || sr>20 );
SF=4096/f;
// Fadc=(1/(8*SF))*32678Hz
f=4096/SF;
printf("Częstotliwosc próbkowania: %d, uśrednianie: %d\n\n\n\n",f,sr);
}
void INT_ADC (void) interrupt 6
//przerwanie przetwornika AC
{
nap.bajty.ADC_0=0x00;
//odczyt zmierzonego napięcia
nap.bajty.ADC_H=ADC0H;
nap.bajty.ADC_M=ADC0M;
nap.bajty.ADC_L=ADC0L;
if (i<sr)
{
temp+=nap.napiecie;
i++;
}
else
{
Usr=temp/sr; //obliczenie wartości sredniej napiecia
temp=0;
U = (U_REF*Usr)/0x1000000;
//U=(ADC*U_REF)/2^24 [V]
printf("%d:%d:%d:%d U=%#.6f V\n",(int)HOUR,(int)MIN,(int)SEC,(((int)HTHSEC*50/64)),U);
// 01:02:03:88 U=1.123456 V
i=0;
}
RDY0=0; //zerowanie flagi przerwania AC
}
void main (void)
{
EA=0;
PLLCON=((PLLCON&0xf0)||01);
// f=6.2MHz
TIMECON=0x00;
// ustawienie TIC w stan ciągłego odlicznia bez przerwań
HTHSEC=0x00;
SEC=0x00;
MIN=0x00;
HOUR=0x00;
TH1=0xFD;
szeregowego
T3CON = 0x81;
T3FD = 0x12;
SCON = 0x52;
ADC0CON1 = 0x2f;
ADC0CON2 = 0x40;
ADCMODE = 0x2b;
RDY0=0;
EADC=1;
konfiguracja();
TIMECON=0x19;
EA=1;
while(1)
{
}
//konfiguracja portu
//UART: 19200
//Mode 1: 8-bit UART
//tryb wspólnej masy Uref=2.56
//REFIN+, Ustawienie multiplexera AIN1-AINCOM
//uruchomienie głównego przetwornika AC, konwersja ciągła
//zerowanie flagi przerwania ADC
//start TIC
//Pętla główna programu
}
Listing 1. Przykład programu w języku C dla mikrokontrolera AduC845
LITERATURA
[1] Analog Devices AduC8xx family user’s guide. 2005; www.analog.com

Podobne dokumenty