Šajā apmācībā mēs apspriedīsim un noformēsim ķēdi attāluma mērīšanai. Šī shēma ir izstrādāta, savstarpēji savienojot ultraskaņas sensoru “HC-SR04” ar AVR mikrokontrolleru. Šis sensors izmanto tehniku, ko sauc par “ECHO”, kas ir kaut kas, ko jūs saņemat, kad skaņa atspoguļojas atpakaļ pēc trieciena ar virsmu.
Mēs zinām, ka skaņas vibrācijas nevar iekļūt caur cietām daļām. Tātad notiek tas, ka tad, kad skaņas avots rada vibrācijas, tās pārvietojas pa gaisu ar ātrumu 220 metri sekundē. Šīs vibrācijas, saskaroties ar mūsu ausi, raksturo tās kā skaņu. Kā minēts iepriekš, šīs vibrācijas nevar iziet cauri cietai daļai, tāpēc, sitot ar tādu virsmu kā siena, tās tiek atstarotas ar tādu pašu ātrumu kā avots, ko sauc par atbalsi.
Ultraskaņas sensors “HC-SR04” nodrošina izejas signālu, kas proporcionāls attālumam, pamatojoties uz atbalss. Sensors, radot sprūdu, šeit rada skaņas vibrāciju ultraskaņas diapazonā, pēc tam tas gaida skaņas vibrācijas atgriešanos. Tagad, pamatojoties uz parametriem, skaņas ātrumu (220m / s) un laiku, kas nepieciešams, lai atbalss sasniegtu avotu, tas nodrošina izejas impulsu proporcionāli attālumam.
Kā parādīts attēlā, vispirms mums jāiedarbina sensors attāluma mērīšanai, tas ir, HIGH loģiskais signāls sensora sprūda tapā vairāk nekā 10uS, pēc tam sensors izsūta skaņas vibrāciju, pēc atbalss sensors nodrošina signāls pie izejas tapas, kura platums ir proporcionāls attālumam starp avotu un šķērsli.
Šo attālumu aprēķina šādi: attālums (cm) = impulsa izvades platums (uS) / 58.
Šeit signāla platums jāuzņem vairākos uS (mikro sekundes vai 10 ^ -6).
Nepieciešamās sastāvdaļas
Aparatūra: ATMEGA32, barošanas avots (5v), AVR-ISP PROGRAMMERIS, JHD_162ALCD (16x2LCD), 1000uF kondensators, 10KΩ rezistors (2 gab.), HC-SR04 sensors.
Programmatūra: Atmel studio 6.1, progisp vai flash magic.
Shēmas shēma un darba skaidrojums
Šeit mēs izmantojam PORTB, lai izveidotu savienojumu ar LCD datu portu (D0-D7). Ikviens, kurš nevēlas strādāt ar ATMEGA32A FUSE BITS, nevar izmantot PORTC, jo PORTC satur īpašu saziņas veidu, kuru var atspējot tikai mainot FUSEBITS.
Ķēdē jūs novērojat, ka esmu paņēmis tikai divus vadības tapas, tas dod labāku izpratni. Kontrasta bits un READ / WRITE netiek bieži lietoti, tāpēc tos var saīsināt. Tas nodrošina LCD kontrasta un lasīšanas režīmu. Mums vienkārši jākontrolē ENABLE un RS tapas, lai atbilstoši nosūtītu rakstzīmes un datus.
LCD savienojumi ir izveidoti zemāk:
PIN1 vai VSS uz zemi
PIN2 vai VDD vai VCC līdz + 5v jaudai
PIN3 vai VEE uz zemes (iesācējam vislabāk nodrošina maksimālu kontrastu)
PIN4 vai RS (Reģistrēt atlasi) līdz uC PD6
PIN5 vai RW (lasīšana / rakstīšana) uz zemi (LCD nodošana lasīšanas režīmā atvieglo saziņu lietotājam)
PIN6 vai E (iespējot) līdz PD5 no uC
UC PIN7 vai D0 līdz PB0
UC PIN8 vai D1 līdz PB1
U9 PIN9 vai D2 līdz PB2
U10 PIN10 vai D3 līdz PB3
UC PIN11 vai D4 līdz PB4
U12 PIN12 vai D5 līdz PB5
UC PIN13 vai D6 līdz PB6
U14 PIN14 vai D7 līdz PB7
Shēmā jūs varat redzēt, ka esam izmantojuši 8 bitu sakarus (D0-D7), taču tas nav obligāti, un mēs varam izmantot 4 bitu sakarus (D4-D7), bet ar 4 bitu sakaru programma kļūst mazliet sarežģīta. Tātad, kā parādīts iepriekšējā tabulā, mēs savienojam 10 LCD tapas ar kontrolieri, kurā 8 tapas ir datu tapas un 2 tapas kontrolei.
Ultraskaņas sensors ir četru kontaktu ierīce, PIN1- VCC vai + 5V; PIN2-TRIGGER; PIN3- ECHO; PIN4- ZEME. Trigera tapa ir vieta, kur mēs dodam sprūdu, lai liktu sensoram izmērīt attālumu. Atbalss ir izvades tapa, kur mēs iegūstam attālumu impulsa platuma formā. Šeit atbalss tapa ir pievienota kontrolierim kā ārējam pārtraukuma avotam. Tātad, lai iegūtu signāla izvades platumu, sensora atbalss tapa ir savienota ar INT0 (0 pārtraukums) vai PD2.
1. Sensora iedarbināšana, pavelkot vismaz 12uS sprūda tapu.
2. Kad atbalss iet augstu, mēs saņemam ārēju pārtraukumu, un mēs sāksim sākt skaitītāju (iespējojot skaitītāju) ISR (Interrupt Service Routine), kas tiek izpildīts uzreiz pēc pārtraukuma iedarbināšanas.
3. Kad atbalss atkal kļūst zems, tiek ģenerēts pārtraukums, šoreiz mēs pārtrauksim skaitītāju (atspējosim skaitītāju).
4. Tātad, lai impulss būtu augsts vai zems pie atbalss tapas, mēs esam uzsākuši skaitītāju un to apturējuši. Šis skaitlis tiek atjaunināts atmiņā, lai iegūtu attālumu, jo mums tagad ir atbalss platums.
5. Mēs veiksim turpmākus aprēķinus atmiņā, lai iegūtu attālumu cm
6. Attālums tiek parādīts 16x2 LCD displejā.
Lai iestatītu iepriekš minētās funkcijas, mēs iestatīsim šādus reģistrus:
Iepriekš minētie trīs reģistri ir jāiestata atbilstoši, lai iestatīšana darbotos, un mēs tos īsi apspriedīsim, ZILA (INT0): šis bits ir jānosaka augsts, lai iespējotu ārējo pārtraukumu0. Kad šī tapa ir iestatīta, mēs nojaušam loģikas izmaiņas PIND2 tapā.
BROWN (ISC00, ISC01): šie divi biti tiek pielāgoti attiecīgajām loģiskajām izmaiņām pie PD2, kuras jāuzskata par pārtraukumiem.
Tātad, kā jau teicām iepriekš, mums ir nepieciešams pārtraukums, lai sāktu skaitīšanu un to apturētu. Tātad mēs iestatījām ISC00 kā vienu un mēs saņemam pārtraukumu, kad INT0 ir loģika LOW to HIGH; vēl viens pārtraukums, kad ir loģika HIGH to LOW.
RED (CS10): Šis bits ir paredzēts, lai vienkārši iespējotu un atspējotu skaitītāju. Lai gan tas darbojas kopā ar citiem bitiem CS10, CS12. Mēs šeit neveicam nekādu iepriekšēju mērogošanu, tāpēc mums par tiem nav jāuztraucas.
Šeit ir jāatceras dažas svarīgas lietas:
Mēs izmantojam ATMEGA32A iekšējo pulksteni, kas ir 1MHz. Šeit nav iepriekšējas skalas, mēs neveicam salīdzināšanas spēles pārtraukumu ģenerēšanas rutīnu, tāpēc nav sarežģītu reģistru iestatījumu.
Skaitīšanas vērtība pēc skaitīšanas tiek saglabāta 16 bitu TCNT1 reģistrā.
Pārbaudiet arī šo projektu ar arduino: Attāluma mērīšana, izmantojot Arduino
Programmēšanas skaidrojums
Attāluma mērīšanas sensora darbība soli pa solim tiek paskaidrota zemāk esošajā C programmā.
#include // header, lai iespējotu datu plūsmas kontroli pār tapām #define F_CPU 1000000 // pievienota kontroliera kristāla frekvence #include