Мазмуну:

AVR (ATMEGA32) MCU КОЛДОНГОН INFRA КЫЗЫЛ АЛЫСТАН БАШКАРЫЛГАН РОБОКАР: 5 кадам
AVR (ATMEGA32) MCU КОЛДОНГОН INFRA КЫЗЫЛ АЛЫСТАН БАШКАРЫЛГАН РОБОКАР: 5 кадам

Video: AVR (ATMEGA32) MCU КОЛДОНГОН INFRA КЫЗЫЛ АЛЫСТАН БАШКАРЫЛГАН РОБОКАР: 5 кадам

Video: AVR (ATMEGA32) MCU КОЛДОНГОН INFRA КЫЗЫЛ АЛЫСТАН БАШКАРЫЛГАН РОБОКАР: 5 кадам
Video: MOD\XM\WAV Micro SD Player on AVR MCU Atmega32 2024, Июль
Anonim
AVR (ATMEGA32) MCU колдонуучу INFRA RED алыстан башкарылуучу робокар
AVR (ATMEGA32) MCU колдонуучу INFRA RED алыстан башкарылуучу робокар

Бул проект инфрақызыл (IR) алыстан башкарылуучу RoboCarдын дизайнын жана ишке ашырылышын сүрөттөйт, ал ар кандай автоматташтырылган учкучсуз башкаруу үчүн колдонулат. Мен алыстан башкарылуучу RoboCar (сол-оң/алдыңкы-арткы кыймыл) долбоорун иштеп чыктым. Бүт система микроконтроллерге (Atmega32) негизделген, бул башкаруу системасын акылдуу жана башка колдонмолор үчүн оңой оңой кылат. Бул колдонуучуга RoboCar машинасын иштетүүгө же башкарууга жана 5 м аралыктан электр тармагын иштетүүгө мүмкүнчүлүк берет.

Негизги сөздөр: IR декодер, AVR (Atmega32) Микроконтроллер, ТВнын алыстан башкаргычы, Зымсыз байланыш

_

1 -кадам: IntraRed Байланыш

IntraRed байланыш
IntraRed байланыш

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

а) IR берүү

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

б) IR кабыл алуу

Алуучу фото детектордон турат, анда жарык түшкөндө электрдик сигнал иштеп чыгат. Детектордун чыгышы ташуучу жыштыктан төмөн же жогору болгон бардык жыштыктарды жокко чыгаруучу тар диапазондогу чыпка аркылуу чыпкаланат (бул учурда 38 КГц). Чыпкаланган продукт андан кийин Микроконтроллер же Микропроцессор сыяктуу шайманга берилет, ал ЖК же Робот сыяктуу түзмөктөрдү башкарат. Чыпкалардын чыгышы импульстарды окуу үчүн осциллографка да туташтырылышы мүмкүн.

IR колдонмолору:

Инфракызыл зымсыз байланышта, мониторингде жана контролдоодо колдонулат. Бул жерде кээ бир мисалдар келтирилген:

· Үй-көңүл ачуу алыстан башкаруу кутучалары

· Зымсыз (жергиликтүү тармактар)

· Ноутбуктар менен рабочий компьютерлердин ортосундагы байланыштар

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

· Кирүү детекторлору

· Кыймыл детекторлору

· Өрт сенсорлору

· Түнкү көрүү системалары

· Медициналык диагностикалык жабдуулар

· Ракеталарга багыттоочу системалар

· Геологиялык көзөмөлдөө приборлору

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 сенсорлору (Fig1)

TSOP1738, SFH-5110-38 (38kHz)

TSOP сенсорлорунун өзгөчөлүктөрү:

  • Алдын ала күчөткүч жана фото детектор экөө тең бир пакетте
  • PCM жыштыгы үчүн ички чыпка
  • Электр талаасынын бузулушуна каршы жакшыртылган коргонуу
  • TTL жана CMOS шайкештиги
  • Чыгуу активдүү төмөн Аз энергия керектөө
  • Сырткы жарыкка каршы жогорку иммунитет
  • Маалыматты үзгүлтүксүз берүү мүмкүн

NEC протоколу:

NEC IR берүү протоколу билдирүү биттеринин импульстук алыстык коддоону колдонот. Ар бир импульстун узундугу 562.5µs, ташуучу жыштыгы 38kHz (26.3µs). Логикалык биттер төмөнкүчө берилет (2 -сүрөт):

  • Логикалык '0' - 562.5µs импульстун жарылышы, андан кийин 562.5µs мейкиндик, жалпы берүү убактысы 1.125ms
  • Логикалык '1' - 562.5µs импульс жарылышы, андан кийин 1.6875ms мейкиндик, жалпы берүү убактысы 2.25ms

Ташуучу импульс 38 кГцте 21 циклден турат. Импульстар, адатта, учурдагы керектөөнү азайтуу үчүн 1: 4 деген белги/мейкиндик катышына ээ:

(Сүрөт 3)

Ар бир код ырааты AGC импульсу деп аталган 9 мс импульс менен башталат. Бул 4,5 мс үнсүздүк менен коштолот:

(Сүрөт 4)

Маалыматтар 32 биттен турат, 16-бит дареги, андан кийин 16-бит буйругу, аларды берүү тартибинде көрсөтүлгөн (солдон оңго):

(Сүрөт 5)

Берилиштердин төрт байты ар бири эң аз дегенде бир аз жөнөтүлөт. Figure 1 00h (00000000b) жана ADh (10101101b) буйругу үчүн NEC IR берүү алкагынын форматын көрсөтөт.

Билдирүү алкагын берүү үчүн жалпы 67.5ms талап кылынат. 16 бит даректи (дарек + тескери) жана 16 бит буйрукту (команда + тескери) берүү үчүн 27 мс керек.

(Сүрөт 6)

Кадрды берүү үчүн керектүү убакыт:

Дарек үчүн 16 бит (дарек + тескери) убакытты берүү үчүн 27ms талап кылат. Ал эми команда үчүн 16 бит (команда + тескери) убакытты берүү үчүн 27ms талап кылат. анткени (дарек + дарек тескери) же (тескерисинче команда + буйрук) ар дайым 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µs импульстун жарылышы мейкиндиктин аякташын белгилейт (жана демек, берилген кайталануучу коддун аягы).

(Сүрөт 7)

Кечиктирүүнү эсептөө (1ms):

Саат жыштыгы = 11.0592 МГц

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

Кечигүү = 1 мс

TimerValue = 65536 - ((Кечиктирүү * ClockFreq)/Machine Cycle) = 65536 - ((1ms * 11.0592Mhz)/12)

= 65536 - 921 = 0xFC67

3 -кадам: DC Motor Control L293D колдонуу

DC Motor Control L293D колдонуу
DC Motor Control L293D колдонуу

DC мотору

DC мотору электр энергиясын көптөгөн пайдалуу иштерди жасоого колдонулуучу механикалык энергияга айландырат. Бул менин RoboCarымдын Алга/Артка сөз сыяктуу механикалык кыймылын өндүрө алат. DC моторлору 6V жана 12V сыяктуу ар кандай рейтингдерде болот. Бул эки зым же казык бар. Биз киргизүү полярлыгын артка кайтаруу менен айлануу багытын артка кайтара алабыз.

Бул жерде биз L293Dну жакшы көрөбүз, анткени 600мА рейтинги кичинекей DC моторлорун айдоого жакшы жана коргоо диоддору ICдин өзүнө киргизилген. Ар бир пиндин сүрөттөмөсү төмөнкүчө: Пинстерди иштетүү: Бул пин номери. 1 жана пин номери. 9. Pin no. 1 Half-H айдоочу 1 жана 2 иштетүү үчүн колдонулат (Сол жактагы H көпүрөсү). Pin no. 9 H-көпүрө айдоочу 3 жана 4 иштетүү үчүн колдонулат (оң капталында H көпүрө).

Концепция жөнөкөй, эгер сиз белгилүү бир H көпүрөсүн колдонууну кааласаңыз, ICди электр менен камсыздоо менен бирге тиешелүү иштетүү казыктарына жогорку логиканы беришиңиз керек. Бул пин PWM техникасын колдонуу менен мотордун ылдамдыгын көзөмөлдөө үчүн да колдонулушу мүмкүн. Аны 5В токко туташтырыңыз. VCC2 (Pin 8): Мотор үчүн электр менен камсыздоо. Мотор рейтингине ылайык ага +вольтту колдонуңуз. Эгерде сиз моторуңузду 12В менен башкаргыңыз келсе, бул пинге 12В колдонуңуз.

Моторду чынжырга электр энергиясын берүү үчүн колдонулгандардан башка, түз эле батарейкада айдоого болот, Жөн гана ошол батарейканын +ve терминалын VCC2 пинине туташтырып, эки батареяны тең GND кылыңыз. (Бул пиндеги MAX чыңалуусу анын маалымат барагына ылайык 36В). GND (4, 5, 12, 13 -пинтер): Аларды схеманын жалпы GND -ге туташтырыңыз.

Бул башкаруу сигналдары микроконтроллерлер же башка схемалар/ICлер аркылуу берилүүчү кирүү казыктары. Мисалы, эгер пин 2де (1 -жарым H айдоочунун кириши) биз Logic 1 (5V) берсек, анда биз 1 -жарым H айдоочунун, башкача айтканда пин номери, тиешелүү чыккычы VCC2ге барабар чыңалууга ээ болобуз. 3. Окшош Логика 0 үчүн (0V) 2 -пин, 0V -пин 3 -те пайда болот. Кирүү сигналына ылайык, чыгуу сигналы келет.

Мотордук кыймылдар А Б.

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

…………… Токтоо: Төмөн: Төмөн

…… Сааттын жебеси боюнча: Төмөн: Жогорку

Сааттын жебесине каршы: Жогорку: Төмөн

……………. Токто: Жогорку: Жогорку

4 -кадам: Мотор айдоочусу жана IR сенсорунун схемалары

Мотор айдоочусу жана IR сенсорунун схемалары
Мотор айдоочусу жана IR сенсорунун схемалары
Мотор айдоочусу жана IR сенсорунун схемалары
Мотор айдоочусу жана IR сенсорунун схемалары
Мотор айдоочусу жана IR сенсорунун схемалары
Мотор айдоочусу жана IR сенсорунун схемалары

ATmega32-AVRдын жакшыртылган RISCarchitecture негизиндеги аз кубаттуу CMOS 8-биттик микроконтроллери. Күчтүү көрсөтмөлөрдү бир сааттык циклде аткаруу менен, ATmega32 тутумунун дизайнерине иштетүү ылдамдыгына каршы энергия керектөөнү оптималдаштырууга мүмкүндүк берүүчү 1 МГцке 1 MIPSке чейин жеткирүүгө жетишет.

AVR ядросу 32 жалпы максаттуу жумушчу реестри менен бай инструкцияны бириктирет. Бардык 32 регистрлер арифметикалык логикалык бирдикке (ALU) түз туташып, эки көз карандысыз реестрге бир сааттык циклде аткарылган бир көрсөтмөдө кирүүгө мүмкүндүк берет. Натыйжада алынган архитектура кодду эффективдүүрөөк кылат, ал эми өткөрүү жөндөмдүүлүгү кадимки CISC микроконтроллерлерине караганда он эсе ылдамыраак жетет.

ATmega32 төмөнкү функцияларды камсыз кылат:

  • Окуу-Жазуу мүмкүнчүлүгү бар 32 Кбайт тутумда программалана турган Flash программасынын эс тутуму,
  • 1024 байт EEPROM, 2K байт SRAM,
  • 32 жалпы максаттуу I/O линиялары,
  • 32 жалпы багыттагы жумушчу реестри,
  • Boundaryscan үчүн JTAG интерфейси,
  • Чип боюнча мүчүлүштүктөрдү оңдоо жана программалоо, салыштыруу режимдери бар үч ийкемдүү таймер/эсептегичтер, Ички жана тышкы үзгүлтүктөр, сериялык программалоочу USART, байтка багытталган эки зымдуу сериялык интерфейс, 8-канал,
  • Программалануучу кирешеси бар кошумча дифференциалдуу киргизүү этапы менен 10-бит ADC (TQFP пакети гана),
  • ички осциллятору бар программалоочу Watchdog Timer,
  • SPI сериялык порту жана
  • алты программалык камсыздоону тандоо режими.

    • USARTге уруксат берүү менен күтүү режими CPUны токтотот,
    • Эки зымдуу интерфейс, A/D Converter,
    • SRAM,
    • Таймер/эсептегичтер,
    • SPI порту жана
    • ишин улантуу үчүн үзгүлтүккө учуратуу системасы.
    • Өчүрүү режими реестрдин мазмунун сактайт, бирок Осцилляторду тоңдуруп, кийинки тышкы үзгүлтүккө же жабдыкты баштапкы абалга келтиргенге чейин башка бардык чип функцияларын өчүрөт.
    • Кубатты үнөмдөө режиминде, Асинхрондук Таймер иштөөнү улантууда, бул колдонуучуга башка шайман уктап жатканда таймер базасын сактоого мүмкүнчүлүк берет.
    • ADC ызы -чууну басаңдатуу режими CPU жана асинхрондук таймер менен ADCден башка бардык I/O модулдарын токтотуп, ADC конверсиясы учурунда которуштуруу ызы -чуусун азайтуу үчүн.
    • Күтүү режиминде, кристалл/резонатор осциллятору иштеп жатат, ал эми аппараттын калган бөлүгү уктап жатат. Бул аз кубат керектөө менен бирге абдан тез баштоого мүмкүндүк берет.
    • Узартылган күтүү режиминде негизги осциллятор да, асинхрондук таймер да иштей берет.

Бардык тиешелүү схемалар бул жерде берилет жана негизги схема (atmega32) да берилет.

5 -кадам: Avr программалары

Avr программалары
Avr программалары
Avr программалары
Avr программалары

1. "Алыстан сенсор" үчүн:

#кошуу #кошуу

#"remote.h" кошуу

// Глобалдык туруксуз unsigned int Time; // Негизги таймер, убакытты 10уска сактайт, // ISR (TIMER0_COMP) тарабынан жаңыртылган, кол коюлбаган char BitNo; // кийинки BITтин туруксуз кол коюлбаган посту ByteNo; // Учурдагы байттын позициясы

туруксуз кол коюлбаган char IrData [4]; // Ир пакеттин төрт маалымат байты // 2 байттык дарек 2 байттуу маалыматтар туруксуз кол коюлбаган char IrCmdQ [QMAX]; // Акыркы буйрук алынды (Буфер)

туруксуз белгисиз char PrevCmd; // Кайталоо үчүн колдонулат

// Белгилүү бир убакыт басылганда гана кайталана баштоо үчүн колдонулуучу өзгөрмөлөр

туруксуз белгисиз char Repeat; // 1 = ооба 0 = жок туруксуз кол коюлбаган char RCount; // Кайталап саноо

туруксуз char QFront = -1, QEnd = -1;

туруксуз кол коюлбаган char мамлекети; // Алуучунун абалы

туруксуз кол коюлбаган char Edge; // Үзүлүүнүн кыры [RISING = 1 OR FALLING = 0]

туруксуз кол коюлбаган int токтотуу;

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

жараксыз RemoteInit () {

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

stop = 0; Штат = IR_VALIDATE_LEAD_HIGH; Edge = 0; Repeat = 0;

// Орнотуу Timer1 // ------------ TCCR0 | = ((1 <

ТИМСК | = (1 <

OCR0 = TIMER_COMP_VAL; // Салыштырма маанини коюңуз

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

if (wait) 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. main ():

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

uint8_t cmd = 0; DDRB = 0x08;

DDRD = 0x80;

DDRC = 0x0f; PORTC = 0x00;

while (1) // Активдүү IR сенсоруна чексиз цикл {

cmd = GetRemoteCmd (1);

которуштуруу (cmd) {

case xx: {// BOT алга жылат // Ch+ btn forwardmotor ();

тыныгуу; // Эки мотор тең алдыга карай

}

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

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

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

демейки: PORTC = 0x00; break; // Оң жана сол мотору токтоп калды}

}

}/*Негизги аягы*/

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

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

//…………………………………………….. Көңүл ачуу……………………………………………………//

Сунушталууда: