Mündəricat:

AVR (ATMEGA32) MCU istifadə edərək INFRA QIRMIZI KONTROLLÜ ROBOCAR: 5 addım
AVR (ATMEGA32) MCU istifadə edərək INFRA QIRMIZI KONTROLLÜ ROBOCAR: 5 addım

Video: AVR (ATMEGA32) MCU istifadə edərək INFRA QIRMIZI KONTROLLÜ ROBOCAR: 5 addım

Video: AVR (ATMEGA32) MCU istifadə edərək INFRA QIRMIZI KONTROLLÜ ROBOCAR: 5 addım
Video: LDmicro 3: PIC16F628A & Arduino Nano (Microcontroller PLC Ladder Logic Programming with LDmicro) 2024, Dekabr
Anonim
AVR (ATMEGA32) MCU istifadə edərək INFRA QIRMIZI KONTROLLÜ ROBOKAR
AVR (ATMEGA32) MCU istifadə edərək INFRA QIRMIZI KONTROLLÜ ROBOKAR

Hazırkı PROJEKT, müxtəlif avtomatlaşdırılmış insansız idarəetmə tətbiqləri üçün istifadə edilə bilən infraqırmızı (IR) uzaqdan idarə olunan RoboCar dizaynını və tətbiqini təsvir edir. Uzaqdan idarə olunan RoboCar (sol-sağ/ön-arxa hərəkət) dizayn etmişəm. Bütün sistem idarəetmə sistemini daha ağıllı və digər tətbiqlər üçün dəyişdirməyi asanlaşdıran mikro nəzarətçiyə (Atmega32) əsaslanır. İstifadəçiyə bir RoboCar -ı idarə etməyi və ya idarə etməyi və təxminən 5 metr uzaqdan elektrik enerjisi açarını idarə etməyi təmin edir.

Açar sözlər: IR Dekoder, AVR (Atmega32) Mikrokontrolör, TV uzaqdan idarəetmə cihazı, Simsiz əlaqə

_

Addım 1: IntraRed Rabitə

IntraRed Rabitə
IntraRed Rabitə

IR Rabitə prinsipi:

a) IR ötürülməsi

Daxil edilmiş hər bir elektrik nəbzi üçün infraqırmızı işıq yayan bir IR LED -in ötürücüsü. Bu nəbz, pultdakı bir düyməyə basıldığı zaman meydana gəlir, beləliklə dövrəni tamamlayaraq LED -ə önyargı verir. Qeyri -adi LED, 940nm dalğa uzunluğunda bir düymə basıldıqda bir sıra nəbzlər şəklində işıq saçır. Bununla birlikdə, IR LED ilə birlikdə biz insanlar, ampüller, günəş və s kimi bir çox digər infraqırmızı işıq mənbələri olduğundan ötürülən məlumatlara müdaxilə edilə bilər. Bu problemin həlli modulyasiyadır. Göndərilən siqnal 38 KHz (və ya 36 ilə 46 KHz arasında olan hər hansı digər tezlik) daşıyıcı tezliyi ilə modulyasiya olunur. IR LED, pulsun müddəti üçün bu tezlikdə salınması üçün hazırlanmışdır. Məlumat və ya işıq siqnalları nəbz genişliyi modulyasiya olunur və 38 KHz tezliyindədir. İnfraqırmızı ötürmə, görünən işığın dalğa uzunluğundan daha uzun, lakin radio dalğalarından daha qısa olan elektromaqnit şüalanma spektrinin bölgəsindəki enerjiyə aiddir. Müvafiq olaraq, infraqırmızı tezliklər mikrodalğalı dalğalardan daha yüksəkdir, lakin görünən işığdan daha aşağıdır. Elm adamları infraqırmızı radiasiya (İR) spektrini üç bölgəyə bölürlər. Dalğa uzunluqları mikronlarla (1 µ = 10-6 metr olduğu µ simvolu ilə) və ya nanometrlərlə (qısaldılmış nm, burada 1 nm = 10-9 metr = 0.001 5) göstərilmişdir. Yaxınlıqdakı IR diapazonu, görünənə ən yaxın olan dalğa uzunluqlarında təxminən 0,750 ilə 1,300 5 (750 ilə 1300 nm) arasında enerji ehtiva edir. Aralıq IR diapazonu (orta İK diapazonu da deyilir) 1.300 ilə 3.000 5 (1300 ilə 3000 nm) aralığında olan enerjidən ibarətdir. Uzaq IR diapazonu 2.000 -dən 14.000 5 -ə (3000 nm -dən 1.4000 x 104nm) qədər uzanır.

b) IR qəbulu

Alıcı, işığın üzərinə düşdüyü üçün bir elektrik elektrik siqnalını inkişaf etdirən bir foto detektordan ibarətdir. Detektorun çıxışı, daşıyıcı tezliyindən aşağı və ya yuxarıdakı bütün tezlikləri (bu halda 38 KHz) atan dar bir bant filtrindən istifadə edərək süzülür. Süzülmüş çıxış daha sonra bir mikro nəzarətçi və ya bir kompüter və ya bir robot kimi cihazları idarə edən bir mikroprosessor kimi uyğun cihaza verilir. Filtrlərdən çıxan pulsları oxumaq üçün osiloskopa da qoşula bilər.

IR tətbiqləri:

İnfraqırmızı müxtəlif simsiz rabitə, monitorinq və nəzarət tətbiqlərində istifadə olunur. Budur bəzi nümunələr:

· Ev-əyləncə uzaqdan idarəetmə qutuları

· Simsiz (yerli şəbəkələr)

· Notbuk və masa üstü kompüterlər arasındakı əlaqələr

· Simsiz modem

· Hücum detektorları

· Hərəkət detektorları

· Yanğın sensorlar

· Gecə görmə sistemləri

· Tibbi diaqnostika avadanlığı

· Raket idarəetmə sistemləri

· Geoloji monitorinq cihazları

IR məlumatlarının bir cihazdan digərinə ötürülməsinə bəzən şüalanma deyilir.

Addım 2: IR Sensor & NEC Protocol Fromat

IR Sensor & NEC Protocol Fromat
IR Sensor & NEC Protocol Fromat
IR Sensor & NEC Protocol Fromat
IR Sensor & NEC Protocol Fromat
IR Sensor & NEC Protocol Fromat
IR Sensor & NEC Protocol Fromat
IR Sensor & NEC Protocol Fromat
IR Sensor & NEC Protocol Fromat

IR sensorlar (Şəkil 1)

TSOP1738, SFH-5110-38 (38kHz)

TSOP Sensorlarının Xüsusiyyətləri:

  • Ön gücləndirici və foto detektoru hər ikisi tək bir paketdədir
  • PCM tezliyi üçün daxili filtr
  • Elektrik sahəsinin pozulmasına qarşı təkmilləşdirilmiş ekranlama
  • TTL və CMOS uyğunluğu
  • Çıxış aktiv aşağı Aşağı enerji istehlakı
  • Ətraf işığına qarşı yüksək toxunulmazlıq
  • Davamlı məlumat ötürülməsi mümkündür

NEC Protokolu:

NEC IR ötürmə protokolu mesaj bitlərinin nəbz məsafə kodlaşdırmasından istifadə edir. Hər nəbz partlayışı 562.5µs uzunluğunda, 38kHz (26.3µs) bir daşıyıcı tezliyindədir. Məntiqi bitlər aşağıdakı kimi ötürülür (Şəkil 2):

  • Məntiqi '0' - 562.5µs nəbz partlayışı və 562.5µs boşluq, ümumi ötürmə müddəti 1.125ms
  • Məntiqi '1' - 562.5μs nəbz partlayışı və 1.6875ms boşluq, ümumi ötürmə müddəti 2.25ms

Taşıyıcı nəbz 38 kHz -də 21 dövrdən ibarətdir. İmpulslar, cari istehlakı azaltmaq üçün adətən 1: 4 işarəsi/boşluq nisbətinə malikdir:

(Şəkil 3)

Hər kod ardıcıllığı, AGC nəbzi olaraq bilinən 9ms pulse ilə başlayır. Bunun ardınca 4.5 ms səssizlik gəlir:

(Şəkil 4)

Məlumat daha sonra 32 bitdən, 16 bitlik bir ünvandan sonra 16 bitlik bir əmrdən ibarətdir və ötürülmə qaydasında göstərilir (soldan sağa):

(Şəkil 5)

Məlumat bitlərinin dörd baytı hər biri əvvəlcə ən az əhəmiyyətli bit göndərilir. Şəkil 1, 00h (00000000b) ünvanı və ADh (10101101b) əmri üçün NEC IR ötürmə çərçivəsinin formatını göstərir.

Mesaj çərçivəsinin ötürülməsi üçün cəmi 67.5ms lazımdır. 16 bit ünvan (ünvan + tərs) və 16 bit əmr (əmr + tərs) ötürmək üçün 27 ms lazımdır.

(Şəkil 6)

Çərçivəni ötürmək üçün lazım olan vaxt:

Ünvan üçün 16 bit (ünvan + tərs) vaxt ötürmək üçün 27ms tələb edir. Və əmr üçün 16 bit (əmr + tərs) də vaxt ötürmək üçün 27ms tələb edir. çünki (ünvan + ünvan tərs) və ya (əmr + əmr tərsinə) həmişə 8 '0 və 8' 1 'lərdən ibarət olacaq (8 * 1.125 ms) + (8 * 2.25 ms) == 27 ms. Buna görə çərçivənin ötürülməsi üçün lazım olan ümumi vaxt (9ms +4.5ms +27ms +27ms) = 67.5 msdir.

TƏKRAR KODLARI: Uzaqdan idarəedicinin düyməsi basılı saxlanılırsa, mesajın sonunu bildirən nəbz partlayışından təxminən 40 ms sonra bir təkrar kod veriləcəkdir. Təkrar kod, açar nəhayət açılana qədər 108 ms fasilələrlə göndərilməyə davam edəcək. Təkrar kod aşağıdakılardan ibarətdir:

  • 9 ms aparıcı nəbz partlaması
  • 2.25 ms boşluq
  • boşluğun sonunu (və dolayısı ilə ötürülən təkrar kodun sonunu) qeyd etmək üçün 562.5µs nəbz partlaması.

(Şəkil 7)

Gecikmə Hesablaması (1 ms):

Saat tezliyi = 11.0592 Mhz

Maşın dövrü = 12

Gecikmə = 1 ms

TimerValue = 65536 - ((Gecikmə * ClockFreq)/Maşın Dövrü) = 65536 - (((1ms * 11.0592Mhz)/12)

= 65536 - 921 = 0xFC67

Addım 3: L293D istifadə edərək DC Motor İdarəçiliyi

L293D istifadə edərək DC Motor İdarəetmə
L293D istifadə edərək DC Motor İdarəetmə

DC Motor

Bir DC mühərriki elektrik enerjisini bir çox faydalı iş üçün istifadə edilə bilən mexaniki enerjiyə çevirir. RoboCar -ın İrəli/Arxa Sözü kimi mexaniki hərəkətlər yarada bilər. DC mühərrikləri 6V və 12V kimi müxtəlif dərəcələrdə gəlir. İki tel və ya pindən ibarətdir. Girişin polaritesini dəyişdirərək fırlanma istiqamətini dəyişə bilərik.

Burada L293D -yə üstünlük veririk, çünki 600mA reytinqi kiçik DC mühərrikləri idarə etmək üçün yaxşıdır və qoruyucu diodlar IC -nin özünə daxil edilmişdir. Hər pinin təsviri belədir: Pinləri aktiv edin: Bunlar pin nömrəsidir. 1 və pin nömrəsi. 9. Pin nömrəsi. 1 Half-H sürücüsü 1 və 2-ni işə salmaq üçün istifadə olunur (Sol tərəfdəki H körpüsü). Pin nömrəsi. 9, H-körpü sürücüsü 3 və 4-ü işə salmaq üçün istifadə olunur (Sağ tərəfdəki H körpüsü).

Konsepsiya sadədir, müəyyən bir H körpüsündən istifadə etmək istəyirsinizsə, IC -nin enerji təchizatı ilə birlikdə müvafiq aktivləşdirmə pinlərinə yüksək məntiq verməlisiniz. Bu pin, PWM texnikasından istifadə edərək motorun sürətini idarə etmək üçün də istifadə edilə bilər. 5V -luq elektrik şəbəkəsinə qoşun. VCC2 (Pin 8): Motor üçün enerji təchizatı. Motor reytinqinə görə ona +ve gərginlik tətbiq edin. Motorunuzu 12V -də idarə etmək istəyirsinizsə, bu pinə 12V tətbiq edin.

Mühərriki dövrə enerji vermək üçün istifadə olunandan başqa birbaşa akkumulyatorla idarə etmək də mümkündür, sadəcə həmin batareyanın +ve terminalını VCC2 pininə qoşun və hər iki batareyanın GND -ni ümumi hala gətirin. (Bu pindəki MAX gərginliyi, məlumat cədvəlinə görə 36V)

Bunlar nəzarət siqnallarının mikrokontrolörler və ya digər sxemlər/IC -lər tərəfindən verildiyi giriş pinləridir. Məsələn, pin 2 -də (1 -ci yarı H sürücüsünün girişi) Məntiq 1 (5V) verəriksə, 1 -ci yarı H sürücüsünün müvafiq pinində VCC2 -yə bərabər bir gərginlik alacağıq, yəni pin no. 3. Eynilə Pin 2 -də Məntiq 0 (0V) üçün, Pin 3 -də 0V görünür. Çıxışlar (Pin 3, 6, 11, 14): Çıxış pinləri. Giriş siqnalına görə çıxış siqnalı gəlir.

Motor hərəkətləri A B

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

…………… Dur: Aşağı: Aşağı

…… Saat yönünde: Aşağı: Yüksək

Saat yönünün əksinə: Yüksək: Aşağı

……………. Dayan: Yüksək: Yüksək

Addım 4: Motor Sürücüsü və İQ Sensoru üçün Dövrə Şemaları

Motor Sürücüsü və IR Sensoru üçün Dövrə Şemaları
Motor Sürücüsü və IR Sensoru üçün Dövrə Şemaları
Motor Sürücüsü və IR Sensoru üçün Dövrə Şemaları
Motor Sürücüsü və IR Sensoru üçün Dövrə Şemaları
Motor Sürücüsü və IR Sensoru üçün Dövrə Şemaları
Motor Sürücüsü və IR Sensoru üçün Dövrə Şemaları

ATmega32, AVR inkişaf etmiş RISCarchitecture-a əsaslanan aşağı güclü CMOS 8 bitlik mikro nəzarətçisidir. ATmega32, bir saat dövrü ərzində güclü təlimatları yerinə yetirərək, sistem dizaynçısının işləmə sürəti ilə müqayisədə enerji istehlakını optimallaşdırmasına imkan verən MHz başına 1 MIPS -ə yaxın olan çıxışlara nail olur.

AVR nüvəsi, 32 ümumi təyinatlı iş reyestri ilə zəngin bir təlimat dəstini özündə birləşdirir. Bütün 32 qeydlər birbaşa Aritmetik Məntiq Birliyinə (ALU) bağlıdır və iki müstəqil qeydə bir saat dövrü ərzində yerinə yetirilən bir təlimatda daxil olmaq imkanı verir. Ortaya çıxan arxitektura, ənənəvi CISC mikro nəzarətçilərindən on qat daha sürətli çıxış əldə edərkən daha kod səmərəlidir.

ATmega32 aşağıdakı xüsusiyyətləri təmin edir:

  • Oxuma-Yazma qabiliyyətinə malik 32 Kbayt Sistemda Proqramlaşdırıla bilən Flash Proqram yaddaşı,
  • 1024 bayt EEPROM, 2K baytlıq SRAM,
  • 32 ümumi təyinatlı I/O xətti,
  • 32 ümumi təyinatlı iş reyestri,
  • Boundaryscan üçün JTAG interfeysi,
  • Çipdə Hata Ayıklama dəstəyi və proqramlaşdırma, müqayisə rejimləri olan üç çevik Taymer/Sayıcılar, Daxili və Xarici Kəsilmələr, seriyalı proqramlaşdırıla bilən USART, baytlı iki telli Serial İnterfeysi, 8 kanallı,
  • Proqramlaşdırıla bilən qazanclı isteğe bağlı diferensial giriş mərhələsi olan 10 bit ADC (yalnız TQFP paketi),
  • Daxili Osilatörlü proqramlaşdırıla bilən Gözətçi Taymeri,
  • SPI serial portu və
  • altı proqram seçilə bilən enerji qənaət rejimi.

    • Boş rejim, USART -a icazə verərkən CPU -nu dayandırır,
    • İki telli interfeys, A/D çeviricisi,
    • SRAM,
    • Taymer/Sayğaclar,
    • SPI portu və
    • fəaliyyətini davam etdirmək üçün sistemin kəsilməsi.
    • Gücün aşağı salınması rejimi qeydlərin məzmununu saxlayır, lakin Osilatoru dondurur və növbəti Xarici Kəsmə və ya Avadanlığın Sıfırlanmasına qədər bütün digər çip funksiyalarını deaktiv edir.
    • Güc qənaət rejimində, Asenkron Taymer işləməyə davam edir, bu da istifadəçinin cihazın qalan hissəsi yatarkən taymer bazasını saxlamasına imkan verir.
    • ADC Səs Azaltma rejimi, ADC dönüşümləri zamanı keçid səs -küyünü minimuma endirmək üçün CPU və Asinxron Taymer və ADC istisna olmaqla bütün I/O modullarını dayandırır.
    • Gözləmə rejimində, cihazın qalan hissəsi yatarkən kristal/rezonator Osilatoru işləyir. Bu, aşağı enerji istehlakı ilə birlikdə çox sürətli işə salmağa imkan verir.
    • Genişləndirilmiş Gözləmə rejimində həm əsas Osilator, həm də Asenkron Zamanlayıcı işləməyə davam edir.

Bütün əlaqəli sxemlər burada verilir və əsas dövrə (atmega32) də verilir.

Addım 5: Avr Proqramları

Avr Proqramları
Avr Proqramları
Avr Proqramları
Avr Proqramları

1. "Uzaqdan sensor" üçün:

#daxil edin #daxil edin

#"remote.h" daxil edin

// Globals uçucu işarəsiz int Time; // Əsas taymer, vaxtı 10us -da saxlayır, // ISR (TIMER0_COMP) tərəfindən dəyişdirilmiş uçucu işarəsiz bit BitNo; // Növbəti BIT uçucu imzasız char Poste ByteNo; // Cari baytın mövqeyi

uçucu işarəsiz char IrData [4]; // İr Paketinin dörd məlumat baytı // 2 Baytlı Ünvan 2 Baytlı Məlumatlar uçucu işarəsiz irCmdQ [QMAX]; // Son Komanda Alındı (Tampon)

uçucu işarəsiz char PrevCmd; // Təkrar etmək üçün istifadə olunur

// Yalnız bir düyməyə basıldıqdan sonra təkrarlanmağa başlamaq üçün istifadə olunan dəyişənlər

uçucu işarəsiz char Repeat; // 1 = bəli 0 = yox uçucu işarəsiz char RCount; // Təkrar say

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

uçucu olmayan imzasız char vəziyyəti; // Alıcının vəziyyəti

uçucu işarəsiz char Edge; // Fasilə kənarı [RISING = 1 VEYA FALLING = 0]

uçucu işarəsiz int stop;

/*********************************************** ******************************************* / /*FUNCTIONSSTARTS* / / *********************************************** ********************************************/

void RemoteInit () {

char i; üçün (i = 0; i <4; i ++) IrData = 0;

dayanma = 0; Vəziyyət = IR_VALIDATE_LEAD_HIGH; Kenar = 0; Təkrar = 0;

// Quraşdırma Zamanlayıcısı1 // ------------ TCCR0 | = ((1 <

TIMSK | = (1 <

OCR0 = TIMER_COMP_VAL; // Müqayisə Dəyərini təyin edin

imzasız char GetRemoteCmd (char wait) {işarəsiz char cmd;

if (wait) while (QFront ==-1); else if (QFront ==-1) qayıt (RC_NONE);

cmd = IrCmdQ [QFront];

əgər (QFront == QEnd) QFront = QEnd = -1; başqa {əgər (QFront == (QMAX-1)) QFront = 0; başqa QFront ++; }

cmd qaytar;

}

2. əsas ():

int main (void) {

uint8_t cmd = 0; DDRB = 0x08;

DDRD = 0x80;

DDRC = 0x0f; PORTC = 0x00;

while (1) // Aktiv IR sensora sonsuz döngə {

cmd = GetRemoteCmd (1);

keçid (cmd) {

hal xx: {// BOT İrəli hərəkət edir // Ch+ btn irəli motor ();

fasilə; // Hər iki motor irəli istiqamətdə

}

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

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

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

standart: PORTC = 0x00; fasilə; // Həm sol, həm də sağ mühərriklər dayanır}

}

}/*Əsas hissənin sonu*/

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

// Əsas bir modeldir, amma PWM rejimində istifadə edə bilərəm.

//…………………………………………….. Əylənin……………………………………………………//

Tövsiyə: