Bu eğitimde FLEX sensörünü ATMEGA8 mikro denetleyici ile arayüzleyeceğiz. ATMEGA8'de bu işi yapmak için 10bit ADC (Analogdan Dijitale Dönüştürme) özelliğini kullanacağız. Artık ATMEGA'daki ADC, + 5V'den fazla giriş alamaz.
Esnek Sensör nedir?
Bir FLEX sensör şekli değiştiğinde direncini değiştiren bir dönüştürücüdür. Aşağıdaki şekilde gösterilmiştir.
Bu sensör, doğrusallıktaki değişiklikleri algılamak için kullanılır. Bu nedenle FLEX sensörü büküldüğünde direnç büyük ölçüde bükülür. Bu, aşağıdaki şekilde gösterilmiştir.
Şimdi dirençteki bu değişikliği voltajdaki değişime dönüştürmek için bir voltaj bölücü devresi kullanacağız. Bu dirençli ağda bir sabit direncimiz ve diğer değişken direncimiz var. Aşağıdaki şekilde gösterildiği gibi, burada R1 sabit bir dirençtir ve R2 direnç görevi gören FLEX sensörüdür. Dalın orta noktası ölçüme alınır. Direnç R2 değiştiğinde, Vout onunla doğrusal olarak değişir. Yani bununla doğrusallıkla değişen bir voltajımız var.
Şimdi burada dikkat edilmesi gereken önemli nokta, kontrolör tarafından ADC dönüşümü için alınan girişin 50µAmp kadar düşük olmasıdır. Direnç bazlı gerilim bölücünün bu yükleme etkisi, gerilim bölücünün Vout'undan çekilen akım, hata yüzdesini arttırdığı için önemlidir, çünkü artık yükleme etkisi konusunda endişelenmemize gerek yok.
İki direnç alacağız ve bölücü bir devre oluşturacağız, böylece 25 Volt Vin için 5 Volt Vout elde ederiz. Yani gerçek giriş voltajını elde etmek için tek yapmamız gereken Vout değerini programdaki “5” ile çarpmak.
Gerekli Bileşenler
DONANIM: ATMEGA8, Güç kaynağı (5v), AVR-ISP PROGRAMMER, JHD_162ALCD (16x2LCD), 100uF kapasitör, 100nF kapasitör (5 adet), 100KΩ direnç.
YAZILIM: Atmel studio 6.1, progisp veya flash magic.
Devre Şeması ve Çalışma Açıklaması
ATMEGA8'in PORTD devresinde veri portu LCD'sine bağlanır. 16x2 LCD'de arka ışık varsa 16 pim vardır, arka ışık yoksa 14 pim olacaktır. Arka ışık pimlerine güç verebilir veya bırakabilirsiniz. Şimdi 14 pimde 8 veri pini (7-14 veya D0-D7), 2 güç kaynağı pini (1 ve 2 veya VSS ve VDD veya gnd ve + 5v), kontrast kontrolü için 3. pin (karakterlerin ne kadar kalın olması gerektiğini VEE kontrol eder) gösterilmektedir) ve 3 kontrol pini (RS & RW & E).
Devrede sadece iki kontrol pini aldığımı gözlemleyebilirsiniz. Kontrast biti ve READ / WRITE sık kullanılmadığından toprağa kısa devre yapılabilir. Bu, LCD'yi en yüksek kontrast ve okuma moduna getirir. Karakterleri ve verileri buna göre göndermek için sadece ENABLE ve RS pinlerini kontrol etmemiz gerekiyor.
ATmega8 ile LCD bağlantıları aşağıdaki gibidir:
PIN1 veya VSS Toprağa
PIN2 veya VDD veya VCC ila + 5v güç
PIN3 veya VEE to Ground (yeni başlayanlar için en iyi maksimum kontrastı verir)
UC'nin PB0'ına PIN4 veya RS (Kayıt Seçimi)
PIN5 veya RW (Okuma / Yazma) Toprağa (LCD'yi okuma moduna getirir, kullanıcı için iletişimi kolaylaştırır)
UC'nin PB1'ine PIN6 veya E (Etkinleştir)
UC'nin PIN7 veya D0 ila PD0'ı
UC'nin PIN8 veya D1 ila PD1'i
PIN9 veya D2 - uC'nin PD2'si
UC'nin PIN10 veya D3 ila PD3'ü
UC'nin PIN11 veya D4 ila D4'ü
UC'nin PIN12 veya D5 ila PD5'i
UC'nin PIN13 veya D6 ila PD6'sı
UC'nin PIN14 veya D7 ila PD7'si
Devrede 8 bit iletişim (D0-D7) kullandığımızı görebilirsiniz ancak bu zorunlu değildir, 4 bit iletişim kullanabiliriz (D4-D7) ancak 4 bit iletişim programı biraz karmaşık hale gelir, bu yüzden 8 bit ile gittik iletişim. (Ayrıca bu eğiticiye bakın: AVR mikro denetleyici ile 16x2 LCD arayüz oluşturma)
Bu nedenle, yukarıdaki tablodan sadece gözlemden, 10 pin LCD'yi, 8 pinin veri pini ve 2 pinin kontrol için olduğu kontrolöre bağlıyoruz.
R2 üzerindeki voltaj tamamen doğrusal değildir; gürültülü olacak. Gürültü kapasitörlerini filtrelemek için, şekilde gösterildiği gibi bölücü devredeki her direnç boyunca yerleştirilir.
Buradaki 1K pot, ADC'nin doğruluğunu ayarlamak içindir. Şimdi ATMEGA8'in ADC'sini tartışalım.
ATMEGA8'de PORTC'nin DÖRT kanalından herhangi birine Analog giriş verebiliriz, hangi kanalı seçersek seçelim, hepsi aynı olduğundan, PORTC'un kanal 0 veya PIN0'ını seçeceğiz.
ATMEGA8'de ADC 10 bit çözünürlüktedir, bu nedenle kontrolör minimum Vref / 2 ^ 10 değişimini algılayabilir, bu nedenle referans voltajı 5V ise her 5/2 ^ 10 = 5mV için bir dijital çıkış artışı elde ederiz.. Dolayısıyla, girişteki her 5mV artış için dijital çıkışta bir artış elde edeceğiz.
Şimdi ADC sicilini aşağıdaki şartlara göre ayarlamamız gerekiyor, 1. Öncelikle ADC'de ADC özelliğini etkinleştirmemiz gerekiyor.
2. Buradan ADC dönüşümü için maksimum giriş voltajı + 5V olacak. Böylece ADC'nin maksimum değerini veya referansını 5V'a ayarlayabiliriz.
3. Kontrolör, ADC dönüşümünün yalnızca harici bir tetiklemeden sonra gerçekleştiği anlamına gelen bir tetikleme dönüştürme özelliğine sahiptir, çünkü ADC'nin sürekli serbest çalışma modunda çalışması için yazmaçları ayarlamamıza gerek kalmaz.
4. Herhangi bir ADC için, dönüştürme frekansı (Analog değerden Dijital değere) ve dijital çıktının doğruluğu ters orantılıdır. Bu nedenle, dijital çıktının daha iyi doğruluğu için daha az frekans seçmemiz gerekir. Normal ADC saati için ADC'nin ön satışını maksimum değere (2) ayarlıyoruz. 1MHZ'nin dahili saatini kullandığımız için, ADC'nin saati (1000000/2) olacaktır.
Bunlar ADC'ye başlamak için bilmemiz gereken dört şey.
Yukarıdaki dört özelliğin tümü iki kayıt tarafından belirlenir:
KIRMIZI (ADEN): Bu bit, ATMEGA'nın ADC özelliğini etkinleştirmek için ayarlanmalıdır.
MAVİ (REFS1, REFS0): Bu iki bit, referans voltajını (veya vereceğimiz maksimum giriş voltajını) ayarlamak için kullanılır. Referans voltajı 5V olmasını istediğimiz için REFS0 tablo ile ayarlanmalıdır.
SARI (ADFR): Bu bit, ADC'nin sürekli çalışması için ayarlanmalıdır (serbest çalışma modu).
PINK (MUX0-MUX3): Bu dört bit, giriş kanalını söylemek içindir. ADC0 veya PIN0 kullanacağımız için, tablodaki gibi herhangi bir bit ayarlamamıza gerek yoktur.
BROWN (ADPS0-ADPS2): bu üç bit, ADC için ön skaler ayarlamak içindir. Prescalar 2 kullandığımız için, bir bit ayarlamalıyız.
KOYU YEŞİL (ADSC): bu bit, ADC'nin dönüşümü başlatması için ayarlanır. Dönüştürmeyi durdurmamız gerektiğinde bu bit programda devre dışı bırakılabilir.
FLEX sensörün ATmega8 ile arayüzlenmesi aşağıda verilen C kodunda adım adım açıklanmaktadır.