Paintball/ballistiska Chronograph (10 / 11 steg)
Steg 10: Noggrannhet och fel
Noggrannhet:
Om en paintball reser på 300fps, det tar 3.3333ms att resa 1ft (1 / 300 fps = 3.3333ms). Ser som vår IR-sändare/detektor par är fördelade 4" apart, måste vi dela 3.3333ms av 3 (1ft / 4 tum = 3). Så är den tid det kommer ta paintball resa 4" på 300fps 1.1111ms.
300 fps = 3.3333ms/ft
att resa 4 tum = 3.3333ms / (1ft / 4 i.)
= 1.1111ms
CPU-hastighet = 12 MIPS
= 83.3333ns / ins
Noggrannhet = 100 - (100 * (83.3333ns / 1.1111ms))
= 99.9925% noggrannhet @ 300fps
Nu är inte den faktiska riktigheten av denna kronograf. Om denna microcontroller kunde upptäcka ett objekt på någon instruktion cykel, skulle ha en noggrannhet på 99.9925% på 300fps eftersom dess värsta scenariot inte detektera ett objekt när det har brutit balken endast kunde 83.3333ns innan det faktiskt skulle upptäcka den.
Eftersom jag är röstningen IR-detektorerna och väntar på att se när ett objekt har brutit beam #1, tar det 8 instruktion cyklar per slinga när jag försöker att upptäcka om det finns ett objekt bryta strålen. Sedan när det har identifierat ett objekt, har den en mer instruktion cykla för att utföra eftersom det har börja Timer1. Efter det har gjort allt detta, har det börjat spela in hur lång tid det tar projektilen att resa från balk #1 till balk #2. Detsamma gäller balk #2. Det tar 8 instruktion cyklar per "upptäckt" loop och en mer instruktion att inaktivera Timer1. Det värsta scenariot är därför:
Ins/Loop = 8 ins * 2 slingor
= 16 instruktioner innan en
Ins/aktivera av Timer1 = 1 ins * 2 (aktivering och avaktivering av Timer1)
= 2 instruktioner
Längsta mängden tid som möjligt innan en = (16 ins + 2 ins) * 83.3333ns / ins
= 1,5 µs
Noggrannhet = 100 - (100 * (1.5µs / 1.1111ms))
= 99.865% noggrannhet @ 300fps
Så antar att det finns inga andra felkällor (avståndet är exakt 4", strålar bryts identiskt på varje sida, etc) skulle vi ha en noggrannhet på 99.865% på 300fps för denna kronograf. Detta är mycket bra, men det finns många andra små felkällor som jag inte har stått för. Därför är det högst osannolikt att den chronograph som jag bygga eller du bygga 99.865% korrekt. Ändå, det fungerar ganska bra och jag är mycket nöjd med den.
Edit:
Jag glömde att lägga till den minsta hastigheten av projektil. Ser som det högsta antalet som Timer1 kan räkna upp till 65 535, plus att det använder en mer instruktion för att göra det svämma över tillbaka till 0 och dess löpande på 12 MIPS, kan vi beräkna hastigheten på en så låg som 62fps projektil. Beräkningarna är följande:
MCU hastighet = 12 MIPS
= 83.3333ns / ins
Max Count Timer1 = 65 535 instruktioner + 1 flera anvisningen att avbryta
= 65 536 instruktioner
Min hastighet = ((12 MIPS/65 536 ins) * 1 / 3ft)
= 61.03516fps (för att vara säker, ska vi säga 62fps)