asservissement en position brushless motor

Bonjour,

Je souhaite asservir un moteur brushless en position.

Pour l'acquisition de l'angle, j'utilise un potentiomètre avec un CAN 16 bits I2C.

Mon problème est le suivant : comment piloter le moteur précisément sans utiliser de VESC très onéreux.
Sur je sais plus quel site, j'ai vu que c'était possible avec le composant SN754410 normalement utilisé pour les moteurs pas à pas. Un avis peut être sur cette idée ?

Merci pour les futures réponses et mon post étant peu détaillé, n'hésitez à demander si certaines choses dans mon énoncé sont peu claires ou si vous avez besoin de plus de détails.

Bien que le SN754410 puisse aussi contrôler des moteurs à courant continu, je pense qu'un positionnement dans un angle bien précis (au degrés près), le moteur pas à pas est le seul qui puisse résoudre ce problème et surtout maintenir la position malgré l'inertie ou d'autres forces qui pourraient s'exercer. Tout dépends de la précision du résultat final.

Ca doit être possible avec un brushless (3 fils) puisque c'est utilisé pour stabiliser de grosses caméras.
Il faut piloter les 3 sinusoïdes de phase, décalées de 120° entre elles.

Je pense qu'avec un tableau qui mémorise les 3 tensions sur 360° avec une résolution de 1° et un convertisseur N/A ça doit être faisable.

Merci de vos réponses, je ferais quelques tests quand j'aurais tout reçu.
Vous n'auriez pas par hasard une autre alternative à me proposer ?

bonsoir

"..par hasard une autre alternative à me proposer.."

partir avec un esc brushless (trois fils) mais de voiture ( avec marche arriérè )
de préférence avec un ampérage conséquent ,
au hasard (pas garanti ....):

bien lire le : DESCRIPTIF PRODUIT (frein)

et bien sur après avec un Arduino qui va faire office de contrôleur de vol...

PBZOOM, merci de ta réponse.
Je ne suis pas sûr d'avoir bien compris. Avec l'exemple au hasard de cet ESC, il serait possible d'atteindre une position rapide et fiable ?

jamy31:
PBZOOM, merci de ta réponse.
Je ne suis pas sûr d'avoir bien compris. Avec l'exemple au hasard de cet ESC, il serait possible d'atteindre une position rapide et fiable ?

Bonjour
Les moteurs triphases sont utilisé déjà depuis longtemps en stabilisation d'axes de type Gimbal
Voir la reponse #3 de ChristianR
C'est un système de maintien sur plan circulaire unitaire qui ne fonctionne qu'en rétroaction à boucle fermée
Explique mieux ce que tu entend exactement par çà

Pour l'acquisition de l'angle, j'utilise un potentiomètre avec un CAN 16 bits I2C

Bonjour,

j’utilise un potentiomètre ayant une plage de 300° directement fixé sur l’axe du moteur et via un ADS1115 (CAN 15/16 bits via I2C) je mesure la résistance. Connaissant la résistance maximale à position angulaire maximale, je peux déduire la position angulaire de l’axe du moteur sur 300°. (des capteurs fin de course ont également été ajouté pour ne pas casser les potentiomètres en cas d’une mauvaise commande).

J’ai ensuite essayé de “générer” trois sinusoïdales avec les PWM arduino (je ne sais pas si les PWM arduino sont exactement des CNA) chacune déphasée de 2pi/3 radians (voir résultat en fichier attaché).

Ma question actuelle est : est-ce que par ce moyen je pourrais contrôler le moteur, maintenir une position et faire marche avant comme marche arrière ?
Si jamais la réponse à ma question précédente est positive, est-ce qu’un CNA sur plus de bits pourrait améliorer la position du moteur ?

Merci.

"... je ne sais pas si les PWM arduino sont exactement des CNA ...."

NON:

ATmega328 / Atmega168, has ADC inputs but no DAC outputs.

========
"...... est-ce que par ce moyen je pourrais contrôler le moteur, maintenir une position et faire marche avant comme marche arrière ?....."

====>CE n'est pas aussi simple que cela

un cercle de 360 degrés divisé par 3 cela fait bien 120 °
par contre

pour faire "..marche avant comme marche arrière.."

çA dépend des caractéristiques de votre moteur(triangle ou étoile nombre de pôles/nombre d' aimants.) et de la programmation (une bobine sur 3 ; utilisé comme
BEMF détection , ou non)

http://www.electronoobs.com/eng_circuitos_tut4.php

======

"..maintenir une position .. "

je pense que c'est basé sur un alimentation
quasie continue (pwm) d'une ou d' un groupe de bobines et
comme un freinage électro magnétique

=======

"....est-ce qu'un CNA sur plus de bits pourrait améliorer la position du moteur ?.."

===> raisonnement:

votre potentiomètre a un débattement de 300° (-150°/0/+150)
on va oublier l'intermédiaire "volts"
le can de 16 bits va encoder 2exp 16 points soit 65536 points...
donc 300°/65536 points =0,046 degrés de résolution.

plus de bits on va passer sur 24 bits ,soit 3 octed :2exp24 = 16 777 216
donc 300/ 16 777 216=0,00001788 degrés de résolution. :o

c' est vous qui voyez mais je pense que c' est inutile .....
d'une part ,le temps de traitement d'une variable de 3 octeds (en i2c ) étant plus lourd ,
cela va avoir un impact sur la réactivitée de votre gimbal .

de plus le capteur (axcélerométre ) et le moteur ; vont ils être capable d'exploiter une telle précision ???

Merci de votre réponse.

Je suppose que le problème avec les PWM et que celles-ci ne génèrent qu'une succession d'étages qui donnent l'illusion d'une courbe continue mais ce n'est pas le cas. Y'aurait-t-il un moyen de tout simplement lisser la courbe électroniquement ? (bien que cela n'augmenterait pas la précision).

Ensuite, je ne suis pas sûr de moi mais mon moteur est un 12N14P, donc 14 pôles magnétiques je suppose et le branchement se fait en étoile. De plus, aucune des bobines n'est utilisée pour la détection de BEMF car je n'y connais pas grand chose (pour asservir me semble-t-il) et, j'avais pu lire qu'à faible vitesse, cela devenait dur d'être exploité.

En ce qui concerne le CAN, la contrainte que j'avais rencontré était la précision : la MPU, après filtre, me donnait un angle stable au centième de degrès (difficile à croire) mais les potentiomètres, sur les CAN arduino, me donnait une résolution de 300/2^10 = 0.29°. Or 0.29>0.01 donc j'ai cherché mieux et je suis tombé sur ce convertisseur 15 bits mais un 12 bits aurait fait l'affaire. Il faudrait surtout prévoir pour la vitesse d'acquisition et de traitement.

Dans quelques temps, je testerais de piloter et asservir un moteur triphasé 140kv avec le module SN75440 et présenterais éventuellement mes résultats et problèmes rencontrés pour ceux intéressés.