Мазмұны:

AVR (ATMEGA32) MCU қолданатын INFRA ҚЫЗЫЛ ҚАШЫҚТАН БАСҚАРЫЛҒАН РОБОКАР: 5 қадам
AVR (ATMEGA32) MCU қолданатын INFRA ҚЫЗЫЛ ҚАШЫҚТАН БАСҚАРЫЛҒАН РОБОКАР: 5 қадам

Бейне: AVR (ATMEGA32) MCU қолданатын INFRA ҚЫЗЫЛ ҚАШЫҚТАН БАСҚАРЫЛҒАН РОБОКАР: 5 қадам

Бейне: AVR (ATMEGA32) MCU қолданатын INFRA ҚЫЗЫЛ ҚАШЫҚТАН БАСҚАРЫЛҒАН РОБОКАР: 5 қадам
Бейне: MOD\XM\WAV Micro SD Player on AVR MCU Atmega32 2024, Шілде
Anonim
AVR (ATMEGA32) MCU қолданатын INFRA ҚЫЗЫЛ ҚАШЫҚТАН БАСҚАРЫЛҒАН РОБОКАР
AVR (ATMEGA32) MCU қолданатын INFRA ҚЫЗЫЛ ҚАШЫҚТАН БАСҚАРЫЛҒАН РОБОКАР

Бұл ЖОБА автоматтандырылған пилотсыз басқару қосымшаларында қолдануға болатын инфрақызыл (IR) қашықтан басқарылатын RoboCar конструкциясын және енгізілуін сипаттайды. Мен қашықтан басқарылатын RoboCar құрдым (солдан оңға/алдыңғыдан артқа). Бүкіл жүйе микроконтроллерге (Atmega32) негізделген, бұл басқару жүйесін ақылды етеді және басқа қосымшалар үшін өзгертуді жеңілдетеді. Бұл пайдаланушыға RoboCar машинасын басқаруға немесе басқаруға және электр желісінің қосқышын шамамен 5 метр қашықтықта басқаруға мүмкіндік береді.

Негізгі сөздер: IR декодері, AVR (Atmega32) микроконтроллері, теледидардың қашықтан басқару пульті, сымсыз байланыс

_

1 -қадам: IntraRed байланысы

IntraRed байланыс
IntraRed байланыс

IR байланыс принципі:

а) ИҚ тарату

ИК жарықдиодты таратқышы оның тізбегіндегі, оған берілген әрбір электр импульсіне инфрақызыл сәуле шығарады. Бұл импульс қашықтан басқару пультіндегі түймені басқанда пайда болады, осылайша схеманы аяқтайды, светодиоды біржақты етеді. Біржақты жарық диоды 940нм толқын ұзындығының жарығын импульс сериясы ретінде шығарады, бұл батырманың басылуына сәйкес келеді. Алайда, ИҚ -диодты жарық диодтарымен бірге біз, адамдар, шамдар, күн сияқты инфрақызыл сәулелердің басқа да көздері болғандықтан, берілген ақпаратқа кедергі келтірілуі мүмкін. Бұл мәселенің шешімі - модуляция. Берілген сигнал 38 КГц (немесе 36-46 КГц арасындағы кез келген басқа жиіліктегі) тасымалдаушы жиілігі арқылы модуляцияланады. IR жарықдиодты импульстің уақытына осы жиілікте тербелуге арналған. Ақпарат немесе жарық сигналдары импульстің ені бойынша модуляцияланған және 38 КГц жиілікте қамтылған. Инфрақызыл тарату толқын ұзындығында көрінетін жарыққа қарағанда ұзын, бірақ радиотолқынға қарағанда қысқа электромагниттік сәулелену спектрінің аймағындағы энергияны білдіреді. Сәйкесінше, инфрақызыл жиілік микротолқынға қарағанда жоғары, бірақ көрінетін жарыққа қарағанда төмен. Ғалымдар инфрақызыл сәулелену спектрін үш аймаққа бөледі. Толқын ұзындығы микронмен (µ белгісі, мұнда 1 µ = 10-6 метр) немесе нанометрде (қысқартылған nm, мұнда 1 нм = 10-9 метр = 0,001 5) көрсетілген. Жақын ИҚ диапазонында шамамен 0,750 -ден 1,300 5 -ке дейінгі (750 -ден 1300 нм) толқын ұзындығының диапазонында энергия бар. Аралық ИҚ диапазоны (орташа ИҚ диапазоны деп те аталады) 1.300 -ден 3.000 5 (1300 -ден 3000 нм) диапазонындағы энергиядан тұрады. Алыстағы IR диапазоны 2.000 -нан 14.000 5 -ке дейін созылады (3000 нм - 1.4000 x 104 нм).

б) ИҚ қабылдау

Қабылдағыш фото детектордан тұрады, ол жарық түсетін кезде шығатын электр сигналын дамытады. Детектордың шығысы тасымалдаушы жиіліктен төмен немесе одан жоғары жиіліктердің барлығын жоятын тар жолақты сүзгі көмегімен сүзіледі (бұл жағдайда 38 КГц). Содан кейін сүзілген шығыс компьютер немесе робот сияқты құрылғыларды басқаратын микроконтроллер немесе микропроцессор сияқты сәйкес құрылғыға беріледі. Импульстерді оқу үшін сүзгілердің шығысын осциллографқа да қосуға болады.

IR қолдану:

Инфрақызыл сымсыз байланыстың, бақылаудың және бақылаудың әр түрлі қосымшаларында қолданылады. Міне, бірнеше мысалдар:

· Үйдегі ойын-сауық үшін қашықтан басқару пульті

· Сымсыз (жергілікті желі)

· Ноутбуктер мен жұмыс үстелі компьютерлері арасындағы байланыстар

· Сымсыз модем

· Интрузия детекторлары

· Қозғалыс детекторлары

· Өрт сенсорлары

· Түнгі көру жүйелері

· Медициналық диагностикалық қондырғы

· Зымырандық бағыттау жүйелері

· Геологиялық бақылау құрылғылары

ИҚ деректерін бір құрылғыдан екіншісіне беру кейде сәулелену деп аталады.

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 сенсорлары (1 -сурет)

TSOP1738, SFH-5110-38 (38кГц)

TSOP сенсорларының ерекшеліктері:

  • Алдын ала күшейткіш пен фото детектор екеуі де бір пакетте
  • PCM жиілігінің ішкі сүзгісі
  • Электр өрісінің бұзылуына қарсы жақсартылған қорғаныс
  • TTL мен CMOS үйлесімділігі
  • Шығу белсенді төмен Қуатты аз тұтыну
  • Сыртқы жарыққа қарсы жоғары иммунитет
  • Деректерді үздіксіз беру мүмкіндігі

NEC хаттамасы:

NEC IR жіберу хаттамасы хабар биттерін импульстік қашықтықты кодтауды қолданады. Әрбір импульстің ұзындығы 562,5 мкс, тасымалдаушы жиілігі 38 кГц (26,3 мс). Логикалық биттер келесі түрде беріледі (2 -сурет):

  • Логикалық '0' - 562,5 мкб импульстік жарылыс, содан кейін 562,5 мкс кеңістік, жалпы жіберу уақыты 1,125 мс
  • Логикалық '1' - 562,5 микс импульстік жарылыс, одан кейін 1,6875 м кеңістік, жалпы жіберу уақыты 2,25 мс

Тасымалдаушы импульс 38 кГц жиіліктегі 21 циклден тұрады. Импульстар әдетте ағымдағы тұтынуды азайту үшін 1: 4 белгісі/кеңістік қатынасына ие:

(3 -сурет)

Әр код тізбегі AGS импульсі деп аталатын 9 мс импульстен басталады. Осыдан кейін 4,5 м тыныштық сақталады:

(Cурет 4)

Содан кейін деректер 32 биттен, 16 биттік адрестен кейін 16 биттік пәрменнен тұрады, олар берілу ретімен көрсетілген (солдан оңға):

(5 -сурет)

Деректер битінің төрт байты әрқайсысы ең алдымен маңызды битке жіберіледі. 1 -суретте 00h (00000000b) адресі мен ADh (10101101b) пәрмені үшін NEC IR тарату жақтауының форматы көрсетілген.

Хабарлама кадрын беру үшін барлығы 67,5 мс қажет. Адрестің 16 битін (адрес + кері) және команданың 16 битін (пәрмен + кері) беру үшін 27 мс қажет.

(6 -сурет)

Жақтауды жіберу үшін қажет уақыт:

Адрес үшін 16 бит (адрес + кері) уақытты беру үшін 27 мс талап етеді. Пәрмен үшін 16 бит (команда + кері) уақытты беру үшін 27 мс қажет. себебі (адрес + адрес кері) немесе (пәрмен + пәрмен кері) әрқашан 8 '0 және 8' 1 -ден тұрады (8 * 1.125ms) + (8 * 2.25ms) == 27 мс. сәйкес кадрды беру үшін қажет жалпы уақыт (9ms +4.5ms +27ms +27ms) = 67.5 ms.

ҚАЙТАЛАУ КОДТАРЫ: Егер қашықтан басқару пультіндегі кілт басылып тұрса, қайталау коды шығарылады, әдетте хабардың аяқталуын білдіретін импульстің жарылуынан шамамен 40 мс кейін. Қайталанатын код кілт босатылғанша 108 мс интервалмен жіберіле береді. Қайталау коды келесі тәртіптен тұрады:

  • 9 мс жететін импульстік жарылыс
  • кеңістігі - 2,25 мс
  • кеңістіктің соңын (демек, берілген қайталанатын кодтың соңын) белгілеу үшін 562,5 микс импульс жарылуы.

(Cурет 7)

Кешіктіруді есептеу (1 мс):

Сағат жиілігі = 11.0592 МГц

Машина циклы = 12

Кешігу = 1 мс

TimerValue = 65536 - ([Кешіктіру * ClockFreq]/Машина циклы) = 65536 - (((1ms * 11.0592МГц)/12)

= 65536 - 921 = 0xFC67

3 -қадам: L293D көмегімен тұрақты ток қозғалтқышын басқару

L293D көмегімен тұрақты ток қозғалтқышын басқару
L293D көмегімен тұрақты ток қозғалтқышын басқару

Тұрақты ток қозғалтқышы

Тұрақты ток қозғалтқышы электр энергиясын көптеген пайдалы жұмыстарды орындауға болатын механикалық энергияға айналдырады. Ол менің RoboCar -тың алға/артқа сөзі сияқты механикалық қозғалысты жасай алады. Тұрақты ток қозғалтқыштары 6В және 12В сияқты әр түрлі рейтингіде келеді. Онда екі сым немесе түйреуіш бар. Біз кіріс полярлығын өзгерту арқылы айналу бағытын өзгерте аламыз.

Мұнда біз L293D -ге артықшылық береміз, өйткені 600мА рейтингі шағын тұрақты ток қозғалтқыштарын басқаруға жақсы, ал қорғаныс диодтары IC -ге кіреді. Әр түйреуіштің сипаттамасы келесідей: түйреуіштерді қосу: Бұл түйреуіш нөмірі. 1 және пин нөмірі. 9. PIN нөмірі. 1 Half-H драйверін 1 және 2 қосу үшін қолданылады (Сол жақтағы H көпірі). PIN нөмірі 9 3-ші және 4-ші көпір драйверін қосу үшін пайдаланылады (оң жақтағы көпір).

Тұжырымдама қарапайым, егер сіз H көпірін қолданғыңыз келсе, IC -ге қуат беруімен бірге тиісті қосқыш түйреуіштерге жоғары логика беруіңіз керек. Бұл түйреуішті PWM техникасының көмегімен қозғалтқыштың жылдамдығын басқару үшін де қолдануға болады. Оны 5В қуат көзіне қосыңыз. VCC2 (8 -түйреуіш): Қозғалтқыштың қуат көзі. Қозғалтқыштың рейтингі бойынша оған +кернеуді қолданыңыз. Егер сіз қозғалтқышты 12В кернеумен басқарғыңыз келсе, осы істікшеге 12В кернеуді қолданыңыз.

Қозғалтқышты тізбекке қуат беру үшін пайдаланылмайтын аккумулятордан басқа тікелей қозғалтқышты басқаруға болады, сол батареяның +ve терминалын VCC2 түйреуішіне жалғап, екі батареяның GND -ді ортақ етіңіз. (Бұл істіктегі MAX кернеуі оның деректер кестесінде 36В). GND (4, 5, 12, 13 түйреуіштері): Оларды жалпы GND схемасына қосыңыз. Кірістер (2, 7, 10, 15 түйреуіштер):

Бұл кіріс сигналдары, олар арқылы басқару сигналдары микроконтроллерлермен немесе басқа схемалармен/IC -лермен беріледі. Мысалы, егер түйреуіш 2 -де (1 -ші жарты H драйверінің кірісі) біз Logic 1 (5V) берсек, онда біз 1 -ші жартысындағы H драйверінің сәйкес шығыс істікшесінде VCC2 -ге тең кернеуді аламыз, яғни пин. 3. 2 -шпильдегі 0 (0В) логикасы үшін, 3 -істікте 0В шығады, шығыс (3 -ші, 6 -шы, 11 -ші, 14 -ші): түйреуіштерді шығарады. Кіріс сигналына сәйкес шығыс сигналы келеді.

Қозғалтқыш қозғалыстары A B

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

…………… Stop: Low: Low

…… Сағат тілімен: Төмен: Жоғары

Сағат тіліне қарсы: жоғары: төмен

……………. Тоқтау: Жоғары: Жоғары

4 -қадам: мотор драйвері мен инфрақызыл сенсорға арналған схемалар

Мотор драйвері мен ИҚ сенсорына арналған схемалар
Мотор драйвері мен ИҚ сенсорына арналған схемалар
Мотор драйвері мен ИҚ сенсорына арналған схемалар
Мотор драйвері мен ИҚ сенсорына арналған схемалар
Мотор драйвері мен ИҚ сенсорына арналған схемалар
Мотор драйвері мен ИҚ сенсорына арналған схемалар

ATmega32-AVR жақсартылған RISCarchitecture негізделген қуаты төмен CMOS 8-биттік микроконтроллер. Бір сағаттық циклде қуатты нұсқауларды орындау арқылы ATmega32 жүйелік конструкторға өңдеу жылдамдығымен салыстырғанда энергия шығынын оңтайландыруға мүмкіндік беретін 1 МГц үшін 1 MIPS жылдамдыққа жетуге мүмкіндік береді.

AVR ядросы 32 жалпы мақсаттағы жұмыс регистрлерімен бай нұсқаулар жиынтығын біріктіреді. Барлық 32 регистрлер арифметикалық логикалық блокқа (ALU) тікелей қосылған, бұл екі тәуелсіз регистрге бір сағаттық циклде орындалатын бір нұсқаулықта қол жеткізуге мүмкіндік береді. Алынған архитектура кодты тиімдірек етеді, сонымен қатар өнімділікке қарапайым CISC микроконтроллерлерінен он есе жылдам жетеді.

ATmega32 келесі мүмкіндіктерді ұсынады:

  • Оқу кезінде жазу мүмкіндігі бар 32 Кбайт жүйелік бағдарламаланатын флэш-бағдарламалық жады,
  • 1024 байт EEPROM, 2K байтты SRAM,
  • 32 жалпы мақсаттағы енгізу -шығару жолдары,
  • 32 жалпы мақсаттағы жұмыс регистрі,
  • Boundaryscan үшін JTAG интерфейсі,
  • Микросхемада жөндеуді қолдау және бағдарламалау, салыстыру режимі бар үш икемді таймер/есептегіштер, ішкі және сыртқы үзілістер, сериялық бағдарламаланатын USART, байтқа бағытталған екі сымды сериялық интерфейс, 8 арналы,
  • Қосымша дифференциалды енгізу сатысы бар 10 биттік ADC (тек TQFP пакеті),
  • бағдарламаланатын ішкі осцилляторы бар күзетші таймері,
  • SPI сериялық порты және
  • бағдарламалық қамтамасыз етуді таңдауға болатын алты қуатты үнемдеу режимі.

    • Күту режимі CPU -ды тоқтатады, бұл USART -ке рұқсат береді,
    • Екі сымды интерфейс, A/D түрлендіргіші,
    • SRAM,
    • Таймер/есептегіштер,
    • SPI порты және
    • жұмысын жалғастыру үшін үзіліс жүйесі.
    • «Өшіру» режимі регистр мазмұнын сақтайды, бірақ осцилляторды қатырады, келесі барлық сыртқы функцияларды өшіреді немесе келесі сыртқы үзіліске дейін.
    • Қуатты үнемдеу режимінде асинхронды таймер жұмысын жалғастырады, бұл пайдаланушыға құрылғының қалған бөлігі ұйықтап жатқанда таймер базасын сақтауға мүмкіндік береді.
    • ADC шуды азайту режимі ADC түрлендіру кезінде ауысатын шуды азайту үшін асинхронды таймер мен ADC -ден басқа барлық енгізу -шығару модульдерін және процессорды тоқтатады.
    • Күту режимінде кристалды/резонаторлық осциллятор құрылғының қалған бөлігі ұйықтап жатқанда жұмыс істейді. Бұл қуатты аз тұтынумен бірге өте тез іске қосуға мүмкіндік береді.
    • Кеңейтілген күту режимінде негізгі осциллятор да, асинхронды таймер де жұмысын жалғастырады.

Барлық байланысты тізбектер осында берілген, сонымен қатар негізгі схема (atmega32) берілген.

5 -қадам: Авр бағдарламалары

Avr бағдарламалары
Avr бағдарламалары
Avr бағдарламалары
Avr бағдарламалары

1. «Қашықтан басқару сенсоры» үшін:

#қосу #қосу

#«remote.h» қосыңыз

// Globals тұрақсыз белгісіз int Time; // Негізгі таймер, уақытты 10us -та сақтайды, // ISR (TIMER0_COMP) жаңартылған, белгісіз char BitNo; // Келесі BIT тұрақсыз қолтаңбасыз char ByteNo позициясы; // Ағымдағы байт позициясы

IrData [4] тұрақсыз белгісі жоқ char; // Төрт байт Ir пакеті // 2 байтты адрес 2 байтты деректер тұрақсыз таңбасыз char IrCmdQ [QMAX]; // Соңғы пәрмен алынды (Буфер)

тұрақсыз белгісіз char PrevCmd; // Қайталау үшін қолданылады

// Айнымалылар перне белгілі бір уақыт басылғаннан кейін ғана қайталана бастайды

тұрақсыз белгісіз char Repeat; // 1 = иә 0 = жоқ тұрақсыз таңбасыз char RCount; // Қайталау саны

тұрақсыз char QFront = -1, QEnd = -1;

қол қойылмайтын тұрақсыз мемлекет; // Қабылдағыш жағдайы

ұшпа белгісіз char Edge; // Үзіліс жиегі [RISING = 1 OR FALLING = 0]

тұрақсыз қол қойылмаған int stop;

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

void RemoteInit () {

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

тоқтату = 0; Мемлекет = IR_VALIDATE_LEAD_HIGH; Шеті = 0; Қайталау = 0;

// Таймерді орнату1 // ------------ TCCR0 | = ((1 <

TIMSK | = (1 <

OCR0 = TIMER_COMP_VAL; // Салыстыру мәнін орнатыңыз

белгісіз char GetRemoteCmd (char күту) {unsigned char cmd;

if (күту) while (QFront ==-1); else if (QFront ==-1) return (RC_NONE);

cmd = IrCmdQ [QFront];

егер (QFront == QEnd) QFront = QEnd = -1; else {if (QFront == (QMAX-1)) QFront = 0; else QFront ++; }

cmd қайтару;

}

2. негізгі ():

int main (жарамсыз) {

uint8_t cmd = 0; DDRB = 0x08;

DDRD = 0x80;

DDRC = 0x0f; PORTC = 0x00;

while (1) // Белсенді IR сенсорына шексіз цикл {

cmd = GetRemoteCmd (1);

ауысу (cmd) {

xx жағдай: {// BOT Алға жылжиды // Ch+ btn forwardmotor ();

үзіліс; // Екі қозғалтқыш алға бағытталған

}

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

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

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

әдепкі: PORTC = 0x00; үзіліс; // Сол және оң қозғалтқыштар тоқтайды}

}

}/*Негізгі бөлімнің соңы*/

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

// Бұл негізгі модель, бірақ мен оны PWM режимінде қолдана аламын.

//…………………………………………….. Масайрау……………………………………………………//

Ұсынылған: