İçindekiler:

AVR (ATMEGA32) MCU KULLANILAN KIZILÖTESİ UZAKTAN KONTROLLÜ ROBOCAR: 5 Adım
AVR (ATMEGA32) MCU KULLANILAN KIZILÖTESİ UZAKTAN KONTROLLÜ ROBOCAR: 5 Adım

Video: AVR (ATMEGA32) MCU KULLANILAN KIZILÖTESİ UZAKTAN KONTROLLÜ ROBOCAR: 5 Adım

Video: AVR (ATMEGA32) MCU KULLANILAN KIZILÖTESİ UZAKTAN KONTROLLÜ ROBOCAR: 5 Adım
Video: avr atmega32 lcd 128 64 2024, Temmuz
Anonim
AVR (ATMEGA32) MCU KULLANILAN KIZILÖTESİ UZAKTAN KONTROLLÜ ROBOCAR
AVR (ATMEGA32) MCU KULLANILAN KIZILÖTESİ UZAKTAN KONTROLLÜ ROBOCAR

Mevcut PROJE, çeşitli otomatikleştirilmiş insansız kontrol uygulamaları için kullanılabilen bir kızılötesi (IR) uzaktan kumandalı RoboCar'ın tasarımını ve uygulamasını açıklamaktadır. Uzaktan kumandalı RoboCar (sol-sağ/ön-arka hareket) tasarladım. Tüm sistem, kontrol sistemini daha akıllı ve diğer uygulamalar için değiştirmeyi kolaylaştıran mikro denetleyiciye (Atmega32) dayanmaktadır. Kullanıcının bir RoboCar'ı çalıştırmasını veya kontrol etmesini ve ana güç anahtarını yaklaşık 5 metre uzaklıktan çalıştırmasını sağlar.

Anahtar kelimeler: IR Dekoder, AVR (Atmega32) Mikrodenetleyici, TV uzaktan kumandası, Kablosuz iletişim

_

Adım 1: IntraRed İletişimi

Kızılötesi İletişim
Kızılötesi İletişim

IR İletişim ilkesi:

a) IR iletimi

Devresinin içindeki, kendisine verilen her elektrik darbesi için kızılötesi ışık yayan bir IR LED'in vericisi. Bu darbe, uzaktan kumandadaki bir düğmeye basıldığında üretilir, böylece devre tamamlanır ve LED'e sapma sağlanır. Önyargılı olan LED, basılan düğmeye karşılık gelen bir dizi darbe olarak 940 nm dalga boyunda ışık yayar. Ancak IR LED ile birlikte biz insanlar, ampuller, güneş vb. gibi diğer birçok kızılötesi ışık kaynağı olduğu için iletilen bilgilere müdahale edilebilir. Bu sorunun çözümü modülasyondur. İletilen sinyal, 38 KHz'lik bir taşıyıcı frekansı (veya 36 ila 46 KHz arasındaki herhangi bir başka frekans) kullanılarak modüle edilir. IR LED, darbe süresi boyunca bu frekansta salınacak şekilde yapılmıştır. Bilgi veya ışık sinyalleri darbe genişliği modülasyonludur ve 38 KHz frekansında bulunur. Kızılötesi iletim, elektromanyetik radyasyon spektrumu bölgesinde, görünür ışıktan daha uzun, ancak radyo dalgalarından daha kısa dalga boylarında enerjiyi ifade eder. Buna uygun olarak, kızılötesi frekanslar mikrodalgalarınkinden daha yüksek, ancak görünür ışığınkinden daha düşüktür. Bilim adamları kızılötesi radyasyon (IR) spektrumunu üç bölgeye ayırır. Dalga boyları mikron (sembolize edilmiş µ, 1 µ = 10-6 metre) veya nanometre (1 nm = 10-9 metre = 0,001 5 olmak üzere kısaltılmış nm) cinsinden belirtilir. Yakın IR bandı, görünür olana en yakın dalga boyları aralığında, yaklaşık 0.750 ila 1.300 5 (750 ila 1300 nm) arasında enerji içerir. Ara IR bandı (orta IR bandı da denir) 1.300 ila 3.000 5 (1300 ila 3000 nm) aralığındaki enerjiden oluşur. Uzak IR bandı 2.000 ila 14.000 5 (3000 nm ila 1.4000 x 104nm) arasındadır.

b) Kızılötesi Alımı

Alıcı, üzerine ışık geldiğinde bir çıkış elektrik sinyali geliştiren bir foto detektörden oluşur. Dedektörün çıkışı, taşıyıcı frekansın (bu durumda 38 KHz) altındaki veya üstündeki tüm frekansları atan dar bantlı bir filtre kullanılarak filtrelenir. Filtrelenen çıktı daha sonra bir Mikrodenetleyici veya bir PC veya bir Robot gibi cihazları kontrol eden bir Mikroişlemci gibi uygun cihaza verilir. Filtrelerden gelen çıkış, darbeleri okumak için Osiloskopa da bağlanabilir.

IR Uygulamaları:

Kızılötesi çeşitli kablosuz iletişim, izleme ve kontrol uygulamalarında kullanılır. İşte bazı örnekler:

· Ev-eğlence uzaktan kumanda kutuları

· Kablosuz (yerel alan ağları)

· Dizüstü bilgisayarlar ve masaüstü bilgisayarlar arasındaki bağlantılar

· Kablosuz modem

· İzinsiz giriş dedektörleri

· Hareket dedektörleri

· Yangın sensörleri

· Gece görüş sistemleri

· Tıbbi teşhis ekipmanı

· Füze güdüm sistemleri

· Jeolojik izleme cihazları

IR verilerinin bir cihazdan diğerine iletilmesi bazen ışınlama olarak adlandırılır.

Adım 2: IR Sensörü ve NEC Protokolü Fromat

IR Sensörü ve NEC Protokolü Fromat
IR Sensörü ve NEC Protokolü Fromat
IR Sensörü ve NEC Protokolü Fromat
IR Sensörü ve NEC Protokolü Fromat
IR Sensörü ve NEC Protokolü Fromat
IR Sensörü ve NEC Protokolü Fromat
IR Sensörü ve NEC Protokolü Fromat
IR Sensörü ve NEC Protokolü Fromat

IR sensörleri(Şekil1)

TSOP1738, SFH-5110-38 (38kHz)

TSOP sensörleri Özellikler:

  • Preamplifikatör ve foto dedektör, her ikisi de tek pakette
  • PCM frekansı için dahili filtre
  • Elektrik alanı bozulmasına karşı geliştirilmiş koruma
  • TTL ve CMOS uyumluluğu
  • Çıkış aktif düşük Düşük güç tüketimi
  • Ortam ışığına karşı yüksek bağışıklık
  • Sürekli veri aktarımı mümkün

NEC Protokolü:

NEC IR iletim protokolü, mesaj bitlerinin darbe mesafesi kodlamasını kullanır. Her darbe patlaması, 38kHz (26.3µs) taşıyıcı frekansında 562.5µs uzunluğundadır. Mantıksal bitler aşağıdaki gibi iletilir (Şekil 2):

  • Mantıksal '0' – 562.5µs darbe patlaması ve ardından 562.5µs boşluk, toplam 1.125ms iletim süresi
  • Mantıksal '1' – 562.5µs darbe patlaması ve ardından 1.6875ms boşluk, toplam 2.25ms iletim süresi

Taşıyıcı darbe 38 kHz'de 21 döngüden oluşur. Darbeler, akım tüketimini azaltmak için genellikle 1:4'lük bir işaret/boşluk oranına sahiptir:

(Şekil 3)

Her kod dizisi, AGC darbesi olarak bilinen 9 ms'lik bir darbe ile başlar. Bunu 4,5 ms'lik bir sessizlik izler:

(Şek4)

Veriler daha sonra 32 bit, 16 bitlik bir adres ve ardından 16 bitlik bir komuttan oluşur ve iletildikleri sırayla (soldan sağa) gösterilir:

(Şek5)

Dört baytlık veri bitlerinin her biri önce en az anlamlı bit gönderilir. Şekil 1, 00h(00000000b) adresi ve ADh (10101101b) komutu için bir NEC IR iletim çerçevesinin formatını gösterir.

Bir mesaj çerçevesini iletmek için toplam 67,5 ms gerekir. 16 bitlik adresi (adres + ters) ve 16 bitlik komutu (komut + ters) iletmek için 27ms gerekir.

(Şek6)

Çerçeveyi iletmek için gereken süre:

Adres için 16 bit (adres + ters) iletim süresi için 27ms gerektirir ve komut için 16 bit (komut + ters) iletim süresi için 27ms gerektirir. çünkü (adres + adresin tersi) veya (komut+komutun tersi) her zaman 8 '0' ve 8 '1 içerir, yani (8 * 1.125ms) + (8 * 2.25ms) == 27 ms. buna göre çerçeveyi iletmek için gereken toplam süre (9ms +4.5ms +27ms+27ms) = 67.5 ms'dir.

TEKRAR KODLARI: Uzaktan kumandadaki tuş basılı tutulursa, mesajın sonunu belirten darbe patlamasından yaklaşık 40 ms sonra bir tekrar kodu verilir. Anahtar nihayet serbest bırakılıncaya kadar 108 ms aralıklarla bir tekrar kodu gönderilmeye devam edecektir. Tekrar kodu sırasıyla aşağıdakilerden oluşur:

  • 9ms önde gelen darbe patlaması
  • 2.25ms boşluk
  • boşluğun sonunu (ve dolayısıyla iletilen tekrar kodunun sonunu) işaretlemek için bir 562.5µs darbe patlaması.

(Şek7)

Gecikme Hesabı (1ms):

Saat Frekansı=11.0592 Mhz

Makine Döngüsü = 12

Gecikme=1ms

TimerValue= 65536 - ((Gecikme * Saat Frekansı)/Makine Döngüsü)=65536-((1ms * 11.0592Mhz)/12)

= 65536 - 921= 0xFC67

Adım 3: L293D Kullanarak DC Motor Kontrolü

L293D Kullanarak DC Motor Kontrolü
L293D Kullanarak DC Motor Kontrolü

DC motoru

Bir DC motor, elektrik enerjisini birçok faydalı iş yapmak için kullanılabilecek mekanik enerjiye dönüştürür. RoboCar'ımın İleri Git/Geri Sözü gibi mekanik hareketler üretebilir. DC motorlar 6V ve 12V gibi çeşitli derecelerde gelir. İki teli veya pimi vardır. Girişin polaritesini tersine çevirerek dönüş yönünü tersine çevirebiliriz.

Burada 600mA değeri küçük DC motorları sürmek için iyi olduğundan ve IC'nin kendisinde koruma diyotları bulunduğundan L293D'yi tercih ediyoruz. Her bir pinin açıklaması aşağıdaki gibidir: Enable pinleri: Bunlar pin no'dur. 1 ve pin no. 9. Pim no. 1, Half-H sürücüsü 1 ve 2'yi etkinleştirmek için kullanılır (Sol tarafta H köprüsü). Pin numarası 9, H köprüsü sürücüsü 3 ve 4'ü etkinleştirmek için kullanılır (sağ tarafta H köprüsü).

Konsept basittir, belirli bir H köprüsü kullanmak istiyorsanız, IC'ye giden güç kaynağı ile birlikte ilgili etkinleştirme pinlerine yüksek bir mantık vermeniz gerekir. Bu pin aynı zamanda PWM tekniği kullanılarak motorun hızını kontrol etmek için de kullanılabilir. VCC1 (Pin 16): Güç kaynağı pini. 5V kaynağına bağlayın. VCC2 (Pin 8): Motor için güç kaynağı. Motor değerine göre + ve voltaj uygulayın. Motorunuzu 12V ile sürmek istiyorsanız bu pin üzerine 12V uygulayınız.

Devreye güç sağlamak için kullanılandan başka bir akü üzerinde motoru doğrudan sürmek de mümkündür, Sadece o akünün + ve ucunu VCC2 pinine bağlayın ve her iki akünün GND'sini ortak yapın. (Bu pindeki maksimum voltaj, veri sayfasına göre 36V'dur). GND (Pim 4, 5, 12, 13): Bunları devrenin ortak GND'sine bağlayın. Girişler (Pin 2, 7, 10, 15):

Bunlar, mikro denetleyiciler veya diğer devreler/IC'ler tarafından kontrol sinyallerinin verildiği giriş pinleridir. Örneğin, pin 2'de (1. yarı H sürücüsünün girişi) Mantık 1'e (5V) verirsek, 1. yarı H sürücüsünün karşılık gelen çıkış pininde VCC2'ye eşit bir voltaj alırız, yani pin no. 3. Benzer şekilde Lojik 0 (0V) için Pin 2'de, 0V Pin 3'te görünür. Çıkışlar (Pin 3, 6, 11, 14): Pinleri çıkışlar. Giriş sinyaline göre çıkış sinyali gelir.

Motor Hareketler A B

------------------------------------------------------------------------------------------

……………Dur: Düşük: Düşük

……Saat yönünde: Düşük: Yüksek

Saat yönünün tersine: Yüksek: Düşük

……………. Dur: Yüksek: Yüksek

Adım 4: Motor Sürücüsü ve IR Sensörü için Devre Şemaları

Motor Sürücüsü ve IR Sensörü için Devre Şemaları
Motor Sürücüsü ve IR Sensörü için Devre Şemaları
Motor Sürücüsü ve IR Sensörü için Devre Şemaları
Motor Sürücüsü ve IR Sensörü için Devre Şemaları
Motor Sürücüsü ve IR Sensörü için Devre Şemaları
Motor Sürücüsü ve IR Sensörü için Devre Şemaları

ATmega32, AVR ile geliştirilmiş RISCarchitecture'a dayalı düşük güçlü bir CMOS 8 bit mikro denetleyicidir. ATmega32, güçlü talimatları tek bir saat döngüsünde yürüterek, MHz başına 1 MIPS'ye yaklaşan çıktılara ulaşır ve sistem tasarımcısının işlem hızına karşı güç tüketimini optimize etmesine olanak tanır.

AVR çekirdeği, zengin bir komut setini 32 genel amaçlı çalışma kaydıyla birleştirir. Tüm 32 kayıt, doğrudan Aritmetik Mantık Birimi'ne (ALU) bağlıdır ve bu, bir saat döngüsünde yürütülen tek bir talimatta iki bağımsız yazmaca erişilmesine izin verir. Ortaya çıkan mimari, geleneksel CISC mikro denetleyicilerinden on kata kadar daha hızlı verim elde ederken kod açısından daha verimlidir.

ATmega32 aşağıdaki özellikleri sağlar:

  • 32 Kbyte Sistem İçi Programlanabilir Flash Program hafızası ile Okuma-Yazma yetenekleri,
  • 1024 bayt EEPROM, 2K bayt SRAM,
  • 32 genel amaçlı I/O hattı,
  • 32 genel amaçlı çalışma kaydı,
  • Boundaryscan için bir JTAG arayüzü,
  • Çipte Hata Ayıklama desteği ve programlama, karşılaştırma modlarına sahip üç esnek Zamanlayıcı/Sayaç, Dahili ve Harici Kesintiler, seri programlanabilir USART, bayt yönelimli İki telli Seri Arabirim, 8 kanallı,
  • Programlanabilir kazançlı isteğe bağlı diferansiyel giriş aşamasına sahip 10 bit ADC (yalnızca TQFP paketi),
  • Dahili Osilatörlü programlanabilir Watchdog Zamanlayıcı,
  • bir SPI seri bağlantı noktası ve
  • altı yazılımla seçilebilir güç tasarrufu modu.

    • Bekleme modu, USART'a izin verirken CPU'yu durdurur,
    • İki kablolu arayüz, A/D Dönüştürücü,
    • SRAM,
    • Zamanlayıcı/Sayaçlar,
    • SPI bağlantı noktası ve
    • Çalışmaya devam etmek için sistemi kesintiye uğratın.
    • Kapatma modu, kayıt içeriğini kaydeder ancak Osilatörü dondurur ve bir sonraki Harici Kesintiye veya Donanım Sıfırlamasına kadar diğer tüm çip işlevlerini devre dışı bırakır.
    • Güç tasarrufu modunda, Asenkron Zamanlayıcı çalışmaya devam ederek kullanıcının cihazın geri kalanı uyurken bir zamanlayıcı tabanını korumasını sağlar.
    • ADC Gürültü Azaltma modu, ADC dönüşümleri sırasında anahtarlama gürültüsünü en aza indirmek için CPU'yu ve Asenkron Zamanlayıcı ve ADC dışındaki tüm G/Ç modüllerini durdurur
    • Bekleme modunda, kristal/rezonatör Osilatörü, cihazın geri kalanı uyurken çalışır. Bu, düşük güç tüketimi ile birlikte çok hızlı başlatmaya izin verir.
    • Uzatılmış Bekleme modunda, hem ana Osilatör hem de Asenkron Zamanlayıcı çalışmaya devam eder.

Burada ilgili tüm devreler verilmiş ve ana devre(atmega32) de verilmiştir.

Adım 5: Avr Programları

Avr Programları
Avr Programları
Avr Programları
Avr Programları

1. "Uzaktan sensör" için:

#include #include

#include "uzak.h"

//Globals volatile unsigned int Zaman; //Ana zamanlayıcı, zamanı 10us'ta saklar, //ISR(TIMER0_COMP) tarafından güncellendi volatile unsigned char BitNo; //Bir sonraki BIT değişkeni imzasız karakterin konumu ByteNo; //Geçerli Baytın konumu

uçucu işaretsiz karakter IrData[4]; //Ir Paketinin Dört Veri Baytı ///2-Byte Adres 2-Byte Veri uçucu unsigned char IrCmdQ[QMAX];//Alınan Son Komut (Buffer)

uçucu imzasız karakter PrevCmd; //Tekrar için kullanılır

//Sadece bir tuşa belirli bir süre basıldıktan sonra tekrar etmeye başlamak için kullanılan değişkenler

uçucu imzasız karakter Tekrar; //1=yes 0=no volatile unsigned char RCount; // Tekrar sayısı

uçucu karakter QFront=-1, QEnd=-1;

uçucu imzasız karakter durumu; //Alıcının durumu

uçucu işaretsiz karakter Edge; //Kesinti kenarı [RISING=1 OR FALLING=0]

uçucu imzasız int stop;

/******************************************************** **************************************************/ /* İŞLEVLERBAŞLAR * / /******************************************************* ***************************************************/

geçersiz RemoteInit() {

karakter ben; for(i=0;i<4;i++) IrData=0;

dur=0; Durum=IR_VALIDATE_LEAD_HIGH; Kenar=0; tekrar = 0;

//Kurulum Zamanlayıcı1 //------------ TCCR0|=((1<

TİMSK|=(1<

OCR0=TIMER_COMP_VAL; //Karşılaştırma Değerini Ayarla

imzasız karakter GetRemoteCmd(char bekle) { imzasız karakter cmd;

if(bekle) while(QFront==-1); else if(QFront==-1) return (RC_NONE);

cmd=IrCmdQ[QFront];

if(QFront==QEnd) QFront=QEnd=-1; else { if(QFront==(QMAX-1)) QFront=0; başka QFront++; }

cmd'yi döndür;

}

2. ana():

int ana(void){

uint8_t cmd=0; DDRB=0x08;

DDRD=0x80;

DDRC=0x0f; PORTC=0x00;

while (1) // Aktif IR sensörüne sonsuz döngü {

cmd=GetRemoteCmd(1);

anahtar(cmd) {

case xx: { //BOT İleri gider //Ch+ btn ilerimotor();

kırmak; // Her İki Motor da İleri Yönde

}

………………………………………………….

………………………………………………….

………………………………………………….

varsayılan: PORTC=0x00;kes; // Hem sol hem de sağ motorlar durur }

}

}/*Ana bölüm sonu*/

……………………………………………………………………………………………………………………

// Temel bir model ama ben onu PWM modunda kullanabilirim.

//…………………………………………….. İyi eğlenceler……………………………………………………//

Önerilen: