Bonjour, je suis actuellement en train de travailler sur un Self-Balancing Cube, et j'utilise actuellement un module MPU6050 ainsi qu'un moteur nidec 24H. Apres plusieurs test le moteur ne fonctionne pas avec un PWM mais avec une fréquence, mon problème étant que je ne sais pas comment je vais pouvoir calculer la fréquence que j'ai besoin d'envoyer a mon moteur en fonction de la position du cube renvoyé par les capteurs.
Est-ce que quelqu'un pourrait m'aider a ce sujet ?
Merci d'avance
J'ai essayé a plusieurs reprise d'envoyer un signal PWM au moteur mais cela ne faisait rien.
J'ai donc fait quelques tests et en envoyant une fréquence avec la fonction tone() cela fonctionne.
Je pense que le moteur ne fonctionne pas de la même facon que ceux que l'on retrouve habituellement.
Il ne faut pas croire que PWM = analogWrite(x,y)
Non, analogWrite(x,y) n'est qu'un réglage particulier de la PWM à la sauce Arduino.
Les fréquences choisies ~= 1khz (timer 0 et 2) et ~= 500 Hz (timer1) sont des choix Arduino.
Ces choix peuvent être modifiés.
Attention quand même au timer 0, le modifier modifiera le résultat des fonctions de temps (delay(), millis(), etc).
Pour la génération de fréquences avec un atmega328p il existe aussi le mode CTC.
Si tone() te suffit, considère le mode CTC comme une simple information.
Important :
Pour toutes ces solutions alternatives, il faut retrousser ses manches et lire la datasheet de l'atmega328p.
Si tu as bien lu la réponse de @hbachetti, ce moteur est un moteur brushless, c'est à dire en français moteur sans balais ni collecteur. Donc effectivement le couple balais plus collecteur servant à faire un champ tournant mécaniquement, il faut faire autrement ce champ tournant.
Si tu fais une recherche sur "moteur brushless" tu trouveras des explications sur le fonctionnement.