Mundarija:

AVR (ATMEGA32) MCU dan foydalanadigan INFRA RED masofadan boshqariladigan ROBOCAR: 5 qadam
AVR (ATMEGA32) MCU dan foydalanadigan INFRA RED masofadan boshqariladigan ROBOCAR: 5 qadam

Video: AVR (ATMEGA32) MCU dan foydalanadigan INFRA RED masofadan boshqariladigan ROBOCAR: 5 qadam

Video: AVR (ATMEGA32) MCU dan foydalanadigan INFRA RED masofadan boshqariladigan ROBOCAR: 5 qadam
Video: 6 ATmega32 Architecture- Basics Instruction Sets of AVR ATmega32 2024, Iyul
Anonim
AVR (ATMEGA32) MCU dan foydalanadigan INFRA RED masofadan boshqariladigan ROBOCAR
AVR (ATMEGA32) MCU dan foydalanadigan INFRA RED masofadan boshqariladigan ROBOCAR

Loyiha infraqizil (IQ) masofadan boshqariladigan RoboCar -ning dizayni va amalga oshirilishini tavsiflaydi, uni har xil avtomatlashtirilgan uchuvchisiz boshqaruv dasturlarida ishlatish mumkin. Men masofadan boshqariladigan RoboCar (chap-o'ng/old-orqa harakat) ni ishlab chiqdim. Butun tizim mikrokontrollerga asoslangan (Atmega32), bu boshqaruv tizimini aqlli va boshqa ilovalar uchun o'zgartirishni osonlashtiradi. Bu foydalanuvchiga RoboCar -ni boshqarishi yoki boshqarishi hamda elektr tarmog'ining kalitini taxminan 5 metr masofadan boshqarishi mumkin.

Kalit so'zlar: IR dekoder, AVR (Atmega32) mikrokontroller, televizorni masofadan boshqarish pulti, simsiz aloqa

_

1 -qadam: IntraRed aloqasi

IntraRed aloqasi
IntraRed aloqasi

IR aloqa printsipi:

a) IQ uzatish

IQ LEDning uzatgichi, unga berilgan har bir elektr puls uchun infraqizil nur chiqaradi. Bu puls masofadan boshqarish pultidagi tugma bosilganda hosil bo'ladi va shu bilan kontaktlarning zanglashiga olib keladi, bu esa LEDga yon ta'sir ko'rsatadi. Qarama -qarshi bo'lgan LED 940nm to'lqin uzunlikdagi nurni bir qator impulslar sifatida chiqaradi, bu tugma bosilgan. Biroq, IQ LED bilan bir qatorda, biz, odamlar, lampochkalar, quyosh kabi infraqizil nurlarning boshqa manbalari ham uzatilishi mumkin. Ushbu muammoning echimi modulyatsiya usulidir. O'tkazilgan signal 38 KHz chastotali (yoki 36 dan 46 KHz gacha bo'lgan boshqa chastotali) modulyatsiya qilinadi. IQ LED pulsning davomiyligi uchun shu chastotada tebranishi uchun qilingan. Ma'lumot yoki yorug'lik signallari puls kengligi modulyatsiyalangan va 38 KGts chastotasida joylashgan. Infraqizil uzatish elektromagnit nurlanish spektri hududidagi to'lqin uzunliklarida ko'rinadigan nurga qaraganda uzunroq, lekin radio to'lqinlarga qaraganda qisqaroq energiyani bildiradi. Shunga mos ravishda infraqizil chastotalar mikroto'lqinlarga qaraganda yuqori, lekin ko'rinadigan nurga qaraganda past. Olimlar infraqizil nurlanish (IQ) spektrini uchta hududga bo'lishadi. To'lqin uzunligi mikronlarda ko'rsatilgan (mc belgisi, bu erda 1 mk = 10-6 metr) yoki nanometrlarda (qisqartirilgan nm, bu erda 1 nm = 10-9 metr = 0,001 5). Yaqin IQ diapazonida to'lqin uzunligi diapazonida 0,750 dan 1,300 5 gacha (750 dan 1300 nm gacha) to'lqin uzunligi diapazonida energiya mavjud. O'rta IQ diapazoni (o'rta IQ diapazoni deb ham ataladi) 1.300 dan 3.000 5 (1300 dan 3000 nm gacha) diapazonidagi energiyadan iborat. Uzoq IQ diapazoni 2.000 dan 14.000 5 gacha (3000 nm dan 1.4000 x 104nm gacha).

b) IR qabul qilish

Qabul qilgich yorug'lik tushganda elektr signalini ishlab chiqaruvchi foto detektordan iborat. Detektorning chiqishi tor chastotali filtr yordamida filtrlanadi, u tashuvchi chastotadan past yoki undan yuqori bo'lgan barcha chastotalarni (bu holda 38 KGts) olib tashlaydi. Keyin filtrlangan chiqish mos keladigan qurilmaga beriladi: mikrokontroller yoki mikroprotsessor, u kompyuter yoki robot kabi qurilmalarni boshqaradi. Filtrlardan chiqadigan pulslarni o'qish uchun osiloskopga ham ulanish mumkin.

IR ilovalari:

Infraqizil turli xil simsiz aloqa, monitoring va boshqaruv dasturlarida ishlatiladi. Bu erda ba'zi misollar:

· Uy-ko'ngilochar masofadan boshqarish pultlari

· Simsiz (mahalliy tarmoqlar)

· Notebook va ish stoli kompyuterlari o'rtasidagi aloqalar

· Simsiz modem

· Intruziya detektori

· Harakat detektori

· Yong'in sezgichlari

· Kecha ko'rish tizimlari

· Tibbiy diagnostika uskunalari

· Raketalarga yo'naltiruvchi tizimlar

· Geologik kuzatuv asboblari

IQ ma'lumotlarini bir qurilmadan boshqasiga uzatish ba'zida nurlanish deb ataladi.

2 -qadam: IR sensori va NEC protokoli

IQ sensori va NEC protokoli
IQ sensori va NEC protokoli
IQ sensori va NEC protokoli
IQ sensori va NEC protokoli
IQ sensori va NEC protokoli
IQ sensori va NEC protokoli
IQ sensori va NEC protokoli
IQ sensori va NEC protokoli

IQ sensorlar (1 -rasm)

TSOP1738, SFH-5110-38 (38 kHz)

TSOP sensorlarining xususiyatlari:

  • Oldindan kuchaytirgich va foto detektori ikkalasi bitta paketda
  • PCM chastotasi uchun ichki filtr
  • Elektr maydonining buzilishidan himoyalanish yaxshilandi
  • TTL va CMOS muvofiqligi
  • Chiqish faol past Kam quvvat sarfi
  • Yorug'lik nuriga qarshi yuqori immunitet
  • Ma'lumot uzluksiz uzatilishi mumkin

NEC protokoli:

NEC IR uzatish protokoli xabar bitlarini impulsli masofaviy kodlashdan foydalanadi. Har bir puls portlashining uzunligi 562,5 mks, tashuvchi chastotasi 38 kHz (26,3 ms). Mantiqiy bitlar quyidagicha uzatiladi (2 -rasm):

  • Mantiqiy "0" - 562,5 mikronlik zarba, keyin 562,5 mikron bo'shliq, umumiy uzatish vaqti 1,125 mil.
  • Mantiqiy "1" - 562,5 mikron puls portlashi, keyin 1,6875 millimetrlik bo'sh joy, umumiy uzatish vaqti 2,25 mil.

Tashuvchi puls 38 kGts chastotali 21 tsikldan iborat. Pulslar, odatda, oqim sarfini kamaytirish uchun 1: 4 belgi/bo'shliq nisbatiga ega:

(3 -rasm)

Har bir kod ketma -ketligi 9ms puls bilan boshlanadi, bu AGC pulsi deb nomlanadi. Shundan so'ng 4,5 soniya sukunat hukm suradi:

(4 -rasm)

Ma'lumotlar keyinchalik 32 bitdan iborat bo'lib, 16-bitli manzildan so'ng 16-bitli buyruqlar uzatiladi (chapdan o'ngga):

(5 -rasm)

Ma'lumot bitlarining to'rt baytining har biri birinchi navbatda eng kichik bitga yuboriladi. 1 -rasmda 00h (00000000b) va ADh (10101101b) buyrug'i uchun NEC IQ uzatish ramkasining shakli ko'rsatilgan.

Xabar ramkasini uzatish uchun jami 67,5 ms kerak. 16 bitli manzilni (manzil + teskari) va 16 bitli buyruqni (buyruq + teskari) uzatish uchun 27ms kerak.

(6 -rasm)

Ramkani uzatish uchun zarur bo'lgan vaqt:

Manzil uchun 16 bit (manzil + teskari) 27ms vaqtni uzatishni talab qiladi. Va buyruq uchun 16 bit (buyruq + teskari) vaqtni uzatish uchun 27ms kerak. chunki (manzil + manzil teskari) yoki (buyruq + buyruq teskari) har doim 8 '0' va 8 '1' ni o'z ichiga oladi (8 * 1.125ms) + (8 * 2.25ms) == 27 ms. Ushbu umumiy vaqtga ko'ra, ramkani uzatish uchun zarur bo'lgan vaqt (9ms +4.5ms +27ms +27ms) = 67.5 ms.

TEKRARLASH KODLARI: Agar masofadan boshqarish pultidagi tugma bosilganda ushlab turilsa, takrorlash kodi beriladi, bu odatda xabarning tugashini bildiruvchi puls yorilishidan taxminan 40ms keyin. Qayta kod 108 ms oralig'ida, kalit tugatilgunga qadar yuboriladi. Takroriy kod quyidagi tartiblardan iborat:

  • 9 millimetrlik yurak urish tezligi
  • maydoni - 2,25 millimetr
  • bo'shliqning oxirini (va shuning uchun uzatilgan takrorlash kodining oxirini) belgilash uchun 562,5 mikronlik zarba portlashi.

(7 -rasm)

Kechikishni hisoblash (1ms):

Soat chastotasi = 11.0592 MGts

Mashina aylanishi = 12

Kechikish = 1 ms

TimerValue = 65536 - ([Kechiktirish * ClockFreq]/Mashina aylanishi) = 65536 - ((1ms * 11.0592MHz)/12)

= 65536 - 921 = 0xFC67

3 -qadam: L293D yordamida shahar motorini boshqarish

L293D yordamida shahar motorini boshqarish
L293D yordamida shahar motorini boshqarish

DC dvigateli

Shahar dvigateli elektr energiyasini ko'plab foydali ishlarni bajarish uchun ishlatilishi mumkin bo'lgan mexanik energiyaga aylantiradi. Bu RoboCar -ning oldinga o'tish/orqaga so'z kabi mexanik harakatni ishlab chiqarishi mumkin. DC dvigatellari 6V va 12V kabi turli baholarga ega. Unda ikkita sim yoki pim bor. Kirish polaritesini o'zgartirish orqali biz aylanish yo'nalishini teskari o'zgartirishimiz mumkin.

Bu erda biz L293D ni afzal ko'ramiz, chunki 600mA ko'rsatkichi kichik shahar motorlarini boshqarishda yaxshi bo'ladi va himoya diodlari ICning o'ziga kiritilgan. Har bir pinning tavsifi quyidagicha: Pimlarni yoqish: Bu pin raqami. 1 va pin raqami. 9. Pin raqami. 1 Half-H drayveri 1 va 2 ni yoqish uchun ishlatiladi (Chap tarafdagi H ko'prigi). Pin raqami. 9 H-ko'prigi haydovchisi 3 va 4-ni yoqish uchun ishlatiladi (H ko'prigi o'ng tomonda).

Kontseptsiya oddiy, agar siz ma'lum bir H ko'prigidan foydalanmoqchi bo'lsangiz, ICni quvvat manbai bilan bir qatorda mos keladigan pinlarga yuqori mantiq berishingiz kerak. Bu pin, shuningdek, PWM texnikasi yordamida dvigatelning tezligini boshqarish uchun ishlatilishi mumkin. 5 V kuchlanishli tarmoqqa ulang. VCC2 (8 -pin): Dvigatel uchun quvvat manbai. Dvigatel reytingiga ko'ra, unga +va kuchlanishni qo'llang. Agar siz dvigatelingizni 12 V kuchlanish bilan boshqarishni xohlasangiz, bu pimga 12 V ni qo'llang.

Dvigatelni to'g'ridan -to'g'ri akkumulyatorda boshqarish mumkin, bu kontaktlarning zanglashiga olib keladi, faqat shu batareyaning +ve terminalini VCC2 piniga ulang va ikkala batareyaning GND -ni umumiy holga keltiring. (Bu pimdagi MAX kuchlanishi ma'lumotlar jadvaliga ko'ra 36V). GND (4, 5, 12, 13 -pinlar): Ularni umumiy GND sxemasiga ulang.

Bu kirish pimlari, ular orqali nazorat signallari mikrokontrollerlar yoki boshqa sxemalar/IClar tomonidan beriladi. Masalan, agar 2 -pinda (1 -chi H haydovchining kiritilishi) Logic 1 (5V) berilsa, biz 1 -chi H haydovchining mos keladigan chiqish pinida VCC2 ga teng kuchlanishni olamiz. 3. Xuddi shunday, 2 -pinli 0 (0V) mantiq uchun, 3 -pinda 0V paydo bo'ladi. Chiqishlar (3 -pin, 6, 11, 14): pinlarni chiqaradi. Kirish signaliga ko'ra chiqish signali keladi.

Dvigatel harakatlari A B

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

…………… To'xtatish: past: past

…… soat yo'nalishi bo'yicha: past: yuqori

Soat miliga qarshi: yuqori: past

……………. To'xtating: Yuqori: Yuqori

4 -qadam: Dvigatel haydovchisi va IQ sensori uchun sxemalar

Dvigatel haydovchisi va IQ sensori uchun sxemalar
Dvigatel haydovchisi va IQ sensori uchun sxemalar
Dvigatel haydovchisi va IQ sensori uchun sxemalar
Dvigatel haydovchisi va IQ sensori uchun sxemalar
Dvigatel haydovchisi va IQ sensori uchun sxemalar
Dvigatel haydovchisi va IQ sensori uchun sxemalar

ATmega32-AVR takomillashtirilgan RISCarchitecture-ga asoslangan kam quvvatli CMOS 8-bitli mikrokontroller. Kuchli ko'rsatmalarni bitta soat tsiklida bajarish orqali ATmega32 har bir MGts chastotasiga 1 MIPS ga yaqinlashadi, bu esa tizim ishlab chiqaruvchisiga qayta ishlash tezligiga nisbatan quvvat sarfini optimallashtirish imkonini beradi.

AVR yadrosi 32 ta umumiy maqsadli ishchi registri bilan boy ko'rsatmalar to'plamini birlashtiradi. Barcha 32 registrlar to'g'ridan -to'g'ri arifmetik mantiq birligiga (ALU) ulangan bo'lib, bitta mustaqil tsiklda bajariladigan bitta buyruqda ikkita mustaqil registrga kirish imkonini beradi. Olingan arxitektura kodni yanada samaraliroq, bu esa oddiy CISC mikrokontrolderlariga qaraganda o'n barobar tezroq ishlash imkonini beradi.

ATmega32 quyidagi xususiyatlarga ega:

  • O'qish paytida-yozish imkoniyatiga ega 32 Kbayt tizimda dasturlashtiriladigan flesh-dastur xotirasi,
  • 1024 baytli EEPROM, 2K baytli SRAM,
  • 32 ta umumiy maqsadli kirish -chiqish liniyalari,
  • 32 ta umumiy maqsadli ishchi registrlar,
  • Boundaryscan uchun JTAG interfeysi,
  • Chipda tuzatishni qo'llab-quvvatlash va dasturlash, taqqoslash rejimiga ega uchta moslashuvchan taymer/hisoblagich, ichki va tashqi uzilishlar, ketma-ket dasturlanadigan USART, baytga yo'naltirilgan ikki simli ketma-ket interfeys, 8 kanalli,
  • 10-bitli ADC ixtiyoriy differentsial kirish bosqichi bilan programlanadigan daromad (faqat TQFP to'plami),
  • dasturlashtiriladigan ichki osilatorli qo'riqchi taymeri,
  • SPI ketma -ket porti va
  • oltita dasturiy ta'minot tanlanadigan quvvatni tejash rejimi.

    • Kutish rejimi USARTga ruxsat berishda CPUni to'xtatadi,
    • Ikki simli interfeys, A/D konvertori,
    • SRAM,
    • Taymer/hisoblagichlar,
    • SPI porti va
    • ishlashni davom ettirish uchun uzilish tizimi.
    • Quvvatni o'chirish rejimi registr tarkibini saqlaydi, lekin Osilatorni muzlatib qo'yadi va boshqa tashqi funktsiyalarni keyingi tashqi uzilish yoki uskunani tiklash holatiga qadar o'chirib qo'yadi.
    • Quvvatni tejash rejimida asenkron taymer ishlashni davom ettirmoqda, bu esa foydalanuvchiga qurilmaning qolgan qismi uxlab yotgan vaqtda taymer bazasini saqlashga imkon beradi.
    • ADC shovqinni kamaytirish rejimi, ADC konvertatsiyasi paytida o'tish shovqinini minimallashtirish uchun CPU va asinxron taymer va ADCdan tashqari barcha kirish -chiqish modullarini to'xtatadi.
    • Kutish rejimida, kristal/rezonatorli osilator qurilmaning qolgan qismi uxlab yotgan vaqtda ishlaydi. Bu juda tez ishga tushirishni kam quvvat sarfi bilan birlashtirishga imkon beradi.
    • Kengaytirilgan kutish rejimida asosiy osilator ham, asinxron taymer ham ishlashda davom etadi.

Bu erda barcha tegishli sxemalar berilgan va asosiy elektron (atmega32) ham berilgan.

5 -qadam: Avr dasturlari

Avr dasturlari
Avr dasturlari
Avr dasturlari
Avr dasturlari

1. "Masofaviy sensor" uchun:

#qo'shing #qo'shing

#"remote.h" ni qo'shing

// Globals o'zgaruvchan unsigned int Time; // Asosiy taymer, vaqtni 10usda saqlaydi, // Yangilangan ISR (TIMER0_COMP) uchuvchi belgisiz bitNo char; // Keyingi BIT o'zgaruvchan imzosiz charchoqning posti ByteNo; // Joriy baytning pozitsiyasi

uchuvchisiz imzosiz char IrData [4]; // Ir paketining to'rtta baytli ma'lumoti // 2 baytli manzili 2 baytli ma'lumotlarning o'zgaruvchan belgisi bo'lmagan IrCmdQ [QMAX]; // Yakuniy buyruq qabul qilindi (bufer)

uchuvchi imzosiz char PrevCmd; // Takrorlash uchun ishlatiladi

// Tugmachani ma'lum vaqt bosib turgandan keyingina takrorlashni boshlash uchun ishlatiladigan o'zgaruvchilar

uchuvchi belgisiz charchoq Takrorlash; // 1 = ha 0 = yo'q uchuvchi belgisiz char RCount; // Takroriy son

o'zgaruvchan char QFront = -1, QEnd = -1;

o'zgaruvchan imzosiz char holati; // Qabul qiluvchining holati

uchuvchan bo'lmagan imzolangan char Edge; // Uzilish chegarasi [RISING = 1 OR FALLING = 0]

o'zgaruvchan imzosiz int stop;

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

void RemoteInit () {

char i; uchun (i = 0; i <4; i ++) IrData = 0;

to'xtatish = 0; Shtat = IR_VALIDATE_LEAD_HIGH; Yon = 0; Takrorlash = 0;

// Taymerni sozlash1 // ------------ TCCR0 | = ((1 <

TIMSK | = (1 <

OCR0 = TIMER_COMP_VAL; // Qiymatni solishtiring

imzosiz char GetRemoteCmd (char kutish) {unsigned char cmd;

if (kuting) while (QFront ==-1); aks holda (QFront ==-1) qaytish (RC_NONE);

cmd = IrCmdQ [QFront];

agar (QFront == QEnd) QFront = QEnd = -1; boshqa {agar (QFront == (QMAX-1)) QFront = 0; boshqa QFront ++; }

cmd qaytarish;

}

2. asosiy ():

int main (void) {

uint8_t cmd = 0; DDRB = 0x08;

DDRD = 0x80;

DDRC = 0x0f; PORTC = 0x00;

while (1) // Faol IR sensori uchun cheksiz pastadir {

cmd = GetRemoteCmd (1);

almashtirish (cmd) {

xx holat: {// BOT oldinga siljiydi // Ch+ btn forwardmotor ();

tanaffus; // Ikkala dvigatel ham oldinga yo'nalishda

}

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

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

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

standart: PORTC = 0x00; tanaffus; // Ham chap, ham o'ng dvigatellar to'xtaydi}

}

}/*Asosiy qismning oxiri*/

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

// Bu asosiy model, lekin men uni PWM rejimida ishlatishim mumkin.

//…………………………………………….. Maza qiling……………………………………………………//

Tavsiya: