De nos jours, les passionnés sont très intéressés par le contrôle du DC sans balais (BLDC).
Par rapport au moteur à courant continu traditionnel, les performances du moteur se sont améliorées, l'efficacité énergétique s'est également améliorée, mais il est plus difficile à utiliser. De nombreux produits disponibles dans le commerce
existent à cet effet.
Par exemple, il existe de nombreux petits contrôleurs BLDC qui fonctionnent très bien pour les avions RC.
Pour ceux qui souhaitent approfondir le contrôle du BLDC, il existe également de nombreux microcontrôleurs et autres matériels électroniques destinés aux utilisateurs industriels, qui disposent généralement d'une très bonne documentation.
Jusqu'à présent, je n'ai trouvé aucune description complète sur la façon d'utiliser le microcontrôleur Arduino pour le contrôle BLDC.
De plus, si vous souhaitez effectuer un freinage par récupération ou utiliser un BLDC pour la production d'électricité, je n'ai pas trouvé beaucoup de produits adaptés à une utilisation avec de petits moteurs, ni découvert comment contrôler un générateur triphasé.
Cette structure figurait à l'origine dans une histoire sur
le calcul en temps réel, je continue à le faire une fois le cours terminé.
L'idée du projet est de montrer un modèle proportionnel d'une voiture hybride avec stockage d'énergie au volant et freinage par récupération.
Le moteur utilisé dans le projet est un petit BLDC nettoyé du disque dur de l'ordinateur endommagé.
Ce manuel décrit comment utiliser le microcontrôleur Arduino et
les capteurs de position Hall-Affects en modes de conduite et de freinage par récupération.
Veuillez noter que visiter oscillisoft est très utile, voire indispensable, pour mener à bien ce projet.
Si vous ne parvenez 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 devrait inclure dans aucun contrôleur de moteur réel est une fonction de sécurité telle qu'une protection contre les surintensités.
En fait, le pire, c'est que vous grillez le moteur HD.
Cependant, mettre en œuvre une protection contre les surintensités 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 gros, veuillez ajouter une protection contre les surintensités afin de protéger votre moteur et votre propre sécurité.
Je veux essayer d'utiliser ce contrôleur avec un moteur plus gros qui peut faire un travail 'réel' mais je n'ai pas encore le bon.
J'ai remarqué qu'eBay vendait une voiture de 86 W pour environ 40 $.
On dirait un bon candidat.
Il existe également un site Web RC appelé \'GoBrushless\' qui vend des kits permettant d'assembler leur propre BLDC.
Ceux-ci ne sont pas trop chers et cela vaut la peine d’en construire un.
Veuillez noter qu'il n'y a pas de capteur à effet Hall pour le moteur sur ce site. Ouf!
Écrire cette structure est un gros travail.
J'espère que vous le trouverez utile, n'hésitez pas à faire part de vos commentaires et suggestions.
Multimètre numérique (DMM) -
Si votre DMM dispose d'un oscilloscope fréquencemètre (
il est préférable d'avoir au moins 2 canaux)
un pilote Torx T8 (
vous en avez besoin pour ouvrir n'importe quel disque dur).
Il y a une bonne quincaillerie.
Atelier de machines et prototype rapide (
ceux-ci sont très utiles mais je pense que ce projet peut être réalisé sans eux).
Matériau du moteur bldc anneau magnétique du disque dur de l'ordinateur (
la moitié du moteur)
d'un autre disque dur Plusieurs (3-6)
Il y a un deuxième petit moteur dans le disque argenté sur le disque dur (DC brossé OK)
Un élastique ou (de préférence)
Le moteur DC sans balais avec une poignée avec un autre moteur plaque à pain électronique fil solide mois l'Arduino Duemilanove Résistance de 120 k ohms Résistance de six à 400 ohms Poténiomètre linéaire ou rotatif Micro circuit ST de 100 k ohm L6234 pilote de moteur triphasé IC deux condensateurs de 100 uF un condensateur de 10 nF un condensateur de 220 nF un condensateur de 1 uF un condensateur de 100 uF trois diodes de réception Un 2.
Honeywell SS411A bipolaire Hall-5 Amp Fusible 1 porte-fusible 3
Remarque : Mike Anton a conçu et vendu un produit qui remplacera l'électronique de puissance et les circuits de capteur Hall que j'ai montrés dans ce manuel (
il est contrôlé par induction de potentiel arrière).
Les spécifications et les informations sur l'approvisionnement peuvent être trouvées dans ces deux liens : Si vous envisagez de réaliser ce projet, je vous suggère de prendre le temps de bien comprendre le fonctionnement et les contrôles du BLDC.
Il existe un grand nombre de références en ligne (
voir ci-dessous pour quelques suggestions).
Cependant, j'inclus dans mon projet quelques graphiques et tableaux qui devraient vous aider à comprendre.
Voici une liste des concepts qui me semblent les plus importants pour comprendre ce projet : Transistors MOSFET Demi-pont triphasé 6-
Réduction de phrase en 3 étapes
Modulation de largeur d'impulsion du moteur de phase (PWM) Hall-
Microchip AVR443 : capteurs-référence générale du moteur à courant continu Principes de base pour les capteurs de position numériques
Contrôle du moteur à courant continu triphasé sans balais basé sur le contrôle du moteur à courant continu sans atmelbrusless
Contrôle du moteur Phase BLDC du capteur Flying Star Hall, une bonne vidéo de nettoyage du disque dur moteur, mais l'auteur semble faire fonctionner le moteur comme un moteur pas à pas et comme un moteur pas à pas. Une page Web de référence plus spécifique pour le BLDC sur le circuit intégré d'entraînement moteur l6234, comprenant des fiches techniques, des notes d'application et des informations d'achat.
Échantillon gratuit pour l'entraînement de moteur sans balais PM 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 par récupération.
Cet article, le freinage régénératif dans les véhicules électriques est utile, je lui ai emprunté quelques chiffres, mais je pense qu'il décrit de manière incorrecte le fonctionnement de la régénération.
J'ai réalisé ce projet avec un moteur de lecteur de 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 poser aucun problème de sécurité.
De plus, la configuration magnétique du capteur à effet Hall devient très simple en utilisant l'anneau magnétique (rotor)
du deuxième de ces moteurs (voir étape 4).
Si vous ne voulez pas vous soucier de l'installation et du calibrage du capteur Hall (étapes 5 à 7),
je sais qu'il existe au moins certains moteurs de lecteur de CD/DVD intégrés au capteur Hall.
Afin de donner une certaine inertie de rotation au moteur et de leur donner un peu de charge, j'ai mis 5 disques durs sur le moteur, collés délicatement ensemble avec un peu de colle forte et collés au moteur (
cela faisait le volant d'inertie dans mon projet original).
Si vous souhaitez retirer le moteur du disque dur, vous avez besoin d'un lecteur Torx T8 pour dévisser le boîtier (
il y a généralement deux vis cachées derrière le bâton dans l'étiquette centrale)
et des vis internes qui maintiennent le moteur en place.
Vous devez également retirer la tête de lecture (
Sound Circle Executive).
De cette façon, vous pouvez retirer le disque mémoire pour accéder au moteur.
De plus, vous aurez besoin d'un deuxième moteur de disque dur identique pour retirer le rotor de ce moteur (
il y a un aimant à l'intérieur).
Afin de démonter le moteur, j'ai saisi le rotor (en haut)
Un étau du moteur et je l'ai fait levier sur le stator (en bas)
Les deux tournevis sont espacés de 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 en bois utilisé à cet effet.
J'ai percé un trou dans l'anneau magnétique du tour afin qu'il s'adapte confortablement sur le dessus du moteur.
Si vous ne parvenez 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 d'un des moteurs que j'ai démonté.
Dans la première moitié, il y a (le rotor) 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 dispose de 4 emplacements en série.
Certains moteurs HD ont trois contacts en bas, un contact par phase et l'autre est la prise centrale du moteur (
là où les trois étages se rencontrent).
Dans ce projet, aucun robinet central n'est requis, mais cela peut s'avérer utile dans un contrôle sans capteur (
j'espère publier un jour une note sur le contrôle sans capteur).
Si votre moteur a quatre contacts, vous pouvez identifier la phase avec un ohmètre.
La résistance entre la prise centrale et la phase est la moitié de la résistance entre deux phases quelconques.
La plupart de la littérature sur les moteurs BLDC traite de ceux avec une forme d'onde de potentiel arrière en forme d'échelle, mais le moteur du disque dur semble avoir un potentiel arrière qui ressemble à un sinus (voir ci-dessous).
Autant que je sache, piloter un moteur à onde sinusoïdale avec un PWM à onde sinusoïdale fonctionne bien, même si l'efficacité peut chuter quelque peu.
Comme tous les moteurs BLDC, celui-ci est constitué d'un demi-
pont de transistors triphasé (
Voir 2ème photos ci-dessous).
J'utilise le circuit intégré fabriqué par ST Micro (L6234)
pour le pont, également connu sous le nom de pilote de moteur.
La connexion électrique du L6234 est illustrée à l'étape 8.
La troisième photo ci-dessous montre un schéma du pilote de 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 dans le sens inverse des aiguilles d'une montre : BC, BA, CA, CB, AB, AC ces 6-
La séquence de pas nécessite un 'degré électrique' de 360, mais seulement un degré physique de 90 pour ces moteurs.
Par conséquent, la vitesse de rotation de chaque moteur est multipliée par quatre.
Les deux séquences semblent être identiques, mais elles ne sont pas identiques car pour
la séquence à 6 étapes, pour CW, le sens du courant à travers la phase est dans un sens, et pour CCW, le sens du courant est opposé.
Vous pouvez le constater vous-même en appliquant la tension de la batterie ou de l’alimentation à l’une ou l’autre des phases du moteur.
Si vous appliquez la tension, le moteur bougera un peu dans une direction et s'arrêtera.
Si vous pouvez modifier rapidement la tension sur la phase dans l'une des séquences ci-dessus, vous pouvez faire tourner le moteur manuellement.
Les transistors et les microcontrôleurs effectuent toutes ces commutations très rapidement, commutant des centaines de fois par seconde lorsque le moteur tourne à grande vitesse.
Veuillez également noter que si la tension est appliquée aux deux phases, le moteur bouge un peu puis s'arrête.
C'est parce que le couple est nul.
Vous pouvez le voir sur la quatrième photo ci-dessous, qui montre le potentiel arrière d'une paire de phases du moteur.
C'est une onde sinusoïdale.
Lorsque l'onde traverse
l'arbre x, le couple fourni par cette phase est nul. Dans la
séquence de changement de phase BLDC en six étapes, cela ne s'est jamais produit.
Avant que le couple sur une phase particulière ne devienne faible, la puissance est commutée sur une autre combinaison de phases.
Les moteurs BLDC plus gros sont généralement fabriqués par des capteurs Hall à l'intérieur du moteur.
Si vous possédez un tel moteur, vous pouvez ignorer cette étape.
De plus, je sais qu'il existe au moins certains moteurs de lecteur de CD/DVD intégrés au capteur Hall.
Lorsque le moteur tourne, trois capteurs à effet Hall sont utilisés pour la détection de position, de sorte que le changement de phase s'effectue au bon moment.
Mon moteur HD tourne jusqu'à 9 000 tr/min (150 Hz).
Puisqu'il y a 24 changements par roue, à 9 000 tr/min, la machine est changée toutes les 280 microsecondes.
Le microcontrôleur Arduino fonctionne à 16 MHz, donc chaque cycle d'horloge est de 0,06 microseconde.
Je ne sais pas combien de cycles d'horloge sont nécessaires pour effectuer une réduction de peine, mais même si 100 cycles d'horloge sont nécessaires, cela prend 5 microsecondes pour chaque réduction de peine.
Les moteurs HD ne disposent pas de capteurs 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 est de retirer l'anneau magnétique du même moteur et de l'installer à l'envers sur le moteur à contrôler.
J'ai ensuite installé trois capteurs à effet Hall au dessus de cet anneau magnétique, espacés de 30 degrés les uns des autres sur l'arbre du moteur (
rotation du moteur électrique de 120 degrés).
Mon support de capteur Hall se compose d'un simple support composé de trois pièces en aluminium traitées par mes soins et de trois pièces en plastique réalisées sur un prototype rapide.
Si vous ne disposez pas de 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 Hall sera plus difficile.
Voici une façon possible de travailler : 1.
Trouvez un plateau en plastique de la bonne taille et vous pourrez soigneusement époxyder le capteur à effet Hall. 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 espacées de 15 degrés 3.
Collez le gabarit sur le disque, puis utilisez le gabarit comme guide pour placer soigneusement l'époxy du capteur à effet Hall en place.
Maintenant que les capteurs Hall sont installés sur le moteur, connectez-les au circuit illustré ci-dessous et testez-les à l'aide d'un multimètre numérique ou d'un oscilloscope pour vous assurer que la sortie augmente et diminue à mesure que le moteur tourne.
J'utilise ces capteurs sous 5 V en utilisant la sortie 5 V d'Arduino.
Le capteur Hall a une sortie élevée ou faible (1 ou 0).
Cela dépend s'ils ressentent l'Antarctique ou l'Arctique.
Comme ils sont espacés de 15 degrés, les aimants tournent sous eux et changent de polarité tous les 45 degrés, ces trois capteurs ne seront jamais haut ou bas en même temps.
Lorsque le moteur tourne, la sortie du capteur est 6-
Le modèle d'étape indiqué dans le tableau suivant.
Le capteur doit être aligné avec le mouvement du moteur afin que l'un des trois capteurs change précisément à la position de changement de phase du moteur.
Dans ce cas, le front montant du premier capteur à effet Hall (H1)
doit être cohérent avec l'ouverture de la combinaison C (haut) et B (bas).
Cela équivaut à activer les transistors 3 et 5 dans le circuit en pont.
J'aligne le capteur avec l'aimant avec un oscilloscope.
Pour ce faire, je dois utiliser trois canaux de portée.
Je fais tourner le moteur en me connectant à la courroie du deuxième moteur et mesure le potentiel inverse entre les deux combinaisons de phases (
A et B, A et C).
Il s'agit de deux sinus.
Comme les ondes de l'image ci-dessous.
Regardez ensuite le signal du capteur Hall 2 sur la voie 3 de l'oscilloscope.
Le support du capteur Hall est tourné jusqu'à ce que le front montant du capteur Hall soit complètement 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 voies pour faire le même calibrage.
Si le BEMF de la combinaison de phases B
utilise C, le front montant de H2 sera lié à la courbe BC.
La raison pour laquelle le changement de phase doit être effectué ici est de toujours maintenir le couple moteur aussi élevé que possible.
Le potentiel arrière est proportionnel au couple et vous remarquerez que chaque changement de phase se produit lorsque le potentiel arrière passe en dessous de la courbe de l'étage suivant.
Par conséquent, le couple réel correspond à la partie la plus élevée de chaque combinaison de phases.
Si vous ne pouvez pas accéder à la portée, voici mon idée d'alignement.
C'est en fait un exercice intéressant pour quiconque souhaite savoir comment fonctionne le moteur BLDC.
Si la phase du moteur A est connectée (positive) et B (négative)
à l'alimentation électrique et allumez l'alimentation électrique, le moteur tournera un peu et s'arrêtera.
Ensuite, si le fil d'alimentation négatif est déplacé vers la phase C et que l'alimentation est activée, le moteur tournera davantage et s'arrêtera.
La partie suivante de la séquence consistera à déplacer le fil positif vers la phase B, etc.
Lorsque vous faites cela, le moteur s'arrête toujours là où le couple est nul, ce qui correspond à un endroit où le graphique passe par l'axe des x sur le graphique.
A noter que le point zéro de la combinaison de troisième phase correspond à la position de changement de phase des deux premières combinaisons.
Par conséquent, la position de couple nul de B-
La combinaison C est l'endroit où vous souhaitez positionner le front montant de h2.
Marquez cette position avec des marques fines ou des lames tranchantes, puis ajustez le support du capteur à effet Hall à l'aide d'un DMM jusqu'à ce que la sortie de H2 soit exactement plus élevée sur cette marque.
Même si vous vous écartez un peu de votre horaire scolaire, le moteur devrait bien fonctionner.
La phase triphasée du moteur sera alimentée par le pilote de moteur triphasé L6234.
J'ai trouvé que c'était un bon produit qui pouvait résister à l'épreuve du temps.
Il existe de nombreuses façons de faire frire accidentellement vos composants lorsque vous utilisez de l'électronique de puissance, je ne suis pas ingénieur électricien et je ne sais pas toujours ce qui se passe.
Dans mon programme scolaire, nous avons créé notre propre
sortie en demi-pont triphasé de 6 transistors MOSFET et 6 diodes.
Nous l'avons utilisé sur le HIP4086 de l'autre driver Intersil, mais nous avons beaucoup de problèmes avec cette configuration.
Nous avons brûlé un tas de transistors et de puces.
Je fais fonctionner le L6234 (
donc le moteur) à 12V.
Le L6234 dispose d'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 d'activation (EN) pour chacun des trois étages, puis une autre entrée (IN)
Sélectionnez quel transistor est en phase ouverte (supérieure ou inférieure).
Par exemple, activez les transistors 1 (supérieur) et 6 (inférieur).
EN1 et EN3 sont tous deux hauts (
EN2 bas pour maintenir l'étage fermé)
IN1 haut, IN3 bas.
Cela donne la combinaison de phases-C.
Alors que la note d'application L6234 suggérait d'appliquer le PWM utilisé pour contrôler la vitesse du moteur sur la broche IN, j'ai décidé de le faire sur la broche EN car, à ce moment-là, je pense qu'il serait \'étrange\' d'allumer alternativement les transistors supérieurs et inférieurs de la phase \'.
En fait, il semble qu'il n'y ait rien de mal à allumer les transistors bas des deux phases en même temps, car ils ont le même potentiel, donc aucun d'eux ne passe par le courant.
Avec ma méthode, la phase haute est activée et désactivée alternativement à la fréquence PWM, tandis que la phase basse reste allumée pendant tout le changement de phase. Vous
trouverez ci-dessous un schéma du moteur d'entraînement, j'ai ajouté la connexion des broches à la carte Arduino. J'ajoute également un
fusible de 2, 5 ampères entre le fil positif de la batterie et le circuit, un fusible de 100 uF entre l'alimentation et la masse pour réduire l'ondulation du courant régénératif.
L6234.
Remarque : Mike Anton a fabriqué le PCB pour le L6234, qui (je crois)
remplacera cette piste et vous évitera le travail de l'assembler.
Voir ces liens pour les spécifications et les informations d'achat : Je n'ai pas trouvé grand-chose sur 3-
vais décrire ma compréhension de son fonctionnement.
Veuillez noter que je ne suis pas un ingénieur électricien et que nous apprécierions toute correction à mon explication.
Je
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 provoque le ralentissement du moteur tout en renvoyant le courant à la batterie. La méthode de freinage régénératif que j'ai utilisée
un article du laboratoire national d'Oakridge aux États-Unis,
un laboratoire qui fait de nombreuses recherches sur les moteurs automobiles.
provient d'
l'
tourne, la tension BEMF dans la phase du moteur fluctue de haut en bas. Dans la figure, cela montre le moment où le BEMF est élevé dans
étape B et faible dans l'étape.
Dans ce cas, il est possible que le courant passe de B à.
Les transistors bas de gamme s'allument et s'éteignent rapidement (
des milliers de commutateurs PWM par seconde).
Lorsque le transistor bas de gamme est activé
, le courant circule comme indiqué dans la première image.
électronique de puissance, le circuit est comme un dispositif 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 éteint, mais à une tension plus élevée, le courant traverse instantanément la diode 'anti-excitation' à côté de chaque transistor et retourne ensuite à la batterie. La diode empêche
de circuler dans cette direction (
en même temps le courant
contrairement à la conduite) .
Interagissez avec l'anneau magnétique pour produire un couple négatif qui ralentit le moteur.
Le transistor côté bas utilise un commutateur PWM, et le cycle de service du 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 certains modes de commutation amènent le moteur à produire autant de couple négatif que possible.
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 à très faible couple, donc il ne produit pas beaucoup de BEMF sauf à la vitesse la plus élevée
, 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).
De plus, puisque chaque trajet à travers la diode anti-excitation réduit la tension de plusieurs volts, cela réduit également considérablement l'efficacité.
J'utilise des diodes de redressement normales et je peux obtenir de meilleures performances. Si j'utilise des diodes spéciales avec une chute de tension plus faible,
vous trouverez ci-dessous une liste des entrées et sorties sur Arduino.
Incluez également des graphiques et des photos de ma carte. 2- Résistance
d'entrée numérique 1
120 K de Gnd 3
Hall d'entrée numérique 2 120 K
de Gnd 4
Hall 3 - 120 K de résistance de
de résistance
Entrée numérique de
Gnd 5 1 sortie numérique en série
avec une résistance de 400 ohms. Résistance de 400 ohms 7 3 Sorties numériques en série avec une résistance
ohms 9- Sortie numérique de l'EN 1
de 400
en série avec une résistance de 400 ohms 10- Sortie numérique de l'EN 2 en série avec une résistance de 400 ohms 11- La sortie numérique de l'EN 3 est en série avec une résistance de 400 ohms, un potentiomètre de 100 k Ohm, avec 5 V et masse
au
milieu. Ce potentiomètre est utilisé pour
connectés aux deux extrémités et broche analogique 0 connecté
/ * bldc_congroller 3.
L'alimentation 5 V est également utilisée pour
contrôler la vitesse du moteur et le volume de freinage.
faire fonctionner les capteurs à effet Hall (voir étape 5). Voici le programme complet que j'ai écrit pour Ardjuino, qui comprend des commentaires :
David Glazer La série X est un circuit intégré de pilote de moteur triphasé ST L6234 * faisant fonctionner un moteur d'entraînement de disque dans le sens des aiguilles d'
1. 1*3 par
une montre * avec freinage par récupération * vitesse et freinage du moteur contrôlés par un. potentiomètre unique * position du
moteur par trois capteurs à effet Hall *
*
en 6 étapes de changement de phase différentes sur les broches 9, 10, 11 à 32 kHz
Arduino reçoit la sortie de 3 capteurs à effet Hall (broches 2,3,4) * Et convertit leur combinaison
(correspondant à EN 1,2, 3*
Sortie PWM
3 DO sur les broches 5,6, 7, respectivement (IN 1,2,3) * Connectez la simulation
en 0
Cycle de service PWM et changement * entre la conduite et le freinage régénératif *. * 0- 499 : frein * 500- 523 :
au potentiomètre pour changer le
Taxi *
524-
1023 : moteur * commentaires de nombreuses lignes pour le débogage en imprimant diverses valeurs sur une connexion série */Int allstate1 ; 3 capteurs à effet Hall int MSPs = 0 ;
/Niveau de vitesse int bSpeed = 0 pour le moteur
; /Niveau de freinage de l'
accélérateur = 0 ;
/
/Hall 1 pinMode (3,INPUT) ;
);
Cette variable est utilisée avec l'entrée analogique pour mesurer
la position du réglage de l' écart du potentiomètre d'accélérateur (){pinMode(2,INPUT
pinMode motor driver (5,OUTPUT); /In 1 pinMode (6,OUTPUT); /In 2 pinMode (7,OUTPUT); /In 3 pinMode (9,OUTPUT);
/EN 1 pinMode (10,OUTPUT); /EN 2 pinMode (11,OUTPUT)
; /EN 3/serial. begin(9600); If you will be using a serial connection, please uncomment this line. The flush command at the end of the /* Réglez la fréquence PWM
= 0x07 ; /Créez une variable appelée prescalerVal et réglez-la pour
sur les broches 9, 10 et 11/réglez PWM sur 32 kHz pour les broches 9,
10
/effacez d'abord les trois bits de pré-diviseur : int prescalerVal
qu'elle soit égale au nombre binaire \'00000111\' TCCR1B & = ~ Prescaler /Et la valeur dans TCCR0B avec un nombre binaire de \'11111000\'/définissez maintenant le bit de pré-codage approprié : int bit de pré-codage 2 = 1 ;
/Définissez prescalerVal pour être égal au nombre binaire \'00000001\'
TCCR1B |
= prescalerVal2 /Ou valeur dans TCCR0B avec un nombre binaire de \'00000001\'
définissez PWM sur 32 kHz pour la broche 3,11 (Ce programme utilise uniquement la broche
11)
/
calerval ; /Et la valeur dans TCCR0B avec un nombre binaire
/Effacez d'abord les trois bits de pré-codage : TCCR2B & = ~ Pre-
de \'11111000\'
/définissez maintenant le bit de pré-
codage approprié : TCCR2B |
= Bit de pré-codage 2 /Ou la valeur dans TCCR0B avec un nombre binaire de \'00000001\'/
premier effacement ; les trois bits pré-codés :}
de la boucle vide/PRGROM (){ /Time = millis (); Temps
La boucle principale
après le démarrage du programme d'
impression. //Serial. print(\'\'); Throttle = analogRead (0); /Throttle potentiometer MSPs =
map ( Throttle, 512,1023, 0,255); carte (accélérateur, 0,511,255, 0);/freinage régénératif en demi-partie au bas du
pot/MSPs ed = 100;/pour le débogage HallState1 = lecture numérique (2);/lire la valeur d'entrée du hall 1 2 = lecture numérique (3);/lire la valeur d'entrée du hall 2 3 = lire la valeur
numérique du hall 3 (8, HallState1); Le capteur est en haute puissance, la LED s'allumera. Initialement utilisé pour déboguer
d'entrée/écriture
digitalWrite (9, HallState2); //digitalWrite(10, HallState3); Serial. print(\'H 2: \'
); Serial.
println(HallState2); Serial. print(\'H 3: \'); Serial. println(HallState3); Serial. println(\' \'); */ //Serial. println(mSpeed); //Serial. println(HallVal); //Serial. print(\'\'); /Monitor transistor output/delay (1000); /* T1 = digitalRead (2); //T1 = ~T1; T2 = digitalRead (4); //T2 = ~T2; T3 = digitalRead (5); //T3 = ~T3; Serial. print(T1); Serial. print(\'\t\'); Serial. print(T2); Serial. print(\'\t\'); Serial.
print(T3); Serial. print(\'\'); Serial. print(\'\'); Serial. print(digitalRead(3)); Serial. print(\'\t\'); Serial. print(digitalRead(9)); Serial. print
(\'\t\'); Serial. println(digitalRead(10)); Serial. print(\'\'); Serial. print(\'\'); //delay(
500
)
pour changer la valeur de la sortie
; *
/Driving phase change/each binary number has a case corresponding to
les différents
transistors activés/bit mathématique utilisé
IN sur le pilote L6234/ la sortie utilisée pour
déterminer si le transistor supérieur ou le transistor inférieur /la
arduino : /PORTD contient la sortie
de la broche
broche EN
/
0 = OFF,
pour chaque phase est contrôlé par l'analogie de la commande Arduino, définissez le rapport cyclique de PWM (
255 = ON ou la valeur du papillon contrôlée par le potentiomètre ).
fait référence à l'entrée Hall et
Cas 3 :/PORTD = 1111xxx00 ;
La sortie attendue de la broche 0-7 xxx
PORTD & = B00011111
ne doit pas être modifiée ; /Analowrite (9,mSpeed) ; 0)analogWrite(11,255); // Phase C en service = 100 % (transistor bas de gamme) ;
Cas 1 :/PORTD = B001xxx00 ;
/Sortie attendue de
& = B00011111
; transistor
)analogWrite(10,255); //Phase B activée (transistor bas de gamme)analogWrite(11,0)
; //Phase B désactivée (service = 0)pause ; Cas 5 :/PORTD
la broche 0-7 PORTD
& = B00011111
= B101xxx00 ; /Sortie attendue de la broche 0-7 PORTD
; analogWrite(10,255) ; analogWrite(11,mSpeed);
cas 4:/
/sortie attendue de la broche 0-7
B100xxx00;
PORTD =
PORTD & = B00011111; Cas 6:
/PORTD = B110xxx00 ; /
Sortie attendue de la broche 0-7 PORTD
& =
B00011111 ; PORTD b11. /Analowrite (9 255 ); analogWrite(10,mSpeed ); cas 2 :/PORTD =
régénératif/PORTD (Sortie de la broche IN
B010xxx00 ; B00011111; B0201700 PORTD | /Analowrite (9,0); analogWrite
Changement de phase de freinage
(10,mSpeed); analogWrite(11,255); break; }} /
sur L6234) Les broches sont toujours faibles, donc seuls les transistors faibles sur chaque phase sont utilisés pendant le freinage par régénération. /Sortie attendue de la broche 0-7 PORTD & = B00011111
; PORTD | = bym0000; // switch (HallVal
){ Cas 3 : écriture analogique (9,bSpeed) ; analogWrite(11,0); break;
Case 5: analogy writing (9,0); analogWrite(10,0); analogWrite(11,bSpeed); break;
Case 4: analogy writing (9,0); analogWrite(10,0); analogWrite(11,bSpeed); break; Case 6: analogy writing (9,0)
; analogWrite(10,bSpeed
); analogWrite(11,0); break; Case 2: analogy writing (9,0); analogWrite(10,bSpeed); analogWrite(11,0
); break; }} /Time = millis (); Time after the printing
program starts. println(time); //Serial. print(\'\'); //Serial. flush(); /If
, please uncomment} I think the operation that Arduino does in this project
you want to debug using a serial port
is so simple that it seems like a waste to do this task with a microprocessor. In fact,
la
programmation
application du L6234 recommandent un simple réseau de portes programmables (GAL16V8 en treillis semi-conducteur) pour faire ce travail. Je ne suis pas familier avec
Les notes d'
de cet appareil, mais le coût du circuit intégré n'est que de 2,39 $ à Newark. Une autre option consiste à assembler les portes logiques discrètes qui pourraient piloter le circuit intégré L6234 à partir de la sortie des trois capteurs à effet Hall. l'étape A
est présentée ci-dessous, ainsi que la table de vérité pour les trois étapes (Pour que le circuit logique des phases B et C, la porte \'non\' doit être commutée de l'autre côté du \'ou. Le problème avec cette approche est qu'il y a près de 20 connexions à chaque étape, il faut donc pas mal de travail pour l'assembler.
Il est préférable de la programmer comme une porte logique programmable.