Î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, 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 motor inel magnetic 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)
Banda de cauciuc sau (de preferință)
Motorul DC fără perii cu un mâner cu un alt motor placă electronică de pâine fir solid luna Arduino Duemilanove 120 k ohm rezistență rotativă sau rezistor liniar șase ohm40 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ă aveți de gând 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 (rotor)
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 rotație și pentru a le da puțină sarcină, am pus 5 hard disk-uri pe motor, lipite ușor împreună cu puțin lipici 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 stickului 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 lesat-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ă de 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 sinusoid (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 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 superior și a doua literă este tranzistorul inferior)
: 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, AB, AC
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ă 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 plasa 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 școlar, am realizat propria noastră
ieșire trifazată în jumătate de punte din 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 tranzistorii de sus și de jos ai 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ă joasă 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 recirculare 10 gF.
Această cifră este puțin mică, deci pentru versiuni mai mari, vă
Notă: Mike Anton a făcut PCB pentru
înlocuiți această pistă și să vă economisiți munca de asamblare. Vedeți aceste link-uri pentru specificații și informații despre cumpărare
L6234 , care va (cred) să
rugăm să consultați documentația pentru L6234.
vă rog să vă descriu cum funcționează orice corecturi la explicația
3-
mea. Când conduc, sistemul de control trimite curentul în trei faze ale motorului într-un
mod care maximizează cuplul în frânarea regenerativă ,
: nu am găsit prea multe despre
de mai jos vine dintr-o altă lucrare care ajută la ilustrarea
dar de această dată este un cuplu negativ care face
ca motorul să încetinească în timp ce trimite curentul înapoi la baterie de
Graficul
modului în care funcționează (Cred că explicația dată în această
cercetare pentru motoare auto
a doua lucrare este parțial
incorectă, când motorul se
rotește, tensiunea BEMF în faza motorului fluctuează în sus și în jos, arată momentul în
care BEMF este ridicat în stadiul B și curentul este posibil, de la nivelul B până la curent.
cum se arată în
tranzistoarele de nivel scăzut se pornesc și se opresc rapid (Mii de comutatoare PWM pe secundă când comutatorul tranzistorului de vârf este oprit, curentul circulă așa
, curentul curge instantaneu
prima imagine, circuitul
anti-excitare ' de lângă fiecare tranzistor și apoi revine la baterie.
prin dioda '
este ca un dispozitiv numit convertizor de amplificare, unde energia este stocată în faza de eliberare a motorului tranzistorul low-end este oprit, dar la o tensiune mai mare
Dioda î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 pentru a menține cel mai mare cuplu posibil, deoarece un anumit mod de comutare face ca motorul să producă
În timpul conducerii,
cât mai mult cuplu negativ posibil 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
la cea mai mare viteză, există o frânare regenerativă foarte mică (dacă
la o tensiune relativ scăzută (12 V
BEMF decât
diode și pot obține o performanță mai bună dacă folosesc niște diode speciale cu o cădere de tensiune mai mică.
jos este o listă de intrări și ieșiri
există) De asemenea, sistemul meu funcționează
.
)
asemenea, diagrame
de pe arduino. Include, de
intrare digitală
K a Gnd 3
Mai
și fotografii ale plăcii mele 2- Rezistența de
120
Rezistența de intrare digitală 2 120 K
a seriei de ieșire Gnd 120.
Rezistor de 400 ohmi 6 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ă
rezistor de 400 ohmi 10- Ieșire digitală
EN 1 în serie cu
.
EN 2 în serie cu rezistor de 400 ohmi Ieșire digitală EN 1, 0 ohm în serie 11-0h
Potențiometru de 100 k Ohm, cu 5 v și gnd conectat la ambele capete și
pin analogic 0 conectat la mijloc Acest 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
IC driver de motor trifazat * rulează motorul disc drive în sensul acelor de ceasornic * cu frânare regenerativă * turația motorului și frânarea
, care este tot programul scris de Ardjuino, care include comentarii
L6234
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
:/ * bldc.3.1
*
lor
9,1
în 6 trepte diferite de schimbare a fazei pe pinii
PWM la ieșire 2,3,4 Corespunzător EN 1,2
potențiometru pentru a schimba ciclul de funcționare PWM și Schimbați
, 3
*3 DO pe pinii 5,6, 7, respectiv (IN 1,2,3) * Conectați simularea
de conducere și frânare regenerativă * * 0- 499:
în 0 la
frână * 500- 523: -
* între frânare
10234
Degajări motor *
comentarii. by printing various values to
a serial connection. */
Int allstate1; Variables of three hall sensors (3,2,1
)int HallState2; int HallState3; Int HallVal = 1; /The binary value of all 3 hall sensors int MSPs = 0;
/Speed level int bSpeed = 0 for motor;
/Brake level of throttle = 0; /This variable is used together with the analog in
to measure poziția de setare a potențiometrului de accelerație (){pinMode(2,INPUT); (9,OUTPUT);
/EN 1 pinMode (11,OUTPUT
); /EN 3/serial start(9600)
; 10/în primul rând, ștergeți toți cei trei biți de pre-divizor: int prescalerVal = 0x07
/Creați o variabilă numită prescalerVal și setați-o să fie egală cu numărul binar \'00000111\' TCCR1B & = ~ Prescaler /Și valoarea din
cu un număr binar de \'1011110000111000111100\' int\' pre-codificare bit 2
TCCR0B
= 1;
Setează prescalerVal pentru a egala numărul binar \'
/
TCCR1B | = prescalerVal2
00000001\'
/Sau valoarea în TCCR0B cu un număr binar de \
'00000001\'
/setează PWM la 32 kHz numai pentru programul 1,11;
caler mai întâi: TCCR2B & = ~ Pre-calerval
biți pre -
cu un număr binar de \'11111000\'
/Și valoarea în TCCR0B
/acum setați bitul de pre-codificare adecvat: TCCR2B | biți pre-
codificati:
} Bucla principală a buclei/PRGROM (){ /Time = milis (); timp după începerea
programului de imprimare(\'\' = analogRead/Throttle MSPs = mapping, 2, 025); a potențiometrului bSpeed = map (Trottle, 0,511,255, 0 /Frânare regenerativă semi-parte în partea de jos a potului /
; (8, HallState1); /Când senzorul corespunzător
este la putere mare, LED-ul se va aprinde inițial pentru a
MSPs ed = 100
depana digitalWrite (9, HallState2 //digitalWrite(10, HallState3)+ (2
*HallState2)
+ (4*HallState3/Hall value3/Hall); \'); Pentru depanarea portului serial. println(HallState1); Serial. print(\'H 2: \'); Serial. println(HallState2); 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(3))
)
;
Serial. print
; Serial. print(digitalRead(9)); Serial. print(\'\t\
(\'\t\ ')
)
'
;
Serial. println
(digitalRead(10)); Serial print(\'\'); *
phase change/fiecare numar binar are
un
/Driving
caz corespunzator cu diferitele tranzistori activate/bit math folosit pentru a modifica valoarea de
inferior/EN pentru fiecare fază
tranzistorului
(
iesire a arduino-ului/2. tranzistorul sau pinul
>
accelerare
este controlat de analogia comenzii Arduino, setați ciclul de lucru al PWM ( 0 = OFF, 255 = ON sau valoarea clapetei controlată de potențiometru dacă
511
){switch (HallVal){
Cazul 3:/PORTD =
ieșirea 1111xxx-
ext PORTD & = B00011111
nu ar trebui să fie
PORTD | tranzistor) ruptură; tranzistor)AnalogWrite(11,0); analogWrite(11,mSpeed
modificate
) ; Casă 4
:
/PORTD = Ieșire 0-7
Ieșire așteptată de pin 0-7
PORTD = bym000; B110xxx00;
PORTD 000 = /Analowrite
(10,mSpeed = 11,0 PORT = 0 ; B00011111; 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 | = bym0000; // switch (HallVal){ Case
PORTD & = B00011111;
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)
9,0
); analogWrite(10,bSpeed)
; analogWrite(11,bSpeed); analogWrite(11,0); break; Case 2: analogy writing (
'
\
; 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 atât de simplu încât pare o risipă să faci această sarcină cu un microprocesor Împreună 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 acestei uși. 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ă.