I dag er entusiaster veldig interessert i å kontrollere Brushless DC (BLDC)
Sammenlignet med den tradisjonelle DC-motoren har ytelsen til motoren blitt bedre, energieffektiviteten har også blitt bedre, men den er vanskeligere å bruke. Mange hyllevarer
finnes for dette formålet.
For eksempel er det mange små BLDC-kontrollere som fungerer veldig bra for RC-fly.
For de som ønsker å se nærmere på kontrollen av BLDC, finnes det også mange forskjellige mikrokontrollere og annen elektronisk maskinvare for industrielle brukere, som vanligvis har meget god dokumentasjon.
Så langt har jeg ikke funnet noen utfyllende beskrivelse av hvordan man bruker Arduino mikrokontroller for BLDC-kontroll.
Dessuten, hvis du er interessert i å drive med regenerativ bremsing, eller bruke en BLDC for kraftproduksjon, har jeg ikke funnet mange produkter som egner seg for bruk med små motorer, og jeg har heller ikke funnet ut om hvordan man styrer 3-fase generator.
Denne strukturen var opprinnelig i en historie om
sanntidsberegning, det fortsetter jeg med etter at kurset er over.
Ideen med prosjektet er å vise en proporsjonal modell av en hybridbil med svinghjulsenergilagring og regenerativ bremsing.
Motoren som ble brukt i prosjektet er en liten BLDC-er som er ryddet opp fra den skadede datamaskinens harddisk.
Denne håndboken beskriver hvordan du bruker Arduino-mikrokontrolleren og Hall-
Affects-posisjonssensorene i kjøre- og regenerativ bremsemodus.
Vær oppmerksom på at å besøke oscillisoft er svært nyttig, om ikke avgjørende, for å fullføre dette prosjektet.
Hvis du ikke får tilgang til omfanget, har jeg lagt til noen forslag til hvordan du gjør det uten omfanget (trinn 5).
En ting som dette prosjektet ikke bør inkludere i noen faktiske motorkontroller er noen sikkerhetsfunksjoner som overstrømsbeskyttelse.
Faktisk er det verste at du brenner ut HD-motoren.
Imidlertid er det ikke vanskelig å implementere overstrømsbeskyttelse med gjeldende maskinvare, og kanskje jeg vil gjøre det på et tidspunkt.
Hvis du prøver å kontrollere en større motor, vennligst legg til overstrømsbeskyttelse for å beskytte motoren din og din egen sikkerhet.
Jeg vil prøve å bruke denne kontrolleren med en større motor som kan gjøre noe \'ekte\' arbeid, men jeg har ikke den rette ennå.
Jeg la merke til at eBay solgte en 86 W bil for rundt $40.
Ser ut som en god kandidat.
Det er også et RC-nettsted kalt \'GoBrushless\' som selger sett som setter sammen sine egne BLDC.
Disse er ikke for dyre, og det er verdt opplevelsen å bygge en.
Vær oppmerksom på at det ikke er noen hallsensor for motoren på denne nettsiden. Huff!
Å skrive denne strukturen er en stor jobb.
Jeg håper du finner det nyttig, vennligst kom med kommentarer og forslag.
Digital Multimeter (DMM) -
Hvis DMM har et frekvensmåler oscilloskop (
det er bedre å ha minst 2 kanaler)
T8 Torx-driver (
Du trenger en av dem for å åpne en harddisk).
Det er en god jernvarehandel.
Maskinverksted og rask prototype (
disse er veldig nyttige, men jeg tror dette prosjektet kan gjøres uten dem).
Materiale bldc motor magnetisk ring fra datamaskinens harddisk (
Halvparten av motoren)
Fra en annen harddiskFlere (3-6)
Det er en andre liten motor i sølvskiven på harddisken (DC børstet OK)
Gummibånd eller (fortrinnsvis)
Den børsteløse DC-motoren med et håndtak med en annen motor elektronisk brødplate solid wire month the Arduino Duemilanove 120 k resist or six ohm resist eller Poteniometer100 k ohmST mikrokrets L6234 trefase motordriver IC to 100 uF kondensatorer en 10 nF kondensator en 220 nF kondensator en 1 uF kondensator en 100 uF kondensator tre mottaksdioder En 2.
Honeywell SS41 SS41 holder: 5A bipolaruse f
. Mike Anton designet og solgte et produkt som vil erstatte kraftelektronikken og Hall-sensorkretsene jeg har vist i denne håndboken (
den styres ved hjelp av tilbakepotensialinduksjon).
Spesifikasjoner og innkjøpsinformasjon finner du i disse to lenkene: Hvis du skal gjøre dette prosjektet, foreslår jeg at du tar deg tid til å forstå hvordan BLDC fungerer og kontrollerer.
Det finnes et stort antall referanser på nettet (
se nedenfor for noen forslag).
Imidlertid inkluderer jeg noen diagrammer og tabeller i prosjektet mitt som skal hjelpe deg å forstå.
Her er en liste over konseptene som jeg tror er viktigst for å forstå dette prosjektet: MOSFET-transistorer 3-fase halvbro 6-
3-trinns reduksjon av setning
Pulsbreddemodulasjon av fasemotor (PWM)Hall-
Mikrobrikke AVR443: sensorer-generell referanse DC-motor Grunnprinsipper for Digitale posisjonssensorer
Styring av trefase-basert børsteløs DC-motor regulering av DC-motor DC-brusemotor
Phase-less motor. Flying Star Hall-sensor, en god video av å rydde opp i harddiskmotoren, men forfatteren ser ut til å kjøre motoren som en trinnmotor og som en trinnmotor. En mer spesifikk referansenettside for BLDC på l6234 motordrivkretsen, inkludert datablad, applikasjonsnotater og kjøpsinformasjon.
Gratis prøve for PM børsteløs motordrift for hybridelektriske kjøretøyapplikasjoner.
Dette er det eneste papiret jeg fant som beskriver rekkefølgen av den regenerative bremsefaseendringen.
Denne artikkelen, regenerativ bremsing i elektriske kjøretøy er nyttig, jeg lånte noen tall fra den, men jeg tror den beskriver feil hvordan regenerering fungerer.
Jeg gjorde dette prosjektet med resirkulert diskstasjonsmotor fordi det var lett å passere gjennom, og jeg liker å bruke en liten lavspentmotor for å lære ledningen kontrollert av BLDC og ikke forårsake sikkerhetsproblemer.
I tillegg blir magnetkonfigurasjonen til hallsensoren veldig enkel ved å bruke den magnetiske ringen (rotoren)
Fra den andre av disse motorene (Se trinn 4).
Hvis du ikke vil gå til alt bryet med å installere og kalibrere hallsensoren (trinn 5-7)
vet jeg at det er i det minste noen CD/DVD-stasjonsmotorer innebygd i Hall-sensoren.
For å gi litt dreietreghet til motoren og gi dem litt belastning, satte jeg 5 harddisker på motoren, limte forsiktig sammen med litt sterkt lim og limte til motoren (
Dette laget svinghjulet i mitt originale prosjekt).
Hvis du skal fjerne motoren fra harddisken, trenger du en T8 torx-stasjon for å skru av huset (
Vanligvis er det to skruer gjemt bak pinnen i sentermerket)
og interne skruer som holder motoren på plass.
Du må også fjerne hodet Reader (
Sound circle executive)
På denne måten kan du ta ut minnedisken for å nå motoren.
I tillegg trenger du en annen harddiskmotor for å fjerne rotoren fra den motoren (
det er en magnet inni).
For å ta motoren fra hverandre tok jeg tak i rotoren (øverst)
En skrustikke på motoren og lirket den på statoren (nederst)
De to skrutrekkerne er 180 grader fra hverandre.
Det er ikke lett å holde motoren på et tett nok par uten deformasjon.
Det kan være lurt å bygge en v-
blokk av tre som brukes til dette formålet.
Jeg boret et hull i magnetringen på dreiebenken slik at den passer komfortabelt på toppen av motoren.
Hvis du ikke kan bruke dreiebenken, kan du feste den omvendte rotoren på motoren med et sterkt lim.
Bildene 2 og 3 nedenfor viser interiøret i en av motorene jeg har demontert.
I første halvdel er det (rotoren) 8 poler (
magnet pakket inn i plast).
I andre halvdel (statoren)
Det er 12 spor (viklinger).
Hver av de tre motorfasene har 4 spor i serie.
Noen HD-motorer har tre kontakter i bunnen, en kontakt per fase, og den andre er senterkranen på motoren (
hvor tre trinn møtes).
I dette prosjektet kreves det ingen senterkran, men det kan komme godt med i sensorfri styring (
jeg håper å slippe et notat om Sensorfri styring en dag).
Hvis motoren din har fire kontakter, kan du identifisere fasen med ohmmeter.
Motstanden mellom sentertappen og fasen er halvparten av motstanden mellom to faser.
Det meste av litteraturen om BLDC-motorer omhandler de med en stigeformet bakpotensialbølgeform, men harddiskmotoren ser ut til å ha et bakpotensiale som ser ut som en sinus (se nedenfor).
Så vidt jeg vet fungerer det fint å kjøre en sinusbølgemotor med sinusbølge-PWM, selv om effektiviteten kan falle noe.
Som alle BLDC-motorene består denne av trefase halvtransistorbro
(
se andre bilder nedenfor).
Jeg bruker IC laget av ST Micro (L6234)
for broen, også kjent som motordriveren.
Den elektriske tilkoblingen til L6234 er vist i trinn 8.
Det tredje bildet nedenfor viser et skjematisk diagram av motordriveren og de tre motorfasene.
For at motoren skal fungere med klokken, vil bryteren gjøres i følgende rekkefølge (
Den første bokstaven er den øvre transistoren og den andre bokstaven er den nedre transistoren)
: Trinn 1 2 3 4 5 6 med klokken: CB, AB, AC, BC, BA, CA mot klokken: BC, BA, CA, CB, AB, AC disse
krever en sekvens av \'' 360, men bare en fysisk grad på 90 for disse motorene.
Derfor oppstår rotasjonshastigheten til hver motor fire ganger.
De to sekvensene ser ut til å være de samme, men de er ikke de samme fordi for 6-
trinns sekvens, for CW, er strømretningen gjennom fasen én retning, og for CCW er strømretningen motsatt.
Du kan se dette selv ved å legge spenningen til batteriet eller strømforsyningen på begge motorfasene.
Hvis du legger på spenningen, vil motoren bevege seg litt i én retning og stoppe.
Hvis du raskt kan endre spenningen på fasen i en av sekvensene ovenfor, kan du rotere motoren manuelt.
Transistorer og mikrokontrollere fullfører alle disse bryterne veldig raskt, og bytter hundrevis av ganger per sekund når motoren går med høy hastighet.
Vær også oppmerksom på at hvis spenningen påføres begge fasene, beveger motoren seg litt og stopper deretter.
Dette er fordi dreiemomentet er null.
Du kan se dette på det fjerde bildet nedenfor, som viser bakpotensialet til et par motorfaser.
Dette er en sinusbølge.
Når bølgen går gjennom x-
Shaft, er dreiemomentet gitt av denne fasen null. I seks-
trinns BLDC faseendringssekvens som aldri skjedde.
Før dreiemomentet på en bestemt fase blir lavt, byttes effekten til en annen fasekombinasjon.
Større BLDC-motorer produseres vanligvis av Hall-sensorer inne i motoren.
Hvis du har en slik motor, kan du hoppe over dette trinnet.
Dessuten vet jeg at det i det minste er noen CD/DVD-stasjonsmotorer innebygd i Hall-sensoren.
Når motoren roterer brukes tre hallsensorer for posisjonsdeteksjon, slik at faseendringen utføres i riktig øyeblikk.
Min HD-motor går opp til 9000 RPM (150 Hz).
Siden det er 24 endringer per hjul, ved 9000 RPM, skiftes maskinen hvert 280 mikrosekund.
Arduino-mikrokontrolleren fungerer på 16 MHz, så hver klokkesyklus er 0,06 mikrosekunder.
Jeg vet ikke hvor mange klokkesykluser som kreves for å utføre en reduksjon av setningen, men selv om det kreves 100 klokkesykluser, det vil si at det tar 5 mikrosekunder for hver reduksjon av setningen.
HD-motorer har ikke Hall-sensorer, så det er nødvendig å installere dem på utsiden av motoren.
Sensoren må festes i forhold til motorrotasjonen og eksponeres for en rekke poler som er i samsvar med motorrotasjonen.
Min løsning er å fjerne magnetringen fra samme motor og installere den opp ned på motoren som skal styres.
Deretter installerte jeg tre hallsensorer over denne magnetringen, 30 grader fra hverandre på motorakselen (
120 graders rotasjon av elektrisk motor).
Min Hall sensorholder består av en enkel holder som består av tre aluminiumsdeler bearbeidet av meg og tre plastdeler laget på en rask prototype.
Hvis du ikke har disse verktøyene, bør det ikke være vanskelig å finne en annen måte å angi posisjonen på.
Å lage braketter for Hall-sensorer vil være mer utfordrende.
Dette er en mulig måte å jobbe på: 1.
Finn et plastbrett av riktig størrelse og du kan forsiktig epoksyere hallsensoren. 2.
Det skrives ut en mal på papiret, som har samme sirkel som den magnetiske ringradiusen, og de tre merkene er 15 grader 3 fra hverandre.
Lim malen til disken og bruk deretter malen som en veiledning for å forsiktig plassere hallsensor-epoksyen på plass.
Nå som Hall-sensorer er installert på motoren, koble dem til kretsen vist nedenfor og test dem med et DMM eller oscilloskop for å sikre at utgangen blir høyere og lavere ettersom motoren roterer.
Jeg kjører disse sensorene under 5 v ved å bruke Arduinos 5 v-utgang.
Hall-sensoren har høy eller lav effekt (1 eller 0)
Det avhenger av om de føler Antarktis eller Arktis.
Siden de er 15 grader fra hverandre, roterer magnetene under dem og endrer polariteten hver 45. grader, disse tre sensorene vil aldri være høye eller lave samtidig.
Når motoren roterer, er sensorutgangen 6-
Trinnmønsteret vist i følgende tabell.
Sensoren må justeres etter bevegelsen til motoren slik at en av de tre sensorene endres nøyaktig ved motorens faseendringsposisjon.
I dette tilfellet bør den stigende kanten på den første hallsensoren (H1)
stemme overens med åpningen av C-kombinasjonen (høy) og B (lav).
Dette tilsvarer å slå på transistor 3 og 5 i brokretsen.
Jeg justerer sensoren med magneten med et oscilloskop.
For å gjøre dette må jeg bruke tre kanaler med omfang.
Jeg roterer motoren ved å koble til beltet til den andre motoren og måler tilbakepotensialet mellom de to fasekombinasjonene (
A og B, A og C)
Dette er to sinus.
Som bølgene på bildet under
Se så på signalet til Hallsensor 2 på kanal 3 i oscilloskopet.
Hallsensorholderen dreies til den stigende kanten av hallsensoren er helt på linje med punktet der faseendringen skal utføres (se nedenfor).
Jeg innser nå at det bare er to kanaler for å gjøre samme kalibrering.
Hvis BEMF av fasekombinasjon B-
Ved bruk av C, vil den stigende kanten til H2 være relatert til BC-kurven.
Grunnen til at faseendringen bør utføres her er å alltid holde motormomentet så høyt som mulig.
Bakpotensialet er proporsjonalt med dreiemomentet, og du vil legge merke til at hver faseendring skjer når ryggpotensialet passerer under neste trinnskurve.
Derfor består det faktiske dreiemomentet av den høyeste delen av hver fasekombinasjon.
Hvis du ikke får tilgang til omfanget, her er ideen min om justering.
Dette er faktisk en interessant øvelse for alle som vil vite hvordan BLDC-motoren fungerer.
Hvis motoren fase A er koblet (positiv) og B (negativ)
til strømforsyningen og slå på strømforsyningen, vil motoren rotere litt og stoppe.
Deretter, hvis den negative strømledningen flyttes til C-fasen og strømmen slås på, vil motoren dreie videre og stoppe.
Neste del av sekvensen vil være å flytte den positive ledningen til Fase B osv.
Når du gjør dette stopper motoren alltid der momentet er null, noe som tilsvarer ett sted hvor diagrammet går gjennom x-aksen på kartet.
Legg merke til at nullpunktet til tredjefasekombinasjonen tilsvarer faseendringsposisjonen til de to første kombinasjonene.
Derfor er nullmomentposisjonen til B-
C-kombinasjonen der du vil plassere den stigende kanten til h2.
Merk denne posisjonen med fine merker eller skarpe kniver, og juster deretter hallsensorholderen ved hjelp av DMM til utgangen til H2 er nøyaktig høyere på dette merket.
Selv om du avviker litt fra skoleplanen din, skal motoren fungere bra.
De tre motorfasene vil motta strøm fra L6234 trefasemotordriveren.
Jeg fant ut at dette er et godt produkt som tåler tidens tann.
Det er mange måter å steke komponentene dine ved et uhell når du bruker kraftelektronikk, jeg er ikke en elektrisk ingeniør og jeg vet ikke alltid hva som skjer.
I skoleprogrammet mitt gjorde vi vår egen 3-
fase halvbro-utgang på 6 MOSFET-transistorer og 6 dioder.
Vi brukte dette på HIP4086 til den andre driveren Intersil, men vi har mange problemer med dette oppsettet.
Vi brente en haug med transistorer og brikker.
Jeg kjører L6234 (
Så motoren) på 12V.
L6234 har et uvanlig sett med innganger for å kontrollere en halvbro med 6 transistorer.
Ikke hver transistor har en inngang, men en aktiveringsinngang (EN)
for hvert av de tre trinnene, og deretter en annen inngang (IN)
Velg hvilken transistor i åpen fase (øvre eller nedre).
Slå for eksempel på transistor 1 (øvre) og 6 (nedre)
Både EN1 og EN3 er høye (
EN2 lav for å holde scenen lukket)
IN1 Høy, IN3 lav.
Dette gjør fasekombinasjonen-C.
Mens L6234-applikasjonsnotatet foreslo å bruke PWM-en som brukes til å kontrollere hastigheten på motoren til IN-pinnen, bestemte jeg meg for å gjøre det på EN-pinnen fordi jeg på det tidspunktet synes det ville være \'merkelig\' å slå på de øvre og nedre transistorene til fasen vekselvis \'.
Faktisk ser det ut til at det ikke er noe galt med å skru på begge potensialet, så de har samme transistorer på samme tid, fordi de har samme potensiale på
samme tid. ingen av dem går gjennom strømmen Med min metode er den høye
et skjema over motordriften, jeg har også lagt til en 2. 5
fasen aktivert og deaktivert vekselvis ved PWM-frekvensen, mens den lave fasen forblir på under hele faseskiftet.
er
Nedenfor
ampere sikring mellom den positive strømforsyningen og g10-kretsen.
Dette tallet er litt lite, så for større versjoner, se dokumentasjonen for L6234.
dette sporet og spare deg for
Merk: Mike Anton har laget PCB for L6234, som vil (tror jeg) erstatte
krusningen i den regenerative strømmen
jobben med å sette sammen det elektroingeniør og vi vil sette pris på eventuelle rettelser til min forklaring Ved kjøring sender styresystemet strømmen inn i tre motorfaser på en måte
regenerativ bremsing maksimerer styresystemet også dreiemomentet,
som maksimerer dreiemomentet Ved
Laboratory in the United States S. govt. Et laboratorium som gjør mye forskning for bilmotorer
men denne gangen er det et
negativt dreiemoment som får motoren til å bremse ned mens den sender strømmen tilbake til eiken
. Diagrammet nedenfor kommer fra et annet papir som hjelper til med å illustrere hvordan det fungerer
det er mulig for strømmen å flyte
(Jeg tror imidlertid at forklaringen
er delvis feil.
lavende transistorer slår seg på
som er gitt i denne andre artikkelen,
fra B til. Kritisk til regenerativ bremsing,
omformeren fungerer). Denne energien frigjøres når low-end transistoren er slått av, men ved en høyere spenning flyter
og av raskt ( Tusenvis av PWM-brytere per sekund Når high-end-transistoren er slått på, flyter strømmen som vist på det første bildet. god artikkel som forklarer hvordan boost-
øyeblikkelig gjennom \ '
strømmen
anti -eksitasjonsdioden\' ved siden av hver transistor og
går deretter tilbake til batteriet negativt dreiemoment som bremser motoren. Transistoren
på lav side bruker en PWM-bryter, og driftssyklusen til PWM styrer bremsingen når du kjører
fra en kombinasjon til den neste for å opprettholde høyest mulig dreiemoment
, skifter kommuteringen av motoren
første trinn, du kan se at den regenerative bremsen fungerer bra, men den fungerer ikke bra.
Jeg tror hovedårsaken er at harddiskmotoren jeg bruker er en motor med veldig lavt dreiemoment, så den produserer ikke mye BEMF bortsett fra
hastigheten, er det veldig lite regenerativ bremsing (hvis noen )
ved den høyeste
reduserer spenningen med flere volt, dette reduserer også effektiviteten
bruker vanlige likeretterdioder, og jeg kan få bedre ytelse hvis jeg bruker noen spesielle dioder med lavere spenningsfall.
Nedenfor er en liste over innganger og utganger på arduino.
jeg
3
.
digitale
motstand
innganger- 120 K
på Gnd 5
1 Digital utgang i serie med 400 ohm motstand 6
2 Digitale
Digital utgang
utganger i serie med 400 ohm motstand 7 3 Digitale utganger i serie med 400 ohm motstand 9-
på EN 1
i serie med 400 ohm i seriemotstand på 400 Digital utgang med EN 402 11- Den digitale utgangen EN 3 er i serie med en 400 ohm motstand, 100 k Ohm potensiometer
og gnd tilkoblet
5 v
, med
av David Glazer
X-serien er ST L6234 3 -
i begge ender og analog pinne 0 tilkoblet i midten. Dette potensiometeret brukes til å styre motorhastighet og bremsevolum. bldc_congroller 3. 1.
1* 3
fase motordriver IC * kjører skivedrivmotor med
3, 4-sensorer.
klokken * med regenerativ bremsing * motorhastighet og bremsing kontrollert av et enkelt potensiometer * motorposisjon av tre Hall- Effect Sensor * Arduino mottar utgang fra 3-fase-kombinasjon til
, 10,
11 ved 32 kHz
trinn på pinner 9
* PWM -utgang
1,2, 3*
( Tilsvarende EN
3 DO på
motoring * kommenterer mange linjer for feilsøking ved å skrive ut ulike verdier til
bremsing og 9 regener
henholdsvis pinner 5,6, 7 (IN 1,2,3) * Koble simuleringen i 0 til potensiometeret for å endre PWM arbeidssyklus og Skift * mellom 9
04. 500- 523: Taxi *
:
524- 1023
en seriell tilkobling */Int allstate1
int
. Variabler av tre hall-sensorer (3,2,1)
HallState3 = int HallVal;
int bSpeed = 0 for motor; /Brems level of throttle = 0 /
/Speed level
Denne variabelen brukes sammen med den analoge inn for å måle posisjonen
til
spaltepotensiometeret (){pinMode(2,INPUT/Hall 1 pinMode (3,INPUT/Hall 2PIN); motor driver (5,OUTPUT);
/In 1 pinMode (6,OUTPUT); /In 2 pinMode (7,OUTPUT)
; /In 3 pinMode (9,OUTPUT);
/EN 1 pinMode (10,OUTPUT)
; /EN 2 pinMode (11,OUTPUT )
/
; /EN 3/serial. begin(9600); If you will be using a serial connection, please uncomment this line.
* Sett PWM-frekvensen på pinnene 9, 10 og 11/sett PWM til 32 kHz for pinnene 9
, 10/først fjern alle tre pre-divider-bitene: int pre-scalerVal = 0x07 Prescaler /Og verdien i TCCR0B med et binært tall på \'11111000\
The flush command på slutten av programmet
;
\'
'/sett nå den passende pre-encoding biten: int pre-encoding bit 2 = 1
'
00000001\
/
sett
til 32 kHz
for pin 3,11 (Dette programmet bruker kun pin 11) /Slett alle tre pre-caler bitene først: TCCR2B &
PWM
= ~ Pre-calerval /Og verdien
000
angir den passende biten
i TCCR0B med et binært tall på \'
:'/0; TCCR2B |. = Pre-encoding bit 2;
/Eller verdien i TCCR0B med et binært tall på \'00000001'/først fjern alle tre forhåndskodede biter :}
Hovedsløyfen (){ /Tid = millis (/t.'); analogRead (0); /Throttle potensiometer MSPs (Throttle, 512,1023, 0,255); HallState1 =
digitalRead (2);
/Les inngangsverdi fra Hall
1 2 = Digital Read (3). HallVal = (HallState1)+
(4*HallState3); print(\'H 3:
\'); Serial. println(HallState3); Serial. println(\' \'); */ //Serial. println(mSpeed); //Serial. println(HallVal); //Serial. print(\'\'); /Monitor transistor output/delay (1000); /* T1 = digitalRead (2); //T1 = ~T1; T2 = digitalRead (4); //T2 = ~T2; T3 = digitalRead (5); //T3 = ~T3; Serial. print(T1); Serial. print(\'\t\');
Serial. print(T2); Serial. print(\'\t\'); Serial. print(T3
); Serial. print(\'\')
; Serial. print(\'\')
; Serial
print(digitalRead
.
(3)); Serial. print(\'\t\')
;
Serial. print
(digitalRead(9)); Serial. print(\'\t\'); Serial. println(
digitalRead
(
(\'
transistorene
10)); Serial. print
på
slått
\'); Serial. print(\'\'); //delay(500); */Driving phase change/each binary number har et tilfelle som tilsvarer de forskjellige
/bit matematikk som brukes til å endre verdien
på
inneholder utgangen til IN-pinnen på
transistoren
utgangs- arduino
: /PORTD
L6234-driveren/utgangen som brukes til å bestemme om den
øvre
driftssyklusen
eller den nedre transistoren/EN-pinnen for hver fase styres av Arduino-kommandoanalogien, sett
til PWM, rottle =
Case
5 = 5 OFF
3
ON kontrollverdi ( potensiometer). hvis (gass > 511){Switch (HallVal){
/
:
; (High-end transistor
PORTD = 1111xxx00
analogWrite(10,0) Phase B
(duty = 0) analogWrite
closure
)
(11,255) | = B00100000;
/ Analowrite (
9,mSpeed); PWM on A phase ( High-end transistor)analogWrite(
10,255); //Phase B on ( Low-end transistor)
analogWrite(11,0); //Phase B off (duty = 0)
break; Case 5:/PORTD = B101xxx00; /Expected output of pin 0- 7
PORTD & = B00011111; PORTD |. /
Analowrite(11,mSpeed = B110xxx00) (9,255);
analogWrite (11,255); bym0000; // switch (HallVal){
Case 3: analogy writing (9,bSpeed); //analogWrite(9,0); analogWrite(10,0); analogWrite(11,0
)
; break; Case 1: analogy writing (9,bSpeed); analogWrite(10,0); analogWrite(11,0)
analogWrite
; break; Case 5: analogy writing (9,0); analogWrite(11,bSpeed skriving (9,0 analogWrite(11,bSpeed break) analogWrite(10,bSpeed);
(11,0); break; }} /Time =
the
printing program starts
millis (); Time
after
. println(time); //Serial. print(\'\'); //Serial. flush(); /
If you want to debug using a serial
port, please uncomment} I think
the operation that Arduino does in this project is so simple that it seems like a waste to do Denne oppgaven med en mikroprosessor. Faktisk anbefaler L6234 en enkel programmerbar portgruppe (GAL16V8 laget av Lattice Semiconductor). relativt enkle logiske sekvenser som kan drive L6234 IC fra utgangen til de tre hallsensorene. Diagrammet for trinn A er vist nedenfor, og sannhetstabellen for alle tre trinn (For at den logiske kretsen til B- og C-fasene skal kunne byttes til den andre siden av \'eller. Problemet med denne tilnærmingen er at det er nesten 2 koblinger. sammen
Det er best å programmere det som en programmerbar logisk port.