Satura rādītājs:

Gaismas sekošana un izvairīšanās no robota, pamatojoties uz Arduino: 5 soļi
Gaismas sekošana un izvairīšanās no robota, pamatojoties uz Arduino: 5 soļi

Video: Gaismas sekošana un izvairīšanās no robota, pamatojoties uz Arduino: 5 soļi

Video: Gaismas sekošana un izvairīšanās no robota, pamatojoties uz Arduino: 5 soļi
Video: 🔴 Новый повышающий DC-DC преобразователь напряжения 1200 Вт l ENG SUBS 🆕 В ЛБП или зарядное с Али 2024, Novembris
Anonim
Gaismas sekošana un izvairīšanās no robota, pamatojoties uz Arduino
Gaismas sekošana un izvairīšanās no robota, pamatojoties uz Arduino

Šis ir vienkāršs projekts, kas seko vai izvairās no gaismas.

Es izveidoju šo simulāciju programmā Proteus 8.6 pro. Nepieciešamās sastāvdaļas: -1) Arduino uno.

2) 3 LDR.

3) 2 dc pārnesumu motori. 4) viens servo. 5) trīs 1k rezistori. 6) viens H-tilts l290D7) viens ieslēgšanas un izslēgšanas slēdzis [programmas stāvokļa maiņai]

8) 9v un 5v Battry

1. darbība: Ardunio kods

Arduino kods ir nedaudz mainīts 2016. gada 23. februārī]

Šis kods ir ļoti komentēts, es nevēlos paskaidrot, bet, ja jums nepieciešama palīdzība, sazinieties ar mani pa e -pastu ([email protected])

Piezīme: -Šajā programmā es izmantoju divus nosacījumus 1. pēc gaismas sekošanas. 2. viens no gaismas novēršanas.

Ja šie nosacījumi ir izpildīti, robots sekos gaismai vai izvairīsies no tās. [Šī ir LDR minimālā vērtība, kuru es izvēlos. Parastā apgaismojumā tā diapazons ir no 80 līdz 95, bet, tā intensitātei palielinoties, arvien vairāk spriegumu izraisa, jo tā strādā pie sprieguma dalītāja principa int a = 400; // Pielaides vērtība]

2. darbība: Proteus faili

Arduino bibliotēkai lejupielādējiet no šīs saites

3. darbība. Kā darbojas jūsu H-tilts

Kā darbojas jūsu H-tilts
Kā darbojas jūsu H-tilts
Kā darbojas jūsu H-tilts
Kā darbojas jūsu H-tilts

L293NE/SN754410 ir ļoti vienkāršs H tilts. Tam ir divi tilti, viens mikroshēmas kreisajā pusē un viens labajā pusē, un tas var vadīt 2 motorus. Tas var vadīt līdz 1 amp strāvu un darboties no 4,5 V līdz 36 V. Mazais līdzstrāvas motors, ko izmantojat šajā laboratorijā, var droši darboties pie zema sprieguma, tāpēc šis H tilts darbosies lieliski. H-tiltam ir šādas tapas un funkcijas: 1. tapa (1, 2EN) iespējo un atspējo mūsu motoru neatkarīgi no tā, vai tas ir HIGH vai LOW. 3 (1Y) ir paredzēts vienam no motora spailēm 4-5 tapas ir paredzētas zemei Piespraude 6 (2Y) ir paredzēta citam motora spailim 7 (2A) ir mūsu motora loģiskā tapa (ievade ir HIGH vai LOW) 8. tapa (VCC2) ir mūsu motora barošanas avots, tam ir jānorāda jūsu motora nominālais spriegums Pin 9-11 ir atvienoti, jo šajā laboratorijā izmantojat tikai vienu motoru Pin 12-13 ir paredzēti zemei Pin 14-15 nav savienoti Pin 16 (VCC1) ir savienots ar 5V. Augšpusē ir H tilta diagramma un to, kuras tapas dara mūsu piemērā. Diagrammā ir iekļauta patiesības tabula, kurā norādīts, kā motors darbosies atbilstoši loģisko tapu stāvoklim (ko nosaka mūsu Arduino).

Šajā projektā iespējošanas tapa tiek savienota ar jūsu Arduino digitālo tapu, lai jūs varētu to nosūtīt HIGH vai LOW un ieslēgt vai izslēgt motoru. Motora loģikas tapas ir savienotas arī ar jūsu Arduino digitālajām tapām, lai jūs varētu nosūtīt to HIGH un LOW, lai motors pagrieztos vienā virzienā, vai LOW un HIGH, lai tas pagrieztos otrā virzienā. Motora barošanas spriegums tiek pievienots motora sprieguma avotam, kas parasti ir ārējs barošanas avots. Ja jūsu motors var darboties ar 5 V un mazāk nekā 500 mA, varat izmantot Arduino 5 V izeju. Lielākajai daļai motoru ir nepieciešams lielāks spriegums un lielāka strāva, tāpēc jums būs nepieciešams ārējs barošanas avots.

Pievienojiet motoru H tiltam Pievienojiet motoru H tiltam, kā parādīts 2. attēlā.

Vai arī, ja Arduino izmantojat ārēju barošanas avotu, varat izmantot Vin tapu.

4. darbība. Kā darbojas LDR

Tagad pirmā lieta, kurai var būt nepieciešams papildu skaidrojums, ir no gaismas atkarīgo rezistoru izmantošana. No gaismas atkarīgie rezistori (vai LDR) ir rezistori, kuru vērtība mainās atkarībā no apkārtējās gaismas daudzuma, bet kā mēs varam noteikt pretestību ar Arduino? Nu, jūs to īsti nevarat, tomēr jūs varat noteikt sprieguma līmeni, izmantojot analogās tapas, kuras var izmērīt (pamata lietojumā) no 0 līdz 5 V. Tagad jūs, iespējams, jautājat “Kā mēs pārvēršam pretestības vērtības sprieguma izmaiņās?”, Tas ir vienkārši, mēs izveidojam sprieguma dalītāju. Sprieguma dalītājs uzņem spriegumu un pēc tam izvada daļu no šī sprieguma, kas ir proporcionāls ieejas spriegumam un divu izmantoto rezistoru vērtību attiecībai. Vienādojums, kuram ir:

Izejas spriegums = ieejas spriegums * (R2 / (R1 + R2)) kur R1 ir pirmā rezistora vērtība un R2 ir otrā.

Tagad tas joprojām rada jautājumu “Bet kādas pretestības vērtības ir LDR?”, Labs jautājums. Jo mazāks apkārtējās gaismas daudzums, jo lielāka pretestība, jo vairāk apkārtējās gaismas nozīmē zemāku pretestību. Tagad konkrētajiem LDR es izmantoju to pretestības diapazonu no 200 līdz 10 kilo omiem, bet tas mainās dažādiem, tāpēc noteikti uzmeklējiet, kur tos iegādājāties, un mēģiniet atrast datu lapu vai kaut ko tamlīdzīgu. Gadījums R1 patiesībā ir mūsu LDR, tāpēc atgriezīsim šo vienādojumu un darīsim kādu matemātisko e-maģiju (matemātisko elektrisko maģiju). Tagad vispirms šīs kilogramu omu vērtības jāpārvērš omos: 200 kilo-omi = 200 000 omi 10 kilo-omi = 10 000 omi Tātad, lai noskaidrotu, kāds ir izejas spriegums, kad esam melnā krāsā, mēs pievienojam šādus skaitļus: 5 * (10000 / (200000 + 10000)) Ieeja ir 5 V, jo mēs to iegūstam no Arduino. Iepriekš minētais dod 0,24 V (noapaļots). Tagad mēs atrodam, kāds ir izejas spriegums maksimālajā spilgtumā, izmantojot šādus skaitļus: 5 * (10000 / (10000 + 10000)) Un tas dod mums tieši 2,5 V. Tātad šīs ir sprieguma vērtības, kuras mēs nonāksim Arduino analogās tapās, taču tās nav vērtības, kas būs redzamas programmā “Bet kāpēc?” jūs varat jautāt. Arduino izmanto analogo ciparu mikroshēmu, kas pārveido analogo spriegumu par izmantojamiem digitālajiem datiem. Atšķirībā no Arduino digitālajām tapām, kas spēj nolasīt tikai HIGH vai LOW stāvokli, kas ir 0 un 5V, analogās tapas var nolasīt no 0-5V un pārvērst to skaitļu diapazonā no 0-1023. Tagad ar vēl kādu matemātisko e-maģiju. mēs faktiski varam aprēķināt, kādas vērtības Arduino patiesībā nolasīs.

Tā kā šī būs lineāra funkcija, mēs varam izmantot šādu formulu: Y = mX + C Kur; Y = Digital ValueWhere; m = slīpums, (pieaugums / gaita), (digitālā vērtība / analogā vērtība) Kur; Y pārtveršana ir 0, kas dod mums: Y = mXm = 1023 /5 = 204,6Tāpēc: Digitālā vērtība = 204,6 * Analogā vērtība Tātad piķa melnā krāsā digitālā vērtība būs: 204,6 * 0,24, kas dod aptuveni 49. Un maksimālajā spilgtumā tas būs: 204,6 * 2,5, kas dod aptuveni 511. Tagad, kad divi no tiem ir iestatīti uz divām analogām tapām, mēs varam izveidot divus veselu skaitļu mainīgos, lai saglabātu to vērtības divas, un veikt salīdzināšanas operatorus, lai noskaidrotu, kuram no tiem ir zemākā vērtība, pagriežot robotu šajā virzienā.

Ieteicams: