Агуулгын хүснэгт:

AVR (ATMEGA32) MCU ашиглан INFRA RED алсын удирдлагатай робокар: 5 алхам
AVR (ATMEGA32) MCU ашиглан INFRA RED алсын удирдлагатай робокар: 5 алхам

Видео: AVR (ATMEGA32) MCU ашиглан INFRA RED алсын удирдлагатай робокар: 5 алхам

Видео: AVR (ATMEGA32) MCU ашиглан INFRA RED алсын удирдлагатай робокар: 5 алхам
Видео: AVR Atmega32, Atmega16, Full Design and Code Hindi | Live | Electronics electrical engineering. 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 холбооны зарчим:

a) IR дамжуулалт

Цахилгаан импульс бүрт хэт улаан туяа цацруулдаг хэлхээний доторх IR LED дамжуулагч. Энэхүү импульс нь алсын удирдлага дээрх товчлуурыг дарахад үүсдэг бөгөөд ингэснээр хэлхээг дуусгаж, LED -ийн хэвийх утгыг өгдөг. Нэг талыг барьсан LED нь 940нм долгионы урттай гэрлийг хэд хэдэн импульс хэлбэрээр гаргадаг бөгөөд энэ нь товчлуур дарагдсантай холбоотой юм. Гэсэн хэдий ч 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 нм) хүртэлх энергиэс бүрдэнэ. Хэт улаан туяаны зурвас нь 2.000 -аас 14.000 5 (3000 нм -ээс 1.4000 x 104 нм) хүртэл үргэлжилдэг.

б) IR хүлээн авах

Хүлээн авагч нь гэрэл тусах үед гаралтын цахилгаан дохиог хөгжүүлдэг гэрэл мэдрэгчээс бүрдэнэ. Илрүүлэгчийн гаралтыг нарийн зурвасын шүүлтүүрээр шүүж, дамжуулагчийн давтамжаас доош буюу түүнээс дээш бүх давтамжийг устгадаг (энэ тохиолдолд 38 КГц). Дараа нь шүүсэн гаралтыг компьютер эсвэл робот гэх мэт төхөөрөмжийг хянадаг микроконтроллер эсвэл микропроцессор гэх мэт тохиромжтой төхөөрөмжид өгнө. Шүүлтүүрийн гаралтыг осциллографт холбож импульсийг уншиж болно.

IR програмууд:

Хэт улаан туяаг янз бүрийн утасгүй холбоо, хяналт, хяналтын програмуудад ашигладаг. Энд хэдэн жишээ байна:

· Гэр-зугаа цэнгэлийн алсын удирдлагатай хайрцаг

· Утасгүй (дотоод сүлжээ)

· Зөөврийн компьютер болон ширээний компьютеруудын хоорондох холбоо

· Утасгүй модем

· Халдлага илрүүлэгч

· Хөдөлгөөн мэдрэгч

· Галын мэдрэгч

· Шөнийн харааны систем

· Эмнэлгийн оношлогооны төхөөрөмж

· Пуужингийн удирдлагын систем

· Геологийн хяналтын төхөөрөмж

IR өгөгдлийг нэг төхөөрөмжөөс нөгөө төхөөрөмж рүү дамжуулахыг заримдаа цацраг туяа гэж нэрлэдэг.

Алхам 2: IR мэдрэгч ба NEC протокол Fromat

IR мэдрэгч ба NEC протокол Fromat
IR мэдрэгч ба NEC протокол Fromat
IR мэдрэгч ба NEC протокол Fromat
IR мэдрэгч ба NEC протокол Fromat
IR мэдрэгч ба NEC протокол Fromat
IR мэдрэгч ба NEC протокол Fromat
IR мэдрэгч ба NEC протокол Fromat
IR мэдрэгч ба NEC протокол Fromat

IR мэдрэгч (Зураг 1)

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

TSOP мэдрэгчийн онцлог шинж чанарууд:

  • Урьдчилан өсгөгч ба гэрэл илрүүлэгч хоёулаа нэг багцад байна
  • PCM давтамжийн дотоод шүүлтүүр
  • Цахилгаан талбайн эвдрэлээс хамгаалах хамгаалалтыг сайжруулсан
  • TTL ба CMOS -ийн нийцтэй байдал
  • Гаралт идэвхтэй бага Цахилгаан зарцуулалт бага
  • Орчны гэрлийн эсрэг өндөр дархлаа
  • Мэдээллийг тасралтгүй дамжуулах боломжтой

NEC протокол:

NEC IR дамжуулах протокол нь мессежийн битийн импульсийн зайн кодчиллыг ашигладаг. Импульсийн тэсрэлт бүр 562.5µs урттай, 38 кГц давтамжтай (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)

Кодын дараалал бүр нь 9ms импульсээс эхэлдэг бөгөөд үүнийг AGC импульс гэж нэрлэдэг. Үүний дараа 4.5 мс чимээгүй болно.

(Зураг 4)

Өгөгдөл нь 32 битээс бүрдэх бөгөөд 16 битийн хаяг, дараа нь 16 битийн командыг дамжуулах дарааллаар нь харуулав (зүүнээс баруун тийш):

(Зураг 5)

Дөрвөн байтын өгөгдлийн битийг эхлээд хамгийн бага ач холбогдолтой бит илгээдэг. 1 -р зурагт 00h (00000000b) хаяг болон ADh (10101101b) командын NEC IR дамжуулах хүрээний форматыг харуулав.

Зурвасын хүрээг дамжуулахад нийт 67.5ms шаардлагатай. 16 бит хаяг (хаяг + урвуу), 16 бит командыг (тушаал + урвуу) дамжуулахад 27ms хэрэгтэй.

(Зураг 6)

Хүрээг дамжуулахад шаардагдах хугацаа:

Хаягийн 16 бит (хаяг + урвуу) нь 27ms цагийг дамжуулах шаардлагатай. Мөн тушаалын 16 бит (тушаал + урвуу) нь бас 27ms дамжуулах шаардлагатай. Учир нь (хаяг + хаяг урвуу) эсвэл (тушаал + команд урвуу) үргэлж 8 '0 ба 8' 1 -ийг агуулсан байх болно (8 * 1.125ms) + (8 * 2.25ms) == 27 ms. Энэ дагуу хүрээ дамжуулахад шаардагдах нийт хугацаа (9ms +4.5ms +27ms +27ms) = 67.5 ms байна.

ДАХИН ДАХИН КОД: Хэрэв алсын удирдлага дээрх товчлуур дарагдсан хэвээр байвал давтан код гарна, ихэвчлэн импульс тасарсны дараа мессеж дууссаныг илэрхийлдэг. Дахин давтах кодыг түлхүүрийг суллах хүртэл 108 ms интервалтайгаар үргэлжлүүлэн илгээнэ. Дахин давтах код нь дараах дарааллаас бүрдэнэ.

  • 9ms тэргүүлэх импульсийн дэлбэрэлт
  • 2.25 мс зайтай
  • орон зайн төгсгөлийг (улмаар дамжуулсан давтагдах кодын төгсгөл) тэмдэглэхийн тулд 562.5µs импульсийн дэлбэрэлт.

(Зураг 7)

Тооцооллыг хойшлуулах (1ms):

Цагны давтамж = 11.0592 МГц

Машины мөчлөг = 12

Саатал = 1 мс

TimerValue = 65536 - ([Саатал * ClockFreq]/Машины цикл) = 65536 - ((1ms * 11.0592Mhz)/12)

= 65536 - 921 = 0xFC67

Алхам 3: L293D ашиглан DC моторын хяналт

L293D ашиглан DC моторын хяналт
L293D ашиглан DC моторын хяналт

DC мотор

Тогтмол гүйдлийн мотор нь цахилгаан энергийг механик энерги болгон хувиргадаг бөгөөд үүнийг олон ашигтай ажилд ашиглаж болно. Энэ нь миний RoboCar -ийн Go Forward/Backword гэх мэт механик хөдөлгөөнийг бий болгож чадна. DC мотор нь 6V ба 12V гэх мэт янз бүрийн үнэлгээтэй байдаг. Энэ нь хоёр утас эсвэл тээглүүртэй. Бид оролтын туйлыг эргүүлж эргүүлэх чиглэлээ эргүүлж чадна.

Энд бид L293D -ийг илүүд үздэг, учир нь 600мА -ийн зэрэглэл нь жижиг DC мотор жолоодоход тохиромжтой бөгөөд хамгаалалтын диодууд нь IC -д багтдаг. Зүү бүрийн тайлбар дараах байдалтай байна. 1 ба пин дугаар. 9. Pin дугаар. 1 нь Half-H драйвер 1 ба 2-ийг идэвхжүүлэхэд ашиглагддаг (Зүүн талд H гүүр). Үгүй. 9 нь H-bridge драйвер 3 ба 4-ийг идэвхжүүлэхэд ашиглагддаг (баруун талын H гүүр).

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

Моторыг хэлхээнд тэжээл өгөхөөс бусад батерейгаар шууд жолоодох боломжтой бөгөөд зөвхөн зайны +терминалыг VCC2 зүүгээр холбож, хоёр батерейны GND -ийг нийтлэг болгох боломжтой. (Энэ зүү дээрх MAX хүчдэл нь мэдээллийн хүснэгтийн дагуу 36V байна). GND (4, 5, 12, 13 -р зүү): Тэднийг хэлхээний нийтлэг GND руу холбоно. Оролт (2, 7, 10, 15 -р зүү):

Эдгээр нь хяналтын дохиог микроконтроллер эсвэл бусад хэлхээ/IC -ээр дамжуулдаг оролтын зүү юм. Жишээлбэл, хэрэв 2 -р зүү дээр (H хагас жолоочийн 1 -р хагас оролт) логик 1 (5V) өгвөл бид 1 -р хагас H драйверын харгалзах гаралтын зүү дээр VCC2 -тэй тэнцүү хүчдэл авах болно. 3. Үүнтэй адил 2 -р зүү дээрх логик 0 (0V), 3 -р зүү дээр 0V гарч ирдэг, гаралт (Pin 3, 6, 11, 14): гаралтууд Оролтын дохионы дагуу гаралтын дохио ирдэг.

Моторын хөдөлгөөн A B

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

…………… Зогсоох: Бага: Бага

…… Цагийн зүүний дагуу: Бага: Өндөр

Цагийн зүүний эсрэг: Өндөр: Бага

……………. Зогсоох: Өндөр: Өндөр

Алхам 4: Мотор драйвер ба IR мэдрэгчийн хэлхээний диаграм

Мотор драйвер ба IR мэдрэгчийн хэлхээний диаграм
Мотор драйвер ба IR мэдрэгчийн хэлхээний диаграм
Мотор драйвер ба IR мэдрэгчийн хэлхээний диаграм
Мотор драйвер ба IR мэдрэгчийн хэлхээний диаграм
Мотор драйвер ба IR мэдрэгчийн хэлхээний диаграм
Мотор драйвер ба IR мэдрэгчийн хэлхээний диаграм

ATmega32 бол AVR сайжруулсан RISCarchitecture дээр суурилсан бага хүчин чадалтай CMOS 8 битийн микроконтроллер юм. Хүчирхэг зааварчилгааг нэг цагийн мөчлөгөөр гүйцэтгэснээр ATmega32 нь нэг MHz тутамд 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 порт ба
    • үргэлжлүүлэн ажиллахын тулд системийг тасалдуул.
    • Power-down горим нь бүртгэлийн агуулгыг хадгалдаг боловч осцилляторыг хөлдөөж, дараагийн гадаад тасалдал эсвэл техник хангамжийг дахин тохируулах хүртэл бусад бүх чип функцийг идэвхгүй болгодог.
    • Цахилгаан хэмнэх горимд асинхрон таймер ажилласаар байгаа бөгөөд энэ нь хэрэглэгчийн бусад төхөөрөмжийг унтаж байх үед таймерын суурийг хадгалах боломжийг олгодог.
    • ADC -ийн дуу чимээг бууруулах горим нь асинхрон таймер ба ADC -ээс бусад бүх оролт/гаралтын модулийг зогсоож, ADC -ийг хөрвүүлэх явцад дуу чимээг багасгадаг.
    • Зогсолт горимд болор/резонаторын осциллятор бусад төхөөрөмжийн унтаж байх үед ажиллаж байна. Энэ нь маш хурдан эхлүүлэх, бага эрчим хүчний хэрэглээтэй хослуулах боломжийг олгодог.
    • Өргөтгөсөн зогсолтын горимд үндсэн осциллятор ба асинхрон таймер хоёулаа үргэлжлүүлэн ажиллаж байна.

Холбогдох бүх хэлхээг энд өгч, үндсэн хэлхээг (atmega32) өгсөн болно.

Алхам 5: Avr програмууд

Avr програмууд
Avr програмууд
Avr програмууд
Avr програмууд

1. "Алсын мэдрэгч" -ийн хувьд:

#оруулах #оруулах

#"remote.h" -ийг оруулна уу

// Дэлхий даяар тогтворгүй гарын үсэг зураагүй int Time; // Үндсэн таймер, цагийг 10us -д хадгалдаг, // ISR (TIMER0_COMP) дэгдэмхий тэмдэггүй char BitNo -оор шинэчлэгдсэн; // Дараагийн BIT дэгдэмхий гарын үсэггүй тэмдэгтийн тэмдэглэл ByteNo; // Одоогийн байтын байр суурь

дэгдэмхий гарын үсэггүй char IrData [4]; // Ir Packet-ийн дөрвөн өгөгдлийн байт // 2-байтын хаяг 2-байтын өгөгдөл тогтворгүй гарын үсэг зураагүй char IrCmdQ [QMAX]; // Эцсийн команд хүлээн авав (Буфер)

тогтворгүй гарын үсэггүй дүр PrevCmd; // Давтахад ашигладаг

// Тодорхой хугацаанд товчлуур дарсны дараа л давтаж эхлэхэд хэрэглэгддэг хувьсагчид

дэгдэмхий гарын үсэггүй тэмдэг давтах; // 1 = тийм 0 = үгүй тогтворгүй гарын үсэггүй char RCount; // Давталтын тоо

дэгдэмхий char QFront = -1, QEnd = -1;

тогтворгүй гарын үсэг зураагүй char State; // Хүлээн авагчийн төлөв

дэгдэмхий гарын үсэг зураагүй char Edge; // Тасалдлын ирмэг [RISING = 1 OR FALLING = 0]

дэгдэмхий гарын үсэг зураагүй int stop;

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

хүчингүй 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 (wait) while (QFront ==-1); өөр бол (QFront ==-1) буцах (RC_NONE);

cmd = IrCmdQ [QFront];

хэрэв (QFront == QEnd) QFront = QEnd = -1; өөр {if (QFront == (QMAX-1)) QFront = 0; өөр QFront ++; }

cmd буцаах;

}

2. үндсэн ():

int main (хүчингүй) {

uint8_t cmd = 0; DDRB = 0x08;

DDRD = 0x80;

DDRC = 0x0f; PORTC = 0x00;

while (1) // Идэвхтэй IR мэдрэгч рүү Infinite Loop {

cmd = GetRemoteCmd (1);

солих (cmd) {

кейс xx: {// BOT Урагш хөдөлнө // Ch+ btn forwardmotor ();

завсарлага; // Хоёр хөдөлгүүр хоёулаа урагшаа

}

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

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

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

анхдагч: PORTC = 0x00; завсарлага; // Зүүн ба баруун мотор хоёулаа зогссон}

}

}/*Үндсэн хэсгийн төгсгөл*/

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

// Энэ бол үндсэн загвар боловч би үүнийг ХОУХШ -ийн горимд ашиглаж болно.

//………………………………………… хөгжилтэй байгаарай …………………………………………………………

Зөвлөмж болгож буй: