Controlul motorului BLDC cu Arduino, Motor HD salvat și senzori de sală
Acasă » Blog » Controlul motorului BLDC cu Arduino, Motor HD salvat și senzori de sală

Controlul motorului BLDC cu Arduino, Motor HD salvat și senzori de sală

Vizualizări: 0     Autor: Site Editor Publicare Ora: 2020-09-02 Originea: Site

Întreba

Buton de partajare Facebook
Buton de partajare pe Twitter
Buton de partajare a liniei
Buton de partajare WeChat
Butonul de partajare LinkedIn
Butonul de partajare Pinterest
Butonul de partajare WhatsApp
Buton de partajare Kakao
Butonul de partajare Snapchat
Buton de partajare a telegramei
Buton de partajare Sharethis

În zilele noastre, pasionații sunt foarte interesați de controlul DC fără perii (BLDC)
în comparație cu motorul tradițional DC, performanța motorului s -a îmbunătățit, eficiența energetică s -a îmbunătățit și el, dar este mai dificil de utilizat. Multe produse din afara
raftului există în acest scop.
De exemplu, există o mulțime de mici controlere BLDCS care funcționează foarte bine pentru aeronavele RC.
Pentru cei care doresc să analizeze mai mult controlul BLDC, există, de asemenea, multe micro-controleri și alte hardware electronice pentru utilizatorii industriali, care au de obicei documentație foarte bună.
Până acum nu am găsit nicio descriere cuprinzătoare a modului de utilizare a micro-controlorului Arduino pentru controlul BLDC.
De asemenea, dacă sunteți interesat să faceți frânare regenerativă sau să folosiți un BLDC pentru generarea de energie electrică, nu am găsit multe produse potrivite pentru utilizare cu motoare mici și nici nu am aflat despre cum să controlez generatorul cu 3 faze.
Această structură a fost inițial într-o poveste despre
calculul în timp real, continuu să fac acest lucru după terminarea cursului.
Ideea proiectului este de a arăta un model proporțional al unei mașini hibride cu stocare de energie a volanului și frânare regenerativă.
Motorul utilizat în proiect este un mic BLDC -uri curățate de pe hard disk -ul computerului deteriorat.
Acest manual descrie modul de utilizare a micro-controlorului Arduino și Hall-
afectează senzorii de poziție în modurile de frânare de conducere și regenerare.
Vă rugăm să rețineți că vizitarea Oscillisoft este foarte utilă, dacă nu esențială, pentru a finaliza acest proiect.
Dacă nu puteți accesa domeniul de aplicare, am adăugat câteva sugestii despre cum să o faceți fără domeniul de aplicare (Pasul 5).
Un lucru pe care acest proiect nu ar trebui să -l includă în niciun controler al motorului efectiv este orice funcție de siguranță, cum ar fi protecția cu curent.
De fapt, cel mai rău lucru este că ardeți motorul HD.
Cu toate acestea, implementarea protecției supra-curent cu hardware-ul actual nu este dificilă și poate voi face asta la un moment dat.
Dacă încercați să controlați un motor mai mare, vă rugăm să adăugați o protecție curentă pentru a vă proteja motorul și propria siguranță.
Vreau să încerc să folosesc acest controler cu un motor mai mare, care poate face o lucrare \ „real \”, dar încă nu am cel potrivit.
Am observat că eBay a vândut o mașină de 86 W pentru aproximativ 40 de dolari.
Pare un candidat bun.
Există, de asemenea, un site RC numit \ „Gobrushless \” care vinde kituri care își asamblează propriul BLDC.
Acestea nu sunt prea scumpe și merită experiența pentru a construi unul.
Vă rugăm să rețineți că nu există un senzor de hol pentru motorul de pe acest site. Vai!
Scrierea acestei structuri este o treabă mare.
Sper că vi se pare util, vă rugăm să faceți comentariile și sugestiile dvs.
Digital multimetru (DMM)-
Dacă DMM-ul dvs. are un osciloscop de contor de frecvență (
este mai bine să aveți cel puțin 2 canale)
Driver T8 Torx (
aveți nevoie de unul dintre ele pentru a deschide orice hard disk).
Există un magazin de hardware bun.
Atelier de mașini și prototip rapid (
acestea sunt foarte utile, dar cred că acest proiect poate fi realizat fără ele).
Material bldc motor magnetic ring from computer hard disk (
Half of the motor)
From another hard driveSeveral (3-6)
There is a second small motor in the silver disk on the hard disk (DC brushed OK)
Rubber band or (preferably)
The brushless DC motor with a handle with another motor electronic bread plate solid wire month the Arduino Duemilanove 120 k ohm resistor six to 400 ohm resistor linear or rotating Poteniometer100 k OHMST Micro Circuit L6234 Driver cu motor trifazat IC Two 100 de condensatoare UF One 10 NF
unul
condensator Acest manual (
este controlat folosind inducția potențială înapoi).
Specificațiile și informațiile despre achiziții pot fi găsite în aceste două link -uri: dacă veți face acest proiect, vă sugerez să vă luați timp pentru a înțelege în detaliu modul în care funcționează și controlează BLDC.
Există un număr mare de referințe online (
vezi mai jos pentru câteva sugestii).
Cu toate acestea, includ câteva diagrame și tabele în proiectul meu care ar trebui să vă ajute să înțelegeți.
Iată o listă a conceptelor care cred că sunt cele mai importante pentru înțelegerea acestui proiect: MOSFET TRANSISTORS 3-faza pe jumătate de poion 6-
3-etape Reducerea propoziției
Lățimea pulsului Modularea motorului de fază (PWM) Hall-
Microchip AVR443: senzori de referință-referință generală DC Motor Basic pentru senzori de poziție digitală
Control de combatere a motorului DC, bazat pe motorul care se bazează pe bland, bazat pe motorul care se bazează pe
bld-bldc. Senzor Hall, un videoclip bun despre curățarea motorului pe hard disk, dar autorul pare să funcționeze motorul ca motor în pas și ca motor în pas. O pagină web de referință mai specifică pentru BLDC de pe L6234 Motor Drive IC, inclusiv fișe de date, note de aplicație și informații de cumpărare.
Proba gratuită pentru unitatea de motor fără perie PM pentru aplicații de vehicule electrice hibride.
Aceasta este singura lucrare pe care am descoperit -o care descrie ordinea schimbării fazei de frânare regenerative.
Această lucrare, frânarea regenerativă în vehicule electrice este utilă, am împrumutat câteva numere din ea, dar cred că descrie incorect cum funcționează regenerarea.
Am făcut acest proiect cu motor de antrenare pe disc reciclat, deoarece a fost ușor să trec și îmi place să folosesc un motor mic de joasă tensiune pentru a învăța cablul controlat de BLDC și nu pentru a provoca probleme de siguranță.
În plus, configurația magnetului senzorului Hall devine foarte simplă folosind inelul magnetic (rotor)
din al doilea dintre aceste motoare (vezi Pasul 4).
Dacă nu doriți să mergeți la toate dificultățile de instalare și calibrare a senzorului Hall (pașii 5-7)
știu că există cel puțin unele motoare CD/DVD Drive încorporate în hol.
Pentru a oferi o inerție de întoarcere motorului și pentru a le oferi o mică sarcină, am pus 5 hard disk -uri pe motor, lipit ușor împreună cu puțin lipici puternic și lipit de motor (
acest lucru a făcut ca volanul să fie în proiectul meu original).
Dacă aveți de gând să scoateți motorul de pe hard disk, aveți nevoie de o unitate T8 Torx pentru a deșuruba carcasa (
de obicei, există două șuruburi ascunse în spatele bățului în eticheta Centeron)
și șuruburi interne care țin motorul în loc.
De asemenea, trebuie să eliminați cititorul capului (
executivul cercului de sunet)
în acest fel puteți scoate discul de memorie pentru a ajunge la motor.
În plus, veți avea nevoie de un al doilea același motor de hard disk pentru a scoate rotorul din acel motor (
există un magnet în interior).
Pentru a scoate motorul, am apucat rotorul (de sus)
o menghină a motorului și l -am prins pe stator (partea de jos)
cele două șurubelnițe sunt la 180 de grade distanță.
Nu este ușor să țineți motorul pe o pereche suficient de strânsă fără deformare.
S-ar putea să doriți să construiți un
bloc V de lemn folosit în acest scop.
Am forat o gaură în inelul magnetic de pe strung, astfel încât să se potrivească confortabil pe partea de sus a motorului.
Dacă nu puteți utiliza strungurile, puteți repara rotorul inversat de pe motor cu un lipici puternic.
Imaginile 2 și 3 de mai jos arată interiorul unuia dintre motoarele pe care le -am dezasamblat.
În prima jumătate acolo (rotorul) sunt 8 poli (
magnet învelit în plastic).
În a doua repriză (statorul)
există 12 sloturi (înfășurări).
Fiecare dintre cele trei faze motorii are 4 sloturi în serie.
Unele motoare HD au trei contacte în partea de jos, un contact pe fază, iar celălalt este robinetul central al motorului (
unde se întâlnesc trei etape).
În acest proiect, nu este necesar niciun robinet central, dar poate fi util în control fără senzori (
sper să eliberez o notă despre controlul fără senzori într-o zi).
Dacă motorul dvs. are patru contacte, puteți identifica faza cu ohmetru.
Rezistența dintre robinetul central și faza este jumătate din rezistența dintre oricare două faze.
Cea mai mare parte a literaturii de pe BLDC Motors se ocupă de cei cu o formă de undă potențială în formă de scară, dar motorul pe hard disk pare să aibă un potențial de spate care arată ca un sinusoidale (vezi mai jos).
Din câte știu, conducerea unui motor cu undă sinusoidală cu un pachet sinusoidale PWM funcționează bine, deși eficiența poate scădea oarecum.
Ca toate motoarele BLDC, acesta este alcătuit din
podul cu jumătate de fază pe jumătate tranzistor (
a se vedea a 2-a fotografii de mai jos).
Folosesc IC -ul realizat de ST Micro (L6234)
pentru pod, cunoscut și sub numele de șofer de motor.
Conexiunea electrică a L6234 este prezentată în pasul 8.
A treia fotografie de mai jos arată o diagramă schematică a șoferului motorului și a celor trei faze ale motorului.
Pentru ca motorul să funcționeze în sensul acelor de ceasornic, comutatorul va fi realizat în ordinea următoare (
prima literă este tranzistorul superior, iar a doua literă este tranzistorul inferior) : Pasul 1 2 3 4 5 6 în sensul acelor
ceasornic: CB, AB, AC, BC, BA, CA Contractlywlly
de motoare.
Prin urmare, viteza de rotație a fiecărui motor are loc de patru ori.
Cele două secvențe par a fi aceleași, dar nu sunt aceleași, deoarece pentru
secvența în 6 etape, pentru CW, direcția curentă prin fază este o direcție, iar pentru CCW, direcția curentă este opusă.
Puteți vedea acest lucru singur, aplicând tensiunea bateriei sau sursa de alimentare pentru oricare dintre fazele motorului.
Dacă aplicați tensiunea, motorul se va mișca puțin într -o direcție și se va opri.
Dacă puteți schimba rapid tensiunea în fază într -una din secvențele de mai sus, puteți roti motorul manual.
Tranzistoarele și microcontrolerele completează toate aceste comutatoare foarte repede, schimbând de sute de ori pe secundă când motorul funcționează cu viteză mare.
De asemenea, vă rugăm să rețineți că, dacă tensiunea este aplicată în ambele faze, motorul se mișcă puțin și apoi se oprește.
Acest lucru se datorează faptului că cuplul este zero.
Puteți vedea acest lucru în a patra fotografie de mai jos, care arată potențialul din spate al unei perechi de faze motorii.
Acesta este un val de sine.
Când unda trece prin
ax X, cuplul furnizat de această fază este zero. În
secvența de schimbare a fazelor BLDC în șase etape care nu s-a întâmplat niciodată.
Înainte ca cuplul de pe o anumită fază să devină scăzută, puterea este comutată la o altă combinație de fază.
Motoarele BLDC mai mari sunt de obicei fabricate de senzorii Hall în interiorul motorului.
Dacă aveți un astfel de motor, atunci puteți sări peste acest pas.
De asemenea, știu că există cel puțin unele motoare de unitate CD/DVD încorporate în senzor de primire deja.
Când motorul se rotește, trei senzori de hol sunt folosiți pentru detectarea poziției, astfel încât schimbarea de fază se efectuează la momentul potrivit.
Motorul meu HD rulează până la 9000 rpm (150 Hz).
Deoarece există 24 de modificări pe roată, la 9000 rpm, mașina este modificată la fiecare 280 de microsecunde.
Micro-controlorul Arduino funcționează la 16 MHz, deci fiecare ciclu de ceas este 0. 06 microsecunde.
Nu știu câte cicluri de ceas sunt necesare pentru a efectua o reducere a propoziției, dar chiar dacă sunt necesare 100 de cicluri de ceas, adică este nevoie de 5 microsecunde pentru fiecare reducere a propoziției.
Motoarele HD nu au senzori de hol, așa că este necesar să le instalați pe exteriorul motorului.
Senzorul trebuie să fie fixat în raport cu rotația motorului și expus la o serie de poli care sunt în concordanță cu rotația motorului.
Soluția mea este să îndepărtați inelul magnetic din același motor și să îl instalați cu susul în jos pe motor pentru a fi controlat.
Am instalat apoi trei senzori de sală deasupra acestui inel magnetic, la 30 de grade unul de celălalt pe arborele motorului (
rotația motorului electric de 120 de grade).
Suportul senzorului meu de hol este format dintr -un suport simplu format din trei piese din aluminiu prelucrate de mine și trei părți din plastic realizate pe un prototip rapid.
Dacă nu aveți aceste instrumente, nu ar trebui să fie dificil să găsiți o altă modalitate de a indica poziția.
Crearea de paranteze pentru senzorii Hall va fi mai dificilă.
Acesta este un mod posibil de a lucra: 1.
Găsiți o tavă de plastic de dimensiunea potrivită și puteți epoxida cu atenție senzorul holului. 2.
Un șablon este tipărit pe hârtie, care are același cerc ca raza inelului magnetic, iar cele trei mărci sunt la 15 grade 3 distanță.
Lipiți șablonul pe disc și apoi folosiți șablonul ca ghid pentru a așeza cu atenție senzorul de hol în loc.
Acum, când senzorii Hall sunt instalați pe motor, conectați -le la circuitul prezentat mai jos și testați -le folosind un DMM sau osciloscop pentru a vă asigura că ieșirea devine din ce în ce mai jos pe măsură ce motorul se rotește.
Eu rulez acești senzori sub 5 V folosind ieșirea Arduino 5 V.
Senzorul holului are o producție ridicată sau scăzută (1 sau 0),
depinde dacă simt Antarctica sau Arctica.
Deoarece sunt la 15 grade distanță, magneții se rotesc sub ei și schimbă polaritatea la fiecare 45 de grade, acești trei senzori nu vor fi niciodată mari sau mici în același timp.
Când motorul se rotește, ieșirea senzorului este 6-
Modelul de etapă prezentat în tabelul următor.
Senzorul trebuie să fie aliniat cu mișcarea motorului, astfel încât unul dintre cei trei senzori să se schimbe exact în poziția de schimbare a fazei motorului.
În acest caz, marginea în creștere a primului senzor de hol (H1)
ar trebui să fie în concordanță cu deschiderea combinației C (înalte) și B (scăzute).
Acest lucru este echivalent cu pornirea tranzistoarelor 3 și 5 în circuitul podului.
Aliniez senzorul cu magnetul cu un osciloscop.
Pentru a face acest lucru, trebuie să folosesc trei canale de aplicare.
Rotiți motorul conectându -mă la centura celui de -al doilea motor și măsoară potențialul din spate între cele două combinații de faze (
A și B, A și C)
Aceasta este două sinusoidale.
Ca și undele din imaginea de mai jos,
uitați -vă la semnalul senzorului 2 al sălii de pe canalul 3 al osciloscopului.
Suportul senzorului Hall este rotit până când marginea în creștere a senzorului holului este complet aliniată cu punctul în care trebuie efectuată schimbarea fazei (vezi mai jos).
Acum îmi dau seama că există doar două canale pentru a face aceeași calibrare.
Dacă BEMF a combinației de fază B-
folosind C, marginea în creștere a H2 va fi legată de curba BC.
Motivul pentru care ar trebui să se efectueze schimbarea de fază aici este să mențineți întotdeauna cuplul motorului cât mai sus.
Potențialul din spate este proporțional cu cuplul și veți observa că fiecare schimbare de fază are loc atunci când potențialul din spate trece sub curba de etapă următoare.
Prin urmare, cuplul real este format din cea mai înaltă parte a fiecărei combinații de fază.
Dacă nu puteți accesa domeniul de aplicare, aici este ideea mea de aliniere.
Acesta este de fapt un exercițiu interesant pentru oricine dorește să știe cum funcționează motorul BLDC.
Dacă faza A motor A este conectată (pozitivă) și B (negativă)
la sursa de alimentare și porniți sursa de alimentare, motorul se va roti puțin și se va opri.
Apoi, dacă plumbul de putere negativă este mutat în faza C și puterea este pornită, motorul se va întoarce mai departe și se va opri.
Următoarea parte a secvenței va fi mutarea avantajului pozitiv la faza B, etc.
Când faceți acest lucru, motorul se oprește întotdeauna unde cuplul este zero, ceea ce corespunde unui loc în care graficul trece prin axa X din grafic.
Rețineți că punctul zero al combinației din faza a treia corespunde poziției de schimbare a fazelor din primele două combinații.
Prin urmare, poziția cuplului zero a
combinației B-C este locul în care doriți să poziționați marginea în creștere a H2.
Marcați această poziție cu mărci fine sau lame ascuțite, apoi reglați suportul senzorului Hall folosind DMM până când ieșirea H2 este exact mai mare pe această marcă.
Chiar dacă vă abate puțin de la programul școlii, motorul ar trebui să funcționeze bine.
Cele trei faze motorii vor primi energie de la șoferul motor trifazat L6234.
Am constatat că acesta este un produs bun care poate susține testul timpului.
Există multe modalități de a vă prăji componentele din accidental atunci când utilizați electronice de putere, nu sunt inginer electric și nu știu întotdeauna ce se întâmplă.
În programul meu școlar, ne-am făcut propriul
producție de 3 faze de 6 tranzistoare MOSFET și 6 diode.
Am folosit acest lucru pe HIP4086 al celuilalt intersil al șoferului, dar avem o mulțime de probleme cu această configurație
am ars o grămadă de tranzistoare și cipuri.
Rulez L6234 (
deci motorul) la 12V.
L6234 are un set neobișnuit de intrări pentru a controla o jumătate de pondere de 6 tranzistoare.
Nu orice tranzistor are o intrare, ci o
intrare de activare (EN) pentru fiecare din cele trei etape, apoi o altă intrare (în)
selectează ce tranzistor în faza deschisă (superioară sau inferioară).
De exemplu, porniți tranzistorul 1 (superior) și 6 (inferior)
atât EN1 cât și EN3 sunt mari (
EN2 scăzute pentru a menține stadiul închis)
IN1 ridicat, IN3 scăzut.
Acest lucru face ca faza combinată-c.
În timp ce nota de aplicație L6234 a sugerat aplicarea PWM folosită pentru a controla viteza motorului la pin în pin, am decis să o fac pe pin
, deoarece, la acel moment, cred că ar fi \ „ciudat \„ să mă întorc pe tranzistorii superiori și inferiori ai fazei alternativ \ ”. Curent
.


​Versiuni mai mari, vă rugăm să consultați documentația pentru L6234.
NOTĂ: Mike Anton a făcut PCB pentru L6234, care va (cred)
să înlocuiască această piesă și să vă salveze munca de asamblare a acesteia.
Vedeți aceste link-uri pentru specificații și informații despre cumpărare: nu am găsit multe despre 3-
Voi descrie înțelegerea mea despre modul în care funcționează.
Vă rugăm să rețineți că nu sunt inginer electric și am aprecia orice corecție la explicația mea.
La conducere, sistemul de control trimite curentul în trei faze ale motorului într -un mod care maximizează cuplul.
În frânarea regenerativă, sistemul de control maximizează, de asemenea, cuplul, dar de data aceasta este un cuplu negativ care face ca motorul să încetinească în timp ce trimite curentul înapoi la baterie.
Metoda de frânare regenerativă pe care am folosit -o a venit dintr -o lucrare de la Laboratorul Național Oakridge din Statele Unite. S. Govt.
Un laborator care face o mulțime de cercetări pentru motoarele auto.
Graficul de mai jos provine dintr -o altă lucrare care ajută la ilustrarea modului în care funcționează (
cu toate acestea, cred că explicația dată în această a doua lucrare este parțial incorectă).
Rețineți că atunci când motorul se rotește, tensiunea BEMF în faza motorului fluctuează în sus și în jos.
În figură, arată momentul în care BEMF este ridicat în stadiul B și în stadiu scăzut.
În acest caz, este posibil ca curentul să curgă de la B la.
Critic pentru frânarea regenerativă, tranzistoarele de nivel scăzut se pornesc și se opresc rapid (
mii de comutatoare PWM pe secundă).
Când comutatorul de tranzistor de înaltă calitate este oprit;
Când tranzistorul scăzut este pornit, curentul curge așa cum se arată în prima imagine.
În ceea ce privește electronica de putere, circuitul este ca un dispozitiv numit Converter Boost, unde energia este stocată în faza motorului (
Wikipedia are un articol bun care explică modul în care funcționează convertorul Boost).
Această energie este eliberată atunci când tranzistorul de ultimă generație este oprit, dar la o tensiune mai mare, curentul curge instantaneu prin dioda \ „anti-excitare \” de lângă fiecare tranzistor și apoi se întoarce la baterie.
Dioda împiedică curgerea curentului de la baterie la motor.
În același timp, curentul în această direcție (
contrar conducerii)
interacționează cu inelul magnetului pentru a produce un cuplu negativ care încetinește motorul în jos.
Tranzistorul cu partea mică folosește un comutator PWM, iar ciclul de serviciu al PWM controlează cantitatea de frânare.
Când conduceți, comutarea motorului trece de la o combinație la următoarea, în timp util, pentru a menține cel mai mare cuplu posibil.
Comutarea frânei regenerative este foarte similară, deoarece unele moduri de comutare determină motorul să producă cât mai mult cuplu negativ.
Dacă vizionați videoclipul în primul pas, puteți vedea că frâna regenerativă funcționează bine, dar nu funcționează bine.
Cred că principalul motiv este că motorul pe hard disk pe care îl folosesc este un motor de cuplu foarte scăzut, deci nu produce mult BEMF decât cu cea mai mare viteză.
Cu o viteză mai mică, există foarte puțină frânare regenerativă (dacă există).
De asemenea, sistemul meu rulează la o tensiune relativ mică (12 V)
Mai mult, deoarece fiecare cale prin dioda anti-extitoare reduce tensiunea cu mai multe volți, acest lucru reduce foarte mult eficiența.
Folosesc diode de redresare normale și s -ar putea să obțin performanțe mai bune dacă folosesc unele diode speciale cu cădere de tensiune mai mică.
Mai jos este o listă de intrări și ieșiri pe Arduino.
De asemenea, includeți diagrame și fotografii ale consiliului meu. 2-
Hall de intrare digital 1
120 K Rezistența GND 3
Intrare digitală Hall 2
120 K Rezistența GND 4
Hall 3 Intrare digitală-
120 K Rezistența GND 5
1 DIGITAL OUTPUT DIGITAL În serie cu 400 Ohm Rezistor 6
2 Ieșiri digitale în serie
cu 400 ohm Rezistor 7 3 Outputuri
digitale în seria cu 400 ohm Rezistent 9-
Digital Output of En 1 Rezistența OHM 11-
Ieșirea digitală EN 3 este în serie cu un rezistor de 400 ohm, 100 K ohm potențiometru, cu 5 V și GND conectate la ambele capete și pinul analog 0 conectat la mijloc.
Acest potențiometru este utilizat pentru a controla viteza motorului și volumul de frânare.
Sursa de alimentare 5 V este de asemenea folosită pentru a rula senzori ai sălii (vezi pasul 5).
Iată întregul program pe care l -am scris pentru Ardjuino, care include comentarii:/* bldc_congroller 3. 1.
1* 3 de David Glazer.
Seria X este ST L6234
Driverul motorului cu 3 faze IC * care rulează pe disc Motor în sensul acelor de ceasornic * cu frânare regenerativă * Viteza motorului și frânarea controlate de un singur potențiometru * Poziția motorului cu trei
senzor cu efect de hall * Arduino primește ieșire de la 3 senzori de hol (pini 2,3,4)
și convertește combinația lor la 6 pași de schimb de fază (PINS 9, 10, 11 la 32 khz *
* 1,2, 3 * 3 Do pe pinii 5,6, 7, respectiv (în 1,2,3)
simularea în 0 la potențiometrul pentru a schimba ciclul de serviciu PWM și schimbarea între conducere și frânarea
*
regenerativă
Conectați
* Allstate1
;




​() {pinMode (2, intrare);
/Hall 1 pinmode (3, intrare);
/Hall 2 pinmode (4, intrare);
/L6234 Hall 3/Ieșirea driverului de motor Pinmode (5, ieșire);
/În 1 pinmode (6, ieșire);
/În 2 pinmode (7, ieșire);
/În 3 pinmode (9, ieșire);
/Ro 1 pinmode (10, ieșire);
/Ro 2 pinmode (11, ieșire);
/Ro 3/serial. începe (9600);
Dacă veți utiliza o conexiune în serie, vă rugăm să nu vă dezamăgiți această linie.
Comanda Flush la sfârșitul programului.
/* Setați frecvența PWM pe pinii 9, 10 și 11/set PWM la 32 kHz pentru pinii 9, 10/mai întâi ștergeți toate cele trei biți pre-divideri: int prescaleval = 0x07;
/Creați o variabilă numită PrescAleval și setați-o să fie egală cu numărul binar \ '00000111 \' tccr1b & = ~ prescaler
/și valoarea în TCCR0B cu un număr binar de \ '11111000 \' /Acum setați bitul pre-encoding corespunzător: int pre-codificare bit 2 = 1;
/Set prescaleval pentru a egala numărul binar \ '00000001 \' tccr1b | = prescaleval2;
/Sau valoare în TCCR0B cu un număr binar de \ '00000001 \' /set pwm la 32 kHz pentru pin 3,11 (
acest program folosește doar pin 11)
/ștergeți toate cele trei biți pre-caler mai întâi: tccr2b & = ~ pre-calervale;
/Și valoarea în TCCR0B cu un număr binar de \ '11111000 \'/Acum setați bitul de pre-codificare corespunzător: TCCR2B | = Bit pre-codificare 2;
/Sau valoarea din tccr0b cu un număr binar de \ '00000001 \'/mai întâi ștergeți toate cele trei biți pre-codificate:}
bucla principală a buclei/prgrom void () {
/time = Millis ();
Timp după începerea programului de imprimare. println (timp); //Serial. imprimare(\'\');
Throttle = analogread (0);
/Potențiometru de accelerație MSPS = MAP (
accelerație, 512,1023, 0,255);
/Conducerea este mapată în jumătatea superioară a potențiometrului BSpeed ​​= MAP (
accelerație, 0,511.255, 0);
/Frânare regenerativă la jumătate din partea de jos a POT-ului/MSPS ED = 100;
/Pentru debugging hallstate1 = digitalRead (2);
/Citiți valoarea de intrare din sala 1 2 = citire digitală (3);
/Citiți valoarea de intrare din sala 2 3 = citire digitală (4);
Citiți valoarea de intrare/scrierea numerică din Hall 3 (8, Hallstate1);
/Când senzorul corespunzător are o putere mare, LED -ul va porni
inițial utilizat inițial pentru a depana DigitalWrite (9, Hallstate2);
// DigitalWrite (10, Hallstate3); Hallval = (hallstate1)+ (2*hallstate2)+ (4*hallstate3);
/Calculați valorile binare ale 3 senzori de hol/seria. imprimare (\ 'H 1: \');
Pentru depanarea portului serial. println (hallstate1); Serial. imprimare (\ 'H 2: \'); Serial. println (hallstate2); Serial. imprimare (\ 'H 3: \'); Serial. println (hallstate3); Serial. println (\ '\');
*/// serial. println (mspeed); //Serial. println (Hallval); //Serial. imprimare(\'\');
/Monitorizează ieșirea/întârzierea tranzistorului (1000);
/* T1 = digitalRead (2); // t1 = ~ t1;
T2 = digitalRead (4); // t2 = ~ t2;
T3 = digitalRead (5); // t3 = ~ t3; Serial. tipărire (t1); Serial. print (\ '\ t \'); Serial. tipărire (t2); Serial. print (\ '\ t \'); Serial. tipărire (t3); Serial. imprimare(\'\'); Serial. imprimare(\'\'); Serial. tipărire (digitalRead (3)); Serial. print (\ '\ t \'); Serial. tipărire (DigitalRead (9)); Serial. print (\ '\ t \'); Serial. println (digitalRead (10)); Serial. imprimare(\'\'); Serial. imprimare(\'\'); // întârziere (500);
*/Schimbarea fazei de conducere/Fiecare număr binar are un caz corespunzător diferitelor tranzistoare pornite/biți Matematica utilizată pentru a modifica valoarea de ieșire Arduino:/Portd conține ieșirea PIN -ului de pe șoferul L6234/Ieșirea folosită pentru a determina dacă tranzistorul superior sau tranzistorul inferior/pinul pentru fiecare fază este controlat de analogia de comandă Arduino, setată ciclul de taxă de funcție de PWM (
0 = Off, 255 = Valoare controlată de potențiometru). if (throttle> 511) {switch (hallval) {
case 3:/portd = 1111xxx00;
/Ieșirea preconizată a pinului 0-
7 xxx se referă la intrarea Hall și Portd & = B00011111 nu trebuie modificată;
Portd | = B01100000;
/Analowrite (9, mspeed);
PWM pe un
analog de fază (tranzistor de înaltă calitate) (10,0);
Faza B închiderea (datorie = 0) Analogwrite (11.255); // Faza C pe -Duty = Break 100% (
tranzistor de la nivel scăzut);
Cazul 1:/portd = b001xxx00;
/Ieșirea preconizată a pinului 0-
7 portd & = b00011111;
/Portd | = B00100000;
/Analowrite (9, mspeed);
PWM pe un
analog de fază (tranzistor de înaltă calitate) (10.255); // faza B pe (
tranzistor de la nivel scăzut) analog (11,0); // Faza B Off (Duty = 0) pauză;
Cazul 5:/portd = b101xxx00;
/Ieșirea preconizată a pinului 0-
7 portd & = b00011111;
/Portd | = B10100000; AnalogWrite (9,0); Analogwrite (10.255); AnalogWrite (11, mspeed); pauză;
Cazul 4:/portd = b100xxx00;
/Ieșirea preconizată a pinului 0-
7 portd & = b00011111;
Portd | = BYM000;
/Analowrite (9.255); AnalogWrite (10,0); AnalogWrite (11, mspeed); pauză;
Cazul 6:/portd = b110xxx00;
/Ieșirea preconizată a pinului 0-
7 portd & = b00011111;
Portd B11. 000 =;
/Analowrite (9.255); AnalogWrite (10, mspeed); Analogwrite (11,0); pauză;
Cazul 2:/portd = b010xxx00;
/Ieșirea preconizată a pinului 0-
7 portd & = b00011111;
B0201700 Portd | =;
/Analowrite (9,0); AnalogWrite (10, mspeed); Analogwrite (11.255); pauză; }}
/Schimbarea fazei de frână regenerative /Portd (
ieșire a pinului pe L6234)
Pinii sunt întotdeauna scăzute, astfel încât doar tranzistoarele scăzute pe fiecare fază sunt utilizate în timpul regenei. frânare. else {
/portd = b000xxx00;
/Ieșirea preconizată a pinului 0-
7 portd & = b00011111;
Portd | = BYM0000; // switch (hallval) {
caz 3: scriere analogică (9, BSpeed); // analogWrite (9,0); AnalogWrite (10,0); Analogwrite (11,0); pauză;
Cazul 1: scriere analogică (9, BSPEED); AnalogWrite (10,0); Analogwrite (11,0); pauză;
Cazul 5: scriere analogică (9,0); AnalogWrite (10,0); AnalogWrite (11, BSpeed); pauză;
Cazul 4: scriere analogică (9,0); AnalogWrite (10,0); AnalogWrite (11, BSpeed); pauză;
Cazul 6: scriere analogică (9,0); AnalogWrite (10, BSpeed); Analogwrite (11,0); pauză;
Cazul 2: scriere analogică (9,0); AnalogWrite (10, BSpeed); Analogwrite (11,0); pauză; }}
/Time = milis ();
Timp după începerea programului de imprimare. println (timp); //Serial. imprimare(\'\'); //Serial. culoare();
/Dacă doriți să depanați folosind un port serial, vă rugăm să nu vă dezamăgiți}
Cred că operațiunea pe care o face Arduino în acest proiect este atât de simplă încât pare o deșeuri să facă această sarcină cu un microprocesor.
De fapt, notele de aplicație L6234 recomandă un tablou de poartă programabil simplu (
Gal16v8 realizat din semiconductor de zăpadă) pentru a face această treabă.
Nu sunt familiarizat cu programarea acestui dispozitiv, dar costul IC este de doar 2 dolari. 39 la Newark.
Alte circuite integrate similare sunt, de asemenea, foarte ieftine.
O altă opțiune este să împachetați porțile logice discrete.
Am venit cu câteva secvențe logice relativ simple, care ar putea conduce L6234 IC de la ieșirea celor trei senzori ai sălii.
Graficul pentru etapa A este prezentat mai jos, iar tabelul de adevăr pentru toate cele trei etape (
pentru circuitul logic al fazelor B și C, ușa \ „nu \” trebuie să fie schimbată la cealaltă parte a \ ”sau.
Problema cu această abordare este că există aproape 20 de conexiuni la fiecare etapă, astfel încât să fie nevoie de destul de mult pentru a -l pune împreună
.

Grupul Hoprio Un producător profesionist de controlor și motoare, a fost înființat în 2000. Sediul grupului din orașul Changzhou, provincia Jiangsu.

Link -uri rapide

Contactaţi-ne

WhatsApp: +86 18921090987 
Tel: +86-18921090987 
Adăugare: nr.19 Mahang South Road, districtul de înaltă tehnologie Wujin, orașul Changzhou, provincia Jiangsu, China 213167
Lăsaţi un mesaj
CONTACTAŢI-NE
Copyright © 2024 Changzhou Hoprio E-Commerce Co., Ltd. Toate drepturile rezervate. Sitemap | Politica de confidențialitate