În zilele noastre, pasionații sunt foarte interesați de controlul Brushless DC (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 ea, dar este mai dificil de utilizat. Există multe produse disponibile
în acest scop.
De exemplu, există o mulțime de controlere BLDC mici care funcționează foarte bine pentru aeronavele RC.
Pentru cei care doresc să se uite la controlul BLDC în profunzime, există, de asemenea, multe micro-controlere diferite și alte hardware electronice pentru utilizatorii industriali, care au de obicei o documentație foarte bună.
Până acum nu am găsit nicio descriere cuprinzătoare a modului de utilizare a microcontrolerului 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, nu am găsit multe produse potrivite pentru utilizare cu motoare mici și nici nu am aflat despre cum să controlez generatorul trifazat.
Această structură a fost inițial într-o poveste despre
calculul în timp real, continui să o fac după terminarea cursului.
Ideea proiectului este de a prezenta un model proporțional de mașină hibridă cu stocare a energiei la volant și frânare regenerativă.
Motorul folosit în proiect este un mic BLDC curățat de pe hard diskul deteriorat al computerului.
Acest manual descrie cum să utilizați microcontrolerul Arduino și
senzorii de poziție Hall-Afects în modurile de conducere și frânare regenerativă.
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 de motor real este orice funcție de siguranță, cum ar fi protecția împotriva supracurentului.
De fapt, cel mai rău lucru este că arzi motorul HD.
Cu toate acestea, implementarea protecției la supracurent 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 protecție împotriva supracurentului pentru a vă proteja motorul și propria dumneavoastră siguranță.
Vreau să încerc să folosesc acest controler cu un motor mai mare care poate face ceva \'adevărat\', dar încă nu îl am pe cel potrivit.
Am observat că eBay a vândut o mașină de 86 W cu aproximativ 40 de dolari.
Pare un candidat bun.
Există, de asemenea, un site web 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ă niciun senzor Hall pentru motor pe acest site web. Uf!
Scrierea acestei structuri este o treabă mare.
Sper să vă fie de folos, vă rugăm să faceți comentariile și sugestiile voastre.
Multimetru digital (DMM) -
Dacă DMM-ul dvs. are un osciloscop cu 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 inel magnetic al motorului de pe hard diskul computerului (
Jumătate din motor)
De pe un alt hard disk Mai multe (3-6)
Există un al doilea motor mic în discul argintiu de pe hard disk (DC periat OK)
Bandă de cauciuc sau (de preferință)
Motorul DC fără perii cu un mâner cu un alt motor placa de pâine electronică fir solid luna Arduino Duemilanove 120 k ohm rezistor liniar sau rezistor liniar șase ohmi Potenometru100 k ohmST microcircuit L6234 driver trifazat de motor IC doi condensatori de 100 uF un condensator de 10 nF un condensator de 220 nF un condensator de 1 uF un condensator de 100 uF trei diode receptoare Una 2.
Honeywell SS411A bipolar Hall-5
electronica de putere și circuitele senzorilor Hall pe care le-am arătat în acest manual (
este controlat folosind inducția potențialului înapoi).
Specificațiile și informațiile privind achizițiile pot fi găsite în aceste două link-uri: Dacă intenționați să realizați acest proiect, vă sugerez să vă acordați timp pentru a înțelege în detaliu cum funcționează și controlează BLDC.
Există un număr mare de referințe online (
vezi mai jos 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: Tranzistoare MOSFET semi-punte trifazate 6-
3 trepte de reducere a propoziției
Pulse Width Modulation of phase motor (PWM) Hall-
Microcip AVR443: senzori-referință generală motor DC Principii de bază pentru senzori digitali de poziție
Controlul motorului DC trifazat bazat pe perie DC
controlul motorului DC fără fază a senzorului Flying Star Hall, un videoclip bun de curățare a motorului hard diskului, dar autorul pare să ruleze motorul ca motor pas cu pas și ca motor pas cu pas. O pagină web de referință mai specifică pentru BLDC pe circuitul integrat al motorului l6234, inclusiv fișe de date, note de aplicare și informații de achiziție.
Probă gratuită pentru motorul fără perii PM pentru aplicații pentru vehicule electrice hibride.
Aceasta este singura lucrare pe care am găsit-o care descrie ordinea schimbării fazei de frânare regenerativă.
Această lucrare, frânarea regenerativă la vehiculele electrice este utilă, am împrumutat câteva numere de la ea, dar cred că descrie greșit cum funcționează regenerarea.
Am făcut acest proiect cu motor de unitate de disc reciclat pentru că era ușor de trecut și îmi place să folosesc un mic motor de joasă tensiune pentru a învăța cablul controlat de BLDC și să nu provoace probleme de siguranță.
În plus, configurația magnetică a senzorului Hall devine foarte simplă prin utilizarea inelului magnetic (rotorul)
de la al doilea dintre aceste motoare (vezi Pasul 4).
Dacă nu doriți să treceți la toate necazurile legate de instalarea și calibrarea senzorului Hall (pașii 5-7),
știu că există cel puțin câteva motoare de unitate CD/DVD încorporate în senzorul Hall.
Pentru a oferi motorului o inerție de rotire și pentru a le da puțină sarcină, am pus 5 hard disk-uri pe motor, lipite ușor împreună cu puțin adeziv puternic și lipite de motor (
Asta a făcut volanta în proiectul meu original).
Dacă intenționați să scoateți motorul de pe hard disk, aveți nevoie de o unitate torx T8 pentru a deșuruba Carcasa (
De obicei, există două șuruburi ascunse în spatele stick-ului pe eticheta centeron)
și șuruburi interne care țin motorul pe loc.
De asemenea, trebuie să scoateți capul Reader (
Sound circle executive)
În acest fel puteți scoate discul de memorie pentru a ajunge la motor.
În plus, veți avea nevoie de un al doilea motor de hard disk pentru a scoate rotorul din acel motor (
Există un magnet în interior).
Pentru a demonta motorul, am apucat rotorul (sus)
O menghină a motorului și am trântit-o pe stator (jos)
Cele două șurubelnițe sunt la 180 de grade una de cealaltă.
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 din lemn folosit în acest scop.
Am făcut 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 folosi strungul, puteți fixa rotorul inversat pe motor cu un adeziv puternic.
Imaginile 2 și 3 de mai jos arată interiorul unuia dintre motoarele pe care le-am demontat.
În prima jumătate (rotorul) sunt 8 poli (
Magnetul învelit în plastic).
În a doua jumătate (statorul)
există 12 fante (înfășurări).
Fiecare dintre cele trei faze ale motorului 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ă nicio atingere centrală, dar poate fi utilă în controlul fără senzori (
sper să lansez o notă despre controlul fără senzori într-o zi).
Dacă motorul dumneavoastră are patru contacte, puteți identifica faza cu ohmetru.
Rezistența dintre robinetul central și fază este jumătate din rezistența dintre oricare două faze.
Cea mai mare parte a literaturii despre motoarele BLDC se ocupă cu cele cu o formă de undă de potențial din spate în formă de scară, dar motorul hard diskului pare să aibă un potențial de spate care arată ca un sinusoidal (vezi mai jos).
Din câte știu, conducerea unui motor cu undă sinusoidală cu un PWM cu undă sinusoidală funcționează bine, deși eficiența poate scădea oarecum.
La fel ca toate motoarele BLDC, acesta este alcătuit din pod trifazat
semitranzistor (
vezi a doua fotografie de mai jos).
Folosesc IC-ul fabricat de ST Micro (L6234)
pentru pod, cunoscut și sub numele de driver de motor.
Conexiunea electrică a lui L6234 este prezentată în pasul 8.
A treia fotografie de mai jos prezintă o diagramă schematică a driverului motorului și a celor trei faze ale motorului.
Pentru ca motorul să funcționeze în sensul acelor de ceasornic, comutatorul se va face în următoarea ordine (
prima literă este tranzistorul de sus și a doua literă este tranzistorul de jos)
: Pasul 1 2 3 4 5 6 în sensul acelor de ceasornic: CB, AB, AC, BC, BA, CA în sens invers acelor de ceasornic: BC, BA, CA, CB, CB, AB,
secvența electrică necesită o secvență electrică în trepte. de 360, dar doar un grad fizic de 90 pentru aceste motoare.
Prin urmare, viteza de rotație a fiecărui motor are loc de patru ori.
Cele două secvențe par să fie aceleași, dar nu sunt la fel deoarece pentru
secvența în 6 pași, pentru CW, direcția curentului prin fază este o singură direcție, iar pentru CCW, direcția curentului este opusă.
Puteți vedea acest lucru singur, aplicând tensiunea bateriei sau a sursei de alimentare la 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 pe fază într-una dintre secvențele de mai sus, puteți roti motorul manual.
Tranzistoarele și microcontrolerele completează toate aceste comutatoare foarte rapid, comutând de sute de ori pe secundă atunci când motorul funcționează la viteză mare.
De asemenea, vă rugăm să rețineți că dacă tensiunea este aplicată ambelor 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 ale motorului.
Aceasta este o undă sinusoidală.
Când valul trece prin x-
Shaft, cuplul furnizat de această fază este zero. În
secvența de schimbare a fazei BLDC în șase pași care nu s-a întâmplat niciodată.
Înainte ca cuplul 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 senzori Hall din interiorul motorului.
Dacă aveți un astfel de motor, puteți sări peste acest pas.
De asemenea, știu că există cel puțin câteva motoare de drive CD/DVD încorporate deja în senzorul Hall.
Când motorul se rotește, se folosesc trei senzori Hall 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 schimbări pe roată, la 9000 RPM, mașina este schimbată la fiecare 280 de microsecunde.
Microcontrolerul Arduino funcționează la 16 MHz, deci fiecare ciclu de ceas este de 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ă durează 5 microsecunde pentru fiecare reducere a propoziției.
Motoarele HD nu au senzori Hall, asa ca este necesara instalarea lor pe exteriorul motorului.
Senzorul trebuie 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ă scot inelul magnetic de la același motor și să-l instalez cu susul în jos pe motorul care urmează să fie controlat.
Am instalat apoi trei senzori Hall deasupra acestui inel magnetic, la 30 de grade unul de celălalt pe arborele motorului (
rotație de 120 de grade a motorului electric).
Suportul meu pentru senzori Hall constă dintr-un suport simplu format din trei piese din aluminiu prelucrate de mine și trei piese 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 suporturilor pentru senzorii Hall va fi mai dificilă.
Aceasta este o modalitate posibilă de lucru: 1.
Găsiți o tavă de plastic de dimensiunea potrivită și puteți epoxiza cu grijă senzorul Hall. 2.
Pe hârtie este imprimat un șablon, care are același cerc cu raza inelului magnetic, iar cele trei semne sunt la 15 grade 3 una de cealaltă.
Lipiți șablonul pe disc și apoi utilizați șablonul ca ghid pentru a așeza cu atenție epoxidicul senzorului Hall.
Acum că senzorii Hall sunt instalați pe motor, conectați-i la circuitul prezentat mai jos și testați-i folosind un DMM sau un osciloscop pentru a vă asigura că ieșirea devine din ce în ce mai mică pe măsură ce motorul se rotește.
Rulez acești senzori sub 5 v folosind ieșirea de 5 v a Arduino.
Senzorul Hall are ieșire ridicată sau scăzută (1 sau 0).
Depinde dacă simt Antarctica sau Arctica.
Deoarece sunt la 15 grade unul de celălalt, magneții se rotesc sub ei și schimbă polaritatea la fiecare 45 de grade, acești trei senzori nu vor fi niciodată înalți sau scăzuti în același timp.
Când motorul se rotește, ieșirea senzorului este 6-
Modelul de pași prezentat în tabelul următor.
Senzorul trebuie aliniat cu mișcarea motorului, astfel încât unul dintre cei trei senzori să se schimbe exact la poziția de schimbare a fazei motorului.
În acest caz, muchia ascendentă a primului senzor Hall (H1)
ar trebui să fie în concordanță cu deschiderea combinației C (înalt) și B (jos).
Acest lucru este echivalent cu pornirea tranzistoarelor 3 și 5 din circuitul podului.
Aliniez senzorul cu magnetul cu un osciloscop.
Pentru a face acest lucru, trebuie să folosesc trei canale de domeniu.
Rotesc motorul prin conectarea la cureaua celui de-al doilea motor și măsoară potențialul invers între cele două combinații de faze (
A și B, A și C)
.
Ca undele din imaginea de mai jos.
Apoi uitați-vă la semnalul senzorului Hall 2 de pe canalul 3 al osciloscopului.
Suportul senzorului Hall este rotit până când marginea ascendentă a senzorului Hall este complet aliniată cu punctul în care trebuie efectuată schimbarea de fază (vezi mai jos).
Acum îmi dau seama că există doar două canale pentru a face aceeași calibrare.
Dacă BEMF a combinației de faze B-
Folosind C, marginea ascendentă a lui H2 va fi legată de curba BC.
Motivul pentru care schimbarea de fază trebuie efectuată aici este menținerea întotdeauna a cuplului motorului cât mai mare posibil.
Potențialul înapoi este proporțional cu cuplul și veți observa că fiecare schimbare de fază are loc atunci când potențialul înapoi trece sub curba următoarei etape.
Prin urmare, cuplul real constă din partea cea mai mare a fiecărei combinații de fază.
Dacă nu puteți accesa domeniul de aplicare, iată ideea mea de aliniere.
Acesta este de fapt un exercițiu interesant pentru oricine vrea să știe cum funcționează motorul BLDC.
Dacă motorul Faza 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ă cablul de alimentare negativ este mutat în faza C și alimentarea este pornită, motorul se va întoarce mai departe și se va opri.
Următoarea parte a secvenței va fi mutarea conductorului pozitiv în faza B etc.
Când faceți acest lucru, motorul se oprește întotdeauna acolo unde cuplul este zero, ceea ce corespunde unui loc în care diagrama trece prin axa x de pe diagramă.
Rețineți că punctul zero al combinației de a treia fază corespunde poziției de schimbare de fază a primelor două combinații.
Prin urmare, poziția cuplului zero a lui B-
Combinația C este locul în care doriți să poziționați marginea ascendentă a lui h2.
Marcați această poziție cu semne fine sau lame ascuțite și apoi reglați suportul senzorului Hall folosind DMM până când puterea H2 este exact mai mare pe acest marcaj.
Chiar dacă vă abateți puțin de la programul școlar, motorul ar trebui să funcționeze bine.
Faza cu trei motoare va primi energie de la driverul de motor trifazat L6234.
Am descoperit că acesta este un produs bun care poate rezista testului timpului.
Există multe modalități de a vă prăji accidental componentele atunci când utilizați electronice de putere, nu sunt inginer electrician și nu știu întotdeauna ce se întâmplă.
În programul meu de școală, am realizat propria noastră
ieșire cu 3 faze în jumătate de punte de 6 tranzistoare MOSFET și 6 diode.
Am folosit asta pe HIP4086 al celuilalt driver Intersil, dar avem o mulțime de probleme cu această setare.
Am ars o grămadă de tranzistori și cipuri.
Eu rulez L6234 (
deci motorul) la 12V.
L6234 are un set neobișnuit de intrări pentru a controla o jumătate de punte de 6 tranzistori.
Nu fiecare tranzistor are o intrare, ci o
intrare de activare (EN) pentru fiecare dintre cele trei trepte și apoi o altă intrare (IN)
Selectați ce tranzistor în faza deschisă (superioară sau inferioară).
De exemplu, porniți tranzistorul 1 (sus) și 6 (jos)
Ambele EN1 și EN3 sunt ridicate (
EN2 scăzut pentru a menține etapa închisă)
IN1 High, IN3 low.
Aceasta face combinația de faze-C.
În timp ce nota de aplicație L6234 sugera aplicarea PWM-ului folosit pentru a controla viteza motorului la pinul IN, am decis să o fac pe pinul EN pentru că, la acel moment, cred că ar fi „ciudat” să pornești alternativ tranzistoarele superioare și inferioare ale fazei \'.
De fapt, se pare că nu este nimic greșit să pornești ambele faze, deci nu au același potențial, deci nici tranzistorii de fază nu au același timp.
Cu metoda mea, faza înaltă este activată și dezactivată alternativ la frecvența PWM, în timp ce faza joasă rămâne aprinsă în timpul întregii schimbări de fază.
Mai jos este o schemă a unității motorului, am adăugat și o siguranță de 2
, 5 amperi între cablul pozitiv al bateriei și circuitul de ruptură 10 gF. Această cifră este
mică, deci pentru versiuni mai mari, vă rugăm să consultați documentația pentru L6234.
Notă: Mike Anton a făcut PCB pentru L6234, care (cred) va înlocui
această pistă și vă va economisi munca de asamblare.
puțin
Vedeți
aceste link-uri pentru specificații și informații despre cumpărare: nu am găsit
3- Vă rog să vă descriu
cum funcționează orice corecție la conducerea mea, sistemul de control trimite curentul în trei faze ale motorului într-un mod care maximizează cuplul în
frânarea regenerativă
prea multe despre
Tabelul de mai jos provine dintr-o altă lucrare care ajută la ilustrarea modului în care funcționează (
Cred că explicația dată în această
, dar de această dată este un cuplu negativ care face ca motorul să încetinească în timp ce trimite curentul înapoi la baterie
tensiunea BEMF în faza motorului
momentul în
fluctuează în sus și în jos
a doua lucrare este parțial incorectă, ține cont de faptul că, atunci când motorul se rotește,
de nivel scăzut se pornesc
, arată
care BEMF este ridicată în faza B și este posibilă, în cazul de frânare, până la curent. tranzistoarele
eliberare a motorului
și se opresc rapid ( Mii de comutatoare PWM pe secundă când comutatorul tranzistorului de vârf este oprit, curentul circulă așa cum se arată în prima imagine, circuitul este ca un dispozitiv numit boost, unde energia este stocată în faza de
curge instantaneu prin dioda „anti-excitare” de lângă fiecare tranzistor și apoi se întoarce la baterie .
, curentul
Dioda
la o tensiune mai mare
tranzistorul low-end este oprit, dar
împiedică trecerea curentului de la baterie la motor Comutatorul PWM, iar ciclul de funcționare al PWM controlează cantitatea de frânare, comutația motorului trece de la o combinație la alta în timp util pentru a menține cel mai mare cuplu posibil,
un anumit mod de comutare face ca motorul să producă cât mai mult cuplu negativ posibil
deoarece
Cred că principalul motiv este că motorul pe hard disk pe care îl folosesc este un motor cu cuplu foarte scăzut, deci nu produce prea mult BEMF decât la cea mai mare viteză
există o frânare regenerativă foarte mică (dacă există)
De asemenea, sistemul meu funcționează la o tensiune relativ scăzută (12 V)
,
. diode și pot obține o performanță mai bună dacă folosesc niște diode speciale cu o cădere de tensiune mai mică. Mai jos este o listă de
pe arduino.
Include, de asemenea, diagrame și fotografii
intrări și
ieșiri
plăcii
ale
mele
de 400 ohmi 6
. Rezistor
2 Ieșiri digitale în serie cu
rezistor de 400 ohmi 7 3
Ieșiri digitale în serie cu rezistor de
400 ohmi 9- Ieșire digitală EN 1
în serie cu rezistor de 400 ohmi 10- Ieșire digitală EN 2 în serie cu rezistor de 400 ohmi Ieșire digitală EN 1, 0 ohm în serie
și
pinul analogic 0 conectat la mijloc Acest
11-00
care
Potențiometru de 100 k Ohm, cu 5 v și gnd conectat la ambele capete
potențiometru este folosit pentru a controla viteza motorului și volumul de frânare este folosit și pentru a rula
senzori Hall (vezi pasul 5, care este tot programul pe care l-am scris pentru Ardjuino,
/* bldc.3.1 L6234 IC driver de motor trifazat
include comentarii:
* rulează motorul disc drive în sensul acelor de ceasornic * cu frânare regenerativă * turația motorului și frânarea controlate de un singur potențiometru * poziția motorului cu trei senzori cu efect Hall * Arduino primește ieșire de la 3 senzori hall (pini 2,3,4) * Și convertește combinația
lor
în
diferite de schimbare a fazei
6
trepte
ieșire 2,3,4 Corespunzător EN 1,2, 3*
3 DO pe pinii
pe pinii 9,1 * PWM la
frânare de conducere și frânare regenerativă * * 0-
5,6, 7, respectiv (IN 1,2,3) * Conectați simularea în 0 la potențiometru pentru a modifica ciclul de funcționare PWM și Schimbați * între
499 :
* 500- 523:
- Degajare motor * 10234 comentariu. by printing various values to
frână
(
*/Int allstate1; Variables of three hall sensors
3,2,1)int HallState2 ;
int HallState3; Int HallVal = 1;
/
a serial connection.
The binary value of all 3 hall sensors int MSPs = 0 ; /Speed level int bSpeed = 0 for motor; /Brake level of throttle = 0;
pinMode(2,INPUT); (9,OUTPUT );
/This variable is used together with the analog in to measure poziția de setare a potențiometrului de accelerație (){
1 pinMode (11,OUTPUT); /EN 3/serial start(9600
/EN
0x07 /Creați o variabilă numită prescalerVal și setați-o să fie egală cu numărul binar \'00000111\'
) ; 10/în primul rând, ștergeți toți cei trei biți de pre-divizor: int prescalerVal =
TCCR1B & = ~ Prescaler
/Și valoarea din TCCR0B cu un număr binar de \'1011110000111000111'int'; pre-codificarea bit 2 = 1; /Setează
egala numărul binar \'00000001\' TCCR1B |
prescalerVal pentru a
= prescalerVal2 / Sau valoare în TCCR0B
de \'00000001\'
cu un număr binar
/setează PWM la 32 kHz numai pentru programul 1,11
;
biți pre-caler mai întâi: TCCR2B & = ~ Pre -
calerval /Și valoarea în TCCR0B cu un număr binar de \'11111000
Bucla principală a buclei/PRGROM
\'/acum
setați bitul de pre-codificare adecvat: TCCR2B | biți pre-codificati:}
(){ /Time = millis ();
al
este la putere mare, LED- ul se va aprinde
/ Când
potențiometrului bSpeed = map (Trottle, 0,511,255, 0 /Frânare regenerativă în jumătatea potului/MSPs ed = 100; (8, HallState1);
senzorul corespunzător
Inițial pentru a depana digitalWrite (9, HallState2 //digitalWrite(10, HallState3)+ (2*HallState2)+ (4*HallState3/seria 3/Hall); \'); Pentru depanarea portului serial. println(
); Serial. print(\'H 2: \'); Serial. println(HallState2)
HallState1
; Serial. print(\'
H 3: \'); Serial
. println(HallState3); Serial. println(\' \'); Serial. println(\' \'); Serial. print(\' \'); 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(
; Serial. print(\'\t\'
3) )
)
;
Serial. print(digitalRead(9));
) ; //
println(digitalRead(10)); Serial print(\'\'
Serial. print(\'\t\'); Serial.
inferior /
; tranzistorul sau
pinul tranzistorului
EN pentru fiecare fază este controlat de
delay (500
)
PWM ( 0 = OFF, 255
analogia comenzii Arduino, setați ciclul de lucru al
= ON sau valoarea clapetei controlată de potențiometru dacă (accelerare > 511){switch (HallVal){ Cazul
3:/PORTD =
ieșirea 1111xxx
-ext PORTD &
B00011111 nu ar trebui să fie modificate PORTD | tranzistor) ruptură; tranzistor)AnalogWrite(11,0
:/PORTD
0-7
=
)
; analogWrite(11,mSpeed); Casă 4
= B100xxx00; B110xxx00 ;
Ieșire așteptată de pin
PORTD 000 =
B00011111;
/Analowrite(10,mSpeed = 11,0 PORT = 0 ;
B0201700 PORTD | = ;
/Analowrite ( 9,0)
;
analogWrite
(10,mSpeed); analogWrite(11,255); break; }}
/Regenerative brake phase change/PORTD (
Output of IN pin on L6234)
The pins are always low, so only low transistors on each phase are used during regen. braking. else{
/PORTD = B000xxx00;
/Expected output of pin 0-
7 PORTD & = B00011111; PORTD | =
; // switch (HallVal){
bym0000
Case 3: analogy writing (9,bSpeed); //analogWrite(9,0); analogWrite(10,0); analogWrite(
11,0); break;
Case 1: analogy writing (9,bSpeed); analogWrite(11,0); analogWrite(10,0); analogWrite(10,0;
analogWrite); 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 you want to debug using a serial port
, please uncomment} I think the operation ceea ce face Arduino în acest proiect este
pare
să faci această sarcină cu un microprocesor Împreună
o risipă
atât de simplu încât
porțile logice discrete.
Am venit cu câteva secvențe logice relativ simple care ar putea conduce CI L6234 de la ieșirea celor trei senzori Hall.
Diagrama 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, 'nu' sau
problema trebuie să fie în apropierea de cealaltă parte. 20 de conexiuni la fiecare etapă, așa că este nevoie de multă muncă pentru a-l pune împreună
Cel mai bine este să o programați ca o poartă logică programabilă.