21.12.2013 Views

Maskinnära programmering 6B2266

Maskinnära programmering 6B2266

Maskinnära programmering 6B2266

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Givare för vinkel, varvtal, motorbelastning<br />

Vinkelläge<br />

Fordonsindustrin har hittat ett mycket billigt sätt<br />

att mäta motoraxelns vinkelläge. En induktiv<br />

givare avger pulser när motorns startkuggkrans<br />

roterar, och en annan induktiv givare avger en<br />

puls per varv då ett "indexstift" passerar. (<br />

Tekniken beskrivs i boken Mätgivare ).<br />

Antag att startkransen har 130 kuggar. För att<br />

grovt hålla reda på vinkelläget "räknar" man i<br />

princip de kuggar som passerar med en modulo-<br />

130-räknare.<br />

Mikrostyrkretsen PIC6F87x har tre interna räknare ( Timer0, Timer1 och Timer2).<br />

Timer0 är lämplig till denna uppgift, det är en åttabitarsräknare, dvs en modulo-256-<br />

räknare som "slår runt" vid talet 255 och då börjar om med talet 0. Timer0 kan<br />

programmeras att räkna pulser som inkommer på pinne T0CKI. Kugg-givaren ansluts<br />

till denna pinne.<br />

Man kan få ett avbrott (interrupt) i programkörningen var gång Timer0 "slår runt".<br />

Om man vid avbrotten passar på att direkt "ladda" Timer0 med talet 126<br />

(256-130=126) blir räknecykeln förkortad till 130 steg, dvs vi får en<br />

modulo-130-räknare. Aktuell kugge kan man få reda på genom att läsa av Timer0 och<br />

dra ifrån talet 126.<br />

Antag att indexstiftet är placerat vid kugge nr "0". Mikrostyrkretsen PIC6F87x har en<br />

yttre avbrottsingång INT. Indexpinnens givare ansluts till denna. Vid start av motorn<br />

"laddar" man Timer0 med talet 126 när index-pinnen passerar sin givare och<br />

genererar avbrott. Från denna stund håller Timer0 "reda på" kuggarna.<br />

26

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!