Paintball/ballistiska Chronograph (4 / 11 steg)
Steg 4: beräkningar
PIC18F13K50 är inställd för att köra på 48MHz. Det tar 4 cykler att utföra en instruktion cykel, så MCU körs på 12 MIPS (miljoner instruktioner per sekund). Så den tid det tar för PIC att utföra en instruktion cykel är lika med (1 / 12 MIPS), som är 83.3333 nanosekunder/instruktion.
Vi vet att avståndet mellan IR "balkar" är exakt 4 inches. Så allt vi behöver nu är att veta hur lång tid det tog projektilen att resa från balk #1 till balk #2. Detta är vad Timer1 är används för. Varje instruktion cykel (83.3333 ns) värdet av TMR1H:TMR1L kommer att öka.
Säga vi sköt en paintball genom kronografen. När paintball har rest genom kronografen och bröt beam #2, vi gå och läsa värdet för TMR1H:TMR1L (det är ett 16-bitarsvärde). För exempel skull, ska vi säga värdet läser vi var 15,930. Här är hur vi beräknar hastigheten av paintball:
MCU hastighet = 12 MIPS
= 83.3333 ns/ins
Avståndet = 4 i.
= 1/3 ft
Tid = MCU hastighet * TMR1H:TMR1L
= 83.3333 ns/ins * 15,930 instruktioner
= 1.3275 millisekunder
Hastighet = sträcka / tid
= (1/3 ft) / 1.3275 ms
= 251 fot per sekund
Paintball färdades med en hastighet av 251 fps. Detta sätt att beräkna är helt bra, i min kod jag bara ordnas om ekvationen så MCU kunde beräkna det lite snabbare. Ekvationen jag använda i min kod är:
Hastighet = ((FOSC / 4) / TMR1H:TMR1L) / 3
= ((12 MIPS) / 15,930) / 3
= 251fps