Étape 4: calculs
Le PIC18F13K50 est configuré pour s’exécuter à 48MHz. Il faut 4 cycles à effectuer un cycle de l’enseignement, c’est pourquoi le MCU est en cours d’exécution à 12 MIPS (millions d’Instructions par seconde). Donc le temps qu’il faut pour la photo effectuer un cycle d’enseignement est égal à (1 / 12 MIPS), qui est 83.3333/une formation en nanosecondes.
Nous savons que la distance entre l’IR « poutres » est exactement 4 pouces. Donc tous nous avons besoin maintenant est de savoir combien de temps il a fallu le projectile voyage du faisceau #1 au faisceau #2. C’est ce que Timer1 est utilisé pour. Chaque cycle d’instruction (83.3333 ns) incrémente la valeur de TMR1H:TMR1L.
Dire que nous avons tiré un paintball à travers le chronographe. Une fois que le paintball a voyagé à travers le chronomètre et le faisceau cassé #2, nous allons et lire la valeur de TMR1H:TMR1L (c’est une valeur de 16 bits). Pour l’amour d’exemples, nous dirons que la valeur que nous lisons a été 15 930. Voici comment nous calculons la vitesse de la balle de :
MCU vitesse = 12 MIPS
= 83.3333 ns/ins
Distance = 4.
= 1/3 ft
Temps = MCU vitesse * TMR1H:TMR1L
= 83.3333 ns/ins * instructions 15 930
= 1,3275 millisecondes
Vitesse = Distance / temps
= (1/3 ft) / ms 1,3275
= 251 pieds par seconde
Le paintball roulait à une vitesse de 251 fps. Alors que ce mode de calcul est parfaitement bien, dans mon code j’ai juste réarrangés l’équation pour le MCU, il pouvait calculer un peu plus rapide. L’équation que j’utilise dans mon code est :
Vitesse = ((FOSC / 4) / TMR1H:TMR1L) / 3
= ((12 MIPS) / 15 930) / 3
= fps 251