UNIVERZA V LJUBLJANI |
||||||||||||||||||||||||||||||||||||
FAKULTETA ZA ELEKTROTEHNIKO Seminar za predmeta Računalni?ko načrtovanje vezij II in Mikroprocesorji v elektroniki |
||||||||||||||||||||||||||||||||||||
Dvoosna detekcija premika s sistemom HC11 Avtorja: Matja? Lotrič, Danijel Hude Najna naloga je bilo izdelati vezje, ki detektira premike v oseh X in Y. Ti premiki se ka?ejo kot spreminjanje vsebine nekih ?tevcev, ki ?tejejo navzgor oz. navzdol odvisno od premikanja. Vrednosti ?tevcev beremo z sistemom HC11 in jih lahko poljubno obdelamo. V principu je to realizacija računalni?ke mi?ke, le da je tu vse izdelano z analognimi in diskretnimi elementi. Sam projekt je sestavljen iz treh večjih sklopov: senzorskega dela, dveh 16 bitnih ?tevcev ter dekoderja in zapahov. V nadaljevanju bova posamezne sklope vezja ter "driver" za najin projekt predstavila bolj podrobno. |
||||||||||||||||||||||||||||||||||||
1.Detekcija premika oz. SENZORSKI DEL Detekcija premika je izvedena z
oddajno IR diodo in foto tranzistorjem, ki je občutljiv na IR svetlobo. Med
diodo in tranzistor je vstavljena vrtljiva zaslonka.
Slika1: Izgled zaslonke
Slika2: Postavitev senzorjev in izgled izhodnih signalov
Slika3: Realizacija smeri ?tetja z D flip-flopom
Slika4: Senzorsko vezje
|
||||||||||||||||||||||||||||||||||||
2. Izvedba ?tevcev Merjenje premika sva realizirala z ?tetjem impulzov, ki se tvorijo pri vrtenju zaslonke. Zaslonka ima re?e, skozi katere IR svetloba odpira fototranzistor, to pa na izhodu komparatorja povzroči '1'. Dobimo vlak impulzov, ki predstavlja CLK signal za ?tevce. Za vsako od osi (X in Y) sva predvidela 16-bitni binarni ?tevec, ki je realiziran z ?tirimi 4-bitnimi binarnimi ?tevci (IC: CD4029). Ti so vezani kaskado tako, da vsak prehod iz '1111' v '0000' predhodne stopnje poveča vrednost naslednji stopnji za 1. (Slika6) ?tevci podpirajo ?tetje gor in dol, saj se zaslonka lahko vrti naprej in nazaj. Signal, ki preklaplja smer ?tetja dobiva na način kot je opisano v zgornjem odstavku. Izhodi ?tevcev so vezani na vhode zapahov in se v odvisnosti od programa spu?čajo na podatkovno vodilo. |
||||||||||||||||||||||||||||||||||||
3. Dekoder in latch-i Iz 16 bitnih ?tevcev dobimo 16 bitni podatek, ki določa pozicijo X smeri in 16 bitni podatek za Y smer. Ker ima sistem HC11 le 8 bitno podatkovno vodilo, je treba 16 bitne podatke razdeliti na 2 x po 8 bitov. ( LSB in MSB ) Le te nato spu?čava preko zapahov 74HC373 na podatkovno vodilo. Izhod zapaha ima lahko tri stanja: '1', '0', ali Z. V primeru da zapah ni aktiven, ima izhode v stanju visoke impedance Z, to pa zato da ne pride do nesoglasji na vodilu. Vpis podatkov na podatkovno vodilo poteka v dveh korakih: v prvem koraku podatke pripeljemo na vhode zapaha in jih vpi?emo v D celice, ki jih vsebuje IC 74HC373, v drugem koraku pa podatke spustimo na podatkovno vodilo. |
||||||||||||||||||||||||||||||||||||
Kaj se bo zgodilo pa je odvisno od krmilnih impulzov. Kdaj se podatki vpi?ejo v latch in kdaj jih spustimo na vodilo nam določa program, ki prek 16 bitnega naslovnega vodila krmili dekoder, le ta pa krmili posamezne zapahe. |
||||||||||||||||||||||||||||||||||||
Pomnilni?ki prostor na na?em sistemu razdeljen tako, da je v spominu nezaseden prostor od naslova $4000 do $9000. Najino vezje sva priklopila na naslove od $4000 do $4004. Za dekoder sva uporabila EPROM 27512, ki ima 16 naslovnih vhodov in 8 izhodov. Vzrok da sva se odločila za EPROM je preprost, saj to predstavlja najla?jo re?itev (samo en IC) (Slika7). Seveda pa to ni optimalna re?itev saj je EPROM dokaj počasno vezje in vna?a zakasnitve. EPROM je programiran tako, da ob naslovih $x000 do $x007 da na enem od osmih izhodih da logično '1'.(x od 4 do 9). Izgled kako sva sprogramirala EPROM, prikazuje slika8, dodana pa je tudi datoteka Eprom.bin z najnim programom. Z tako sprogramiranim EPROM-om sva zadostila potrebam po raz?irljivosti sistema, saj so izhodi EPROM-a ( Q0 ? Q7 ) dostopni na konektorju CON8 in se jih lahko uporabi kot ChipSelect signale pri raz?iritvah sistema kar preko dekoderja na najinemu sistemu. Če pa najina re?itev ne zado?ča, se lahko EPROM sprogramira čisto poljubno odvisno od zahtev. |
||||||||||||||||||||||||||||||||||||
4. Program oz. "driver" Sam driver za najin sistem je lahko čisto preprost in kratek. Poskrbeti mora
le za vpis vrednosti ?tevcev v D flip-flope zapahov in jih v določenem trenutku spustiti na podatkovno vodilo, da so dostopni
za kasnej?o obdelavo v sistemu HC11. Dobljene podatke moramo shraniti na neko začasno lokacijo, saj celotno informacijo o stanju
?tevcev predstavlja 16 bitni podatek. Krmiljenje letch-ev in s tem vpis podatkov na podatkovno vodilo poteka z zelo preprostim
programom:
|
||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
6.Aplikacija Za predmet Mikroprocesorji v elektroniki smo morali povezati na? "hardware"-ski izdelek in programiranje v realnem času. Odločila sva se, da najino ti. mi?ko pove?eva z ploterjem, ki je bil kot projektna naloga narejen in na razpolago. Napisala sva program, ki bere podatke iz mi?ke, določi smer pisanja in ?tevilo korakov, ki jih motor mora narediti v določeni smeri. Program je sestavljen iz ?estih rutin, ki jih vključimo v urnik in se zvajajo v danem zaporedju. Spodaj so nakratko opisane vse rutine, ki jih vsebuje najin program. Nadrobnej?i opis vsebuje datoteka Appz.asm z programom, ki vsebuje podrobne komentarje. |
||||||||||||||||||||||||||||||||||||
Opis rutin: |
||||||||||||||||||||||||||||||||||||
1. Rutina KBD: Ta rutina prebere tipke na ploterju. Rezultat se shrani v register KBDKEY. Če je tipka pritisnjena, se to ka?e, kot logična enica na enem izmed zgornjih petih bitov. |
||||||||||||||||||||||||||||||||||||
2. Rutina PISALO: S to rutino vklapljamo oz. izklapljamo pisalo plotreja. Z pritiskom na strednjo tipko ploterja se pisalo spusti oz. dvigne odvisno od prej?nega stanja. |
||||||||||||||||||||||||||||||||||||
3. Rutina MOUSE: Rutina MOUSE nam prebere podatke o stanju X in Y osi. Ti podatki se vpi?ejo v bufferja OSXB-OSXE (podatki za X os) in OSYB-OSYE (podatki za Y os). Bufferja sta velikosti 32 bajtov. |
||||||||||||||||||||||||||||||||||||
4. Rutina MIS_BUF: Ta rutina nam ob klicanju iz urnika prebere vrednosti iz bufferjev. Podatki, ki jih preberemo se skranijo v začasne 16 bitne registre. |
||||||||||||||||||||||||||||||||||||
5. Rutina SMER: Ta rutina nam izračina ?tevilo korakov motorja in določi smer v kateri se motor vrti. |
||||||||||||||||||||||||||||||||||||
6. Rutina VOZI: Rutina nam krmili koračna motorja ploterja. Ta rutina se nahaja v urniku dvakrat in se tako izvr?i 128 krat v sekundi. |
||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
|
Vpra?anja, pripombe, predlogi? Pi?ite:
matjaz.lotric@email.si
Dhanijel@email.si