Orodha ya maudhui:

INFRA RED REMOTE WALIODHIBITIWA ROBOCAR KUTUMIA AVR (ATMEGA32) MCU: Hatua 5
INFRA RED REMOTE WALIODHIBITIWA ROBOCAR KUTUMIA AVR (ATMEGA32) MCU: Hatua 5

Video: INFRA RED REMOTE WALIODHIBITIWA ROBOCAR KUTUMIA AVR (ATMEGA32) MCU: Hatua 5

Video: INFRA RED REMOTE WALIODHIBITIWA ROBOCAR KUTUMIA AVR (ATMEGA32) MCU: Hatua 5
Video: How To Use Infrared Remote using Arduino - New Method 2024, Julai
Anonim
INFRA RED REMOTE WALIODHIBITIWA ROBOCAR KUTUMIA AVR (ATMEGA32) MCU
INFRA RED REMOTE WALIODHIBITIWA ROBOCAR KUTUMIA AVR (ATMEGA32) MCU

MRADI wa sasa unaelezea muundo na utekelezaji wa infrared (IR) kijijini kinachodhibitiwa RoboCar ambayo inaweza kutumika kwa matumizi anuwai ya udhibiti wa bila kudhibiti. Nimeunda RoboCar inayodhibitiwa kijijini (mwendo wa kushoto-kulia / mbele-nyuma). Mfumo mzima unategemea microcontroller (Atmega32) ambayo inafanya mfumo wa kudhibiti kuwa nadhifu na rahisi kurekebisha kwa programu zingine. Inamwezesha mtumiaji kuendesha au kudhibiti RoboCar na kuendesha swichi ya nguvu kuu kutoka karibu mita 5 mbali.

Maneno muhimu: Decoder ya IR, AVR (Atmega32) Microcontroller, Kidhibiti cha mbali cha TV, Mawasiliano ya wireless

_

Hatua ya 1: Mawasiliano ya ndani

Mawasiliano ya ndani
Mawasiliano ya ndani

Kanuni ya Mawasiliano ya IR:

a) Uhamisho wa IR

Mpitishaji wa LED ya IR ndani ya mzunguko wake, ambayo hutoa taa ya infrared kwa kila mpigo wa umeme uliopewa. Mapigo haya hutengenezwa kama kitufe kwenye kijijini kimeshinikizwa, na hivyo kumaliza mzunguko, kutoa upendeleo kwa LED. LED juu ya kuwa na upendeleo hutoa mwanga wa urefu wa 940nm kama safu ya kunde, inayolingana na kitufe kilichobanwa. Walakini, kwa kuwa pamoja na mwangaza wa IR, vyanzo vingine vingi vya taa ya infrared kama vile sisi wanadamu, balbu za taa, jua, nk, habari inayosambazwa inaweza kuingiliwa. Suluhisho la shida hii ni kwa moduli. Ishara inayosambazwa imebadilishwa kwa kutumia masafa ya wabebaji wa 38 KHz (au masafa mengine yoyote kati ya 36 hadi 46 KHz). LED ya IR imetengenezwa kuteleza kwa masafa haya kwa muda wa mapigo. Habari au ishara nyepesi ni upana wa kunde ulioboreshwa na uko katika masafa ya 38 KHz. Uhamisho wa infrared unamaanisha nishati katika eneo la wigo wa mionzi ya umeme kwa urefu wa mawimbi kuliko ile ya nuru inayoonekana, lakini fupi kuliko ile ya mawimbi ya redio. Vivyo hivyo, masafa ya infrared ni ya juu kuliko yale ya microwaves, lakini chini kuliko ile ya mwangaza unaoonekana. Wanasayansi hugawanya wigo wa mionzi ya infrared (IR) katika mikoa mitatu. Urefu wa mawimbi umeainishwa katika microns (inaashiria µ, ambapo 1 µ = 10-6 mita) au katika nanometers (kifupi nm, ambapo 1 nm = 10-9 mita = 0.001 5). Bendi ya karibu ya IR ina nishati katika anuwai ya urefu wa karibu zaidi na inayoonekana, kutoka takriban 0.750 hadi 1.300 5 (750 hadi 1300 nm). Bendi ya IR ya kati (pia inaitwa bendi ya katikati ya IR) ina nguvu katika anuwai ya 1.300 hadi 3.000 5 (1300 hadi 3000 nm). Bendi ya mbali ya IR inaanzia 2.000 hadi 14.000 5 (3000 nm hadi 1.4000 x 104nm).

b) Mapokezi ya IR

Mpokeaji ana kigunduzi cha picha ambacho hutengeneza ishara ya umeme ya pato kwani mwanga ni tukio juu yake. Pato la kichungi huchujwa kwa kutumia kichujio cha bendi nyembamba ambayo hutupa masafa yote chini au juu ya masafa ya wabebaji (38 KHz katika kesi hii). Pato lililochujwa hupewa kifaa kinachofaa kama Microcontroller au Microprocessor inayodhibiti vifaa kama PC au Robot. Pato kutoka kwa vichungi pia linaweza kushikamana na Oscilloscope ili kusoma kunde.

Maombi ya IR:

Infrared hutumiwa katika anuwai ya mawasiliano ya wireless, ufuatiliaji, na matumizi ya kudhibiti. Hapa kuna mifano:

· Masanduku ya kudhibiti kijijini

· Wavu (mitandao ya eneo)

· Viunga kati ya kompyuta za daftari na kompyuta za mezani

· Modem isiyo na waya

Vigunduzi vya kuingilia

Vigunduzi vya mwendo

Sensorer za moto

· Mifumo ya maono ya usiku

· Vifaa vya uchunguzi wa kimatibabu

· Mifumo ya mwongozo wa kombora

· Vifaa vya ufuatiliaji wa jiolojia

Kusambaza data ya IR kutoka kifaa kimoja hadi wakati mwingine hujulikana kama kupendeza.

Hatua ya 2: Sensor ya IR & Itifaki ya NEC Kutoka

Sensorer ya IR & Itifaki ya NEC Kutoka
Sensorer ya IR & Itifaki ya NEC Kutoka
Sensorer ya IR & Itifaki ya NEC Kutoka
Sensorer ya IR & Itifaki ya NEC Kutoka
Sensorer ya IR & Itifaki ya NEC Kutoka
Sensorer ya IR & Itifaki ya NEC Kutoka
Sensorer ya IR & Itifaki ya NEC Kutoka
Sensorer ya IR & Itifaki ya NEC Kutoka

Sensorer za IR (Mtini1)

TSOP1738, SFH-5110-38 (38kHz)

Sifa za sensorer TSOP:

  • Kionyeshi cha awali na kigunduzi cha picha zote ziko kwenye kifurushi kimoja
  • Kichujio cha ndani cha masafa ya PCM
  • Uboreshaji wa kinga dhidi ya usumbufu wa uwanja wa umeme
  • Utangamano wa TTL na CMOS
  • Pato la matumizi ya chini ya nguvu
  • Kinga ya juu dhidi ya nuru iliyoko
  • Kuendelea kusafirisha data

Itifaki ya NEC:

Itifaki ya usafirishaji ya NEC IR hutumia usimbuaji wa umbali wa pigo la bits za ujumbe. Kila mpigo hupasuka ni urefu wa 562.5µ, kwa masafa ya wabebaji wa 38kHz (26.3µs). Biti za kimantiki hupitishwa kama ifuatavyo (Mtini2):

  • Kimantiki '0' - mapigo ya 562.5 yalipasuka na kufuatiwa na nafasi ya 562.5, na jumla ya muda wa kupitisha wa 1.125ms
  • Kimantiki '1' - mapigo ya 562.5µ yalipasuka na kufuatiwa na nafasi ya 1.6875ms, na jumla ya muda wa kupitisha wa 2.25ms

Pulsa ya kubeba ina mizunguko 21 saa 38kHz. Kunde kawaida huwa na uwiano wa alama / nafasi ya 1: 4, kupunguza matumizi ya sasa:

(Kielelezo3)

Kila mlolongo wa nambari huanza na kunde ya 9ms, inayojulikana kama kunde ya AGC. Hii inafuatiwa na ukimya wa 4.5ms:

(Kielelezo 4)

Takwimu hizo zinajumuisha bits 32, anwani ya 16-bit ikifuatiwa na amri ya 16-bit, iliyoonyeshwa kwa mpangilio ambao hupitishwa (kushoto kwenda kulia):

(Kielelezo 5)

Baiti nne za bits za data kila moja imetumwa kidogo muhimu kwanza. Kielelezo 1 kinaonyesha muundo wa fremu ya usafirishaji ya NEC IR, kwa anwani ya 00h (00000000b) na amri ya ADh (10101101b).

Jumla ya 67.5ms inahitajika kusambaza sura ya ujumbe. Inahitaji 27ms kusambaza biti 16 za anwani (anwani + inverse) na bits 16 za amri (command + inverse).

(Kielelezo 6)

Wakati unaohitajika kupitisha fremu:

Biti 16 kwa anwani (anwani + inverse) zinahitaji 27ms kupitisha wakati. Na bits 16 za amri (amri + inverse) pia zinahitaji 27ms kupitisha wakati. kwa sababu (anwani + inverse anwani) au (amri + amri inverse) siku zote itakuwa na 8 '0 na 8' 1's hivyo (8 * 1.125ms) + (8 * 2.25ms) == 27 ms. kulingana na wakati huu wa jumla unaohitajika kupitisha sura hiyo ni (9ms + 4.5ms + 27ms + 27ms) = 67.5 ms.

RUDIA KODI: Ikiwa ufunguo wa kidhibiti kijijini umewekwa unyogovu, nambari ya kurudia itatolewa, kawaida karibu na 40ms baada ya kupasuka kwa mapigo ambayo inaashiria mwisho wa ujumbe. Nambari ya kurudia itaendelea kutumwa kwa vipindi vya 108ms, hadi hapo ufunguo utakapotolewa. Nambari ya kurudia ina yafuatayo, ili:

  • kunde inayoongoza ya 9ms
  • nafasi ya 2.25ms
  • mapigo ya 562.5µ yalipasuka kuashiria mwisho wa nafasi (na kwa hivyo mwisho wa nambari ya kurudia iliyoambukizwa).

(Kielelezo 7)

Kuchukua hesabu (1ms):

Saa Freq = 11.0592 Mhz

Mzunguko wa Mashine = 12

Kuchelewa = 1ms

Thamani ya Timer = 65536 - ((Kuchelewesha * ClockFreq) / Mzunguko wa Mashine) = 65536 - ((1ms * 11.0592Mhz) / 12)

= 65536 - 921 = 0xFC67

Hatua ya 3: Udhibiti wa Magari ya DC Kutumia L293D

Udhibiti wa Magari ya DC Kutumia L293D
Udhibiti wa Magari ya DC Kutumia L293D

DC Motor

DC-motor hubadilisha nishati ya umeme kuwa nishati ya kiufundi ambayo inaweza kutumika kufanya kazi nyingi muhimu. Inaweza kutoa harakati za kiufundi kama Nenda Mbele / Nenosiri la RoboCar yangu. Motors za DC huja kwa viwango anuwai kama 6V na 12V. Ina waya mbili au pini. Tunaweza kubadilisha mwelekeo wa kuzunguka kwa kurudisha polarity ya pembejeo.

Hapa tunapendelea L293D kama alama ya 600mA ni nzuri kwa kuendesha motors ndogo za DC na diode za ulinzi zimejumuishwa katika IC yenyewe. Maelezo ya kila pini ni kama ifuatavyo: Wezesha pini: Hizi ni pin no. 1 na piga hapana. 9. Bandika namba. 1 hutumiwa kuwezesha dereva wa Nusu-H 1 na 2. (H daraja upande wa kushoto). Bandika namba. 9 hutumiwa kuwezesha dereva wa H-daraja 3 na 4. (H daraja upande wa kulia).

Wazo ni rahisi, ikiwa unataka kutumia daraja fulani la H lazima utoe mantiki ya juu ili kuwezesha pini zinazowezekana pamoja na usambazaji wa umeme kwa IC. Pini hii pia inaweza kutumika kudhibiti kasi ya gari kwa kutumia mbinu ya PWM. VCC1 (Pin 16): Pini ya usambazaji wa umeme Unganisha kwenye usambazaji wa 5V. VCC2 (Pin 8): Ugavi wa umeme kwa motor. Tumia + voltage yake kwa kadiri ya ukadiriaji wa motor. Ikiwa unataka kuendesha gari yako kwa 12V, weka 12V kwenye pini hii.

Inawezekana pia kuendesha gari moja kwa moja kwenye betri, zaidi ya ile inayotumiwa kusambaza umeme kwa mzunguko, Unganisha tu + ve terminal ya betri hiyo kwa pini ya VCC2 na ufanye GND ya betri zote kuwa za kawaida. (MAX voltage kwenye pini hii ni 36V kulingana na data yake). GND (Pini 4, 5, 12, 13): Unganisha kwenye GND ya kawaida ya mzunguko. Pembejeo (Pini 2, 7, 10, 15):

Hizi ni pini za kuingiza ambazo ishara za kudhibiti hutolewa na wadhibiti wadogo au nyaya zingine / IC. Kwa mfano, ikiwa kwenye pini 2 (Uingizaji wa dereva wa nusu ya nusu H) tunatoa Logic 1 (5V), tutapata voltage sawa na VCC2 kwenye pini inayofanana ya pato la dereva wa nusu ya 1 H. 3. Vivyo hivyo kwa Logic 0 (0V) kwenye Pin 2, 0V kwenye Pin 3. inaonekana. Matokeo (Pin 3, 6, 11, 14): Pini za matokeo. Kulingana na ishara ya pembejeo ishara inakuja.

Harakati za Magari A B

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

…………… Simama: Chini: Chini

…… kwa saa: Chini: Juu

Anticlockwise: Juu: Chini

……………. Simama: Juu: Juu

Hatua ya 4: Michoro ya Mzunguko wa Dereva wa Magari na Sensorer ya IR

Michoro ya Mzunguko wa Dereva wa Magari na Sensorer ya IR
Michoro ya Mzunguko wa Dereva wa Magari na Sensorer ya IR
Michoro ya Mzunguko wa Dereva wa Magari na Sensorer ya IR
Michoro ya Mzunguko wa Dereva wa Magari na Sensorer ya IR
Michoro ya Mzunguko wa Dereva wa Magari na Sensorer ya IR
Michoro ya Mzunguko wa Dereva wa Magari na Sensorer ya IR

ATmega32 ni nguvu ndogo ya CMOS 8-bit microcontroller kulingana na AVR iliyoboreshwa ya Usanifu. Kwa kutekeleza maagizo yenye nguvu katika mzunguko wa saa moja, ATmega32 inafanikisha pembejeo inayokaribia MIP 1 kwa MHz ikiruhusu mbuni wa mfumo kuboresha matumizi ya nguvu dhidi ya kasi ya usindikaji.

Msingi wa AVR unachanganya maagizo tajiri yaliyowekwa na madaftari 32 ya jumla ya kazi. Rejista zote 32 zimeunganishwa moja kwa moja na Kitengo cha Mantiki ya Hesabu (ALU), ikiruhusu rejista mbili huru kupatikana katika mafundisho moja yaliyotekelezwa kwa mzunguko wa saa moja. Usanifu unaosababishwa ni bora zaidi kwa msimbo wakati unafanikiwa kupitia hadi mara kumi kwa kasi kuliko wadhibiti wa kawaida wa CISC.

ATmega32 hutoa huduma zifuatazo:

  • Kbyte 32 za kumbukumbu za Programu ya Kiwango cha ndani ya Mfumo na uwezo wa Soma-Wakati-Andika,
  • Baiti 1024 EEPROM, 2K byte SRAM,
  • Mistari 32 ya jumla ya I / O,
  • Madaftari ya jumla ya kazi ya 32,
  • kiolesura cha JTAG cha Boundaryscan,
  • Usaidizi wa utatuaji wa chip kwenye-chip, Timer / Kaunta tatu zinazobadilika na njia za kulinganisha, Usumbufu wa ndani na wa nje, USART inayoweza kupangiliwa kwa muda mrefu, kielekezi cha waya mbili cha waya, 8-chaneli,
  • 10-bit ADC na hatua ya kuingiza tofauti ya hiari na faida inayoweza kusanidiwa (kifurushi cha TQFP tu),
  • Kipindi cha mwangalizi kinachopangwa na Oscillator ya ndani,
  • bandari ya serial ya SPI, na
  • njia sita za kuchagua njia za kuokoa nguvu.

    • Hali ya uvivu inasimamisha CPU wakati inaruhusu USART,
    • Sura mbili za waya, A / D Converter,
    • SRAM,
    • Timer / Kaunta,
    • Bandari ya SPI, na
    • kusumbua mfumo kuendelea kufanya kazi.
    • Njia ya Kupunguza Nguvu huhifadhi yaliyomo kwenye rejista lakini hugandisha Oscillator, ikizima kazi zingine zote za chip hadi Usumbufu wa nje unaofuata au Upangiaji wa Vifaa.
    • Katika hali ya kuokoa Nguvu, Asynchronous Timer inaendelea kukimbia, ikiruhusu mtumiaji kudumisha msingi wa kipima muda wakati kifaa kingine kimelala.
    • Njia ya Kupunguza Kelele ya ADC inazuia CPU na moduli zote za I / O isipokuwa Asynchronous Timer na ADC, ili kupunguza kelele wakati wa ubadilishaji wa ADC
    • Katika hali ya Kusubiri, kioo / resonator Oscillator inaendesha wakati kifaa kingine kimelala. Hii inaruhusu kuanza haraka sana pamoja na matumizi ya nguvu ndogo.
    • Katika hali ya Kusubiri Iliyopanuliwa, Oscillator kuu na Timer ya Asynchronous zinaendelea kukimbia.

Mizunguko yote inayohusiana hutolewa hapa na mzunguko kuu (atmega32) pia hupewa.

Hatua ya 5: Programu za Avr

Programu za Avr
Programu za Avr
Programu za Avr
Programu za Avr

1. Kwa "sensor ya mbali":

#jumuisha #jumuisha

# pamoja na "kijijini.h"

// Ulimwengu wote ni tete isiyosainiwa wakati; // Timer kuu, huhifadhi wakati wa 10us, // Imesasishwa na ISR (TIMER0_COMP) tete isiyosainiwa char BitNo; // Pos ya ijayo BIT isiyo na saini char ByteNo; // Pos ya Byte ya sasa

char isiyosainiwa isiyofaa IrData [4]; // Baiti nne za data za Pakiti ya Ir // Anwani ya 2-Byte Takwimu dhaifu isiyo sainiwa IrCmdQ [QMAX]; // Amri ya Mwisho Imepokelewa (Bafa)

tete isiyo saini char PrevCmd; // Imetumika kurudia

// Vigezo vinavyotumika kuanza kurudia tu baada ya kubonyeza kitufe kwa muda fulani

tete isiyosainiwa char Rudia; // 1 = ndio 0 = hakuna hali isiyo na saini isiyosainiwa RCount; // Kurudia hesabu

char tete QFront = -1, QEnd = -1;

tete hali isiyosainiwa char; // Hali ya mpokeaji

tete isiyosainiwa char Edge; // Makali ya usumbufu [KUPANDA = 1 AU KUANGUKA = 0]

tete isiyosainiwa int stop;

/ ************************************************* *********************************************** / / * KAZI ZA KAZI * / / ************************************************ ************************************************ /

batili RemoteInit () {

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

kuacha = 0; Hali = IR_VALIDATE_LEAD_HIGH; Makali = 0; Rudia = 0;

// Timer Timer1 // ------------ TCCR0 | = ((1 <

TIMSK | = (1 <

OCR0 = TIMER_COMP_VAL; // Weka Thamani ya Linganisha

unsigned char GetRemoteCmd (char wait) {unsigned char cmd;

ikiwa (subiri) wakati (QFront == - 1); vinginevyo ikiwa (QFront == - 1) inarudi (RC_NONE);

cmd = IrCmdQ [QF mbele];

ikiwa (QFront == QEnd) QFront = QEnd = -1; kingine {if (QFront == (QMAX-1)) QFront = 0; mwingine QFront ++; }

kurudi cmd;

}

2. kuu ():

kuu (batili) {

uint8_t cmd = 0; DDRB = 0x08;

DDRD = 0x80;

DDRC = 0x0f; PORTC = 0x00;

wakati (1) // Kitanzi kisicho na mwisho kwa sensorer inayofanya kazi ya IR {

cmd = GetRemoteCmd (1);

kubadili (cmd) {

kesi xx: {// BOT Inasonga mbele // Ch + btn mbelemotor ();

kuvunja; // Wote Motors katika mwelekeo wa mbele

}

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

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

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

chaguo-msingi: PORTC = 0x00; kuvunja; // Motors zote za kushoto na kulia zimesimama}

}

} / * Mwisho wa kuu * /

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

// Ni mfano wa msingi, lakini naweza kuitumia katika hali ya PWM.

/ / / Furahiya ……………………………………

Ilipendekeza: