Auteur Sujet: Réalisation d'un compteur de vitesse portatif basé sur l'article 173  (Lu 19255 fois)

MBP

  • Newbie
  • *
  • Messages: 12
    • Voir le profil
Re : Réalisation d'un compteur de vitesse portatif basé sur l'article 173
« Réponse #15 le: décembre 24, 2022, 10:32:34 am »
Bonjour,
Je crois que la nuit porte conseil car ce matin, ça va mieux.
Je vous joins les photos du câblage et la copie d'écran port.
Quand je verse le programme dans la Mini pro, cette fois je n'ai plus de message d'erreur, d'abord avec le blink puis avec le compteur de vitesse.
Je viens de connecter les détecteurs et l'afficheur, et ça marche !
La led centrale du Pro Mini reste allumée, pas gênant ça me fera un voyant.


chris_bzg

  • Sr. Member
  • ****
  • Messages: 319
    • Voir le profil
Re : Réalisation d'un compteur de vitesse portatif basé sur l'article 173
« Réponse #16 le: décembre 24, 2022, 11:08:17 am »
Salut MBP,
Donc si j'ai bien compris, tu as réussi à téléverser le programme Blink (éventuellement en modifiant les fréquences d'allumage pour être certain qu'on n'est pas sur un Blink résiduel) et tu as réussi aussi à téléverser le programme de mesure de vitesse. Donc maintenant, ça marche complètement ?
Voilà un joyeux Noël en perspective !

MBP

  • Newbie
  • *
  • Messages: 12
    • Voir le profil
Re : Réalisation d'un compteur de vitesse portatif basé sur l'article 173
« Réponse #17 le: décembre 24, 2022, 11:46:29 am »
C'est bien ça  :)
Mes mauvaises connexions initiales n'auront pas été destructrices.
Joyeux Noël aussi !


Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3039
  • 100% Arduino et N
    • Voir le profil
Re : Réalisation d'un compteur de vitesse portatif basé sur l'article 173
« Réponse #18 le: décembre 24, 2022, 12:09:38 pm »
Bravo  🎊 et Bon Noël 🎅
Cordialement,
Dominique

chris_bzg

  • Sr. Member
  • ****
  • Messages: 319
    • Voir le profil
Re : Réalisation d'un compteur de vitesse portatif basé sur l'article 173
« Réponse #19 le: décembre 24, 2022, 03:18:46 pm »
Cela fait plaisir quand on arrive à aider quelqu'un à faire fonctionner son montage !
Ce qu'il faut en retenir : avant de jeter une carte qu'on pense foutue, il faut faire quelques tests et un des meilleurs est d'essayer de la programmer avec Blink qu'on a au préalable modifié avec son rythme de clignotement. Si la LED de la carte clignote avec le rythme voulu, c'est bon signe...
Dans le cas présent, le mauvais montage n'a pas eu de conséquences (OUF) mais si la carte avait été une 3,3V, il aurait été destructeur de mettre sur une de ses broches du 5V.

Là, c'est la trêve des confiseurs, mais promis, juré : on va modifier l'article pour bien spécifier le branchement à faire entre Arduino et interface USB. N'est-ce pas Dominique ?   ;)
« Modifié: décembre 24, 2022, 03:21:23 pm par chris_bzg »

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3039
  • 100% Arduino et N
    • Voir le profil
Re : Réalisation d'un compteur de vitesse portatif basé sur l'article 173
« Réponse #20 le: décembre 24, 2022, 04:45:09 pm »
Là, c'est la trêve des confiseurs, mais promis, juré : on va modifier l'article pour bien spécifier le branchement à faire entre Arduino et interface USB. N'est-ce pas Dominique ?   ;)

C'est fait  ;D ;D

https://www.locoduino.org/spip.php?article173
« Modifié: décembre 24, 2022, 04:53:37 pm par Dominique »
Cordialement,
Dominique

MBP

  • Newbie
  • *
  • Messages: 12
    • Voir le profil
Re : Réalisation d'un compteur de vitesse portatif basé sur l'article 173
« Réponse #21 le: décembre 30, 2022, 03:55:41 pm »
Bonjour,

C'est encore moi avec mes questions !
j'ai modifié le calcul de vitesse pour le HO (3132/1000 au lieu de 576/100) et j'ai ajusté la distance à l'écartement des capteurs de 203 mm. (valeur qui s'affiche au branchement du circuit)
ça fonctionne bien et ça me renvoie la vitesse conforme mais seulement pour des vitesses lentes. Pour des vitesses élevées, il affiche des valeurs basses et fausses. Le problème apparait pour des vitesses supérieures à 60 km/h environ soit un temps de passage entre les 2 capteurs inférieur à 1 seconde (en gros).
Dans tous les cas, on a le maintien de l'affichage pendant 5 secondes.
J'ai lu le programme mais je ne comprends pas. Faut-il une durée minimale pour un cycle de calcul ?
Je sèche...


Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3039
  • 100% Arduino et N
    • Voir le profil
Re : Réalisation d'un compteur de vitesse portatif basé sur l'article 173
« Réponse #22 le: décembre 30, 2022, 06:01:11 pm »
Comme indiqué dans l’article, vous pouvez changer les types des variables en unsigned long (au lieu de Int) et utiliser microseconds() plutôt que millis().

La méthode de calcul vous est donnée à titre indicatif, il y en a sûrement une meilleures mieux adaptée à votre montage. C’est un bon terrain d’expérience avec Arduino. J’espère que vous publierez les résultats.

Bonne année 2023 à vous et vos proches.

Cordialement,
Dominique

MBP

  • Newbie
  • *
  • Messages: 12
    • Voir le profil
Re : Réalisation d'un compteur de vitesse portatif basé sur l'article 173
« Réponse #23 le: décembre 30, 2022, 10:38:45 pm »
D'accord je vais creuser tout ça.
Et oui bien sûr, je reviendrai vous présenter le résultat.
Bonne année aussi !

MBP

  • Newbie
  • *
  • Messages: 12
    • Voir le profil
Re : Réalisation d'un compteur de vitesse portatif basé sur l'article 173
« Réponse #24 le: janvier 12, 2023, 06:02:38 pm »
Bonjour,
Cette fois c'est bon ! Je suis passé en unsigned long au lieu de int et en micros au lieu de millis. la vitesse devient des microns par microsecondes au lieu des millimètres par millisecondes et ça donne de bonnes valeurs même à grande vitesse.
J'ai pu construire mon compteur portatif à placer en bord de voie sur un réseau. Voir les photos.
Merci pour votre aide. Tout ça me donne envie de continuer.
Je vais analyser le programme car je n'ai pas tout compris et même si ça marche j'aime bien comprendre !

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3039
  • 100% Arduino et N
    • Voir le profil
Re : Réalisation d'un compteur de vitesse portatif basé sur l'article 173
« Réponse #25 le: janvier 12, 2023, 07:26:57 pm »
Et bien Bravo 🍾🎉
Cette réalisation doit pouvoir intéresser du monde. Nous sommes toujours récompensés du temps passé sur nos articles quand un modéliste réussit son projet.

Amicalement
Dominique
Cordialement,
Dominique

chris_bzg

  • Sr. Member
  • ****
  • Messages: 319
    • Voir le profil
Re : Réalisation d'un compteur de vitesse portatif basé sur l'article 173
« Réponse #26 le: janvier 13, 2023, 02:00:23 pm »
Bonjour,
Cette fois c'est bon ! Je suis passé en unsigned long au lieu de int et en micros au lieu de millis.

Cela fonctionne et c'est super. Voici quelques explications si vous voulez comprendre.
La fonction millis() renvoie une valeur de type unsigned long c'est à dire 4 octets. Une valeur en int n'utilise que deux octets. Si vous mettez dans deux octets quelque chose qui en contient 4, il peut y avoir une perte d'information. C'est pourquoi quand on utilise la fonction millis(), il faut toujours prévoir de mettre le résultat dans une variable de type unsigned long.
Je pense qu'utiliser micros() à la place de millis() n'est pas ce qui a résolu le problème. Réessayez avec millis() maintenant que vous savez comment stocker le résultat et cela devrait fonctionner (à condition aussi d'appliquer la bonne formule de calcul de vitesse). La fonction micros() retourne également un unsigned long.
millis() retourne à zéro après 50 jours et micros() retourne à zéro après 70 minutes. Donc, si vous utilisez votre compteur de vitesse avec micros(), les résultats seront faux si la mesure a lieu 70 minutes après la mise en route du système (une séance de jeu peut durer plus d'une heure).

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3039
  • 100% Arduino et N
    • Voir le profil
Re : Réalisation d'un compteur de vitesse portatif basé sur l'article 173
« Réponse #27 le: janvier 13, 2023, 02:18:13 pm »
D’après la photo du projet, la distance entre les 2 capteurs est petite, donc le nombre de millisecondes entre les passages devant les capteurs est aussi petit ce qui peut induire un manque de précisions dans les calculs.
De mémoire, le programme d’origine utilise des unsigned long pour les mesures du temps et des unsigned int pour les calculs intermédiaires. C’est là que les imprécisions peuvent donner des mauvais résultats et surtout des valeurs ambiguës (hors des plages de mesure souhaitées).

Cordialement,
Dominique

chris_bzg

  • Sr. Member
  • ****
  • Messages: 319
    • Voir le profil
Re : Réalisation d'un compteur de vitesse portatif basé sur l'article 173
« Réponse #28 le: janvier 13, 2023, 02:42:55 pm »
Je viens effectivement de regarder ton programme et c'est vrai que tu manipules à la fois des unsigned long et des unsigned int dans tes calculs.
Sur certains cas particuliers, il doit se passer des choses bizarres.

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3039
  • 100% Arduino et N
    • Voir le profil
Re : Réalisation d'un compteur de vitesse portatif basé sur l'article 173
« Réponse #29 le: janvier 13, 2023, 06:21:53 pm »
Des choses bizarres ou des cas non prévus ?

Si T est un unsigned long et D un unsigned int, alors D=T retournera T modulo 65536.
Pour éviter les choses bizarres, il faut bien connaître les ordres de grandeur manipulés et tester les calculs sur un jeu d’essais comme dans l’informatique de grand papa 👨.

A l’époque de la rédaction de cet article j’ai du faire un petit programme du genre « calculette » pour tester mon jeu d’essai.
C’est une des façons de faire et il y en a pour tous les goûts. J’ai voulu éviter l’utilisation des float (je ne sais plus pourquoi) d’où les changements d’échelle avec ce facteur 100.

En parcourant Locoduino, le lecteur patient et assidu trouvera les bonnes pratiques qui lui conviennent.
Notre ami MBP a la curiosité qui va bien pour comprendre ce projet et qui profitera aux projets suivants plus ambitieux. Merci encore de partager ce succès, ce qui est en général assez rare, ce en quoi nous le remercions  ;D
Cordialement,
Dominique