Comment conduire un moteur sans balais avec Arduino?

28

Est-il possible de piloter un moteur sans balai directement avec Arduino? Ou devrais-je revenir sur la commande d'un moteur brushless ESC avec des impulsions PWM?

tuupola
la source
1
Vous pourriez peut-être obtenir une puce de pilote à partir d'un ancien lecteur de DVD / CD-ROM.
Lars

Réponses:

10

Vous devez absolument utiliser l'ESC. Les moteurs sans balais fonctionnent mieux lorsqu'ils sont entraînés avec une onde sinusoïdale (ou aussi près que possible d'une onde sinusoïdale). Ils nécessitent également un ensemble de signaux assez précis et compliqué. Générer les formes d'onde et le timing appropriés à partir d'un arduino serait difficile, et à moins que vous n'en ayez vraiment besoin, cela ne vaut probablement pas la peine. Vous pouvez toujours organiser le contrôle de l'ESC à partir de votre Arduino, ce qui vous donnerait un contrôle programmatique ainsi que l'efficacité et la puissance de l'ESC.

jkopel
la source
nitpick: Selon Wikipedia ( en.wikipedia.org/wiki/brushless_DC_electric_motor ), les moteurs BLDC sont optimisés pour fonctionner mieux lorsqu'ils sont entraînés par DC commuté: complètement positif, non entraîné et complètement négatif. Les moteurs AC à aimant permanent sont optimisés pour fonctionner au mieux lorsqu'ils sont entraînés par une onde sinusoïdale; c'est la seule différence significative entre eux. Je suis d'accord avec votre conclusion: cela vaut probablement la peine d'utiliser un ESC standard plutôt que d'en développer un vous-même.
davidcary
4
Le contrôleur d'un BLCD pourrait très bien utiliser le même atmega qu'un arduino; donc l'avantage est plus de transmettre le problème de détail à quelqu'un d'autre pour le résoudre; et confier la tâche de commutation de bas niveau pour laisser l'atmega de l'arduino libre pour les tâches de niveau supérieur.
Chris Stratton
Les moteurs BLDC utilisent essentiellement un entraînement à onde carrée vers les bobines. Du côté utilisateur du contrôleur (ESC), ils utilisent une alimentation CC ainsi que les signaux de contrôle requis par l'ESC. Les ondes sinusoïdales ne figurent pas.
Russell McMahon
13

En fait, parfois, vous DEVEZ simplement créer votre propre ESC. Les ESC vendus sur le marché sont "commercialisés" et ont leurs propres codes de contrôle pour les trucs RC comme les avions, les hélis, les voitures ...

Par exemple, il faut parfois avoir un frein régénératif double face. De l'arrière à l'arrêt et de l'avant à l'arrêt. Il n'y a AUCUN ESC RC qui a cette fonctionnalité. Ils ont soit un seul frein régénératif d'avant à l'arrêt, soit aucun. Ou vous pouvez avoir besoin d'un BLDC de contrôle de capteur, mais il n'y a que quelques ESC sensibles sur le marché, et ils n'ont que (les mêmes pour les ESC sans capteur courants) des fonctionnalités intégrées dont vous n'avez pas besoin et n'en avez pas dont vous avez absolument besoin !

Concevoir votre propre ESC est un choix parfait et beaucoup moins cher, même que le 10 $ le moins cher avec une énorme puissance.

Il est vrai que le code de contrôle et le matériel peuvent être pénibles mais après quelques lectures ce n'est qu'un jouet.

Il y a un bon tutoriel ici sur la façon de faire un contrôleur BLDC avec un arduino en utilisant 6 mosfets et quelques autres trucs que vous pouvez facilement trouver sur le site de Jameco (très sympa) C'est là que j'achète mes trucs pour pas cher mais spurkfun peut être une bonne alternative si vous ne trouvez pas de capteurs comme des gyroscopes, etc.

http://www.instructables.com/id/BLDC-Motor-Control-with-Arduino-salvaged-HD-motor/

guide très agréable et facile à suivre. Vous pouvez faire n'importe quelle puissance de ESC bas à ultra élevé en utilisant ce guide et presque n'importe quelle combinaison de frein de régénération, en utilisant une résistance, des enroulements de moteur ou un chargeur de batterie ...

Utiliser des mosfets n'est qu'un jouet, vous pouvez presque tout faire.

Le problème est que vous ne pouvez pas contrôler ce mosfet très efficacement avec un MCU comme une carte arduio qui ne produit que 5 V, je pense, et la tension de grille du mosfet pour les tensions moyennes est assez beaucoup plus élevée dans la plage de 16 à 30 V. Vous devez donc utiliser un autre tansisor pour augmenter la tension de l'arduino.

Bonne chance.

Stevenvh
la source
6

J'ai fait des allers-retours sur ce sujet pendant environ 30 minutes. Je pense que vous voulez probablement utiliser un ESC à moins que vous ne le fassiez simplement comme une expérience d'apprentissage. Pour contrôler correctement le moteur, vous consommez plus de ressources de votre arduino que je ne pourrais l'imaginer. De plus, vous limitez la réactivité du moteur à celle de l'interrogation adc. Je ne penserais pas à utiliser un ESC comme retour, c'est ainsi que cela est censé être fait.

Scott Murphy
la source
4

Puisque personne d'autre ne l'a dit - vous ne pourriez pratiquement pas conduire un moteur directement à partir d'un Arduino simplement parce que la puce AVR ne produira pas suffisamment de courant pour fournir des quantités utiles d'énergie.

Donc, à tout le moins, vous envisagez de créer un arrangement de pont en H triphasé (lire: trois `` demi-ponts en H '') pour piloter les courants nécessaires, nécessitant six lignes numériques juste pour faire fonctionner les transistors de commande.

En supposant que ce problème de capacité de disque ait été résolu et que ce n'est pas anodin, vous devrez entrer dans le code de contrôle. Ces moteurs ont des rotors à aimants permanents, vous ne pouvez donc pas simplement tourner aveuglément le champ du stator et obtenir un couple utile. Vous devez connaître l'orientation du rotor afin de maintenir les angles de phase électriques ajustés afin d'obtenir un couple uniforme.

Ainsi, comme d'autres l'ont dit, à moins que vous ne vouliez l'expérience d'apprentissage spécifique, il n'y a aucun déshonneur à acheter un ESC.

JustJeff
la source
3

Je pense que ce serait un excellent exercice d'apprentissage, mais les ESC utilisent l'EMF arrière pour détecter la rotation, bien que vous puissiez utiliser des capteurs optiques ou magnétiques pour cela. Fondamentalement, vous devez générer 3 phases CA et les activer / désactiver au bon moment.

La vitesse de rotation du champ magnétique doit être adaptée au moteur, c'est-à-dire que si vous voulez accélérer, le champ doit fonctionner un peu plus tôt et plus rapidement. Vous pouvez également casser, en faisant le contraire.

Pour une explication approfondie: http://www.embedded.com/columns/technicalinsights/196701832?_requestid=137540

Pour un travail pratique, obtenez un ESC.

ppvi
la source
J'ai d'abord pensé que l'accélération et la décélération ont été accomplies comme vous le décrivez, en menant et en retardant le champ. mais ensuite j'ai lu que l'accélération est principalement déterminée par la tension (bien que je ne vois pas comment cela pourrait décélérer). je me sens un peu confus. l'une ou l'autre des approches fonctionne-t-elle pour l'accélération? une raison de préférer l'un à l'autre, ou de les mélanger? Merci!
nécromancien
2

Vous pouvez le piloter directement avec Arduino si, en conduisant, vous ne voulez pas littéralement fournir du courant aux enroulements - tout MCU serait beaucoup trop faible pour cela. En outre, Arduino peut couler mais ne pas générer de courant, mais il vous faudrait les deux pour un moteur sans balais.

Cependant, si vous utilisez un CI de pilote de pont H très simple en plus de l'Arduino, vous pouvez implémenter à peu près toutes les fonctions de l'ESC. En fait, selon l'application, vous n'aurez peut-être même pas besoin d'un E * SC *, ce qui signifie que vous n'aurez peut-être pas besoin d'un contrôle de vitesse en boucle fermée - si la charge n'est pas trop importante, vous pourrez peut-être simplement vous en sortir en faisant simplement confiance au moteur pour répondre en synchronisation avec la mise sous tension de l'enroulement, et le taux des changements de courant d'enroulement proviendrait de l'Arduino. Découvrez ce schéma de commande de moteur sans balais (BLDC) très simple et croquis Arduino que vous pourrez adapter pour entraîner votre moteur. Celui-ci est basé sur le circuit intégré quadruple pont SN754410NE qui est maximisé à 750mA si la mémoire sert.

Le code n'est pas trop trivial et utilise PWM pour une rotation en douceur mais il n'est pas trop difficile d'analyser non plus pour s'adapter à votre application. Le croquis Arduino réel pour le moteur BLDC est ici .

ElectroNick
la source