Contrôle du moteur BLDC avec Arduino, moteur HD récupéré et capteurs Hall
Maison » Blog » Contrôle du moteur BLDC avec Arduino, moteur HD récupéré et capteurs Hall

Contrôle du moteur BLDC avec Arduino, moteur HD récupéré et capteurs Hall

Vues: 0     Auteur: Éditeur de site Temps de publication: 2020-09-02 Origine: Site

Renseigner

Bouton de partage Facebook
Bouton de partage Twitter
bouton de partage de ligne
bouton de partage de WeChat
Bouton de partage LinkedIn
Bouton de partage Pinterest
Bouton de partage WhatsApp
bouton de partage kakao
Bouton de partage Snapchat
bouton de partage de télégramme
Bouton de partage Sharethis

De nos jours, les passionnés sont très intéressés à contrôler DC sans balais (BLDC)
par rapport au moteur CC traditionnel, les performances du moteur se sont améliorées, l'efficacité énergétique s'est également améliorée, mais elle est plus difficile à utiliser. De nombreux produits hors étagère
existent à cette fin.
Par exemple, il y a beaucoup de petits contrôleurs BLDCS qui fonctionnent très bien pour les avions RC.
Pour ceux qui veulent examiner le contrôle du BLDC plus en profondeur, il existe également de nombreux micro-contrôles différents et autres matériels électroniques pour les utilisateurs industriels, qui ont généralement une très bonne documentation.
Jusqu'à présent, je n'ai trouvé aucune description complète de la façon d'utiliser le micro-contrôleur Arduino pour le contrôle BLDC.
De plus, si vous êtes intéressé à effectuer un freinage régénératif ou à utiliser un BLDC pour la production d'électricité, je n'ai pas trouvé de nombreux produits adaptés à une utilisation avec de petits moteurs, et je n'ai pas non plus découvert de contrôle du générateur à 3 phases.
Cette structure était à l'origine dans une histoire sur
le calcul du temps réel, je continue de le faire après la fin du cours.
L'idée du projet est de montrer un modèle proportionnel d'une voiture hybride avec stockage d'énergie du volant et freinage régénératif.
Le moteur utilisé dans le projet est un petit BLDC nettoyé à partir du disque dur de l'ordinateur endommagé.
Ce manuel décrit comment utiliser le micro-contrôleur d'Arduino et Hall -
affecte les capteurs de position dans les modes de conduite et de freinage régénératif.
Veuillez noter que visiter Oscillisoft est très utile, sinon essentiel, pour terminer ce projet.
Si vous ne pouvez pas accéder à la portée, j'ai ajouté quelques suggestions sur la façon de le faire sans la portée (étape 5).
Une chose que ce projet ne doit inclure dans aucun contrôleur de moteur réel est toute fonction de sécurité telle que la protection contre le courant.
En fait, le pire, c'est que vous éproupiez le moteur HD.
Cependant, la mise en œuvre de la protection sur-courante avec le matériel actuel n'est pas difficile, et je le ferai peut-être à un moment donné.
Si vous essayez de contrôler un moteur plus grand, veuillez ajouter une protection actuelle afin de protéger votre moteur et votre propre sécurité.
Je veux essayer d'utiliser ce contrôleur avec un moteur plus grand qui peut faire du travail \ 'réel \' mais je n'ai pas encore le bon.
J'ai remarqué qu'Ebay avait vendu une voiture de 86 W pour environ 40 $.
On dirait un bon candidat.
Il y a aussi un site Web RC appelé \ 'Gobrushless \' qui vend des kits qui assemblent leur propre BLDC.
Ce ne sont pas trop chers et cela vaut l'expérience d'en construire un.
Veuillez noter qu'il n'y a pas de capteur de salle pour le moteur sur ce site Web. Ouf!
Écrire cette structure est un gros travail.
J'espère que vous le trouverez utile, veuillez faire vos commentaires et suggestions.
Multimètre numérique (DMM) -
Si votre DMM a un oscilloscope de fréquence de fréquences (
il vaut mieux avoir au moins 2 canaux)
T8 Torx Driver (
vous en avez besoin pour ouvrir un disque dur).
Il y a une bonne quincaillerie.
Atelier de machine et prototype rapide (
ceux-ci sont très utiles, mais je pense que ce projet peut se faire sans eux).
Matériau BLDC MOTEUR MAGINE MAGNÉTIQUE DU DISQUE DU DIFFORMATIQUE INFORMATIQUE (
la moitié du moteur)
d'un autre disque dure du dur (3-6)
Il y a un deuxième petit moteur sur le disque d'argent sur le disque dur (DC Brossed OK)
Bandon Solide
Mois de la plaque solide de la plaque solide ARDUINO DUEMILANOVE 120 K OHM RÉSISTOR ohmst micro circuit l6234 moteur triphasé conducteur ic deux condensateurs 100 UF un condensateur de 10 nf un condensateur 220 nf un condensateur UF 1 UF
Bipolar Hall-5 AMP AMP FUSE 1 Holder 3
Remarque: Mike Anton a conçu et vendu un produit qui remplacera les Electronics et Hall Sensor I Circtive Is dans ce produit qui remplacera les Electronics et Hall Sensor I Circtive Is dans ce produit dans ce produit qui remplacera les Electronics Power et Hall Circuits I a montré que ce produit dans ce produit qui remplacera les Electronics Power et Hall Circuits. manuel (
il est contrôlé en utilisant l'induction du potentiel arrière).
Les spécifications et les informations d'approvisionnement peuvent être trouvées dans ces deux liens: si vous allez faire ce projet, je vous suggère de prendre le temps de bien comprendre comment le BLDC fonctionne et les contrôles.
Il existe un grand nombre de références en ligne (
voir ci-dessous pour certaines suggestions).
Cependant, je comprends des graphiques et des tables de mon projet qui devraient vous aider à comprendre.
Here is a list of the concepts that I think are most important to understanding this project: MOSFET transistors 3-phase half-bridge 6-
3-step reduction of sentence
Pulse Width Modulation of phase motor (PWM)Hall-
Microchip AVR443: sensors-general reference DC motor Basic Principles for Digital position sensors
Control of three-phase brushless DC motor based on atmelbrusless DC motor control
Phase BLDC motor control of the Flying Star Capteur Hall, une bonne vidéo de nettoyage du moteur du disque dur, mais l'auteur semble faire fonctionner le moteur comme un moteur de trempage et comme un moteur de tremplin. Une page Web de référence plus spécifique pour le BLDC sur le L6234 Motor Drive IC, y compris les fiches techniques, les notes d'application et les informations d'achat.
Échantillon gratuit pour lecteur de moteur PM sans balais pour les applications de véhicules électriques hybrides.
C'est le seul article que j'ai trouvé qui décrit l'ordre du changement de phase de freinage régénératif.
Cet article, le freinage régénératif dans les véhicules électriques est utile, j'en ai emprunté quelques chiffres, mais je pense qu'il décrit à tort comment fonctionne la régénération.
J'ai fait ce projet avec un moteur d'entraînement en disque recyclé car il était facile à passer et j'aime utiliser un petit moteur basse tension pour apprendre le cordon contrôlé par BLDC et ne pas causer de problèmes de sécurité.
De plus, la configuration de l'aimant du capteur Hall devient très simple en utilisant l'anneau magnétique (rotor)
de la seconde de ces moteurs (voir l'étape 4).
Si vous ne voulez pas aller à tous les tracas d'installation et d'étalonnage du capteur de la salle (étapes 5-7),
je sais qu'il y a au moins certains moteurs de conduite CD / DVD construits à la salle.
Afin de fournir un peu d'inertie de virage au moteur et de leur donner un peu de charge, j'ai mis 5 disques durs sur le moteur, doucement collé avec un peu de colle forte et collé au moteur (
cela a fait le volant dans mon projet d'origine).
Si vous allez retirer le moteur du disque dur, vous avez besoin d'un entraînement T8 Torx pour dévisser le boîtier (
généralement il y a deux vis cachées derrière le bâton dans l'étiquette Centeron)
et des vis internes qui maintiennent le moteur en place.
Vous devez également supprimer le lecteur de tête (
Sound Circle Executive)
de cette façon, vous pouvez éliminer le disque de mémoire pour atteindre le moteur.
De plus, vous aurez besoin d'un deuxième moteur à disque dur pour retirer le rotor de ce moteur (
il y a un aimant à l'intérieur).
Afin de démonter le moteur, j'ai attrapé le rotor (en haut)
un étau du moteur et je l'ai fait sur le stator (en bas),
les deux tournevis sont à 180 degrés.
Il n'est pas facile de maintenir le moteur sur une paire suffisamment serrée sans déformation.
Vous voudrez peut-être construire un
bloc en V bois utilisé à cet effet.
J'ai foré un trou dans l'anneau magnétique sur le tour afin qu'il s'adapte confortablement sur le dessus du moteur.
Si vous ne pouvez pas utiliser le tour, vous pouvez fixer le rotor inversé sur le moteur avec une colle forte.
Les photos 2 et 3 ci-dessous montrent l'intérieur de l'un des moteurs que j'ai démontrés.
Dans la première moitié là-bas (le rotor) sont 8 pôles (
aimant enveloppé dans du plastique).
Dans la seconde moitié (le stator),
il y a 12 emplacements (enroulements).
Chacune des trois phases du moteur a 4 emplacements en série.
Certains moteurs HD ont trois contacts en bas, un contact par phase et l'autre est le robinet central du moteur (
où trois étapes se rencontrent).
Dans ce projet, aucun robinet central n'est requis, mais il peut être utile dans le contrôle sans capteur (
j'espère libérer une note sur le contrôle sans capteur un jour).
Si votre moteur a quatre contacts, vous pouvez identifier la phase avec OhMeter.
La résistance entre le robinet central et la phase est la moitié de la résistance entre deux phases.
La plupart de la littérature sur les moteurs BLDC traite de ceux qui ont une forme d'onde potentielle en forme d'échelle, mais le moteur du disque dur semble avoir un potentiel de dos qui ressemble à un sinus (voir ci-dessous).
Pour autant que je sache, la conduite d'un moteur à onde sinusoïdale avec un PWM à onde sinusoïdale fonctionne bien, bien que l'efficacité puisse baisser quelque peu.
Comme tous les moteurs BLDC, celui-ci est composé d'un
pont à demi-transistor triphasé (
voir 2ème photos ci-dessous).
J'utilise l'IC fabriqué par ST Micro (L6234)
pour le pont, également connu sous le nom de conducteur du moteur.
La connexion électrique de L6234 est indiquée à l'étape 8.
La troisième photo ci-dessous montre un diagramme schématique du conducteur du moteur et des trois phases du moteur.
Pour que le moteur fonctionne dans le sens des aiguilles d'une montre, l'interrupteur sera effectué dans l'ordre suivant (
la première lettre est le transistor supérieur et la deuxième lettre est le transistor inférieur)
: Étape 1 2 3 4 5 6 dans le sens des aiguilles d'une montre: CB, AB, AC, BC, BA, CA COMPRENDRE
CLORME: BC, BA, CA, CB, AB, AC, BAL moteurs.
Par conséquent, la vitesse de rotation de chaque moteur se produit quatre fois.
Les deux séquences semblent être les mêmes, mais elles ne sont pas les mêmes car pour
la séquence à 6 pas, pour CW, la direction actuelle à travers la phase est une direction, et pour CCW, la direction actuelle est opposée.
Vous pouvez le voir vous-même en appliquant la tension de la batterie ou de l'alimentation en phase motrice.
Si vous appliquez la tension, le moteur se déplacera un peu dans une direction et s'arrêtera.
Si vous pouvez changer rapidement la tension de la phase dans l'une des séquences ci-dessus, vous pouvez faire pivoter le moteur manuellement.
Les transistors et les microcontrôleurs complètent tous ces interrupteurs très rapidement, changeant des centaines de fois par seconde lorsque le moteur fonctionne à grande vitesse.
Veuillez également noter que si la tension est appliquée aux deux phases, le moteur se déplace un peu puis s'arrête.
En effet, le couple est nul.
Vous pouvez le voir dans la quatrième photo ci-dessous, qui montre le potentiel arrière d'une paire de phases motrices.
Ceci est une onde sinusoïdale.
Lorsque l'onde passe par une
arbre X, le couple fourni par cette phase est nul. Dans la
séquence de changement de phase BLDC à six étapes qui ne s'est jamais produite.
Avant que le couple sur une phase particulière ne devienne faible, la puissance est passée à une autre combinaison de phases.
Les plus grands moteurs BLDC sont généralement fabriqués par des capteurs de hall à l'intérieur du moteur.
Si vous avez un tel moteur, vous pouvez ignorer cette étape.
De plus, je sais qu'il existe au moins certains moteurs de lecteur CD / DVD intégrés dans un capteur déjà à hall.
Lorsque le moteur tourne, trois capteurs de salle sont utilisés pour la détection de position, de sorte que le changement de phase est effectué au bon moment.
Mon moteur HD s'étend jusqu'à 9000 tr / min (150 Hz).
Puisqu'il y a 24 changements par roue, à 9000 tr / min, la machine est modifiée toutes les 280 microsecondes.
Le micro-contrôleur Arduino fonctionne à 16 MHz, donc chaque cycle d'horloge est de 0. 06 microsecondes.
Je ne sais pas combien de cycles d'horloge sont nécessaires pour effectuer une réduction de la phrase, mais même si 100 cycles d'horloge sont nécessaires, c'est-à-dire qu'il faut 5 microsecondes pour chaque réduction de la phrase.
Les moteurs HD n'ont pas de capteurs de hall, il est donc nécessaire de les installer à l'extérieur du moteur.
Le capteur doit être fixé par rapport à la rotation du moteur et exposé à une série de pôles cohérents avec la rotation du moteur.
Ma solution consiste à retirer l'anneau magnétique du même moteur et à l'installer à l'envers sur le moteur pour être contrôlé.
J'ai ensuite installé trois capteurs de salle au-dessus de cette bague magnétique, à 30 degrés les unes des autres sur l'arbre du moteur (
rotation de moteur électrique à 120 degrés).
Mon support de capteur Hall se compose d'un simple support composé de trois pièces en aluminium traitées par moi et de trois pièces en plastique fabriquées sur un prototype rapide.
Si vous n'avez pas ces outils, il ne devrait pas être difficile de trouver un autre moyen d'indiquer la position.
La création de supports pour les capteurs de hall sera plus difficile.
C'est une façon possible de travailler: 1.
Trouvez un plateau en plastique de la bonne taille et vous pouvez soigneusement époxy le capteur de la salle. 2.
Un modèle est imprimé sur le papier, qui a le même cercle que le rayon de l'anneau magnétique, et les trois marques sont à 15 degrés 3.
Collez le modèle sur le disque, puis utilisez le modèle comme guide pour placer soigneusement l'époxy du capteur de salle en place.
Maintenant que les capteurs de hall sont installés sur le moteur, connectez-les au circuit illustré ci-dessous et testez-les à l'aide d'un DMM ou d'un oscilloscope pour vous assurer que la sortie devient plus élevée et plus bas à mesure que le moteur tourne.
J'exécute ces capteurs sous 5 V en utilisant la sortie 5 V d'Arduino.
Le capteur Hall est élevé ou faible en sortie (1 ou 0)
Cela dépend s'ils ressentent l'Antarctique ou l'Arctique.
Puisqu'ils sont séparés de 15 degrés, les aimants tournent sous eux et changent la polarité tous les 45 degrés, ces trois capteurs ne seront jamais élevés ou faibles en même temps.
Lorsque le moteur tourne, la sortie du capteur est 6-
Le modèle d'étape illustré dans le tableau suivant.
Le capteur doit être aligné sur le mouvement du moteur de sorte que l'un des trois capteurs change précisément en position de changement de phase du moteur.
Dans ce cas, le bord montant du premier capteur de salle (H1)
doit être cohérent avec l'ouverture de la combinaison C (élevée) et B (bas).
Cela équivaut à tourner les transistors 3 et 5 dans le circuit de pont.
J'aligne le capteur avec l'aimant avec un oscilloscope.
Pour ce faire, je dois utiliser trois canaux de portée.
Je tourne le moteur en se connectant à la courroie du deuxième moteur et en mesurant le potentiel arrière entre les deux combinaisons de phases (
A et B, A et C),
il s'agit de deux sinus.
Comme les vagues de l'image ci-dessous
, regardez le signal du capteur Hall 2 sur le canal 3 de l'oscilloscope.
Le support du capteur de la salle est tourné jusqu'à ce que le bord montant du capteur de la salle soit entièrement aligné avec le point où le changement de phase doit être effectué (voir ci-dessous).
Je me rends compte maintenant qu'il n'y a que deux canaux pour faire le même étalonnage.
Si le BEMF de la combinaison de phases B-
en utilisant C, le bord montant de H2 sera lié à la courbe de la Colombie-Britannique.
La raison pour laquelle le changement de phase doit être effectué ici est de toujours garder le couple moteur aussi élevé que possible.
Le potentiel de dos est proportionnel au couple et vous remarquerez que chaque changement de phase se produit lorsque le potentiel de dos passe sous la courbe d'étape suivante.
Par conséquent, le couple réel se compose de la partie la plus élevée de chaque combinaison de phases.
Si vous ne pouvez pas accéder à la portée, c'est mon idée d'alignement.
Il s'agit en fait d'un exercice intéressant pour quiconque veut savoir comment fonctionne le moteur BLDC.
Si la phase du moteur A est connectée (positive) et B (négative)
à l'alimentation et allumez l'alimentation, le moteur tourne un peu et s'arrête.
Ensuite, si le fil de puissance négatif est déplacé vers la phase C et que la puissance est activée, le moteur va plus loin et s'arrête.
La partie suivante de la séquence sera de déplacer le plomb positif à la phase B,
etc.
Notez que le point zéro de la combinaison troisième phase correspond à la position de changement de phase des deux premières combinaisons.
Par conséquent, la position de couple zéro de B-
La combinaison C est l'endroit où vous souhaitez positionner le bord montant de H2.
Marquez cette position avec des marques fines ou des lames pointues, puis ajustez le support du capteur de hall à l'aide de DMM jusqu'à ce que la sortie de H2 soit exactement plus élevée sur cette marque.
Même si vous vous déveillez un peu de votre horaire scolaire, le moteur devrait bien fonctionner.
La phase du moteur recevra une puissance du conducteur de moteur en trois phases L6234.
J'ai trouvé que c'est un bon produit qui peut résister à l'épreuve du temps.
Il existe de nombreuses façons de faire frire accidentellement vos composants lors de l'utilisation de l'électronique de puissance, je ne suis pas un ingénieur électricien et je ne sais pas toujours ce qui se passe.
Dans mon programme scolaire, nous avons fait notre propre
production de demi-pont en 3 phases de 6 transistors MOSFET et 6 diodes.
Nous l'avons utilisé sur le HIP4086 de l'autre conducteur Intersil, mais nous avons beaucoup de problèmes avec cette configuration que
nous avons brûlé un tas de transistors et de puces.
J'exécute L6234 (
donc le moteur) à 12V.
Le L6234 a un ensemble inhabituel d'entrées pour contrôler un demi-pont de 6 transistors.
Tous les transistors n'ont pas une entrée, mais une
entrée activée (en) pour chacune des trois étapes, puis une autre entrée (in)
sélectionne le transistor en phase ouverte (supérieur ou inférieur).
Par exemple, activez le transistor 1 (supérieur) et 6 (inférieur)
à la fois en1 et en 3 sont élevés (
EN2 bas pour garder le stade fermé)
en 1 haut, in3 bas.
Cela fait la combinaison de phase-c.
Alors que la note d'application L6234 a suggéré d'appliquer la PWM utilisée pour contrôler la vitesse du moteur à la broche, j'ai décidé de le faire sur la broche parce que, à ce moment, je pense que ce serait \ 'étrange \' pour allumer les transistors supérieurs et inférieurs de la phase alternativement \ '
. Le
.
courant

​Pour les versions plus grandes, veuillez vous référer à la documentation de L6234.
Remarque: Mike Anton a fait le PCB pour L6234, qui
remplacera (je crois) cette piste et vous sauvera le travail de l'assemblage.
Voir ces liens pour les spécifications et les informations d'achat: je n'ai pas trouvé beaucoup de choses sur 3-
Je décrirai ma compréhension de son fonctionnement.
Veuillez noter que je ne suis pas un ingénieur électricien et que nous apprécierions toutes les corrections à mon explication.
Lors de la conduite, le système de contrôle envoie le courant en trois phases du moteur d'une manière qui maximise le couple.
Dans le freinage régénératif, le système de contrôle maximise également le couple, mais cette fois, c'est un couple négatif qui fait ralentir le moteur tout en renvoyant le courant à la batterie.
La méthode de freinage régénérative que j'ai utilisée est venue d'un journal du Oakridge National Laboratory aux États-Unis. S. Govt.
Un laboratoire qui fait beaucoup de recherches pour les moteurs automobiles.
Le graphique ci-dessous provient d'un autre article qui aide à illustrer son fonctionnement (
cependant, je pense que l'explication donnée dans ce deuxième article est partiellement incorrecte).
Gardez à l'esprit que lorsque le moteur tourne, la tension BEMF dans la phase du moteur fluctue de haut en bas.
Dans la figure, il montre le moment où le BEMF est élevé au stade B et bas en scène.
Dans ce cas, il est possible que le courant s'écoule de B à.
Critiques pour le freinage régénératif, les transistors bas de gamme s'allument et s'éteignent rapidement (
des milliers de commutateurs PWM par seconde).
Lorsque l'interrupteur de transistor haut de gamme est désactivé;
Lorsque le transistor bas est allumé, le courant circule comme indiqué dans la première image.
En termes d'électronique d'alimentation, le circuit est comme un appareil appelé convertisseur Boost, où l'énergie est stockée dans la phase du moteur (
Wikipedia a un bon article expliquant le fonctionnement du convertisseur Boost).
Cette énergie est libérée lorsque le transistor bas de gamme est désactivé, mais à une tension plus élevée, le courant circule instantanément à travers la diode \ 'anti-excitation \' à côté de chaque transistor, puis revient à la batterie.
La diode empêche le courant de s'écouler de la batterie au moteur.
Dans le même temps, le courant dans cette direction (
contrairement à la conduite)
interagit avec l'anneau aimant pour produire un couple négatif qui ralentit le moteur.
Le transistor à bas côté utilise un interrupteur PWM et le cycle de service de PWM contrôle la quantité de freinage.
Lors de la conduite, la commutation du moteur passe d'une combinaison à la suivante en temps voulu pour maintenir le couple le plus élevé possible.
La commutation du frein régénératif est très similaire car un mode de commutation fait que le moteur produit autant de couple négatif que possible.
Si vous regardez la vidéo dans la première étape, vous pouvez voir que le frein régénératif fonctionne bien, mais cela ne fonctionne pas bien.
Je pense que la raison principale est que le moteur du disque dur que j'utilise est un moteur à couple très faible, donc il ne produit pas beaucoup de BEMF sauf à la vitesse la plus élevée.
À une vitesse inférieure, il y a très peu de freinage régénératif (le cas échéant).
De plus, mon système fonctionne à une tension relativement faible (12 V)
en outre, car chaque chemin à travers la diode anti-excitation réduit la tension de plusieurs volts, ce qui réduit également considérablement l'efficacité.
J'utilise des diodes de redresseur normales et je peux obtenir de meilleures performances si j'utilise des diodes spéciales avec une chute de tension inférieure.
Vous trouverez ci-dessous une liste des entrées et sorties sur Arduino.
Incluez également les graphiques et les photos de ma planche. 2-
Résistance numérique 1
120 K Résistance de GND 3
Hall d'entrée numérique 2 120 K
de GND 4
Hall 3 Entrée numérique
Résistance
- Sorties numériques 120 K
de GND 5 1 Sortie numérique en série avec 400 ohms
Resistor 6 2 Sorties
une sortie
numérique de 400 ohm
numériques en série avec EN 3 La sortie numérique est en série avec une résistance de 400 ohms, un potentiomètre de 100 k ohms, avec 5 V et GND connectés aux deux extrémités et la broche analogique 0 connectée au milieu.
Ce potentiomètre est utilisé pour contrôler la vitesse du moteur et le volume de freinage.
L'alimentation 5 V est également utilisée pour exécuter des capteurs de salle (voir étape 5).
Voici tout le programme que j'ai écrit pour Ardjuino, qui comprend des commentaires: / * bldc_congroller 3. 1.
1 * 3 par David Glazer.
La série X est ST L6234 Motor à 3
phases Conducteur de moteur IC * Disque de course Disk Motor dans le sens des aiguilles d'une montre * avec freinage régénératif * Vitesse du moteur et freinage contrôlé par un seul potentiomètre
* Position du moteur par trois capteurs à effet Hall
* et convertir leur combinaison à 6 étapes de transition différentes sur les pins 9, 10, 11, 11 khz
* 1,2, 3 * 3 Do sur les broches 5,6, 7, respectivement (en 1,2,3)
Connectez la simulation en 0 au potentiomètre pour modifier le cycle de service PWM et le changement de conduite et de freinage
*
régénératif
*
. Allstate1;
de trois capteurs de hall (3,2,1
;
)
Variables
Hallstate2
int () {pinMode (2, entrée);
/ Hall 1 pinmode (3, entrée);
/ Hall 2 pinmode (4, entrée);
/ L6234 Hall 3 / Sortie du pilote de moteur PinMode (5, sortie);
/ En 1 pinmode (6, sortie);
/ En 2 pinmode (7, sortie);
/ En 3 pinmode (9, sortie);
/ En 1 pinmode (10, sortie);
/ En 2 pinmode (11, sortie);
/ En 3 / série. commencer (9600);
Si vous utilisez une connexion série, veuillez décommenter cette ligne.
La commande Flush à la fin du programme.
/ * Définissez la fréquence PWM sur les broches 9, 10 et 11 / Set PWM à 32 kHz pour les broches 9, 10 / Premier, effacez les trois bits de pré-divise: int prescalval = 0x07;
/ Créer une variable appelée PresCalerval et le définir sur le nombre binaire \ '00000111 \' TCCR1B & = ~ Prescaler
/ et la valeur en tccr0b avec un nombre binaire de \ '11111000 \' / Définissez maintenant le bit de pré-codage approprié: bit de pré-codage int;
/ Définir Prescalval pour égaler le numéro binaire \ '00000001 \' TCCR1B | = prescalval2;
/ Ou valeur dans TCCR0B avec un nombre binaire de \ '00000001 \' / définir PWM à 32 kHz pour la broche 3,11 (
ce programme utilise uniquement la broche 11)
/ effacer les trois bits pré-caler en premier: TCCR2B & = ~ pré-calévale;
/ Et la valeur en tccr0b avec un nombre binaire de \ '11111000 \' / Définissez maintenant le bit de pré-codage approprié: TCCR2B | = Bit de pré-codage 2;
/ Ou la valeur en tccr0b avec un nombre binaire de \ '00000001 \' / d'abord effacer les trois bits pré-codés:}
la boucle principale de la boucle VOID / PrGrom () {
/ time = millis ();
Il est temps après le début du programme d'impression. println (temps); //En série. imprimer(\'\');
Throttle = analogread (0);
/ Potentiomètre de papillon MSPS = MAP (
gaz, 512 1023, 0,255);
/ La conduite est cartographiée à la moitié supérieure du potentiomètre bspeed = map (
gaz, 0,511 255, 0);
/ Freinage régénératif en demi-partie au bas du pot / msps ed = 100;
/ Pour le débogage hallstate1 = digitalRead (2);
/ Lire la valeur d'entrée de la salle 1 2 = lecture numérique (3);
/ Lire la valeur d'entrée de la salle 2 3 = lecture numérique (4);
Lisez la valeur d'entrée / écriture numérique de la salle 3 (8, HallState1);
/ Lorsque le capteur correspondant est en puissance élevée, la LED s'allume
à l'origine pour déboguer DigitalWrite (9, HallState2);
// DigitalWrite (10, Hallstate3); HallVal = (Hallstate1) + (2 * Hallstate2) + (4 * Hallstate3);
/ Calculez les valeurs binaires de 3 capteurs de hall / * série. print (\ 'h 1: \');
Pour le débogage du port série. println (Hallstate1); En série. print (\ 'h 2: \'); En série. println (Hallstate2); En série. print (\ 'h 3: \'); En série. println (Hallstate3); En série. println (\ '\');
* / // série. println (mSpeed); //En série. println (Hallval); //En série. imprimer(\'\');
/ Moniteur de sortie / retard du transistor (1000);
/ * T1 = digitalRead (2); // t1 = ~ t1;
T2 = DigitalRead (4); // t2 = ~ t2;
T3 = DigitalRead (5); // t3 = ~ t3; En série. print (t1); En série. print (\ '\ t \'); En série. imprimer (T2); En série. print (\ '\ t \'); En série. imprimer (T3); En série. imprimer(\'\'); En série. imprimer(\'\'); En série. imprimer (DigitalRead (3)); En série. print (\ '\ t \'); En série. Print (DigitalRead (9)); En série. print (\ '\ t \'); En série. println (DigitalRead (10)); En série. imprimer(\'\'); En série. imprimer(\'\'); // retard (500);
* / Changement de phase de conduite / Chaque numéro binaire a un cas correspondant aux différents transistors activés sur / les mathématiques de bits utilisées pour modifier la valeur de la sortie Arduino: / Portd contient la sortie de la broche en inférieur sur le pilote L6234 / La sortie utilisée pour déterminer le transistor supérieur ou le transistor inférieur / en encelange pour chaque phase est contrôlé par le compromis Arduino, Réglez le cycle de service de PWM (
0 = OFFUINO valeur contrôlée par potentiomètre). if (throttle> 511) {switch (HallVal) {
case 3: / portd = 1111xxx00;
/ La sortie attendue de la broche 0-
7 XXX fait référence à l'entrée du hall et Portd & = B0001111 ne doit pas être modifiée;
Portd | = B01100000;
/ Analowrite (9, mspeed);
PWM sur une phase (
transistor haut de gamme) analogique (10,0);
Fermeture de phase B (devoir = 0) Analogwrite (11 255); // Phase C sur -Duty = 100% (
transistor à faible gamme);
Cas 1: / portd = b001xxx00;
/ Sortie attendue de la broche 0-
7 Portd & = B00011111;
/ Portd | = B00100000;
/ Analowrite (9, mspeed);
PWM sur une phase (
transistor haut de gamme) analogique (10 255); // Phase B sur (
transistor à faible élément) analogique (11,0); // phase B off (usine = 0) pause;
Cas 5: / portd = b101xxx00;
/ Sortie attendue de la broche 0-
7 Portd & = B00011111;
/ Portd | = B10100000; Analogwrite (9,0); Analogwrite (10 255); Analogwrite (11, MSPEED); casser;
Cas 4: / portd = b100xxx00;
/ Sortie attendue de la broche 0-
7 Portd & = B00011111;
Portd | = BYM000;
/ Analowrite (9 255); Analogwrite (10,0); Analogwrite (11, MSPEED); casser;
Cas 6: / portd = b110xxx00;
/ Sortie attendue de la broche 0-
7 Portd & = B00011111;
Portd B11. 000 =;
/ Analowrite (9 255); Analogwrite (10, mSpeed); Analogwrite (11,0); casser;
Cas 2: / portd = b010xxx00;
/ Sortie attendue de la broche 0-
7 Portd & = B00011111;
B0201700 Portd | =;
/ Analowrite (9,0); Analogwrite (10, mSpeed); Analogwrite (11 255); casser; }}
/ Changement de phase de frein régénératif / Portd (
sortie de la broche sur L6234)
Les broches sont toujours faibles, donc seuls les transistors faibles sur chaque phase sont utilisés pendant le Regen. freinage. else {
/ portd = b000xxx00;
/ Sortie attendue de la broche 0-
7 Portd & = B00011111;
Portd | = BYM0000; // Switch (HallVal) {
cas 3: Écriture analogie (9, bspeed); // analogwrite (9,0); Analogwrite (10,0); Analogwrite (11,0); casser;
Cas 1: Écriture d'analogie (9, bspeed); Analogwrite (10,0); Analogwrite (11,0); casser;
Cas 5: Écriture d'analogie (9,0); Analogwrite (10,0); Analogwrite (11, bspeed); casser;
Cas 4: Écriture d'analogie (9,0); Analogwrite (10,0); Analogwrite (11, bspeed); casser;
Cas 6: Écriture d'analogie (9,0); Analogwrite (10, bspeed); Analogwrite (11,0); casser;
Cas 2: Écriture d'analogie (9,0); Analogwrite (10, bspeed); Analogwrite (11,0); casser; }}
/ Time = Millis ();
Il est temps après le début du programme d'impression. println (temps); //En série. imprimer(\'\'); //En série. flush();
/ Si vous souhaitez déboguer à l'aide d'un port série, veuillez décommer}
Je pense que l'opération qu'Arduino fait dans ce projet est si simple qu'elle semble être un gaspillage de faire cette tâche avec un microprocesseur.
En fait, les notes d'application de L6234 recommandent un simple tableau de porte programmable (
GAL16V8 en semi-conducteur de réseau) pour faire ce travail.
Je ne connais pas la programmation de cet appareil, mais le coût de IC n'est que de 2 $. 39 à Newark.
D'autres circuits intégrés similaires sont également très bon marché.
Une autre option consiste à reconstituer les portes logiques discrètes.
J'ai trouvé des séquences logiques relativement simples qui pourraient conduire le L6234 IC à partir de la sortie des trois capteurs Hall.
Le tableau de l'étape A est illustré ci-dessous, et la table de vérité pour les trois étapes (
pour que le circuit logique des phases B et C soit, la porte \ 'Not \' doit être commutée de l'autre côté du \ 'ou
. Le problème avec cette approche est qu'il
est préférable de le programmer en tant que porte logique.

Hoprio Group Un fabricant professionnel de contrôleur et de moteurs, a été créé en 2000. Siège du groupe à la ville de Changzhou, province du Jiangsu.

Liens rapides

Contactez-nous

WhatsApp: + 86 18921090987 
Tél: +86 - 18921090987 
Ajouter: No.19 Mahang South Road, district de Wujin High-Tech, City Changzhou, Province du Jiangsu, Chine 213167
Laisser un message
CONTACTEZ-NOUS
Copyright © 2024 Changzhou Hoprio E-Commerce Co., Ltd. Tous droits réservés. Sitemap | politique de confidentialité