etape 15 comprendre motor.ino - arthur-expeditions/pypilot-workbook-fr GitHub Wiki
Motor.ino peut être un logiciel intimidant. Je n'ai pas non plus une compréhension classique de celui-ci. Voici ce que je sais.
Le mécanisme qui est à l'œuvre est le 'interrupt-driven pwm', et si vous voulez vraiment comprendre le code, vous devez d'abord le googler. Il s'agit de temporisations matérielles sur la puce qui forcent le processeur à interrompre ce qu'il est en train de faire et à sauter au code qui a été défini comme le "gestionnaire d'interruption". Vous pouvez passer toute votre carrière à faire du logiciel sans rencontrer ce problème.
La sortie qu'il génère sur les broches de données de l'arduino est assez générique et devrait convenir à une gamme de pilotes de moteurs. A la fin de cette page, vous trouverez une liste de recettes éprouvées basées sur le standard motor.ino. Plutôt que d'essayer de modifier le fichier motor.ino, le constructeur de pypilot est encouragé à utiliser un pilote éprouvé qui fonctionne avec le fichier motor.ino standard.
Il y a 3 modes de fonctionnement pour le type de sortie ; dans le code, ils sont appelés 'pwm_style' :
- pwm_style == 0 "H-Bridge", sélectionné en tirant D6 bas
- pwm_style == 1 "RC-style", sélectionné en tirant D6 haut
- pwm_style == 2 "PWM-style", sélectionné en décommentant la ligne '//#define VNH2SP30
H-Bridge - ce mode de fonctionnement permet aux quatre sorties de diriger "directement" les portes des quatre transistors dans un h-bridge. D2 et D3 sont le côté bas, D9 et D10 sont le côté haut. Je mets "directement" entre parenthèses parce qu'il doit toujours y avoir de l'électronique entre l'arduino et le transistor. Ce qui se passe souvent dans un pont en h, est que le côté haut ou bas est toujours ouvert pendant le fonctionnement, et l'autre côté (opposé) fait la largeur d'impulsion variable (PWM). Pendant la phase "arrêt" du signal PWM, l'énergie du moteur peut circuler à travers le transistor de l'autre côté.
Voici à quoi cela ressemble lorsque le moteur va un peu dans un sens puis s'arrête à nouveau. Vous pouvez voir qu'il y a une phase de montée en puissance, une phase stable et une phase de descente en puissance. Pendant la montée et la descente, la fréquence de pwm est de 15 kHz, pendant la phase de stabilité, elle est de 65 Hz. Cette dernière a pour but de minimiser la dissipation d'énergie, tout en continuant à charger les condensateurs nécessaires pour piloter les portes des mosfet high-side. Ce n'est pas grave si vous ne comprenez pas encore tout cela, il suffit de regarder l'image :
Il y a quelque chose de drôle avec le côté bas opposé : il montre aussi un certain signal pwm. Je n'ai aucune idée de la raison pour laquelle c'est le cas, donc si quelqu'un le sait, merci de laisser un commentaire.
Si vous voulez construire votre propre h-bridge, et vous n'avez pas d'éducation formelle en électronique, soyez prêt à griller quelques pièces. Il y a des schémas de référence sur le site pypilot.org, et ils sont assez robustes, donc si vous pensez que vous savez mieux, vous feriez mieux d'être sûr.
Si vous voulez utiliser un pilote de pont en h disponible dans le commerce, pwm_style == 0 est souvent le mode à choisir. D9 et D10 sont les signaux PWM pour la gauche et la droite, et D2 et D3 sont les signaux d'activation pour la gauche et la droite. Le signal opposé high side est un peu bizarre ici, et je ne l'ai pas encore essayé moi-même.
PWM-style - Ce style est sélectionné lorsque vous décommentez une ligne dans motor.ino (voir ci-dessus). La sortie a un niveau d'abstraction un peu plus élevé : nous avons PWM, enable, et direction (2 fois). Donc si vous avez un driver qui a ce type d'entrées, c'est le mode de fonctionnement que vous devez sélectionner.
Ce mode de fonctionnement a été un peu négligé dans le passé en raison de la disponibilité de pilotes fiables de ce style. Depuis 2020, le style PWM est à peu près OK dès le départ.
L'inconvénient de ce mode de fonctionnement est qu'il ne fonctionne qu'à une fréquence de 1000 Hz (audible). Il en résulte que votre moteur fait un bruit de sifflement. Je pensais que cela m'irriterait, mais j'ai fini par l'apprécier.
RC style - Ce style fonctionne apparemment avec les pilotes ESC (contrôle électronique de la vitesse). Il semble qu'il y ait tout un monde de gens qui savent tout à ce sujet, mais je n'en fais pas partie, et je ne sais pas quoi chercher sur google et ne pas être inondé par des hits aliexpress et autres. Il ne fournit qu'un seul signal, qui est un signal de 50 Hz avec une largeur d'impulsion variable. Apparemment, c'est suffisant pour entraîner un moteur à gauche et à droite. Je n'ai pas encore entendu parler de la première personne qui l'a utilisé. Si c'est vous, merci de vous faire connaître.
A moins que vous ne soyez vraiment passionné d'électronique, je vous conseille d'en acheter une toute faite. Cette liste est censée ne montrer que des pilotes commerciaux prêts à l'emploi qui fonctionnent avec des moteurs prêts à l'emploi motor.ino.
What | Who | Details |
---|---|---|
IBT-2 | damien | pwm_style=2, D9 to R_EN and L_EN, D2, D3 to RPWM resp. LPWM |
Pololu #2991: | ironman | pwm-style=2, D9 to PWM, D2 to DIR, D10 to SLP |
LN298N | kinefou | |
VNH5019 | CapnKernel |
Voir aussi: Demystifying motor.ino Youtube upload