11. ADC (Analog to Digital Converter)

Transkript

11. ADC (Analog to Digital Converter)
mikroC Dili ile Mikrodenetleyici Programlama Ders Notları
/
Dr. Serkan DİŞLİTAŞ
11. ADC (Analog to Digital Converter)
ADC (Analog Dijtal Çevirici) modülü, dahili ADC’ye sahip birçok AVR mikrodenetleyici
kullanılabilmektedir. Aşağıdaki şekilde ADC kullanımı için örnek bir bağlantı şeması görülmektedir.
ile
Şekil. ADC kullanımı için örnek bir bağlantı şeması
ADR_Read kütüphane fonksiyonu, Single-Ended modda kolay bir kullanım sağlamaktadır. MCU’ya bağlı
olarak 10 ya da 12 bit çözünürlükte unsigned veri tipinde değer geri döndürmektedir. Analog giriş kanal
sayısı da yine MCU’ya bağlı olarak değişebilmektedir. Atmega16 için A portunda A0-A7 olmak üzere
toplam 8 adet analog giriş mevcuttur.
AREF gerilim değeri ADC çözünürlük ile ilişkilidir. AREF=5V ve ADC 10 bit çözünürlükte ise; tasarlanan
sistemde ölçüm hassasiyeti 5/2 10=0.00488V olur.
Kütüphane Adı
ADC_Read
Prototip
Açıklama
unsigned ADC_Read (char channel);
MCU’ya bağlı olarak;
 Kanal sayısı değişkenlik gösterebilmektedir (A0, A1, … A7)

10-bit ya da 12-bit çözünürlükte unsigned veri.
unsigned
veri;
…
…
veri = ADC_Read (1); // A1 kanalından analog değer okuma
Örnek Kullanım
-69-
mikroC Dili ile Mikrodenetleyici Programlama Ders Notları
/
Dr. Serkan DİŞLİTAŞ
Örnek Uygulama 1
-70-
mikroC Dili ile Mikrodenetleyici Programlama Ders Notları
/
Dr. Serkan DİŞLİTAŞ
Laboratuvar Uygulaması : Mikrodenetleyici Analog Girişlerinin Kullanılması
Mikrodenetleyici Tabanlı Olarak LM35 Sensörü ile Sıcaklık Ölçümü uygulaması.
Devre Şeması
-71-
mikroC Dili ile Mikrodenetleyici Programlama Ders Notları
/
Dr. Serkan DİŞLİTAŞ
Mikrodenetleyici Kaynak Kodlar
/* ser_LM35.c : LM35 Sıcaklık Sensörü Uygulaması
Çalışma Gerilimi : 4-30V
Ölçüm aralığı
: -55 C ile 150 C arası
Çıkış Gerilimi
: Doğrusal olarak her 1 C için 10mV çıkış gerilimi üretir
Ölçüm Doğruluğu : Yaklaşık 0.5 C
*/
// LCD module connections
sbit LCD_RS at PORTD2_bit;
sbit LCD_EN at PORTD3_bit;
sbit LCD_D4 at PORTD4_bit;
sbit LCD_D5 at PORTD5_bit;
sbit LCD_D6 at PORTD6_bit;
sbit LCD_D7 at PORTD7_bit;
sbit LCD_RS_Direction at DDD2_bit;
sbit LCD_EN_Direction at DDD3_bit;
sbit LCD_D4_Direction at DDD4_bit;
sbit LCD_D5_Direction at DDD5_bit;
sbit LCD_D6_Direction at DDD6_bit;
sbit LCD_D7_Direction at DDD7_bit;
// End LCD module connections
// Değişken Tanımları ------------------------float T;
// Sıcaklıka
char *str_T = "
";
// Sıcaklık String
// LCD Hazırlık ------------------------------void LCD_Hazirla()
{
Lcd_Init();
// Initialize LCD
Lcd_Cmd(_LCD_CLEAR);
// Clear LCD display
Lcd_Cmd(_LCD_CURSOR_OFF); // Turn cursor off
}
// Sicakık Oku (LM35 - PortA - PA0) -----------------------------------float Sicaklik_Oku()
{
// T = (PA0 * 5/1023)/0.010
// 0.010 = 10mV
LM35 her 1C için 10mV üretir
return
(ADC_Read(0) * 5.0 / 10.23); // Doğrudan sıcaklık değeri elde edilir
}
// --------------------------------------------------------------------// -------------------------------------------// ANA GÖVDE ---------------------------------void main()
{
// LCD Hazırla
LCD_Hazirla();
for (;;)
// Sonsuz Çevrim
{
// Sıcaklık Oku
T = Sicaklik_Oku();
// Tip Dönüştür
float -> str
FloatToStr(T, str_T);
//LCD Yaz
Lcd_Out(1,1, "LM35 Uygulama ");
Lcd_Out(2,1, "T: ");
Lcd_Out(2,6, str_T);
Delay_ms(50);
}
}
-72-

Benzer belgeler