Mikrokontrolleru principi

Подключение энкодера к микроконтроллеру PIC (Jūnijs 2019).

$config[ads_text] not found
Anonim

Mikrokontrolleru principi

Digitālās shēmas


jautājums 1

Izlasiet šo citātu un pēc tam izpētiet terminu " mikrokontrolleris", lai noskaidrotu, kāda nozīme tam ir citātā:

Pirms 20 gadiem es devos uz savu pirmo datoru konferencē New York Hilton. Kad kāds tur prognozēja, ka mikroprocesoru tirgus galu galā būs miljoniem, kāds teica: "Kur viņi visi gatavojas doties" # 1 "> Atklāt atbildi Slēpt atbildi

Es ļaus jums veikt jūsu mājasdarbu par šo jautājumu!

Piezīmes:

Citāti nav tikai smieklīgi, bet tas ir arī satriecošs, it īpaši tiem, kas ir dzimis bez mūsu mājās esošiem datoriem, daudz mazāk - vairākiem personālajiem datoriem.

Es vēlos izteikt savu viedokli par to, ka studenti izpēta terminu "mikrokontrolleris", ir redzēt, ka lielākā daļa pastāvošo datoru nav tādas šķirnes, kuru parasti domā etiķete "dators". Šie durtiņu datori - kā arī dzinēja kontrole automobiļu datori, virtuves tehnika, mobilie telefoni, biomedicīnas implanti, sarunu dzimšanas dienas kartītes un citas mazās ierīces - ir daudz mazākas un daudz specializētākas nekā "vispārējā nolūka" datoros, kurus lietotāji izmanto rakstāmgaldos vai internetā. Viņi ir mūsdienu "datora revolūcijas" klusā, neredzamā puse un daudzējādā ziņā ir piemērotāki, lai sāktu digitālo elektronikas studentu izpēti, nevis to lielākiem, universālajiem partneriem.

2. jautājums

Mikrokontrolleru vienība vai MCU ir specializēts ciparu datora veids, ko izmanto, lai nodrošinātu sistēmas automātisku secību vai kontroli. Mikrokontrolieri atšķiras no parastajiem ciparu datoriem, jo ​​tie ir ļoti mazi (parasti vienotā integrētās shēmas mikroshēma), ar vairākiem veltnītiem cipariem ciparu signālu ievadīšanai un / vai izvadīšanai un ierobežotai atmiņai. Instrukcijas, kas ieprogrammētas mikrokontrolleru atmiņā, parāda, kā reaģēt uz ievades apstākļiem un kādus signālu veidus nosūtīt uz izejām.

Vienkāršākais mikrokontrollera "saprotamā" signāla veids ir diskrēta sprieguma līmenis: vai nu "augsts" (apmēram + V) vai "zems" (apmēram zemes potenciāls), ko mēra ar noteiktu mikroshēmā esošo tapu. Mikrodatora iekšējie tranzistori ražo šos "augstos" un "zemos" signālus izejas tapos, viņu darbības modelē SPDT slēdži vienkāršības labad:

Mikrokontrolieri var tikt ieprogrammēti, lai līdzinātu dažādas kombinētas un multivibratora funkcijas, pielīdzinot digitālo loģisko vārtu (AND, OR, NAND, NOR uc) funkcijas. Vienīgie reālie ierobežojumi tam, ko mikrokontrolleris var darīt, ir atmiņa (cik liela daļa no programmas var tikt saglabāta) un ievades / izvades tapas MCU mikroshēmā.

Tomēr mikrokontrolleri paši sastāv no daudziem tūkstošiem (vai miljoniem!) Loģisko vārtu ķēžu. Kāpēc būtu jēga izmantot mikrokontrolleru, lai veiktu loģisko funkciju, kuru mazā daļa no tā sastāvošajiem vārtiem varētu tieši sasniegt "# 2"> Atklāt atbildi Slēpt atbildi

Konfigurācijas vienkāršība un elastība!

Piezīmes:

Ņemiet vērā, ka es neuztraucu izskaidrot manu ļoti lēnu atbildi. Šis ir priekšmets, kuru es vēlos studentiem domāt par ilgu un grūti, jo patiesi atbilde uz šo jautājumu ir iemesls, kāpēc tiek attīstītas programmējamās ciparu ierīces.

3. jautājums

Students nolemj būvēt gaismas flasher ķēdi, izmantojot mikrokontrolleru, nevis 555 taimeri vai kādu citu cieto vadu nottable ķēdi. Diemžēl kaut kur ir kāda problēma. Pirmo reizi ieslēdzot ierīci, LED iedegas 1 sekundi, pēc tam izslēdzas un nekad neatslēdzas. Vienīgais veids, kā LED atkal atgriezīsies, ir, ja MCU tiek atiestatīts vai tā jauda tiek izslēgta un ieslēgta:

Atzīt Pin0 kā izeju

BEGIN

Iestatīt Pin0 HIGH

Pauze 1 sekunde

Set Pin0 LOW

END

Kolēģis, kad tas tiek lūgts pēc palīdzības, maina programmas sarakstu un nosūta to no personālā datora, kur to rediģē mikrokontrolleru, izmantojot programmēšanas kabeli. Programmu saraksts tagad ir šāds:

Atzīt Pin0 kā izeju

LOOP

Iestatīt Pin0 HIGH

Pauze 1 sekunde

Set Pin0 LOW

ENDLOOP

Kad MCU tiek atiestatīts ar jauno programmu, LED sāk mirgot un izslēgt. . . kāda veida. Gaismas diode visbiežāk ir ieslēgta, bet reizi sekundē tā izslēdzas un pēc tam tūlīt atgriežas. Patiesībā, "izslēgts" periods ir tik īss, tas ir tik tikko pamanāms.

Ko students gribēja, bija 50% darba cikls: "uz" 1 sekunde, tad "izslēgts" 1 sekundi, atkārtojot šo ciklu uz nenoteiktu laiku. Vispirms paskaidrojiet klasesbiedra programmas izmaiņu nozīmi un pēc tam pārveidojiet programmas sarakstu, lai gaismas diode darītu to, ko students to vēlas.

Atklāt atbildi Slēpt atbildi

MCU ir nepieciešama "cilpa", lai atkārtotu ieslēgšanas / pauzes / izslēgšanas secību. Tagad ir vajadzīgs vēl viens laika aizkaves cilpa:

Atzīt Pin0 kā izeju

LOOP

Iestatīt Pin0 HIGH

Pauze 1 sekunde

Set Pin0 LOW

Pauze par 1 sekundi ( jauna koda rinda )

ENDLOOP

Piezīmes:

Šī jautājuma mērķis ir, lai studenti saprastu, ka mikrokontrolleru ir jādod "cilpai", izmantojot gaismas mirgojošus norādījumus. Tiešām, tas ir tikai ilustrācija cilpas praktiskā kontekstā.

Ja jūs domājat, kāpēc rakstīt pseidokodā, šeit ir daži iemesli:

Nepieciešama iepriekšēja pieredze ar programmu, kas nepieciešama pseido koda izpratnei
Tas nekad neiziet no stila
Aparatūra neatkarīga
Nav sintakses kļūdu

Ja es būtu nolēmis demonstrēt kodu, kas patiešām darbosies mikrokontrolleru darbā, es nolādētu jautājumu novecošanai. Tādā veidā es varu paziņot programmas garu, neesot piesaistot faktisko programmēšanas standartu. Vienīgais trūkums ir tāds, ka studentiem būs jāpārvērš pseido kodi uz reālu kodu, kas faktiski tiks izmantots viņu konkrētajā MCU aparatūrā, taču šī problēma ir garantēta dažiem, neatkarīgi no tā, kāda reālā programmēšanas valoda man būtu jāizvēlas.

Protams, es varētu uzņemties Donalda Knuta pieeju un izgudrot savu (iedomātu) aparatūru un instrukciju kopu. . .

4. jautājums

Students no mikrokontrollera nolasa izveidot gaismas flasher ķēdi. Gaismas diode ir domāta ieslēgt un izslēgt tikai tad, ja ir nospiests spiedpogas slēdzis. Tas ir paredzēts izslēgt, kad slēdzis tiek atbrīvots:

Atzīt Pin0 kā izeju

Atzīt Pin1 kā ievadi

KAD PIN1 ir HIGH

Iestatīt Pin0 HIGH

Pauze 0, 5 sekundes

Set Pin0 LOW

Pauze 0, 5 sekundes

Beidzot

Gaismas diode mirgo un izslēdzas tik labi, kamēr spiedpogas slēdzis tiek turēts, kad MCU ir ieslēgts vai atiestatīts. Tiklīdz slēdzis ir atbrīvots, LED izslēdzas un nekad neatgriežas atpakaļ. Ja starta ieslēgšanas laikā slēdzis nekad netika nospiests, gaismas diode nekad nedeg! Paskaidrojiet, kas notiek, un modificējiet programmu, lai novērstu šo problēmu.

Atklāt atbildi Slēpt atbildi

Nosacījuma "WHILE" cilpa jāievieto beznosacījuma cilpu:

Atzīt Pin0 kā izeju

Atzīt Pin1 kā ievadi

LOOP

KAD PIN1 ir HIGH

Iestatīt Pin0 HIGH

Pauze 0, 5 sekundes

Set Pin0 LOW

Pauze 0, 5 sekundes

Beidzot

ENDLOOP

Sekojošais jautājums: kāda mērėa rezistoru R nolaižamo lodziĦš kalpo spiedpogas shēmā "piezīmes paslēptas"> Piezīmes:

Šī jautājuma mērķis ir, lai studenti saprastu, kāda ir "WHILE" cilpa praktiski: cilpa ar nosacījumu (-iem). Tas arī pretstata nosacītus looping pret beznosacījuma cilpu un parāda, kā gan piedalīties interaktīvās sistēmās, piemēram, šajā.

Ja jūs domājat, kāpēc rakstīt pseidokodā, šeit ir daži iemesli:

Nepieciešama iepriekšēja pieredze ar programmu, kas nepieciešama pseido koda izpratnei
Tas nekad neiziet no stila
Aparatūra neatkarīga
Nav sintakses kļūdu

Ja es būtu nolēmis demonstrēt kodu, kas patiešām darbosies mikrokontrolleru darbā, es nolādētu jautājumu novecošanai. Tādā veidā es varu paziņot programmas garu, neesot piesaistot faktisko programmēšanas standartu. Vienīgais trūkums ir tāds, ka studentiem būs jāpārvērš pseido kodi uz reālu kodu, kas faktiski tiks izmantots viņu konkrētajā MCU aparatūrā, taču šī problēma ir garantēta dažiem, neatkarīgi no tā, kāda reālā programmēšanas valoda man būtu jāizvēlas.

Protams, es varētu uzņemties Donalda Knuta pieeju un izgudrot savu (iedomātu) aparatūru un instrukciju kopu. . .

5. jautājums

Izpētiet sekojošo shematisko diagrammu un programmu sarakstu (kas rakstīts "pseudocode" vietā, nevis formālajā programmēšanas valodā), lai noteiktu, kāda veida pamata loģikas funkcija tiek ieviesta šajā mikrokontrolleru blokā:

Atzīt Pin0 kā izeju

Atzīt Pin1 un Pin2 kā izejvielas

LOOP

Ja PIN1 ir HIGH, iestatiet Pin0 HIGH

ELSEIF Pin2 ir HIGH, iestatīts Pin0 HIGH

ELSE iestatījis Pin0 LOW

ENDIF

ENDLOOP

Atklāt atbildi Slēpt atbildi

Šis mikrokontrolleris īsteno loģisko VAI funkciju.

Piezīmes:

Lai gan šo loģisko funkciju varētu īstenot vieglāk un lētāk, izmantojot stingru vadu (vārtu) loģiku, mērķis ir panākt, lai skolēni domātu par loģisko darbību veikšanu ar secīgu instrukciju kopu programmējamā ierīcē (MCU). Tas ir konceptuāls lēciens, vienkāršs, bet ļoti svarīgs.

Ja jūs domājat, kāpēc rakstīt pseidokodā, šeit ir daži iemesli:

Nepieciešama iepriekšēja pieredze ar programmu, kas nepieciešama pseido koda izpratnei
Tas nekad neiziet no stila
Aparatūra neatkarīga
Nav sintakses kļūdu

Ja es būtu nolēmis demonstrēt kodu, kas patiešām darbosies mikrokontrolleru darbā, es nolādētu jautājumu novecošanai. Tādā veidā es varu paziņot programmas garu, neesot piesaistot faktisko programmēšanas standartu. Vienīgais trūkums ir tāds, ka studentiem būs jāpārvērš pseido kodi uz reālu kodu, kas faktiski tiks izmantots viņu konkrētajā MCU aparatūrā, taču šī problēma ir garantēta dažiem, neatkarīgi no tā, kāda reālā programmēšanas valoda man būtu jāizvēlas.

Protams, es varētu uzņemties Donalda Knuta pieeju un izgudrot savu (iedomātu) aparatūru un instrukciju kopu. . .

6. jautājums

Izpētiet sekojošo shematisko diagrammu un programmu sarakstu (kas rakstīts "pseudocode" vietā, nevis formālajā programmēšanas valodā), lai noteiktu, kāda veida pamata loģikas funkcija tiek ieviesta šajā mikrokontrolleru blokā:

Atzīt Pin0 kā izeju

Atzīt Pin1 un Pin2 kā izejvielas

LOOP

Ja PIN1 ir LOW, iestatiet Pin0 LOW

ELSEIF Pin2 ir LOW, iestatīts Pin0 LOW

ELSE iestatījis Pin0 HIGH

ENDIF

ENDLOOP

Atklāt atbildi Slēpt atbildi

Šis mikrokontrolleris īsteno loģisko un funkciju.

Piezīmes:

Lai gan šo loģisko funkciju varētu īstenot vieglāk un lētāk, izmantojot stingru vadu (vārtu) loģiku, mērķis ir panākt, lai skolēni domātu par loģisko darbību veikšanu ar secīgu instrukciju kopu programmējamā ierīcē (MCU). Tas ir konceptuāls lēciens, vienkāršs, bet ļoti svarīgs.

Ja jūs domājat, kāpēc rakstīt pseidokodā, šeit ir daži iemesli:

Nepieciešama iepriekšēja pieredze ar programmu, kas nepieciešama pseido koda izpratnei
Tas nekad neiziet no stila
Aparatūra neatkarīga
Nav sintakses kļūdu

Ja es būtu nolēmis demonstrēt kodu, kas patiešām darbosies mikrokontrolleru darbā, es nolādētu jautājumu novecošanai. Tādā veidā es varu paziņot programmas garu, neesot piesaistot faktisko programmēšanas standartu. Vienīgais trūkums ir tāds, ka studentiem būs jāpārvērš pseido kodi uz reālu kodu, kas faktiski tiks izmantots viņu konkrētajā MCU aparatūrā, taču šī problēma ir garantēta dažiem, neatkarīgi no tā, kāda reālā programmēšanas valoda man būtu jāizvēlas.

Protams, es varētu uzņemties Donalda Knuta pieeju un izgudrot savu (iedomātu) aparatūru un instrukciju kopu. . .

7. jautājums

Izpētiet sekojošo shematisko diagrammu un programmu sarakstu (kas rakstīts "pseudocode" vietā, nevis formālajā programmēšanas valodā), lai noteiktu, kāda veida pamata loģikas funkcija tiek ieviesta šajā mikrokontrolleru blokā:

Atzīt Pin0 kā izeju

Atzīt Pin1 un Pin2 kā izejvielas

LOOP

Ja PIN1 ir LOW, iestatiet Pin0 HIGH

ELSEIF Pin2 ir LOW, iestatīts Pin0 HIGH

ELSE iestatījis Pin0 LOW

ENDIF

ENDLOOP

Atklāt atbildi Slēpt atbildi

Šis mikrokontrolleris īsteno loģisko NAND funkciju.

Piezīmes:

Lai gan šo loģisko funkciju varētu īstenot vieglāk un lētāk, izmantojot stingru vadu (vārtu) loģiku, mērķis ir panākt, lai skolēni domātu par loģisko darbību veikšanu ar secīgu instrukciju kopu programmējamā ierīcē (MCU). Tas ir konceptuāls lēciens, vienkāršs, bet ļoti svarīgs.

Ja jūs domājat, kāpēc rakstīt pseidokodā, šeit ir daži iemesli:

Nepieciešama iepriekšēja pieredze ar programmu, kas nepieciešama pseido koda izpratnei
Tas nekad neiziet no stila
Aparatūra neatkarīga
Nav sintakses kļūdu

Ja es būtu nolēmis demonstrēt kodu, kas patiešām darbosies mikrokontrolleru darbā, es nolādētu jautājumu novecošanai. Tādā veidā es varu paziņot programmas garu, neesot piesaistot faktisko programmēšanas standartu. Vienīgais trūkums ir tāds, ka studentiem būs jāpārvērš pseido kodi uz reālu kodu, kas faktiski tiks izmantots viņu konkrētajā MCU aparatūrā, taču šī problēma ir garantēta dažiem, neatkarīgi no tā, kāda reālā programmēšanas valoda man būtu jāizvēlas.

Protams, es varētu uzņemties Donalda Knuta pieeju un izgudrot savu (iedomātu) aparatūru un instrukciju kopu. . .

8. jautājums

Izpētiet sekojošo shematisko diagrammu un programmu sarakstu (kas rakstīts "pseudocode" vietā, nevis formālajā programmēšanas valodā), lai noteiktu, kāda veida pamata loģikas funkcija tiek ieviesta šajā mikrokontrolleru blokā:

Atzīt Pin0 kā izeju

Atzīt Pin1 un Pin2 kā izejvielas

LOOP

Ja PIN1 ir HIGH, iestatiet PIN0 LOW

ELSEIF Pin2 ir HIGH, iestatīts Pin0 LOW

ELSE iestatījis Pin0 HIGH

ENDIF

ENDLOOP

Atklāt atbildi Slēpt atbildi

Šis mikrokontrolleris īsteno loģisko NOR funkciju.

Piezīmes:

Lai gan šo loģisko funkciju varētu īstenot vieglāk un lētāk, izmantojot stingru vadu (vārtu) loģiku, mērķis ir panākt, lai skolēni domātu par loģisko darbību veikšanu ar secīgu instrukciju kopu programmējamā ierīcē (MCU). Tas ir konceptuāls lēciens, vienkāršs, bet ļoti svarīgs.

Ja jūs domājat, kāpēc rakstīt pseidokodā, šeit ir daži iemesli:

Nepieciešama iepriekšēja pieredze ar programmu, kas nepieciešama pseido koda izpratnei
Tas nekad neiziet no stila
Aparatūra neatkarīga
Nav sintakses kļūdu

Ja es būtu nolēmis demonstrēt kodu, kas patiešām darbosies mikrokontrolleru darbā, es nolādētu jautājumu novecošanai. Tādā veidā es varu paziņot programmas garu, neesot piesaistot faktisko programmēšanas standartu. Vienīgais trūkums ir tāds, ka studentiem būs jāpārvērš pseido kodi uz reālu kodu, kas faktiski tiks izmantots viņu konkrētajā MCU aparatūrā, taču šī problēma ir garantēta dažiem, neatkarīgi no tā, kāda reālā programmēšanas valoda man būtu jāizvēlas.

Protams, es varētu uzņemties Donalda Knuta pieeju un izgudrot savu (iedomātu) aparatūru un instrukciju kopu. . .

9. jautājums

Izpētiet sekojošo shematisko diagrammu un programmu sarakstu (kas rakstīts "pseudocode" vietā, nevis formālajā programmēšanas valodā), lai noteiktu, kāda veida pamata loģikas funkcija tiek ieviesta šajā mikrokontrolleru blokā:

Atzīt Pin0 kā izeju

Atzīt Pin1 un Pin2 kā izejvielas

LOOP

Ja PIN1 ir tāda pati kā Pin2, iestatiet Pin0 LOW

ELSE iestatījis Pin0 HIGH

ENDIF

ENDLOOP

Atklāt atbildi Slēpt atbildi

Šis mikrokontrolleris īsteno loģisko Exclusive-OR funkciju.

Piezīmes:

Lai gan šo loģisko funkciju varētu īstenot vieglāk un lētāk, izmantojot stingru vadu (vārtu) loģiku, mērķis ir panākt, lai skolēni domātu par loģisko darbību veikšanu ar secīgu instrukciju kopu programmējamā ierīcē (MCU). Tas ir konceptuāls lēciens, vienkāršs, bet ļoti svarīgs.

Ja jūs domājat, kāpēc rakstīt pseidokodā, šeit ir daži iemesli:

Nepieciešama iepriekšēja pieredze ar programmu, kas nepieciešama pseido koda izpratnei
Tas nekad neiziet no stila
Aparatūra neatkarīga
Nav sintakses kļūdu

Ja es būtu nolēmis demonstrēt kodu, kas patiešām darbosies mikrokontrolleru darbā, es nolādētu jautājumu novecošanai. Tādā veidā es varu paziņot programmas garu, neesot piesaistot faktisko programmēšanas standartu. Vienīgais trūkums ir tāds, ka studentiem būs jāpārvērš pseido kodi uz reālu kodu, kas faktiski tiks izmantots viņu konkrētajā MCU aparatūrā, taču šī problēma ir garantēta dažiem, neatkarīgi no tā, kāda reālā programmēšanas valoda man būtu jāizvēlas.

Protams, es varētu uzņemties Donalda Knuta pieeju un izgudrot savu (iedomātu) aparatūru un instrukciju kopu. . .

10. jautājums

Mikrokontrolleris ir specializēts ciparu datora veids, ko izmanto, lai nodrošinātu sistēmas automātisku secību vai kontroli. Mikrokontrolieri atšķiras no parastajiem ciparu datoriem, jo ​​tie ir ļoti mazi (parasti vienotā integrētās shēmas mikroshēma), ar vairākiem veltnītiem cipariem ciparu signālu ievadīšanai un / vai izvadīšanai un ierobežotai atmiņai. Instrukcijas, kas ieprogrammētas mikrokontrolleru atmiņā, parāda, kā reaģēt uz ievades apstākļiem un kādus signālu veidus nosūtīt uz izejām.

Vienkāršākais mikrokontrollera "saprotamā" signāla veids ir diskrēta sprieguma līmenis: vai nu "augsts" (apmēram + V) vai "zems" (apmēram zemes potenciāls), ko mēra ar noteiktu mikroshēmā esošo tapu. Mikrodatora iekšējie tranzistori ražo šos "augstos" un "zemos" signālus izejas tapos, viņu darbības modelē SPDT slēdži vienkāršības labad:

Tas neprasa daudz iztēles, lai vizualizētu, kā mikrokontrolleri var tikt izmantoti praktiskajās sistēmās: ārējo ierīču ieslēgšana un izslēgšana atkarībā no ieejas pin un / vai laika apstākļiem. Piemēri ir ierīces kontrole (cepeškrāsns taimeri, temperatūras regulatori), automobiļu dzinēja vadība (degvielas inžektori, aizdedzes laiks, pašdiagnostikas sistēmas) un robottehnika (servopiedziņas, sensoriskā apstrāde, navigācijas loģika). Patiesībā, ja jūs dzīvojat rūpnieciski attīstītā valstī, jums, iespējams, ir vairāki desmiti mikrokontrolleru (iegulti dažādās ierīcēs) un pat to nav sapratis!

Tomēr viens no mikrokontrolleru praktiskajiem ierobežojumiem ir to zemā izejas strāvas ierobežojums: parasti tas ir mazāks par 50 mA. Mikrokontrolieru iekšējo shēmu miniaturizācija aizliedz iekļaut izejas tranzistorus, kuriem ir kāds ievērojams jaudas reitings, tādēļ mums ir jāpievieno tranzistori pie izejas tapām, lai vadītu jebkuru būtisku slodzi (-as).

Pieņemsim, ka mēs vēlējāmies, lai mikrokontrolleru darbinātu ar līdzstrāvas iedarbinātu elektromagnētisko vārstu, kuram vajadzīgi divi strāvas strāvotāji 24 volti. Vienkāršs risinājums būtu izmantot NPN tranzistoru kā "interposing" ierīci starp mikrokontrolleru un solenoīda vārstu:

Diemžēl viens BJT nesniedz pietiekamu strāvas pieaugumu, lai iedarbinātu solenoīdu. Ar 20 mA izejas strāvu no mikrokontrolleru tapas un β no tikai 25 (tipisks jaudas tranzistoram), tas nodrošina tikai solenoīda spoli aptuveni 500 mA.

Šīs problēmas risinājums ietver divus bipolārus tranzistorus Darlingtonu pāru struktūrā:

Tomēr vēl ir vēl viens risinājums - aizstāt vienīgo BJT ar vienu MOSFET, kuram vispār nav nepieciešama diska strāva. Parādiet, kā tas var notikt:

Atklāt atbildi Slēpt atbildi

Piezīmes:

Šī ilgstošā jautājuma nolūks ir ne tikai, lai skolēni saprastu, kā aizstāt BJT ar MOSFET, bet arī iepazīstināt tos ar mikrokontrollera koncepciju, kas mūsdienās ir kļuvusi aktuāla elektroniskajās sistēmās.

Daži skolēni var uzzināt, kā diode tiek izmantota šajā shēmā. Paskaidrojiet viņiem, ka šis ir komutējošais diods, ko dažkārt sauc par brīvrokšņa diodi, kas nepieciešams, lai novērstu tranzistora pārslogošanu ar augstsprieguma pārejas palīdzību, ko rada solenoīda spole, kad tas ir aktivizēts ("induktīvā atsitiena").

11. jautājums

Mikrokontrolleru izmanto, lai nodrošinātu automātisko jaudas koeficienta korekciju maiņstrāvas slodzei:

Pārbaudiet šo shematisko diagrammu, tad atbildiet uz šādiem jautājumiem:

Kā mikrokontrolleris var uztvert maiņstrāvas slodzes "# 11" jaudas koeficientu> Atklāt atbildi Nerādīt atbildi

Es tev un taviem klasesbiedriem apspriedīšu, kā MCU varētu noteikt jaudas koeficientu. Šim nolūkam ir vairāk nekā viens derīgs risinājums!

Abi kondensatori būtu iesaistīti 20 μF un 80 μF: MCU izejas DCBA būtu 0101 (ņemiet vērā, ka izejām jābūt zemām, lai aktivizētu savus relejus!). Ar šo izvadi koriģētais jaudas koeficients būtu 0, 99939, nevis sākotnējais 0, 77.

Piezīmes:

Šis jautājums rada dažus interesantus pārskatīšanas jēdzienus, kā arī sarežģītu veco un jauno elektronikas koncepciju, kas jūsu skolēniem jāapsver. Noteikti ļaujiet pietiekami daudz laika apspriešanai par šo jautājumu, kā arī nepieciešamo pārskata laiku jaudas faktora aprēķiniem!

12. jautājums

Šis mikrokontrolleris ir ieprogrammēts, lai mainītu LED uztverto spilgtumu, izmantojot impulsa platuma modulāciju (PWM), kas kontrolē pin 0 izeju:

Atzīt Pin0 kā izeju

Atzīt X kā veseli skaitļi

LOOP

Set Pin0 LOW

Pauze par 100 - x mikrosekundēm

Iestatīt Pin0 HIGH

Pauze uz X mikrosekundēm

ENDLOOP

Nosakiet, kāda ir X vērtība, lai iestatītu LED spilgtumu par 80%, kā arī to, kāds ir PWM signāla biežums.

Atklāt atbildi Slēpt atbildi

Uz šo jautājumu, visticamāk, vislabāk atbildēs, parādot Pin 0 izejas laika diagrammu, atzīmējot 100-X μs un X μs laikus.

Sekojošais jautājums: kāda ir šī PWM vadības rezolūcija, ņemot vērā, ka X ir vesels mainīgais "notes is hidden"> Piezīmes:

Impulsa platuma modulācija (PWM) ir ļoti izplatīts un noderīgs veids, kā ģenerēt analogo izeju no mikrokontrolleru (vai citas digitālās elektroniskās shēmas), kas spēj sasniegt tikai "augstu" un "zemu" sprieguma līmeni. Ar PWM, laiks (vai konkrētāk, darba cikla ) ir analogais domēns, bet amplitūda ir digitālais domēns. Tas ļauj mums "nolaist" analogo signālu, izmantojot digitālo (ieslēgtu) datu kanālu.

Ja jūs domājat, kāpēc rakstīt pseidokodā, šeit ir daži iemesli:

Nepieciešama iepriekšēja pieredze ar programmu, kas nepieciešama pseido koda izpratnei
Tas nekad neiziet no stila
Aparatūra neatkarīga
Nav sintakses kļūdu

Ja es būtu nolēmis demonstrēt kodu, kas patiešām darbosies mikrokontrolleru darbā, es nolādētu jautājumu novecošanai. Tādā veidā es varu paziņot programmas garu, neesot piesaistot faktisko programmēšanas standartu. Vienīgais trūkums ir tāds, ka studentiem būs jāpārvērš pseido kodi uz reālu kodu, kas faktiski tiks izmantots viņu konkrētajā MCU aparatūrā, taču šī problēma ir garantēta dažiem, neatkarīgi no tā, kāda reālā programmēšanas valoda man būtu jāizvēlas.

Protams, es varētu uzņemties Donalda Knuta pieeju un izgudrot savu (iedomātu) aparatūru un instrukciju kopu. . .

13. jautājums

Daudzi mikrokontrolleri ir aprīkoti ar iebūvētu PWM funkciju, tādēļ jums pašam nav jāpievieno pielāgots PWM algoritms. Šis fakts norāda uz pulsa platuma modulācijas kā kontroles sistēmas popularitāti. Paskaidrojiet, kāpēc PWM ir tik populārs, un sniedziet dažus praktiskus piemērus tam, kā to var izmantot.

Atklāt atbildi Slēpt atbildi

Es ļaus jums veikt savu pētījumu par šo jautājumu! Atbilde (-as) ir / nav grūti atrast.

Piezīmes:

Impulsa platuma modulācija (PWM) ir ļoti izplatīts un noderīgs veids, kā ģenerēt analogo izeju no mikrokontrolleru (vai citas digitālās elektroniskās shēmas), kas spēj sasniegt tikai "augstu" un "zemu" sprieguma līmeni. Ar PWM, laiks (vai konkrētāk, darba cikla ) ir analogais domēns, bet amplitūda ir digitālais domēns. Tas ļauj mums "nolaist" analogo signālu, izmantojot digitālo (ieslēgtu) datu kanālu.

14. jautājums

Impulsa platuma modulācija (PWM) ir ne tikai noderīga, lai ģenerētu analogo izeju ar mikrokontrolleru, bet tā ir arī noderīga analogās ieejas saņemšanai ar tapu, kas apstrādā tikai ar ieslēgtu-izslēgtu (augstu zemu) digitālo sprieguma līmeni. Sekojošā ķēde ņem analoga sprieguma signālu uz salīdzinājuma ierīci, ģenerē PWM, pēc tam nosūta šo PWM signālu uz mikrovadības ievadi:

Atzīt Pin0 kā ievadi

Atzīt Last_Pin0 kā boolean mainīgo

Atzīt Time_High kā vesels mainīgais

Atzīt Time_Low kā veseli skaitļi

Atzīt Duty_Cycle kā peldošā komata mainīgo

Iestatiet Time_High un Time_Low abus uz nulli

LOOP

Iestatīt Last_Pin0, kas ir vienāds ar Pin0

Ja Pin0 ir HIGH, pieaugums Time_High par vienu

Ja Pin0 ir LOW, pieauguma laiks_Low par vienu

Ja Last_Pin0 nav vienāds ar Pin0, dodieties uz SUBROUTINE

ENDLOOP

PĀRTRAUKUMS

Iestatiet Duty_Cycle, kas ir vienāds ar (Time_High / (Time_High + Time_Low))

Iestatiet Time_High un Time_Low abus uz nulli

Atgriezties pie zvana cilpas

ENDSUBROUTINE

Paskaidrojiet, kā šī programma darbojas. Padoms. Būla mainīgais Last_Pin0 tiek izmantots, lai noteiktu, kad stāvoklis Pin0 ir mainīts no 0 līdz 1 vai no 1 līdz 0.

Atklāt atbildi Slēpt atbildi

Šīs programmas vissmagākā daļa ir norādīta mainīgā Last_Pin0 funkcija un kā tā nosaka, kad izpildīt apakšprogrammu. Es ļoti iesakām veikt "domu eksperimentu" ar lēnu kvadrātveida viļņu ievades signālu mikrokontrolleru, izpētot, kā Time_High un Time_Low mainīgie kļūst palielināti ar kvadrātveida vilnim stāvokli.

Piezīmes:

Impulsa platuma modulācija (PWM) ir ļoti izplatīts un noderīgs veids, kā ģenerēt analogo izeju no mikrokontrolleru (vai citas digitālās elektroniskās shēmas), kas spēj sasniegt tikai "augstu" un "zemu" sprieguma līmeni. Šeit mēs arī redzam, ka to izmanto kā ievades signāla modulācijas formu. Ar PWM, laiks (vai konkrētāk, darba cikla ) ir analogais domēns, bet amplitūda ir digitālais domēns. Tas ļauj mums "nolaist" analogo signālu, izmantojot digitālo (ieslēgtu) datu kanālu.

Ja jūs domājat, kāpēc rakstīt pseidokodā, šeit ir daži iemesli:

Nepieciešama iepriekšēja pieredze ar programmu, kas nepieciešama pseido koda izpratnei
Tas nekad neiziet no stila
Aparatūra neatkarīga
Nav sintakses kļūdu

Ja es būtu nolēmis demonstrēt kodu, kas patiešām darbosies mikrokontrolleru darbā, es nolādētu jautājumu novecošanai. Tādā veidā es varu paziņot programmas garu, neesot piesaistot faktisko programmēšanas standartu. Vienīgais trūkums ir tāds, ka studentiem būs jāpārvērš pseido kodi uz reālu kodu, kas faktiski tiks izmantots viņu konkrētajā MCU aparatūrā, taču šī problēma ir garantēta dažiem, neatkarīgi no tā, kāda reālā programmēšanas valoda man būtu jāizvēlas.

Protams, es varētu uzņemties Donalda Knuta pieeju un izgudrot savu (iedomātu) aparatūru un instrukciju kopu. . .

15. jautājums

Digitālie datori sazinās ar ārējām ierīcēm caur ostām : termināļu komplekti parasti tiek sakārtoti grupās pa 4, 8, 16 vai vairāk (4 biti = 1 bits, 8 biti = 1 baits, 16 biti = 2 baiti). Šie termināli var iestatīt kā augstu vai zemu loģisko stāvokli, rakstot programmu datoram, kas nosūta ostas skaitlisko vērtību. Piemēram, šeit ir ilustrēts, kā mikrokontrolleru uzdod nosūtīt heksadecimālo numuru F3 uz A un 2C portu uz B pieslēgumu:

Pieņemsim, ka mēs vēlējāmies izmantot astoņu pakāpju secībā vadošās dzinēja spoles vadīt četras augšējās četras A porcijas bāzes (7., 6., 5. un 4. tapas):

1. solis:
0001
2. solis:
0011
3. solis:
0010
4. solis:
0110
5. solis:
0100
6. solis:
1100
7. darbība:
1000
8. solis:
1001

Tā kā katrs spraudnis ir augsts, tas vada jaudas MOSFET uz, kas nosūta strāvu cauri attiecīgajai pakāpju motora attiecīgajai spolei. Sekojot "maiņas" secībai, kā parādīts attēlā, motors pagrieza nelielu daudzumu katram ciklam.

Uzrakstiet nepieciešamo skaitļu secību, kas jānosūta ostam A, lai ģenerētu šo konkrēto bitu maiņu secību, heksadecimālajā formātā. Atstājiet apakšējo četru ostas A bitu zemu loģikas stāvoklī.

Atklāt atbildi Slēpt atbildi

1. solis:
10 16
2. solis:
30 16
3. solis:
20 16
4. solis:
60 16
5. solis:
40 16
6. solis:
C0 16
7. darbība:
80 16
8. solis:
90 16

Sekojošais jautājums: uzrakstiet to pašu secību nevis ar sešpadsmitdaļu, bet pēc cipariem:

1. solis:
2. solis:
3. solis:
4. solis:
5. solis:
6. solis:
7. darbība:
8. solis:

Piezīmes:

Kaut arī šī jautājuma sakne ir nekas cits kā binārā līdz heksadecimālā konversija, tā arī iepazīstina studentus ar koncepciju par bitu stāvokļa kontroli mikrokompāniju ostās, rakstot heksa vērtības. Tāds jautājums ir ļoti praktisks!

Gadījumā, ja studenti jautā, dariet viņiem zināmu, ka dažreiz tiek izmantots dolāra zīmes prefikss, lai apzīmētu heksadecimālo skaitli. Citos gadījumos tiek lietots prefikss 0x (piemēram, $ F3 un 0xF3 nozīmē to pašu).

16. jautājums

Izpētiet sekojošo shematisko diagrammu un programmu sarakstu (kas rakstīts "pseudocode" vietā, nevis formālajā programmēšanas valodā), lai noteiktu, kāda veida pamata loģikas funkcija tiek ieviesta šajā mikrokontrolleru blokā:

Atzīt Pin0 kā izeju

Atzīt Pin1 un Pin2 kā izejvielas

LOOP

Ja PIN1 ir tāda pati kā Pin2, iestatiet Pin0 HIGH

ELSE iestatījis Pin0 LOW

ENDIF

ENDLOOP

Atklāt atbildi Slēpt atbildi

Šis mikrokontrolleris īsteno loģisko funkciju Exclusive-NOR.

Piezīmes:

Lai gan šo loģisko funkciju varētu īstenot vieglāk un lētāk, izmantojot stingru vadu (vārtu) loģiku, mērķis ir panākt, lai skolēni domātu par loģisko darbību veikšanu ar secīgu instrukciju kopu programmējamā ierīcē (MCU). Tas ir konceptuāls lēciens, vienkāršs, bet ļoti svarīgs.

Ja jūs domājat, kāpēc rakstīt pseidokodā, šeit ir daži iemesli:

Nepieciešama iepriekšēja pieredze ar programmu, kas nepieciešama pseido koda izpratnei
Tas nekad neiziet no stila
Aparatūra neatkarīga
Nav sintakses kļūdu

Ja es būtu nolēmis demonstrēt kodu, kas patiešām darbosies mikrokontrolleru darbā, es nolādētu jautājumu novecošanai. Tādā veidā es varu paziņot programmas garu, neesot piesaistot faktisko programmēšanas standartu. Vienīgais trūkums ir tāds, ka studentiem būs jāpārvērš pseido kodi uz reālu kodu, kas faktiski tiks izmantots viņu konkrētajā MCU aparatūrā, taču šī problēma ir garantēta dažiem, neatkarīgi no tā, kāda reālā programmēšanas valoda man būtu jāizvēlas.

Protams, es varētu uzņemties Donalda Knuta pieeju un izgudrot savu (iedomātu) aparatūru un instrukciju kopu. . .

17. jautājums

Digitālie datori sazinās ar ārējām ierīcēm caur ostām : termināļu komplekti parasti tiek sakārtoti grupās pa 4, 8, 16 vai vairāk. Šie termināli var iestatīt kā augstu vai zemu loģisko stāvokli, rakstot programmu datoram, kas nosūta ostas skaitlisko vērtību. Piemēram, šeit ir ilustrēts, kā mikrokontrolleru uzdod nosūtīt heksadecimālo skaitli 2B uz A un A9 portu uz B pieslēgumu:

Pieņemsim, ka mēs vēlējāmies izmantot pirmos septiņus katras porta bitus (0 līdz 6 piespraudes), lai vadītu divus 7 segmentu parastu katodu displejus, nevis izmantot BCD-7 segmentu dekodera IC:

Uzrakstiet nepieciešamās heksadecimālās vērtības, kas jāievada portos A un B, lai izveidotu displeju "42" divos 7 segmentu displeja blokos.

Atklāt atbildi Slēpt atbildi

Osta A = 5B 16 osta B = 66 16

Ņemiet vērā, ka arī šādas atbildes ir derīgas:

A osta = DB 16 osta B = E6 16

Sekojošais jautājums: uzrakstiet šīs pašas skaitliskās vērtības nevis ar heksadecimālo decimāldaļu, bet gan pēc decimāldaļas.

Piezīmes:

Šī jautājuma sakne ir tikai nedaudz vairāk nekā bināra līdz heksadecimālajai pārveidošanai, bet tā arī iepazīstina studentus ar kontūru, kas kontrolē bitu stāvokli mikrokompāniju ostās, rakstot hex vērtības. Tāds jautājums ir ļoti praktisks! Kaut arī maz ticams, ka kāds varētu izlaist BCD-7-segmentu dekodētājus, veidojot divciparu decimāldaļu displeju (jo šādi rīkojoties izmanto tik daudz dārgākus mikrokontrolleru I / O pingus), tas noteikti ir iespējams! Ir daudzas citas lietojumprogrammas, izņemot to, kur jums ir nepieciešams iegūt mikrokontrolleru, lai izvadītu noteiktu augstu un zemu stāvokļu kombināciju, un ātrākais veids, kā to programmēt, ir izvadīt hex vērtības ostām.

Gadījumā, ja studenti jautā, dariet viņiem zināmu, ka dažreiz tiek izmantots dolāra zīmes prefikss, lai apzīmētu heksadecimālo skaitli. Citos gadījumos tiek lietots prefikss 0x (piemēram, $ F3 un 0xF3 nozīmē to pašu).

18. jautājums

Viena pikseļu vadīšanas metode uz režģa balstīta displeja ir pikseļu sakārtošana rindās un kolonnās, pēc tam izvēlieties atsevišķus pikseļus apgaismojumam ar konkrētas rindas līnijas krustpunktu un konkrētu kolonnu līniju. Šajā piemērā mēs kontrolēam 8 × 8 gaismas diožu tīklu ar diviem mikrokontrolleru 8 bitu (1 baitu) pieslēgvietām:

Ņemiet vērā, ka vienā no ostas B kontaktiem ir nepieciešams augsts stāvoklis, lai aktivizētu rindu, un zemā stāvoklī ir nepieciešams kāds no porta A spraudņiem, lai aktivizētu kolonnu, jo LED anodes savieno ar portu A un LED katodi savieno ar portu B.

Nosakiet heksadecimālos kodus, kas mums vajadzētu izvadīt portēs A un B, lai aktivizētu LED astoņu apakšējā kreisajā stūrī 8 × 8 režģī.

Osta A =

Osta B =

Atklāt atbildi Slēpt atbildi

Osta = $ FE

Port B = 80 ASV dolāri

Piezīmes:

19. jautājums

Izpētiet sekojošo shematisko diagrammu un programmu sarakstu (kas rakstīts "pseudocode" vietā, nevis formālajā programmēšanas valodā), lai noteiktu, kāda veida pamata loģikas funkcija tiek ieviesta šajā mikrokontrolleru blokā:

Atzīt Pin0 kā izeju

Atzīt Pin1, Pin2 un Pin3 kā izejvielas

LOOP

Ja PIN1 ir HIGH, iestatiet Pin0 HIGH

ELSEIF Pin2 ir HIGH, iestatīts Pin0 HIGH

ELSEIF Pin3 ir HIGH, iestatīts Pin0 HIGH

ELSE iestatījis Pin0 LOW

ENDIF

ENDLOOP

Atklāt atbildi Slēpt atbildi

Šis mikrokontrolleris īsteno 3 ieejas loģisko VAI funkciju.

Piezīmes:

Lai gan šo loģisko funkciju varētu īstenot vieglāk un lētāk, izmantojot stingru vadu (vārtu) loģiku, mērķis ir panākt, lai skolēni domātu par loģisko darbību veikšanu ar secīgu instrukciju kopu programmējamā ierīcē (MCU). Tas ir konceptuāls lēciens, vienkāršs, bet ļoti svarīgs.

Ja jūs domājat, kāpēc rakstīt pseidokodā, šeit ir daži iemesli:

Nepieciešama iepriekšēja pieredze ar programmu, kas nepieciešama pseido koda izpratnei
Tas nekad neiziet no stila
Aparatūra neatkarīga
Nav sintakses kļūdu

Ja es būtu nolēmis demonstrēt kodu, kas patiešām darbosies mikrokontrolleru darbā, es nolādētu jautājumu novecošanai. Tādā veidā es varu paziņot programmas garu, neesot piesaistot faktisko programmēšanas standartu. Vienīgais trūkums ir tāds, ka studentiem būs jāpārvērš pseido kodi uz reālu kodu, kas faktiski tiks izmantots viņu konkrētajā MCU aparatūrā, taču šī problēma ir garantēta dažiem, neatkarīgi no tā, kāda reālā programmēšanas valoda man būtu jāizvēlas.

Protams, es varētu uzņemties Donalda Knuta pieeju un izgudrot savu (iedomātu) aparatūru un instrukciju kopu. . .

20. jautājums

Students izveido mikrokontrolleru ķēdi, lai ieslēgtu LED vienu reizi ik pēc piecām ieejas slēdža darbībām. Ķēde ir vienkārša, ja mikrokontrolleris izmanto nosacītu cilpu, lai palielinātu mainīgo katru reizi, kad tiek nospiests slēdzis:

Atzīt Pin0 kā izeju

Atzīt Pin1 kā ievadi

Atzīt X kā veseli skaitļi

LOOP

KAD PIN1 ir HIGH

Pievienot 1 līdz X (X = X + 1)

Beidzot

IF X ir vienāds ar 5, iestatiet Pin0 HIGH un iestatiet X līdz 0

ELSE iestatījis Pin0 LOW

ENDIF

ENDLOOP

Diemžēl programma netiek izpildīta, kā plānots. Tā vietā, lai gaismas diode tiktu parādīta reizi piecos slēdžus, tas, šķiet, nāk no nejaušības principa, kad slēdzis tiek atbrīvots. Dažreiz gaismas diode ieslēdzas pēc pirmā slēdža iedarbināšanas, savukārt citos laikos vairāk nekā pieci slēdzi nospiež, lai to ieslēgtu.

Pēc kādas rūpīgas analīzes students saskaras ar problēmu WHILE cilpu. Tā kā mikrokontrolleris ir daudz ātrāk nekā cilvēka roka, šī cilpa daudzkārt izpilda, kamēr slēdzis tiek piespiests, nevis tikai vienreiz, tas nozīmē, ka mainīgais X katru reizi pārslēdzas aktivizē daudzkārt no 0 līdz 5. Tad tikai nejaušība ir tāda, ka X būs pieci pēc WHILE cilpas izejas.

Studentam ir vajadzīgs, lai pārietu uz pieaugumu par 1 tikai attiecībā uz pāreju no slēdža uz slēdzi: ieejas impulsa pozitīvajā malā . Problēma ir tā, kā to izdarīt, izmantojot programmu.

Cits students, saskaroties ar to pašu problēmu, izvēlējās to atrisināt šādā veidā, un tas strādāja tikai labi:

Atzīt Pin0 kā izeju

Atzīt Pin1 kā ievadi

Paziņot slēdzi kā Būla (0 vai 1) mainīgo

Atzīt Last_Switch kā Būla (0 vai 1) mainīgo

Atzīt X kā veseli skaitļi

LOOP

Iestatīt Last_Switch vienāds ar pārslēgšanu

Set Switch ir vienāds ar Pin1

IF pārslēgšanās = 1 un Last_Switch = 0 THEN pievienot 1 līdz X (X = X + 1)

ELSE neko nedara X.

ENDIF

IF X ir vienāds ar 5, iestatiet Pin0 HIGH un iestatiet X līdz 0

ELSE iestatījis Pin0 LOW

ENDIF

ENDLOOP

Paskaidrojiet, kā šī programma veiksmīgi palielina X tikai katrai pogas pārslēgšanas pārejai uz otru pusi, kamēr otra programma strauji palielina X visā spiediena taustiņa pogas laikā.

Atklāt atbildi Slēpt atbildi

Galvenais, lai izprastu, kā darbojas šis algoritms, ir realizēt mainīgo Last_Switch vienmēr būs viens skenēšana (cilpas izpilde) aiz mainīgā pārslēgšanās.

Izaicinājuma jautājums: vai ir svarīgi, kur programmā sekojošas divas rindiņas iet "atzīmes paslēptas"> Piezīmes:

Šis impulsu noteikšanas algoritms ļoti bieži tiek izmantots programmās, kas nodarbojas ar reāllaika slēdža ieejām. Tas programmatūrā veic to, ko pulsācijas noteikšanas tīkls darbojas ar malām iedarbināmiem spiedpogām, tādā pašā efektā: lai iedarbinātu kādu darbību tikai impulsa signāla malā.

  • ← Iepriekšējā darba lapa

  • Darba lapa indekss

  • Nākamā darblapa →