La solution initiale que j'avais adoptée a fini par fonctionner, mais de façon non satisfaisante.
Le vitesse trouvée n'est pas stable, je pense que c'est parce qu'elle est déterminée de façon logicielle, et que la détection des fronts se fait avec un décalage du au temps d'exécution
des instructions.
J'ai expérimenté une autre solution, avec le compteur d'impulsions du Timer1, qui, dans son utilisation comme compteur d'événement externe, compte à partir de la broche 5. C'est donc sur cette broche que j'ai branché le fil info vitesse de ma voiture (toujours après adaptation par pont diviseur).
Là, j'ai une mesure identique à celle du compteur d'origine du véhicule (restera à faire une correction, avec un GPS, si on veut une mesure plus précise).
Je suis parti des données fournies par Super_Cinci:
les capteurs vitesse utilisés sont donnés à une impulsion pour 20cm parcourus
Sachant que 20cm = 0.2 m = 0.2*10e(-3) km
On en déduit que:
Pour 1 km, on aura 1/0.2*10e(-3) impulsions
Pour 1 km/h, on aura 1/0.2*10e(-3) impulsions pendant 1 h
Pour V km/h, on aura V/0.2*10e(-3) impulsions pendant 1 h
Pour V km/h, on aura V/0.2*10e(-3) impulsions pendant 3.6*10e6 mS
Pour V km/h, on aura V impulsions pendant 3.6*10e6*0.2*10e(-3)=740 mS
La valeur de la vitesse V sera donc égale au contenu du compteur après 740 mS de comptage.
Ce qui donne:
void setup()
{
/* .... */
//Initialisation du compteur
TCCR1A=0;
}
void loop()
{
//Démarrage du comptage
bitSet(TCCR1B,CS12); // indique que l'horloge du compteur est externe (sur la broche 5)
bitSet(TCCR1B,CS11); // Comptage sur front montant
delay(740); // délai en mS nécessaire pour compter un nombre d'impulsions égal à la vitesse
TCCR1B=0; // arret du comptage
ecrireNombre(TCNT1);
TCNT1=0; //réinitialisation du compteur
}
Je n'ai pas encore expérimenté l'ICP1, je vous tiendrai au courant dès que j'aurai des résultats.
NB: Dans ma voiture, j'alimente l'arduino avec la prise allume cigare, et en conséquence, le régulateur de l'arduino chauffe très fort. Est-il possible de coller dessus un radiateur pour limiter la chauffe? Si oui, comment s'y prendre?