Modification compteur de moto

Bonjour juls_meralcorp

Les informations sont ici.

Si tu as quand même besoin de descendre une tension, il y a énormément de step down de toutes tailles

il est bon d'en avoir quelques un sous la main. Ca a un excellent rendement (ne chauffe que très peu)

Je vais tout d'abord te faire un programme qui va te permettre de contrôler ton capteur, la LED L doit s'allumer quand le capteur est actif (NPN), s'éteindre quand il est actif (PNP).

Maintenant une petite réflexion sur le sujet de base, c'est à dire lire un capteur et transposer sa fréquence en tours/minute (PWM) d'un moteur CC.
Tout d'abord le PWM ce n'est "que" 255 divisions, est ce suffisant pour toi, quand il faut encore tenir compte du fait que le moteur CC sur H-Bridge ne réagira pas avant PWM >= 50 (environ). Est ce que le moteur pas à pas ne serait pas mieux, mais là il faudrait en trouver un petit, est ce que le moteur pas à pas peut tourner assez vite? D'où le besoin d'avoir la vitesse de rotation du câble compteur.

Entre temps, j'ai eu le temps de faire le programme de test dont voici le schéma:

Avec le câblage NPN, quand le capteur est actif la LED L doit s'allumer.
Avec le câblage PNP, quand le capteur est actif la LED L doit s'éteindre.

Important, j'ai volontairement mis une résistance de PULLUP ou PULLDOWN assez "basse", 2,2k, l'environnement d'une moto étant assez perturbé, électriquement parlant
Le programme:

/*
    Name:       AF_juls_meralcorp_CptMotoTest.ino
    Created:	07.11.2024
    Author:     jpbbricole
	Remarque:	Pour tester le capteur #61
				https://forum.arduino.cc/t/modification-compteur-de-moto/1318242
*/
const int capteurPin = 2; // Branchement du capteur

void setup()
{
	Serial.begin(115200);
	
	pinMode(LED_BUILTIN, OUTPUT); // LED sur PCB de l'Arduino
	digitalWrite(LED_BUILTIN, LOW); // Eteindre la LED
	pinMode(capteurPin, INPUT); // Le PULLUP ou PULLDOWN est défini par la résistance de 2,2K
								// Dépendant si le capteur est NPN ou PNP

}

void loop()
{
	if (digitalRead(capteurPin) == LOW) // Si capteur actif
	{
		digitalWrite(LED_BUILTIN, HIGH); // Allumer la LED L
	} 
	else
	{
		digitalWrite(LED_BUILTIN, LOW); // Eteindre la LED L
	}
}

Le schéma:
Processing: Circuit de test.pdf…

Une toute belle journée à toi!
jpbbricole

Bonjour,

C'est toujour interessant de savoir comment fonctionne ce qu'on fait.

Notamment savoir comment fonctionne un moteur en mode PWM

Ca c'est de l'à peu prés, il n'y a aucune raison qu'un moteur cc ne fonctionne pas plus correctement que cela en mode PWM, tout est question de fréquence de PWM.

Le PWM c'est la rapport cyclique ou le % de temps pendant lequel un signal est ON sur une période.

Si j'ai un signal trés lent de période 100s par exemple, et que je dis qu'il est ON pendant 100% de sa période, pas de pb, il est tout le temps ON.

Si le même signal périodique est ON pendant 1% de sa période, il est ON pendant 1s et OFF pendant 99s, autant dire qu'on ne voit même pas qu'il est ON un certain temps.

Mais si j'augmente la fréquence du signal périodique, ou du signal PWM, l'histoire est toute autre.

De base sur un Nano la période du PWM est de 900Hz je crois, on à tout intérêt à augmenter celle-ci en travaillant sur les registres

On a doublement intérêt à le faire car un moteur, c'est un enroulement, donc une self, et qu'elle a tendance à lisser le courant, ce qui fait que naturellement elle lisse le signal PWM pour en faire un signal continu variant entre 0 et VCC selon le rapport cyclique du PWM.

Et plus la fréquence de base du PWM est élevée, plus c'est facile de lisser et d'avoir un mode "doux" pour le moteur.

Et à ce moment, il n'y a pas de raison que le moteur ne réagisse pas au signaux PWM à faible rapports cyclique (<50).

Autres remarques, il y a plusieurs options sérieuses pour alimenter le Nano le capteur etc...

Faire un schéma universel est possible, dans le domaine du monde des moteurs thermiques, dans des réalisations déjà faites et qui tournent, on voit différentes option.

Finalement, tout dépend de ton capteur et ton moteur, de quelles alimentations ont'ils réellement besoin?

12V?
5V?

Exemple1, à partir de ton 12V batterie, tu peux envisager

  • fabriquer du 5V
  • alimenter avec ce 5V le capteur, le moteur, l'arduino

Exemple2, à partir de ton 12V batterie, tu peux envisager

  • alimenter ton Nano, alimenter ton moteur
  • fabriquer du 5V et alimenter ton capteur

Exemple3, à partir de ton 12V batterie, tu peux envisager

  • alimenter ton Nano,
  • fabriquer du 5V et alimenter ton capteur, alimenter ton moteur

Exemple4, à partir de ton 12V batterie, tu peux envisager

  • alimenter ton moteur
  • fabriquer du 5V et alimenter ton capteur, alimenter ton Nano

...

L'exemple 4 me semble sensé si ton capteur est un capteur 5V, ca te permet d'avoir de la "pêche" pour le moteur (plus que s'il fonctionne en 0-5V)

Bref c'est des options qui se discutent, ce n'est pas du "jetté en l'air", et cela dépand des composants que tu prend (par choix ou parce qu'ils te sont imposés).

Une fois de plus, tu interprète mes propos, c'est du n'importe quoi.

Je voulais dire que la commande PWM de l'Arduino n'a que 255 divisions et je sais très bien comment fonctionne le PWM, maintenant si tu veux triturer les registres c'est ton problème.

C'est fou cette propension que tu as de reprendre et juger tout et tout le monde jusqu'à noyer un sujet, pourtant simple sous une logorrhée de "théories" pseudo techniques.

PS: Des fois, j'aimerai bien reprendre tes propos, mais ça serai une tâche à plein temps tant il y à a redire et à corriger :woozy_face:

Pourquoi augmenter la fréquence du PWM?

Je cite, ça évitera que je dise des choses "compliquées".

Augmenter la fréquence du PWM
Une fréquence plus élevée réduit le temps de cycle du PWM ; le courant aura donc moins de temps pour monter. Portescap recommande d'utiliser des fréquences PWM supérieurs à 50 kHz pour les moteurs CC sans balais. Des fréquences de PWM de 80 kHz ou plus sont encore plus adaptées aux moteurs ayant de très faibles constantes de temps électrique.

Vu par les experts

Pour être plus concret et proche du projet:

Un exemple simple pour un capteur 5V, un moteur 12V, et avec un optocoupleur
capteur.pdf (348,5 Ko)

Merci Jef,

Je vais prendre le temps nécessaire pour faire les essais et voir quelle solution s’adapte le mieux à mon projet.

Je comprends mieux maintenant d’où vient la différence dans nos approches, avec ta documentation basée sur le zx6r plus récente où le capteur est alimenté en 12V par l’ECU. De plus sur ces modèles, le capteur est dans le moteur et a pour cible la boîte de vitesse. Cela explique effectivement pourquoi les pistes divergent.

Merci pour ton soutien. Je te tiens au courant de l’avancée des tests !

Merci jpbbricole pour ta réponse et le programme !

Je vois que tu as bien pris en compte les spécificités du capteur et de l’environnement de la moto. Le fait d’utiliser un step-down pour descendre la tension en cas de besoin est effectivement une bonne idée, surtout si cela permet de maintenir un bon rendement et de limiter la chauffe.

Pour le programme de test, je comprends bien que le câblage NPN allume la LED quand le capteur est actif, tandis que le PNP l’éteint. La résistance de 2,2k pour le PULLUP/PULLDOWN ça semble une bonne précaution pour l’environnement perturbé de la moto.

Concernant le PWM, tu as raison, 255 divisions peuvent être un peu justes avec un moteur CC, surtout si la réponse n’est pas linéaire en dessous de PWM >= 50. Cependant le raisonnement de Jef semble pertinent. Le contrôle PWM peut être amélioré en augmentant la fréquence, ce qui pourrait permettre une meilleure réactivité du moteur à faible vitesse.

Je vais réfléchir à l’option d’un moteur pas à pas pour gagner en précision, mais je crains que sa vitesse ne soit pas suffisante. La vitesse de rotation du câble compteur reste à définir, la moto prends 260 km/h je pense que ça doit tourner bien vite la haut; je vais essayer d’obtenir cette information.

Merci encore pour le programme et tes conseils !

Jef,

Merci pour tes explications détaillées et pour avoir mis en lumière certains points techniques importants. Ta remarque sur la fréquence du PWM est très pertinente : je comprends mieux l’impact de la fréquence sur la réactivité du moteur, notamment pour obtenir un contrôle plus fin à faibles rapports cycliques. Je vais regarder comment ajuster cette fréquence sur le Nano pour voir si cela améliore la douceur de fonctionnement du moteur.

Concernant l’alimentation, tes différentes propositions de configuration sont vraiment utiles. Je pense que l’option 4 pourrait être la plus adaptée dans mon cas, surtout si le capteur fonctionne bien en 5V, car cela permettrait de garantir une bonne puissance pour le moteur tout en assurant la stabilité du capteur et de l’Arduino.

Je remarque cependant que, dans ces propositions, tu parles principalement de 5V pour l’alimentation. Comme tu me l’avais suggéré, j’envisageais d’alimenter l’Arduino en 7V pour éviter la surchauffe. Penses-tu qu’une de ces configurations pourrait être adaptée pour alimenter le Nano en 7V tout en gardant cette stabilité pour les autres composants ?

Je vais tester ces configurations pour voir celle qui convient le mieux avec les composants que j’ai sous la main. Merci encore pour tes conseils, ça m’aide vraiment à structurer les étapes et à avancer de manière réfléchie.

A bientôt pour la suite !

Bonsoir,

@juls_meralcorp

C'est un peu particulier.

Sur les cartes Arduino et notamment la Nano, il y a un régulateur de tension qui fabrique du 5V et qu'il faut alimenter entre 7V et 12V par la broche Vin.

Grâce à ce régulateur, tu es assuré d'avoir du 5V stable.

Parfois on voit certains montages où les concepteurs choisissent de ne pas utiliser ce régulateur et d'alimenter l'Arduino avec "leurs 5V", cette fois par la broche +5V de l'Arduino.


Comme on le voit sur le schéma elec de la carte Nano, on peut alimenter de 4 façons, 3 sont conseillées

  • Par Vin qui va fabriquer le +5V.
  • Par l'USB qui va aussi fabriquer le +5V s'il n'y a rien sur Vin
  • Par Vin et USB et il y a une diode qui va faire en sorte que le +5V fabriqué par Vin ne soit pas en conflit avec le + 5V de l'USB
    Ces 3 façons sont conseillées par le fabricant Arduino qui assure qu'en faisant ainsi, il n'y aura pas de casse.

Et une 4éme façon, pour les utilisateurs avertit (je t’avertis, voila, c'est fait).

C'est d'injecter du 5V par la broche +5V du Nano.
Dans ce cas, il faut s'assurer que ce soit du 5V régulé filtré précis, ce qui est le cas si tu as un "step down" bien reglé.
Et bien entendu, il ne faut rien mettre en Vin.
Si ces conditions sont respectées, tu peux utiliser la fiche USB sans probléme en même temps que tu alimente le Nano par le +5V.

L'avantage de cela, tu le comprendra je pense, c'est que tu peux utiliser le 5V qui sert à alimenter le Nano pour AUSSI alimenter ton capteur 5V.

Si tu regarde des exemples fournit par le site Arduino, dans l'automobile, tu verra
5V Nano fabriqué par un convertisseur et sans passer par Vin

(Parce que si tu alimente par Vin avec du 7V, tu dois utiliser le 5V fabriqué par le Nano pour alimenter ton capteur, c'est aussi une possibilité).

C'est TA vision personnelle, et venu d'autres plus à même de juger de mes compétences, j'en aurais réellement pris ombrages.

Une petite idée au passage (que j'ai déja testé sur du matériel tournant).

Avec un capteur optique, de ce type là

une perceuse et son mandrin peint en noir mat + un trait blanc assez large sur le mandrin, une alim 12V
un arduino
et du code

on peut mesurer assez fiablement la vitesse tours/h de la perceuse et comparer à la vitesse affichée au compteur de la moto en km/h.

Ca donnerait x tours/h du câble par km/h, avec x à mesurer avec le système optique et Arduino qui mesurent le temps et comptent le nombre tours de mandrins effectués pendant ce temps (donc des tours/heures, mn ou secondes, au choix)).

Ça demande un peu de travail de câblage et code, mais ça se fait.

Bon, sur ce, A+

Bonjour jpbbricole,

Aujourd’hui, j’ai fait un test avec mon compteur en utilisant une perceuse. Ma perceuse a une vitesse maximale de 2100 tr/min, et à cette vitesse, le compteur affichait 92 km/h. J’ai donc pu estimer la vitesse de rotation nécessaire pour atteindre la vitesse maximale de ma moto, qui est de 280 km/h.

Voici le raisonnement que j’ai suivi :

  1. En prenant la relation actuelle (2100 tr/min = 92 km/h), j’ai calculé le facteur de proportionnalité pour passer de 92 km/h à 280 km/h.

Facteur = 280 / 92 ≈ 3.043

  1. En multipliant ce facteur par la vitesse de rotation de la perceuse, on obtient :

Vitesse de rotation nécessaire = 2100 * 3.043 ≈ 6390 tr/min

D’après ce calcul, pour que le compteur affiche 280 km/h, il faudrait que le moteur tourne à environ 6390 tr/min.

Cela me donne une bonne indication de la vitesse maximale que devra atteindre le moteur que je vais acheter pour être en phase avec le compteur de vitesse. Merci encore pour ton aide, et n’hésite pas si tu as des conseils ou des remarques !

Bonne soirée

D’accord, Jef. Merci pour cette explication détaillée sur les différentes méthodes d’alimentation de l’Arduino Nano.

Je comprends maintenant mieux pourquoi certains préfèrent injecter directement un 5V régulé sur la broche +5V plutôt que de passer par Vin. Cela permet non seulement d’assurer une alimentation stable pour l’Arduino, mais aussi de simplifier l’alimentation en utilisant le même 5V pour d’autres composants comme le capteur.

Si j’utilise un convertisseur step-down bien calibré pour fournir précisément 5V, cela devrait effectivement stabiliser l’ensemble sans passer par le régulateur interne du Nano, ce qui évite aussi la chaleur générée par ce dernier lorsqu’il doit réduire une tension plus élevée.

Je vais donc étudier la possibilité d’alimenter directement en 5V par la broche +5V, en veillant bien sûr à ne pas connecter Vin, comme tu l’as conseillé. De cette manière, je pourrais alimenter le Nano et le capteur de manière optimisée et avec une meilleure stabilité pour l’ensemble du système.

Merci encore pour les précisions !

Bonsoir juls_meralcorp

Ca clarifie le choix d'un moteur/réducteur.
Pour commander ton moteur, outre le PWM qui a le défaut de ne pas faire démarrer un moteur avant environ 50 sur 255, donc avec perte de plage, en faisant des recherches, j'ai trouvé des ESC brushed, ca se commande comme un servo. A voir :wink:
Bonne soirée.
jpbbricole

Avancement actuel :

1

Choix du capteur de vitesse : Un capteur de vitesse provenant d’une Kawasaki Ninja 300 a été sélectionné pour sa compatibilité avec l’Arduino. Le type de signal (NPN ou PNP) reste à confirmer pour assurer un câblage adapté.

2

Calcul de la vitesse de rotation nécessaire : Avec les tests de la perceuse, il a été déterminé que le moteur devra atteindre environ 6390 tr/min pour afficher la vitesse maximale de 280 km/h sur le compteur.

3

Méthode d’alimentation de l’Arduino : Une alimentation directe en 5V via la broche +5V a été choisie pour assurer une stabilité accrue, en utilisant un convertisseur step-down bien réglé.

4

Choix des composants : Voici les composants nécessaires pour ce projet :

Arduino Nano : Pour gérer les signaux et contrôler la vitesse du moteur.

Capteur de vitesse : Capteur de Kawasaki Ninja 300, utilisé pour mesurer la vitesse de rotation du pignon.

Moteur DC : Capable de tourner jusqu’à 6390 tr/min pour correspondre à la vitesse maximale de 280 km/h sur le compteur.

Convertisseur Step-Down (LM2596 ou similaire) : Pour convertir la tension de 12V à 5V et alimenter l’Arduino et le capteur de manière stable.

Pont en H (H-Bridge, par exemple L298N) : Pour contrôler la direction et la vitesse du moteur en fonction des signaux de l’Arduino.

Optocoupleur (PC817 ou similaire) : Pour isoler le signal du capteur et protéger l’Arduino des interférences électriques.

Circuit de contrôle PWM : Intégré via l’Arduino pour réguler la vitesse du moteur.

Diode de roue libre (Flyback Diode, par exemple 1N4007) : Pour protéger le circuit des pics de tension générés par le moteur DC.

Résistances (notamment 2.2k Ohm) : Pour le PULLUP ou PULLDOWN en fonction du type de capteur (NPN ou PNP).

Étapes restantes :

1-Achat et intégration du moteur et des autres composants électroniques.

2-Finaliser le câblage et configurer les connexions en intégrant le step-down, l’optocoupleur, et le pont en H.
3-Optimiser la fréquence PWM via l’Arduino pour assurer une réponse fluide du moteur.

4-Effectuer des tests finaux pour valider la synchronisation entre la rotation du moteur et l’affichage de la vitesse sur le compteur.

Pour autant que le moteur démarre déjà à PWM 1, est ce que une définition de 255 est suffisante pour afficher 280 km/h?

Veux tu le programme du Nano?

Bonne soirée.
jpbbricole

Bonsoir,

Je n'ai pas précisement dit que cela permettait d'avoir une alimentation +5V de l'arduino + stable, mais essentiellement que c'était une simplification qui était parfois utilisée, comme dans l'exemple joint à mon post #68.

Mon avis sur le moteur qui va faire tourner l'aimant de la cloche magnétique de ton compteur, avis qui n'engage que moi.

Je pense que tu auras une meilleure dynamique, "fluidité" voire précision et puissance dans la variation de vitesse si tu prend un moteur brushless tri avec sa commande électronique adaptée (ESC) comme les petits moteurs de drones ou modéles réduits.

A mon avis, avec du pur PWM et un LM298, tu aura un comportement un peu instable à base vitesse (aiguille qui vacille).

Mais ce n'est qu'un avis.

Un autre aspect que je vois:
Dans ton systéme actuel, la rotation de ton câble est solidaire de la vitesse de rotation de la roue, si la roue est brusquement ralentit, ka rotation du câble en fait de même.

Avec ton futur systéme, si le moteur n'est plus alimenté, il tourne en roue libre, freiné ou pas par sa charge, et c'est le ou pas qui m'interpelle.
Il faut que la phase de decéleration du compteur soit fidéle à celle de la moto,

Merci pour ces informations ! C’est vrai que l’inconvénient du contrôle PWM, avec la perte de plage sous 50/255, pourrait poser problème pour les démarrages lents et la précision du contrôle à basse vitesse.

L’idée d’utiliser un ESC (Electronic Speed Controller) pour moteur brushed, commandé comme un servo, est intéressante. Cela pourrait effectivement offrir un meilleur contrôle de la vitesse sans la limitation des bas niveaux de PWM, en permettant un démarrage et un contrôle plus progressifs.

Je vais regarder cette option de près, car cela pourrait être une solution plus précise pour mon projet.

Jef avait quant à lui proposé une autre solution pour ce problème.
En effet, Jef avait mentionné une solution pour gérer les faibles niveaux de PWM en ajustant la fréquence du signal PWM. Il avait expliqué que le comportement du moteur à bas niveaux de PWM dépend en partie de la fréquence : en augmentant la fréquence PWM, on peut atténuer l’effet de “démarrage tardif” du moteur sous un certain seuil de PWM (environ 50/255).

Le raisonnement de Jef était que, puisque le moteur DC est un enroulement inductif, il a une tendance naturelle à lisser le signal PWM. Une fréquence plus élevée rend ce lissage plus efficace et permet d’obtenir un contrôle plus stable même à de faibles niveaux de PWM. Ainsi, en ajustant les registres de l’Arduino pour augmenter la fréquence du PWM, cela pourrait permettre un démarrage plus progressif du moteur, sans attendre le seuil de 50/255.

Cela dit, l’option du ESC brushed reste une alternative intéressante car elle pourrait simplifier le contrôle sans nécessiter de modifications au niveau des registres et offre un mode de contrôle semblable à celui d’un servo, potentiellement plus adapté pour un contrôle fin du moteur à basse vitesse.

Bonne soirée à toi aussi !

Merci beaucoup pour vos conseils et toutes les pistes que vous avez partagées. Après avoir pris le temps de réfléchir aux différentes options, je pense que l’approche du moteur brushless avec ESC semble être la meilleure pour mon projet, bien que plus complexe.

Voici le résumé des deux options, que j’ai analysées pour arriver à cette conclusion :

Comparaison des deux options

  1. Moteur DC avec ESC brushed (proposé par jpbbricole)
    • Avantages :
    • Solution moins coûteuse et plus simple à mettre en œuvre.
    • Compatible avec un contrôle PWM classique, ce qui permet une intégration relativement simple avec l’Arduino.
    • Facilité d’installation et d’alimentation avec une compatibilité pour des systèmes 5V ou 12V.
    • Inconvénients :
    • Précision et réactivité limitées par rapport à un brushless, notamment pour les décélérations rapides, ce qui pourrait causer des variations de l’aiguille du compteur.
    • Durée de vie potentiellement plus courte, car les moteurs DC ont des balais.

  2. Moteur brushless triphasé avec ESC (proposé par Jef)
    • Avantages :
    • Précision, stabilité et fluidité supérieures, surtout à basse vitesse. Cela devrait permettre un contrôle très réactif, en phase avec les variations de vitesse réelles de la moto.
    • Meilleure durabilité, car les moteurs brushless n’ont pas de balais, ce qui les rend plus fiables à long terme.
    • Possibilité de frein moteur avec l’ESC, pour éviter la roue libre lors des décélérations et simuler le comportement d’un câble de compteur.
    • Inconvénients :
    • Coût plus élevé et configuration un peu plus complexe, nécessitant un ESC adapté et un contrôle via impulsions de type servo.

Conclusion

L’option moteur brushless avec ESC répond mieux à mes besoins en termes de précision, de réactivité et de stabilité du compteur. Le fait de pouvoir gérer la décélération de manière fidèle, en évitant la roue libre lors des baisses soudaines de vitesse, est particulièrement intéressant et se rapproche de l’expérience du compteur mécanique d’origine.

C’est vrai que la résolution de 255 pour le PWM peut être un point de réflexion pour obtenir la précision nécessaire à haute vitesse, surtout en visant les 280 km/h. L’option du moteur brushless avec ESC semble effectivement offrir une meilleure sensibilité, ce qui pourrait permettre une transition fluide sur toute la plage de vitesse.

Il semble que les composants du projets ne cesse de changer et d’évoluer. À l’heure actuelle, je n’ai encore rien acheté, mis à part le capteur de vitesse. Une fois que j’aurai une liste claire et précise des composants requis, j’achèterai le matériel nécessaire pour avancer, notamment l’Arduino et les autres éléments du système. À ce moment-là, le programme du Nano me sera utile pour tester et ajuster les paramètres afin de vérifier si le moteur répond bien dès les premiers niveaux de PWM et s’il est possible de maintenir la précision nécessaire à haute vitesse.

Merci pour la proposition je reviendrais vers toi pour le code.