Šajā apmācībā mēs saskarsimies ar FLEX sensoru ar ATMEGA8 mikrokontrolleru. Lai veiktu šo darbu, ATMEGA8 mēs izmantosim 10 bitu ADC (analogā uz digitālo pārveidošanu) funkciju. Tagad ADC ATMEGA nevar uzņemt vairāk nekā + 5 V ieeju.
Kas ir elastīgais sensors?
FLEX sensors ir devējs, kas maina savu pretestību, ja tā forma ir mainījusies. Tas parādīts zemāk redzamajā attēlā.
Šis sensors tiek izmantots, lai uztvertu linearitātes izmaiņas. Tātad, kad FLEX sensors ir saliekts, pretestība ir krasi saliekta. Tas parādīts zemāk redzamajā attēlā.
Tagad, lai pārveidotu šīs pretestības izmaiņas sprieguma izmaiņām, mēs izmantosim sprieguma dalītāja ķēdi. Šajā pretestības tīklā mums ir viena pastāvīga pretestība un cita mainīga pretestība. Kā parādīts zemāk redzamajā attēlā, R1 šeit ir nemainīga pretestība, un R2 ir FLEX sensors, kas darbojas kā pretestība. Zaru viduspunkts tiek mērīts. Mainoties pretestībai R2, Vout mainās ar to lineāri. Tātad ar to mums ir spriegums, kas mainās ar linearitāti.
Šeit ir svarīgi atzīmēt, ka kontrollera ievadītā ADC pārveidošanas ievade ir tik maza kā 50µAmp. Šis uz pretestību balstītā sprieguma dalītāja slodzes efekts ir svarīgs, jo strāva, kas iegūta no sprieguma dalītāja Vout, palielina kļūdu procentu, tagad mums nav jāuztraucas par slodzes efektu.
Mēs uzņemsim divus rezistorus un izveidosim sadalītāja ķēdi tā, lai par 25 voltu Vin mēs iegūtu 5 voltu Vout. Tāpēc viss, kas mums jādara, ir reizināt Vout vērtību ar “5” programmā, lai iegūtu reālo ieejas spriegumu.
Nepieciešamās sastāvdaļas
AParatūra : ATMEGA8, barošanas avots (5v), AVR-ISP PROGRAMMĒTĀJS, JHD_162ALCD (16x2LCD), 100uF kondensators, 100nF kondensators (5 gab.), 100KΩ rezistors.
PROGRAMMATŪRA: Atmel studio 6.1, progisp vai flash magic.
Shēmas shēma un darba skaidrojums
Ķēdē ATMEGA8 PORTD ir savienots ar datu porta LCD. 16x2 LCD ekrānā ir 16 tapas, ja ir aizmugures apgaismojums, ja aizmugures apgaismojuma nav, būs 14 tapas. Var darbināt vai atstāt aizmugurējās gaismas tapas. Tagad 14 tapas ir 8 datu tapas (7-14 vai D0-D7), 2 el piegādes tapas (1 un 2 vai VSS un VDD vai GND & + 5v), 3 rd pin kontrasta kontrole (Vee-kontrolē, cik biezu rakstzīmēm jābūt attēlā) un 3 vadības tapas (RS & RW & E).
Ķēdē jūs varat novērot, ka esmu paņēmis tikai divus vadības tapas. 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 ar ATmega8 ir šādi:
PIN1 vai VSS uz zemi
PIN2 vai VDD vai VCC līdz + 5v jaudai
PIN3 vai VEE to Ground (iesācējam vislabāk nodrošina maksimālu kontrastu)
PIN4 vai RS (Reģistrēt atlasi) uz uC PB0
PIN5 vai RW (lasīšana / rakstīšana) uz zemi (LCD iestatīšana lasīšanas režīmā atvieglo saziņu lietotājam)
PIN6 vai E (iespējot) uz PB PB no uC
UC PIN7 vai D0 līdz PD0
UC PIN8 vai D1 līdz PD1
UC PIN9 vai D2 līdz PD2
U10 PIN10 vai D3 līdz PD3
PIN11 vai U4 no D4 līdz D4
UC PIN12 vai D5 līdz PD5
UC PIN13 vai D6 līdz PD6
UC PIN14 vai D7 līdz PD7
Shēmā jūs varat redzēt, ka esam izmantojuši 8 bitu sakarus (D0-D7), taču tas nav obligāti, mēs varam izmantot 4 bitu sakarus (D4-D7), bet ar 4 bitu sakaru programma kļūst mazliet sarežģīta, tāpēc mēs tikko gājām ar 8 bitu komunikācija. (Pārbaudiet arī šo apmācību: 16x2 LCD saskarne ar AVR mikrokontrolleru)
Tātad, tikai novērojot no tabulas augšpusē, mēs savienojam 10 LCD tapas ar kontrolieri, kurā 8 tapas ir datu tapas un 2 tapas ir paredzētas kontrolei.
Spriegums pāri R2 nav pilnīgi lineārs; tas būs trokšņains. Lai filtrētu, trokšņa kondensatori tiek novietoti pāri katram sadalītāja ķēdes rezistoram, kā parādīts attēlā.
1K pot šeit ir pielāgot ADC precizitāti. Tagad apspriedīsimies par ATMEGA8 ADC.
ATMEGA8 mēs varam dot analogo ievadi jebkuram no ČETriem PORTC kanāliem, nav svarīgi, kuru kanālu mēs izvēlamies, jo visi ir vienādi, mēs izvēlēsimies PORTC 0 vai PIN0 kanālu.
ATMEGA8 ADC ir 10 bitu izšķirtspēja, tāpēc kontrolieris var noteikt sajūtu, ka minimālās izmaiņas ir Vref / 2 ^ 10, tādēļ, ja atskaites spriegums ir 5 V, mēs iegūstam digitālo izejas pieaugumu par katriem 5/2 ^ 10 = 5mV. Tātad par katru 5mV pieaugumu ieejā mums būs pieaugums viens pie digitālās izejas.
Tagad mums ir jāizveido ADC reģistrs, pamatojoties uz šādiem noteikumiem:
1. Vispirms mums ir jāiespējo ADC funkcija ADC.
2. Šeit tiks parādīts maksimālais ieejas spriegums ADC pārveidošanai ir + 5V. Tātad mēs varam iestatīt ADC maksimālo vērtību vai atsauci uz 5V.
3. Kontrolierim ir trigera pārveidošanas funkcija, kas nozīmē, ka ADC pārveidošana notiek tikai pēc ārēja trigera, jo mēs nevēlamies, lai mums būtu jāiestata reģistri, lai ADC darbotos nepārtrauktā brīvas darbības režīmā.
4. Jebkurai ADC pārveidošanas biežums (analogās vērtības pret digitālo vērtību) un digitālās izejas precizitāte ir apgriezti proporcionāla. Tāpēc, lai uzlabotu digitālās izejas precizitāti, mums jāizvēlas mazāka frekvence. Normālam ADC pulkstenim mēs iestatām ADC sākotnējo vērtību līdz maksimālajai vērtībai (2). Tā kā mēs izmantojam 1MHZ iekšējo pulksteni, ADC pulkstenis būs (1000000/2).
Šīs ir vienīgās četras lietas, kas mums jāzina, lai sāktu darbu ar ADC.
Visas iepriekš minētās četras funkcijas nosaka divi reģistri:
RED (ADEN): Šis bits ir jāiestata, lai iespējotu ATMEGA ADC funkciju.
ZILA (REFS1, REFS0): Šie divi biti tiek izmantoti, lai iestatītu atsauces spriegumu (vai maksimālo ieejas spriegumu, kuru mēs piešķiram). Tā kā mēs vēlamies, lai atskaites spriegums būtu 5 V, REFS0 būtu jāiestata tabulā.
DZELTENS (ADFR): Šis bits ir jāiestata, lai ADC darbotos nepārtraukti (brīvās darbības režīms).
PINK (MUX0-MUX3): Šie četri biti ir paredzēti ieejas kanāla atrašanai. Tā kā mēs izmantosim ADC0 vai PIN0, mums nav jāiestata biti kā pēc tabulas.
BROWN (ADPS0-ADPS2): šie trīs biti ir paredzēti, lai iestatītu ADC preskalāru. Tā kā mēs izmantojam preskalāru 2, mums ir jāiestata viens bits.
DARK GREEN (ADSC): šis bits ir iestatīts ADC, lai sāktu pārveidošanu. Šo bitu var atspējot programmā, kad mums jāpārtrauc konvertēšana.
FLEX sensora mijiedarbība ar ATmega8 tiek soli pa solim izskaidrota zemāk dotajā C kodā.