Paso 4: cálculos
El PIC18F13K50 está configurado para ejecutarse en 48MHz. Se necesitan 4 ciclos para realizar un ciclo de instrucción, por lo que se está ejecutando el MCU 12 MIPS (millones de instrucciones por segundo). Por lo que el tiempo que tarda el PIC realizar un ciclo de instrucción es igual a (1 / 12 MIPS), que es 83.3333 nanosegundos o instrucciones.
Sabemos que la distancia entre las "vigas" de IR exactamente de 4 pulgadas. Así que todos tenemos ahora es saber cuánto tiempo tardó el proyectil para viajar de la viga #1 a #2 la viga. Esto es lo que Timer1 utiliza para. Cada ciclo de instrucción (83.3333 ns) se incrementará el valor de TMR1H:TMR1L.
Dicen que dispararon un paintball a través del cronógrafo. Una vez que el paintball ha viajado a través del cronógrafo y se rompió la viga #2, que vaya y lea el valor de TMR1H:TMR1L (es un valor de 16 bits). Por causa de ejemplos, diremos que el valor que se lee fue 15.930. Aquí es cómo calculamos la velocidad del paintball:
Velocidad MCU = 12 MIPS
= ns 83.3333 e ins
Distancia = 4.
= 1/3 pies
Tiempo = velocidad MCU * TMR1H:TMR1L
= ns 83.3333 e ins * 15.930 instrucciones
= 1,3275 milisegundos
Velocidad = distancia / tiempo
= (1/3 pies) / ms 1,3275
= 251 pies por segundo
El paintball estaba viajando a una velocidad de 251 fps. Mientras que esta forma de calcular está perfectamente bien, en mi código solo había reordenado la ecuación para que el MCU podría calcular un poco más rápido. La ecuación que utilizo en mi código es:
Velocidad = ((FOSC / 4) / TMR1H:TMR1L) / 3
= ((12 MIPS) / 15.930) / 3
= fps 251