Accélérer le développement d'applications de moteurs BLDC pour l'automobile et l'IoT avec le variateur moteur A4964KJPTR-T
Avec la contribution de Rédacteurs nord-américains de DigiKey
2021-10-26
Les moteurs CC sans balais (BLDC) sont de plus en plus utilisés dans des applications nombreuses et variées, depuis les vitres de voiture et les dispositifs d'ouverture de portes de garage commandés à distance via l'Internet des objets (IoT) jusqu'aux contrôleurs de propulsion des satellites. Le problème auquel les concepteurs sont confrontés avec les moteurs BLDC tient au fait que les algorithmes nécessaires pour les commander sont complexes et souvent spécialisés. Il est donc difficile pour un ingénieur lambda d'en installer et d'en faire fonctionner un dans un délai raisonnable.
Les développeurs doivent généralement choisir entre un circuit intégré dédié et une approche logicielle fonctionnant sur un microcontrôleur, ce qui constitue certes une solution logicielle flexible, mais fait peser une charge de calcul sur le microcontrôleur. Le choix du circuit intégré dédié apporte une fonction complète de commande de moteur BLDC et décharge l'hôte de cette commande.
Cet article traite des différences entre une solution logicielle basée sur un microcontrôleur et une solution matérielle dédiée sur puce. Il explique ensuite comment utiliser l'A4964KJPTR-T d'Allegro MicroSystems, un variateur moteur conçu pour simplifier la commande de moteurs BLDC spécifiquement pour les applications automobiles. L'article montre comment interagir avec l'A4964KJPTR-T, et présente quelques bonnes pratiques pour éviter tout comportement inattendu.
Une (très) brève introduction aux moteurs BLDC
Les moteurs BLDC offrent un couple efficace sur une large plage de vitesses, sont silencieux et ne subissent pas la friction mécanique des moteurs à balais. Ils sont contrôlés par le courant, et non par la tension, ce qui leur permet d'être utilisés dans une grande variété d'applications, pour lesquelles il existe une vaste palette de formes, de formats et de postes de dépenses.
Par exemple, le QBL4208-41-04-006 de TRINAMIC Motion Control est un moteur de 24 volts (V) et 4000 tours par minute (tr/min) qui fournit un couple jusqu'à 0,06 Newton-mètre (Nm) (Figure 1). Ce moteur est léger (300 grammes) et offre au développeur plusieurs options de commande, comme un fonctionnement sans capteur reposant sur la force contre-électromotrice (FCEM), ou l'utilisation de capteurs intégrés signalant la position.
Figure 1 : Le QBL4208-41-04-006 est un moteur BLDC de 24 V, 4000 tr/min, qui peut fournir un couple d'un peu plus de 0,06 Nm à la vitesse maximum. (Source de l'image : TRINAMIC Motion Control GmbH)
Pour un couple plus important, les concepteurs peuvent utiliser le QBL4208-41-04-025, également de TRINAMIC Motion Control (Figure 2). Il s'agit d'un moteur BLDC de 24 V, 4000 tr/min, qui peut fournir un couple d'un peu plus de 0,25 Nm.
Figure 2 : Le QBL4208-41-04-025 de TRINAMIC Motion Control est un moteur BLDC de 24 V, 4000 tr/min, qui peut fournir un couple d'un peu plus de 0,25 Nm à la vitesse maximum. (Source de l'image : TRINAMIC Motion Control GmbH)
Les moteurs BLDC sont alimentés par des lignes triphasées générant un champ magnétique qui exerce une force sur des aimants permanents afin de déplacer le stator et faire tourner le moteur.
En théorie, cela semble facile, mais en pratique, la commande d'un moteur BLDC est assez compliqué, ce qui laisse aux développeurs le choix entre l'utilisation d'une structure logicielle pour commander le moteur ou l'adoption d'une solution sur puce dédiée.
Solutions logicielles ou puces dédiées
Il existe plusieurs facteurs que les développeurs doivent prendre en compte lorsqu'il s'agit de résoudre la question de la rotation d'un moteur BLDC. Ces facteurs se résument essentiellement aux points suivants :
- Coût de nomenclature par rapport au coût de main-d'œuvre
- Complexité des cartes par rapport à la complexité des logiciels
- Temps et coûts de maintenance
Du point de vue du matériel, il peut être très tentant d'emprunter la voie logicielle, car une solution sur puce dédiée ajoute un coût supplémentaire à la nomenclature. Il est ainsi possible de renoncer à une puce dédiée, et aux coûts qui vont avec, de dépenser à peine plus pour acquérir un microcontrôleur, et de placer tous les algorithmes de commande dans ce microcontrôleur. Cette situation semble être avantageuse à tous les niveaux, mais les équipes ne mesurent pas toujours toutes les ramifications de cette décision.
Certes, cela réduit le coût de la nomenclature, mais cette solution fait peser une charge supplémentaire sur le microcontrôleur qui doit traiter les données d'état du moteur BLDC et commander le moteur en continu. Si le microcontrôleur essaie également d'échantillonner d'autres capteurs, de communiquer avec une radio et de commander d'autres dispositifs, les coûts de développement et de maintenance du logiciel peuvent atteindre des sommets si l'on n'y prend garde.
Cela dit, une solution logicielle dans un microcontrôleur peut offrir une certaine souplesse, dans la mesure où une équipe peut définir avec précision ses propres algorithmes de commande du moteur. L'utilisation d'un logiciel ne signifie pas non plus que les choses doivent toujours être excessivement compliquées.
Par exemple, le fait de déplacer l'algorithme de commande moteur dans le microcontrôleur entraîne généralement un plus grand besoin de RAM et nécessite beaucoup de mémoire Flash. Toutefois, si une équipe utilise un microcontrôleur conçu pour la commande moteur, comme le microcontrôleur de commande moteur F280049CRSHSR de Texas Instruments, les algorithmes sont intégrés dans une bibliothèque qui réside dans la mémoire ROM du microcontrôleur. Cela signifie que le seul code supplémentaire ajouté à l'application est constitué par les appels de fonction pour accéder à la bibliothèque qui se charge d'effectuer tout le travail.
Faire tourner un moteur BLDC n'est pas seulement une question de logiciel ; il faut aussi du matériel. La Figure 3 montre un exemple d'application utilisant un microcontrôleur de la gamme C2000, dont fait partie le F280049CRSHSR, et illustre tout ce qui est requis et facultatif pour commander un moteur BLDC. Outre le microcontrôleur, il faut également un étage de puissance à trois phases, capable de commander les trois phases du moteur BLDC pour le faire tourner.
Figure 3 : Les microcontrôleurs C2000 de Texas Instruments sont conçus pour les applications de commande moteur. Cette image montre un exemple d'application avec le microcontrôleur au centre et les circuits requis et optionnels pour commander un moteur BLDC. (Source de l'image : Texas Instruments)
L'utilisation d'un microcontrôleur pour commander le moteur est certainement intéressante, mais à quoi ressemble une solution matérielle dédiée ? Jetons un coup d'œil à la puce de variateur moteur A4964KJPTR-T d'Allegro MicroSystems.
Variateur moteur A4964KJPTR-T d'Allegro MicroSystems
La puce A4964KJPTR-T d'Allegro MicroSystems est un variateur de moteur BLDC dédié qui contient toutes les fonctionnalités nécessaires pour commander un moteur (Figure 4). Spécialement conçue pour les applications automobiles et pour une utilisation avec des MOSFET à canal N, la puce permet un démarrage et une commutation sans capteur, ce qui nécessite un minimum de composants externes. L'A4964KJPTR-T fonctionne également sur une large plage de tensions, de 5,5 V à 50 V, ce qui couvre pratiquement toutes les applications standard, ainsi que les systèmes automobiles.
Autre caractéristique sans doute la plus intéressante de l'A4964KJPTR-T, il est possible d'interfacer avec un microcontrôleur ou un calculateur moteur (ECU) via l'interface périphérique série (SPI) afin de configurer les différents registres pour le fonctionnement du moteur. Il est évident que le microcontrôleur n'a pas besoin d'être aussi puissant que celui qui exécute les algorithmes de commande du moteur lui-même.
Figure 4 : Le variateur de moteur BLDC A4964KJPTR-T peut fonctionner de 5,5 V à 50 V et permet un démarrage et une commutation sans capteur. La vitesse du moteur peut être configurée via SPI ou par un signal PWM dédié. (Source de l'image : Allegro MicroSystems)
Sinon, et là se situe toute la partie intéressante, la vitesse du moteur de l'A4964KJPTR-T peut également être commandée sans SPI en fournissant simplement un signal de modulation de largeur d'impulsion (PWM). Une mémoire non volatile permet de stocker les réglages du moteur qui sont chargés à la mise sous tension, ce qui permet à un simple signal PWM de commander le moteur.
Du point de vue de la configuration, l'A4964KJPTR-T possède 32 registres adressables de 16 bits, plus un registre d'état. Le registre d'état est unique en ce sens que les 5 premiers bits sont transmis lors de chaque opération de lecture/écriture sur l'interface SPI, ce qui permet au logiciel de connaître un état général et de vérifier la présence éventuelle d'erreurs ou de problèmes. Tous les registres d'état peuvent être lus pendant les opérations d'écriture sur la puce car aucune donnée n'est transmise en retour par l'A4964KJPTR-T.
Parmi les 32 registres adressables, il existe également deux registres spéciaux. Le registre 30 est en écriture seule, le registre 31 en lecture seule. Le registre en écriture seule permet à un développeur de définir l'entrée de la demande, ou le rapport cyclique auquel le moteur sera commandé (valeur comprise entre 0 et 1023). Les données du registre en lecture seule changent en fonction des données demandées qui sont inscrites dans le registre 29, le registre de sélection de lecture différée. Ce registre permet de récupérer un large éventail d'informations télémétriques, notamment les données suivantes :
- Diagnostics
- Vitesse du moteur
- Courant d'alimentation moyen
- Tension d'alimentation
- Température de la puce
- Entrée de la demande
- Rapport cyclique de crête du pont appliqué
- Avance de phase appliquée
Outre ces registres spéciaux, les 30 registres restants permettent de régler l'application spécifique du moteur et d'activer ou de désactiver les anomalies, telles que les problèmes de limite de courant et d'attaque de grille.
Les variateurs moteurs dédiés sont intéressants dans la mesure où ils regroupent tout ce qui doit être configuré pour faire fonctionner le moteur en quelques dizaines de registres de configuration. Cela fait disparaître de façon spectaculaire toute surcharge logicielle qui pourrait exister sur un microcontrôleur et, ce qui est peut-être plus important encore, cela permet de réduire considérablement les coûts de développement et de maintenance du logiciel. La commande de moteur BLDC se résume alors à l'envoi d'un signal PWM qui ne peut provoquer aucune surcharge dans un microcontrôleur, ou à l'activation du bit moteur et à la fourniture d'une entrée de demande basée sur l'interface SPI pour faire tourner le moteur BLDC.
Conseils et astuces pour utiliser l'A4964KJPTR-T
L'interface de l'A4964KJPTR-T est relativement simple, mais il existe plusieurs conseils et astuces que les développeurs peuvent garder à l'esprit pour simplifier et accélérer leurs travaux, notamment :
- Le registre d'état est renvoyé sur l'interface SPI lors de chaque écriture sur la puce et n'est pas disponible en tant que registre dédié et adressable. Cela signifie que le code du variateur doit surveiller la ligne SDO du bus SPI tout en écrivant sur la puce pour obtenir des informations d'état.
- Les informations sur les anomalies sont incluses dans le registre d'état, mais un aperçu de l'état de la puce est disponible dans les cinq premiers bits de chaque transaction SPI lorsque le microcontrôleur fournit les informations d'accès aux adresses. Ces données peuvent être utilisées pour déterminer si des problèmes sont survenus.
- Deux registres uniques dans la carte mémoire sont en lecture et en écriture seulement. Même si cela est simple, il convient de ne pas essayer de procéder à une lecture à partir du registre en écriture seule, car cette opération entraînera l'écriture dans le registre de données non pertinentes utilisées dans la séquence de lecture.
- La puce possède une mémoire non volatile qui peut être utilisée pour stocker les paramètres par défaut. Ces paramètres sont chargés dans la RAM et utilisés lors du démarrage. Pour garantir que la puce s'amorce dans l'état disponible le plus efficacement possible, il est nécessaire de programmer des valeurs de démarrage « sûres » dans la puce.
- Si le dispositif final est utilisé dans un environnement bruyant ou soumis à des radiations, il n'est pas inutile de de concevoir le code de l'application de manière à pouvoir confirmer régulièrement les données de configuration. La configuration de la puce est stockée dans la RAM, ce qui signifie qu'elle est vulnérable aux rayons cosmiques, aux inversions de bits et à tous ces événements bizarres et rares qui peuvent se produire avec l'électronique.
Conclusion
Les implémentations de moteurs BLDC pour l'automobile, l'IoT ou d'autres applications sont assez courantes, mais leur commande peut être complexe. Pour gérer la complexité logicielle, les développeurs peuvent utiliser un variateur de moteur BLDC dédié, tel que l'A4964KJPTR-T, qui intègre toutes les fonctionnalités de commande moteur.
Bien qu'un logiciel soit toujours nécessaire pour interagir avec la puce, le microcontrôleur qui exécute le logiciel n'a besoin que de définir les paramètres de configuration, et l'A4964KJPTR-T se charge de commander le moteur. Les développeurs qui suivent ces « conseils et astuces » constateront qu'ils économisent beaucoup de temps et d'efforts lorsqu'ils utilisent l'A4964KJPTR-T.
Avertissement : les opinions, convictions et points de vue exprimés par les divers auteurs et/ou participants au forum sur ce site Web ne reflètent pas nécessairement ceux de DigiKey ni les politiques officielles de la société.




