Dandanes so navdušenci zelo zainteresirani za krmiljenje brezkrtačnega enosmernega toka (BLDC).
V primerjavi s tradicionalnim enosmernim motorjem se je zmogljivost motorja izboljšala, izboljšala se je tudi energetska učinkovitost, vendar je težje uporabljati. veliko izdelkov, ki so že na policah .
V ta namen obstaja
Na primer, obstaja veliko majhnih krmilnikov BLDC, ki zelo dobro delujejo na letalih RC.
Za tiste, ki se želijo bolj poglobljeno posvetiti krmiljenju BLDC, obstaja tudi veliko različnih mikrokrmilnikov in druge elektronske strojne opreme za industrijske uporabnike, ki imajo običajno zelo dobro dokumentacijo.
Doslej nisem našel nobenega izčrpnega opisa uporabe mikrokrmilnika Arduino za nadzor BLDC.
Tudi, če vas zanima regenerativno zaviranje ali uporaba BLDC za proizvodnjo električne energije, nisem našel veliko izdelkov, primernih za uporabo z majhnimi motorji, niti nisem izvedel, kako krmiliti 3-fazni generator.
Ta struktura je bila prvotno v zgodbi o
računanju v realnem času, s tem nadaljujem tudi po koncu tečaja.
Ideja projekta je prikazati proporcionalni model hibridnega avtomobila s hranilnikom energije na vztrajniku in regenerativnim zaviranjem.
Motor, uporabljen v projektu, je majhen BLDC, očiščen s poškodovanega trdega diska računalnika.
Ta priročnik opisuje, kako uporabljati mikrokrmilnik Arduino in
senzorje položaja Hall-Affects v načinih vožnje in regenerativnega zaviranja.
Upoštevajte, da je obisk oscillisofta zelo koristen, če ne nujen, za dokončanje tega projekta.
Če ne morete dostopati do obsega, sem dodal nekaj predlogov, kako to storiti brez obsega (5. korak).
Ena stvar, ki je ta projekt ne bi smel vključevati v noben dejanski krmilnik motorja, je nobena varnostna funkcija, kot je zaščita pred prenapetostjo.
Pravzaprav je najslabše, da zgori HD motor.
Vendar uvedba prenapetostne zaščite s trenutno strojno opremo ni težka in morda bom to kdaj naredil.
Če poskušate krmiliti večji motor, dodajte zaščito pred preobremenitvijo, da zaščitite svoj motor in lastno varnost.
Želim poskusiti uporabiti ta krmilnik z večjim motorjem, ki lahko opravi nekaj \'pravega\' dela, vendar še nimam pravega.
Opazil sem, da je eBay prodal 86 W avto za približno 40 $.
Izgleda kot dober kandidat.
Obstaja tudi spletno mesto RC, imenovano \'GoBrushless\', ki prodaja komplete, ki sestavijo lasten BLDC.
Ti niso predragi in vredno je izkušenj, da jih zgradite.
Upoštevajte, da na tem spletnem mestu ni Hallovega senzorja za motor. Vau!
Pisanje te strukture je veliko delo.
Upam, da se vam bo zdelo koristno, napišite svoje komentarje in predloge.
Digitalni multimeter (DMM) -
če ima vaš DMM merilnik frekvence, osciloskop (
bolje je imeti vsaj 2 kanala),
gonilnik T8 Torx (
potrebujete enega od njih, da odprete kateri koli trdi disk).
Obstaja dobra trgovina s strojno opremo.
Strojna delavnica in hitri prototip (
to je zelo koristno, vendar mislim, da je ta projekt mogoče narediti brez njih).
Material bldc motor magnetni obroč s trdega diska računalnika (
polovica motorja)
z drugega trdega diska Več (3-6)
Obstaja drugi majhen motor v srebrnem disku na trdem disku (DC krtačen v redu)
Gumijasti trak ali (po možnosti)
brezkrtačni enosmerni motor z ročajem z drugim motorjem elektronska plošča za kruh polna žica mesec Arduino Duemilanove 120 k ohm upor šest do 400 ohm linearni upor ali rotacijski poteniometer 100 k ohmST mikro vezje L6234 trifazni gonilnik motorja IC dva 100 uF kondenzatorja en 10 nF kondenzator en 220 nF kondenzator en 1 uF kondenzator en 100 uF kondenzator tri sprejemne diode Ena 2.
Honeywell SS411A bipolarna Hall-5 Amp varovalka 1 držalo varovalke 3
Opomba: Mike Anton je zasnoval in prodal izdelek, ki bo nadomestil močnostno elektroniko in vezja Hallovih senzorjev, ki sem jih prikazal v tem priročniku (
nadzira se z indukcijo povratnega potenciala).
Specifikacije in informacije o nabavi najdete na teh dveh povezavah: Če nameravate izvesti ta projekt, predlagam, da si vzamete čas in temeljito razumete, kako deluje in nadzoruje BLDC.
Na spletu je veliko referenc (
glej spodaj za nekaj predlogov).
Vendar sem v svoj projekt vključil nekaj grafikonov in tabel, ki bi vam morale pomagati razumeti.
Tukaj je seznam konceptov, za katere menim, da so najpomembnejši za razumevanje tega projekta: MOSFET tranzistorji, 3-fazni polmost, 6-3
-stopenjsko zmanjšanje stavka,
širinska impulzna modulacija faznega motorja (PWM) Hall-
Microchip AVR443: senzorji - splošna referenca enosmernega motorja Osnovna načela za digitalne senzorje položaja
Krmiljenje trifaznega brezkrtačnega enosmernega motorja na osnovi krmiljenja enosmernega motorja brez krtačk
Fazni nadzor motorja BLDC senzorja Flying Star Hall, dober videoposnetek čiščenja motorja trdega diska, vendar se zdi, da avtor poganja motor kot koračni motor in kot koračni motor. Podrobnejša referenčna spletna stran za BLDC na IC motornega pogona l6234, vključno s podatkovnimi listi, opombami o uporabi in informacijami o nakupu.
Brezplačni vzorec za brezkrtačni motorni pogon PM za uporabo v hibridnih električnih vozilih.
To je edini dokument, ki sem ga našel in opisuje vrstni red spremembe faze regenerativnega zaviranja.
Ta članek, regenerativno zaviranje v električnih vozilih je uporaben, iz njega sem si izposodil nekaj številk, vendar menim, da napačno opisuje, kako regeneracija deluje.
Ta projekt sem izdelal z motorjem recikliranega diskovnega pogona, ker je bil enostaven za prehod in rad uporabljam majhen nizkonapetostni motor, da se naučim kabla, ki ga nadzira BLDC, in ne povzroča nobenih varnostnih težav.
Poleg tega postane magnetna konfiguracija Hallovega senzorja zelo preprosta z uporabo magnetnega obroča (rotorja)
iz drugega od teh motorjev (glejte 4. korak).
Če se ne želite ukvarjati z vsemi težavami pri nameščanju in umerjanju Hallovega senzorja (koraki 5–7),
vem, da je vsaj nekaj pogonskih motorjev za CD/DVD vgrajeno v Hallov senzor.
Da bi motorju zagotovil nekaj vrtilne vztrajnosti in jih malo obremenil, sem na motor postavil 5 trdih diskov, ki sem jih nežno zlepil skupaj z malo močnega lepila in prilepil na motor (
To je naredilo vztrajnik v mojem izvirnem projektu).
Če nameravate odstraniti motor s trdega diska, potrebujete pogon T8 torx, da odvijete ohišje (
običajno sta dva vijaka skrita za palico v nalepki centeron)
in notranje vijake, ki držijo motor na mestu.
Odstraniti morate tudi čitalnik glave (
zvočni krog).
Tako lahko odstranite pomnilniški disk, da dosežete motor.
Poleg tega boste potrebovali drugi isti motor trdega diska, da odstranite rotor s tega motorja (
v notranjosti je magnet).
Da bi razstavil motor, sem zgrabil rotor (zgoraj)
Primež motorja in ga dvignil na stator (spodaj).
Dva izvijača sta narazen za 180 stopinj.
Motorja ni enostavno držati na dovolj tesnem paru brez deformacije.
Morda boste želeli zgraditi lesen v-
blok, ki se uporablja za ta namen.
V magnetni obroč na stružnici sem izvrtal luknjo, tako da se udobno prilega vrhu motorja.
Če stružnice ne morete uporabljati, lahko obrnjeni rotor pritrdite na motor z močnim lepilom.
Sliki 2 in 3 spodaj prikazujeta notranjost enega od motorjev, ki sem jih razstavil.
V prvi polovici (rotor) je 8 polov (
magnet ovit v plastiko).
V drugi polovici (stator)
je 12 rež (navitij).
Vsaka od treh faz motorja ima 4 reže v seriji.
Nekateri HD motorji imajo tri kontakte na dnu, en kontakt na fazo, drugi pa je osrednji ventil motorja (
kjer se srečajo tri stopnje).
V tem projektu ni potreben sredinski dotik, lahko pa pride prav pri nadzoru brez senzorjev (
upam, da bom nekega dne izdal opombo o nadzoru brez senzorjev).
Če ima vaš motor štiri kontakte, lahko fazo določite z ohmetrom.
Upor med središčno pipo in fazo je polovica upora med katerima koli dvema fazama.
Večina literature o motorjih BLDC obravnava tiste z valovno obliko povratnega potenciala v obliki lestve, vendar se zdi, da ima motor trdega diska povratni potencial, ki je videti kot sinus (glejte spodaj).
Kolikor vem, pogon sinusnega motorja s sinusnim PWM deluje dobro, čeprav lahko učinkovitost nekoliko pade.
Kot vsi motorji BLDC je tudi ta sestavljen iz trifaznega poltranzistorskega
mostu (
glej 2. fotografiji spodaj).
uporabljam IC proizvajalca ST Micro (L6234) , znan tudi kot gonilnik motorja.
Za most
Električna povezava L6234 je prikazana v koraku 8.
Tretja fotografija spodaj prikazuje shematski diagram gonilnika motorja in treh faz motorja.
Da bi motor deloval v smeri urinega kazalca, bo stikalo izvedeno v naslednjem vrstnem redu (
prva črka je zgornji tranzistor in druga črka je spodnji tranzistor)
: Korak 1 2 3 4 5 6 v smeri urinega kazalca: CB, AB, AC, BC, BA, CA v nasprotni smeri urinega kazalca: BC, BA, CA, CB, AB, AC ti 6-
Zaporedje korakov zahteva \'električno stopinja\' 360, vendar le fizična stopnja 90 za te motorje.
Zato se hitrost vrtenja vsakega motorja pojavi štirikrat.
Zdi se, da sta zaporedji enaki, vendar nista enaki, ker je za 6-
stopenjsko zaporedje, za CW, smer toka skozi fazo enosmerna, za CCW pa je trenutna smer nasprotna.
To lahko vidite sami, tako da napetost akumulatorja ali napajalnika priključite na fazo motorja.
Če vključite napetost, se bo motor nekoliko premaknil v eno smer in se ustavil.
Če lahko hitro spremenite napetost na fazi v enem od zgornjih zaporedij, lahko motor zavrtite ročno.
Tranzistorji in mikrokrmilniki dokončajo vsa ta stikala zelo hitro in se preklopijo več stokrat na sekundo, ko motor deluje pri visoki hitrosti.
Upoštevajte tudi, da če napetost deluje na obe fazi, se motor malo premakne in nato ustavi.
To je zato, ker je navor enak nič.
To lahko vidite na spodnji četrti fotografiji, ki prikazuje zadnji potencial para motornih faz.
To je sinusni val.
Ko gre val skozi x-
gred, je navor, ki ga zagotavlja ta faza, enak nič. V šeststopenjskem
zaporedju faznih sprememb BLDC, ki se nikoli ni zgodilo.
Preden navor v določeni fazi postane nizek, se moč preklopi na drugo kombinacijo faz.
Večje BLDC motorje običajno proizvajajo Hallovi senzorji v motorju.
Če imate tak motor, lahko ta korak preskočite.
Prav tako vem, da je vsaj nekaj pogonskih motorjev za CD/DVD vgrajeno v že Hallov senzor.
Ko se motor vrti, se za zaznavanje položaja uporabljajo trije Hallovi senzorji, tako da se menjava faze izvede v pravem trenutku.
Moj HD motor deluje do 9000 vrt/min (150 Hz).
Ker je pri 9000 obratih na minuto 24 menjav na kolo, se stroj zamenja vsakih 280 mikrosekund.
Mikrokrmilnik Arduino deluje pri 16 MHz, tako da je vsak takt 0,06 mikrosekund.
Ne vem, koliko urnih ciklov je potrebnih za izvedbo zmanjšanja stavka, toda tudi če je potrebnih 100 taktov, to pomeni, da traja 5 mikrosekund za vsako zmanjšanje stavka.
HD motorji nimajo Hallovih senzorjev, zato jih je potrebno namestiti na zunanjo stran motorja.
Senzor mora biti fiksiran glede na vrtenje motorja in izpostavljen nizu polov, ki so skladni z vrtenjem motorja.
Moja rešitev je odstraniti magnetni obroč z istega motorja in ga namestiti na glavo na motor, ki ga želite krmiliti.
Nato sem namestil tri Hallove senzorje nad ta magnetni obroč, 30 stopinj drug od drugega na gred motorja (
120 stopinj vrtenja elektromotorja).
Moje držalo senzorja Hall je sestavljeno iz enostavnega držala, sestavljenega iz treh aluminijastih delov, ki sem jih obdelal sam, in treh plastičnih delov, izdelanih na hitrem prototipu.
Če teh orodij nimate, ne bi smelo biti težko najti drugega načina za označevanje položaja.
Izdelava nosilcev za Hallove senzorje bo zahtevnejša.
To je možen način dela: 1.
Poiščite plastični pladenj prave velikosti in previdno z epoksidom prekrijte Hallov senzor. 2.
Na papir je natisnjena predloga, ki ima enak krog kot polmer magnetnega obroča, tri oznake pa so 15 stopinj 3 narazen.
Prilepite predlogo na disk in nato uporabite predlogo kot vodilo za previdno namestitev epoksida Hallovega senzorja na mesto.
Zdaj, ko so Hallovi senzorji nameščeni na motorju, jih priključite na spodaj prikazano vezje in jih preizkusite z digitalnim multimetrom ali osciloskopom, da se prepričate, ali bo izhodna vrednost med vrtenjem motorja vedno večja in nižja.
Te senzorje poganjam pod 5 V z uporabo 5 V izhoda Arduino.
Hallov senzor ima visok ali nizek izhod (1 ali 0).
Odvisno je od tega, ali čutijo Antarktiko ali Arktiko.
Ker so med seboj oddaljeni 15 stopinj, se magneti vrtijo pod njimi in spreminjajo polariteto vsakih 45 stopinj, ti trije senzorji ne bodo nikoli visoko ali nizko hkrati.
Ko se motor vrti, je izhod senzorja 6-
Vzorec korakov je prikazan v naslednji tabeli.
Senzor mora biti usklajen z gibanjem motorja, tako da se eden od treh senzorjev spremeni natančno na položaju spremembe faze motorja.
V tem primeru mora biti naraščajoči rob prvega Hallovega senzorja (H1)
skladen z odprtino kombinacije C (visoko) in B (nizko).
To je enakovredno vklopu tranzistorjev 3 in 5 v mostnem vezju.
Z osciloskopom poravnam senzor z magnetom.
Da bi to naredil, moram uporabiti tri kanale obsega.
Motor zavrtim tako, da ga povežem z jermenom drugega motorja in izmerim povratni potencial med dvema kombinacijama faz (
A in B, A in C).
To sta dva sinusa.
Kot valovi na spodnji sliki.
Nato poglejte signal Hallovega senzorja 2 na kanalu 3 osciloskopa.
Nosilec Hallovega senzorja se obrača, dokler ni dvigajoči rob Hallovega senzorja popolnoma poravnan s točko, kjer je treba izvesti spremembo faze (glejte spodaj).
Zdaj se zavedam, da obstajata samo dva kanala za isto kalibracijo.
Če je BEMF fazne kombinacije B-
z uporabo C, bo naraščajoči rob H2 povezan s krivuljo BC.
Razlog, zakaj je treba fazno menjavo izvesti tukaj, je, da je navor motorja vedno čim višji.
Povratni potencial je sorazmeren z navorom in opazili boste, da do vsake fazne spremembe pride, ko povratni potencial preide pod krivuljo naslednje stopnje.
Zato je dejanski navor sestavljen iz najvišjega dela vsake fazne kombinacije.
Če ne morete dostopati do obsega, je tukaj moja ideja o poravnavi.
To je pravzaprav zanimiva vaja za vse, ki želijo vedeti, kako deluje motor BLDC.
Če sta faza A motorja (pozitivna) in B (negativna) priključena
na napajanje in vklopite napajanje, se bo motor nekoliko zavrtel in ustavil.
Nato, če se negativni napajalni kabel premakne v fazo C in se napajanje vklopi, se bo motor vrtel naprej in ustavil.
Naslednji del zaporedja bo premik pozitivnega kabla v fazo B itd.
Ko to storite, se motor vedno ustavi, kjer je navor enak nič, kar ustreza enemu mestu, kjer diagram poteka skozi os x na diagramu.
Upoštevajte, da ničelna točka kombinacije tretje faze ustreza položaju spremembe faze prvih dveh kombinacij.
Zato je položaj ničelnega navora B-
kombinacija C tam, kjer želite postaviti naraščajoči rob h2.
Označite ta položaj s finimi oznakami ali ostrimi rezili in nato nastavite držalo Hallovega senzorja z uporabo DMM, dokler ni izhod H2 točno višji od te oznake.
Tudi če malo odstopate od šolskega urnika, mora motor dobro delovati.
Trifazni motor bo prejemal napajanje iz gonilnika trifaznega motorja L6234.
Ugotovil sem, da je to dober izdelek, ki zdrži preizkus časa.
Pri uporabi močnostne elektronike lahko svoje komponente pomotoma ocvrete na veliko načinov. Nisem elektrotehnik in ne vem vedno, kaj se dogaja.
V mojem šolskem programu smo naredili lasten 3-
fazni polmostni izhod s 6 MOSFET tranzistorji in 6 diodami.
To smo uporabili na HIP4086 drugega gonilnika Intersil, vendar imamo s to nastavitvijo veliko težav.
Zažgali smo kup tranzistorjev in čipov.
Poganjam L6234 (
torej motor) pri 12 V.
L6234 ima nenavaden nabor vhodov za krmiljenje pol-mosta 6 tranzistorjev.
Vsak tranzistor nima vhoda, ampak omogoči (EN)
vhod za vsako od treh stopenj in nato še en vhod (IN).
Izberite, kateri tranzistor je v odprti fazi (zgornji ali spodnji).
Na primer, vklopite tranzistor 1 (zgornji) in 6 (spodnji).
EN1 in EN3 sta visoka (
EN2 nizka, da ostane stopnja zaprta)
IN1 visoka, IN3 nizka.
To naredi fazno kombinacijo-C.
Medtem ko je opomba o aplikaciji L6234 predlagala uporabo PWM, ki se uporablja za krmiljenje hitrosti motorja, na zatič IN, sem se odločil, da to naredim na zatiču EN, ker takrat mislim, da bi bilo \'čudno\' izmenično vklopiti zgornje in spodnje tranzistorje faze \'.
Pravzaprav se zdi, da ni nič narobe, če vklopite nizke tranzistorje obeh faz hkrati, ker imata enak potencial, zato nobeden od njiju ne prehaja skozi tok.
Pri moji metodi je visoka faza izmenično omogočena in onemogočena pri frekvenci PWM, medtem ko nizka faza ostane vklopljena med celotno spremembo faze.
Spodaj sem dodal pin povezavo na ploščo Arduino. Dodal sem tudi 2,5
ampersko varovalko med pozitivnim vodnikom baterije in vezjem, kondenzator 100 uF med napajalnikom in maso. za zmanjšanje valovanja v regenerativnem toku.
Za večje različice si oglejte dokumentacijo za L6234
, ki bo (verjamem)
zamenjala to stezo in vam prihranila delo pri sestavljanju
Pri
vožnji
Nisem elektroinženir in bi bili veseli kakršnih koli popravkov moje razlage.
krmilni sistem pošilja tok v tri faze motorja na način, da poveča
navor pri regenerativnem zaviranju, toda tokrat je negativni navor tisti, ki povzroči upočasnitev motorja, medtem ko pošilja tok nazaj v akumulator
Laboratorij v Združenih državah Amerike.
V
Spodnja tabela pomaga ponazoriti, kako deluje (
vendar mislim, da je razlaga v tem drugem dokumentu delno napačna).
Ne pozabite, da napetost BEMF v fazi motorja niha navzgor in navzdol
tem primeru je možno, da tok
tok teče, kot je prikazano
teče od B do regenerativnega zaviranja, nizkocenovni tranzistorji se hitro vklapljajo (na tisoče tranzistorskih stikal je izklopljeno;
na prvi sliki). faza motorja ( Wikipedia ima dober članek, ki pojasnjuje, kako deluje ojačevalni pretvornik). Ta energija se sprosti,
ko je nizkocenovni tranzistor izklopljen
, vendar tok takoj teče skozi \
'protivzbujevalno\' diodo poleg vsakega tranzistorja in se nato vrne v baterijo. Istočasno tok v tej smeri (
v nasprotju z vožnjo) deluje magnetni obroč za upočasnitev
sčasoma preklopi z enega na drugega, da se ohrani najvišji možni navor Oglejte si videoposnetek v prvem koraku, lahko vidite, da regenerativna zavora deluje dobro, vendar mislim, da je glavni razlog
motorja. Delovni cikel PWM nadzoruje količino zaviranja. Preklop motorja
motor z
če sploh) .
zelo nizkim navorom
, tako da ne proizvaja veliko
BEMF, razen pri najvišji hitrosti, je zelo malo regenerativnega zaviranja (
Poleg tega moj sistem deluje pri relativno nizki napetosti (12 V). zmanjša napetost za nekaj voltov
, to močno zmanjša učinkovitost. Uporabljam običajne usmerniške diode in morda bom dosegel boljše delovanje,
če uporabim nekaj posebnih diod z nižjim padcem napetosti. Spodaj je seznam vhodov in izhodov
K upor Gnd 5 1 Digitalni izhod v seriji z uporom 400 ohmov 6 2 Digitalna izhoda v seriji z uporom 400 ohmov 7 3 Digitalni izhodi
na moji plošči. vhod- 120
v seriji z uporom 400 ohmov 9- Digitalni izhod EN 1 v seriji z uporom 400 ohmov 10-
s 400 ohmi upor 11
je
se uporablja za krmiljenje hitrosti motorja in zavornega volumna.
Digitalni izhod
EN 2 v seriji
- Digitalni izhod EN 3
potenciometrom 100 k ohmov, na obeh koncih
priključenim analognim
zatičem 0. Ta potenciometer
v seriji z uporom 400 ohmov,
* bldc_congroller 3. 1. 1*3 Davida Glazerja.
Za zagon Hallovih senzorjev se uporablja tudi 5 V. Tukaj je celoten program, ki sem ga napisal
za Ardjuino komentarji:/
Serija X
je 3-fazni gonilnik motorja ST L6234 * motor diskovnega pogona v smeri urinega kazalca * z regenerativnim zaviranjem *
hitrost motorja in zaviranje, ki jih nadzira en sam potenciometer * položaj motorja
Hallovih senzorjev (pins 2,3,4)
Arduino prejema izhode iz 3
EN
s tremi Hallovimi senzorji *
1,2
* In pretvori njihovo kombinacijo v 6 različnih
korakov spreminjanja faze na nožicah 9, 10, 11 pri 32 kHz * Izhod PWM (Ustreza
, 3*3 DO na nožicah 5,6, 7 oziroma (IN 1,2,3)
* Povežite simulacijo v 0 s potenciometrom, da spremenite delovni cikel PWM in spremenite * med vožnjo in regenerativnim zaviranjem *. * 0-
499: zavora * 524-
1023
: Komentarji za odpravljanje napak v serijski povezavi
*/Int allstate1
; int HallState3;
Int HallVal = 1 ;
MSPs = 0; /Raven zavore za plin = 0 ;
Če boste uporabljali serijsko povezavo, odkomentirajte ta ukaz na koncu
razmika potenciometra za plin (){pinMode(2,INPUT);/Hall 2 pinMode (4,INPUT);
/Ta spremenljivka se uporablja skupaj z nastavitvijo
/IN pinMode (7,OUTPUT);
/EN 2 pinMode (11,OUTPUT);
/L6234 gonilnik pinMode (5,OUTPUT);
programa. / * Nastavite frekvenco PWM
Ustvarite
na nožicah 9, 10/nastavite vse tri preddelilnike bitov: /
spremenljivko, imenovano prescalerVal binarno število \'00000111
\' TCCR1B & = ~ Prescaler /In
številom \'11111000\'/
binarnim
vrednost v TCCR0B z
zdaj nastavite ustrezen predkodirani bit: int predkodiranje bit 2 = 1; /Nastavite prescalerVal na
enako binarnemu številu \'00000001\' TCCR1B |. = prescalerVal2 ; /
Ali vrednost v TCCR0B z binarnim številom \'00000001\'/nastavite PWM na 32 kHz za pin 3,11 (Ta program uporablja samo Pin 11) /Najprej počistite vse tri bite pre-calerval; /In vrednost v
ustrezen bit predkodiranja: TCCR2B | =
TCCR0B binarno število \'11111000\'/
: }
bit predkodiranja 2; /Ali vrednost v TCCR0B z binarnim številom \'00000001\'/najprej počistite vse tri predkodirane bite
zdaj nastavite
\'\'); /potenciometer za plin (plin, 0,255); /vožnja je preslikana na zgornjo polovico potenciometra
Glavna zanka prazne zanke/PRGROM () { /Čas
= millis (); čas po zagonu programa za tiskanje (
);
;
/Polovično regenerativno zaviranje na dnu potnika /MSPs ed = 100
0,511,255, 0
/Branje vhodne vrednosti iz dvorane 1 2 = digitalno branje ( 4);
(8, HallState1); /Ko je
ustrezen senzor vklopljen, se prvotno uporablja
za odpravljanje napak v HallState2);
branje vhodne vrednosti iz dvorane 3
//digitalWrite(10,HallState3)+ (4*HallState3);
//
Serial println
(HallState2) Serial println(mSpeed). 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(\'\'); //zakasnitev(500);
vsako binarno število ustreza različnim vklopljenim tranzistorjem: /PORTD vsebuje izhodne podatke gonilnika L6234. zgornji tranzistor/spodnji pin za vsako fazo je krmiljen z analogijo ukaza Arduino, nastavite delovni cikel PWM (0 = IZKLOP, 255 = VKLOP ali vrednost plina, ki jo nadzira potenciometer).{stikalo (HallVal){ Primer 3:/PORTD = 1111xxx00; 7 xxx se nanaša na vhod PORTD in PORTD | 100 % (low-end tranzistor)
Case
1: /
Pričakovan izhod pin 0-7
PORTD & = B00100000; /Analowrite (9,mSpeed) ; //Phase B on (Low-end tranzistor)analogWrite(
11,0);
/
Phase B off
;
(duty = 0)break
= B100xxx00; /
Case 5:/ PORTD=B101xxx00;/Pričakovan izhod
pin
0-7 PORTD & = B00011111;.= B10100000; analogWrite(10,255 );
analogWrite
(11,mSpeed); break; Case 4:/PORTD
Expected output of
PORTD & = B00011111;
PORTD | = bym000; /
Analowrite (9,255); analogWrite(10,0)
pin 0- 7
; analogWrite(11,mSpeed ); break
; Case 6:/PORTD = PORTD & = B0001111; /AnalogWrite(11,0);
Case 2:/PRICAT=B010xxx00
0-
7 PORTD; /
Analowrite
(11,255);regenerative brake change/PORTD (Izhodi na pinu L6234) regen. braking. else{
/PORTD = B000xxx00;
/Expected output of pin 0-
7 PORTD & = B00011111
=
; PORTD |
bym0000; // switch (HallVal){ Case 3: analogy
( 9,bSpeed)
writing
;
//analogWrite(9,0); analogWrite(10,0); analogWrite(11,0); break; Case 1: analogy writing (9,bSpeed); analogWrite(10,0); 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 you want to odpravljanje napak z uporabo serijskih vrat, prosim odkomentirajte}
Mislim, da je operacija, ki jo izvaja Arduino v tem projektu, tako preprosta, da se zdi potrata, če bi to nalogo opravili z mikroprocesorjem.
Pravzaprav je v opombah o aplikaciji L6234 za opravljanje tega dela priporočeno preprosto programabilno polje vrat (
).
Nisem seznanjen s programiranjem te naprave, vendar je cena IC samo 2 USD. 39.
Druga podobna integrirana vezja so tudi zelo poceni.
GAL16V8
Izmislil sem nekaj sorazmerno preprostih logičnih zaporedij, ki bi lahko poganjala izhode treh Hallovih senzorjev.
Tabela resnice za vse tri faze
je treba preklopiti na vrata \'not\'. stran \'ali.
Težava s tem pristopom je, da je na vsaki stopnji skoraj 20 povezav, zato je potrebno kar nekaj dela, da ga sestavite.
Najbolje je, da ga programirate kot programabilna logična vrata.