BLDC -motorbeheer met Arduino, gered HD -motor en saalsensors
Tuiste » Blog » BLDC motorbeheer met Arduino, geredde HD -motor en saalsensors

BLDC -motorbeheer met Arduino, gered HD -motor en saalsensors

Views: 0     Skrywer: Site Editor Publish Time: 2020-09-02 Oorsprong: Webwerf

Navraag doen

Facebook -deelknoppie
Twitter -delingknoppie
Lyndeling -knoppie
WeChat Sharing -knoppie
LinkedIn Sharing -knoppie
Pinterest Sharing -knoppie
whatsapp -delingknoppie
Kakao Sharing -knoppie
Snapchat Sharing -knoppie
Telegram -delingknoppie
Sharethis Sharing -knoppie

Tans is entoesiaste baie geïnteresseerd in die beheer van borsellose DC (BLDC)
in vergelyking met die tradisionele DC -motor, die werkverrigting van die motor het verbeter, energiedoeltreffendheid het ook verbeter, maar dit is moeiliker om te gebruik. Daar bestaan ​​baie produkte buite die
rak vir hierdie doel.
Daar is byvoorbeeld baie klein BLDCS -beheerders wat baie goed werk vir RC -vliegtuie.
Vir diegene wat in meer diepte die beheer van die BLDC wil ondersoek, is daar ook baie verskillende mikro-beheerders en ander elektroniese hardeware vir industriële gebruikers, wat gewoonlik baie goeie dokumentasie het.
Tot dusver het ek nog nie 'n uitgebreide beskrywing gevind van hoe om Arduino-mikro-beheerder vir BLDC-beheer te gebruik nie.
As u ook belangstel om regeneratiewe remme te doen, of om 'n BLDC vir kragopwekking te gebruik, het ek nie baie produkte gevind wat geskik is vir gebruik met klein motors nie, en ek het ook nie uitgevind oor hoe om die 3-fase-kragopwekker te beheer nie.
Hierdie struktuur was oorspronklik in 'n verhaal oor
die berekening van die regte tyd, ek doen dit steeds nadat die kursus verby is.
Die idee van die projek is om 'n proporsionele model van 'n bastermotor met die opberging van vliegwielenergie en regeneratiewe rem te toon.
Die motor wat in die projek gebruik word, is 'n klein BLDC's wat skoongemaak is vanaf die beskadigde rekenaar se hardeskyf.
Hierdie handleiding beskryf hoe om die Arduino-mikrobeheerder te gebruik en
die posisie-sensors in bestuur en regeneratiewe remmodusse beïnvloed.
Let daarop dat die besoek van Oscillisoft baie nuttig is, indien nie noodsaaklik nie, om hierdie projek te voltooi.
As u nie toegang tot die omvang het nie, het ek 'n paar voorstelle bygevoeg oor hoe om dit sonder die omvang te doen (stap 5).
Een ding wat hierdie projek nie by enige werklike motorbeheerder moet insluit nie, is enige veiligheidsfunksie soos oor die huidige beskerming.
Die ergste is dat jy die HD -motor uitbrand.
Die implementering van oorstroombeskerming met huidige hardeware is egter nie moeilik nie, en miskien sal ek dit op 'n sekere punt doen.
As u probeer om 'n groter motor te beheer, voeg die huidige beskerming by om u motor en u eie veiligheid te beskerm.
Ek wil probeer om hierdie beheerder te gebruik met 'n groter motor wat 'n werklike 'regte \' kan doen, maar ek het nog nie die regte een nie.
Ek het opgemerk dat eBay 'n 86 W -motor vir ongeveer $ 40 verkoop het.
Lyk soos 'n goeie kandidaat.
Daar is ook 'n RC -webwerf genaamd \ 'Gobrushless \' wat kits verkoop wat hul eie BLDC bymekaarmaak.
Dit is nie te duur nie en dit is die moeite werd om een ​​te bou.
Let daarop dat daar geen saalsensor vir die motor op hierdie webwerf is nie. Whew!
Die skryf van hierdie struktuur is 'n groot werk.
Ek hoop dat u dit nuttig vind, maak u kommentaar en voorstelle.
Digitale multimeter (DMM)-
As u DMM 'n frekwensiemeter-ossilloskoop het (
dit is beter om ten minste 2 kanale te hê)
T8 Torx-drywer (
u het een van hulle nodig om enige hardeskyf oop te maak).
Daar is 'n goeie hardewarewinkel.
Masjienwerkswinkel en vinnige prototipe (
dit is baie nuttig, maar ek dink hierdie projek kan daarsonder gedoen word).
Materiaal BLDC Motor magnetiese ring van die rekenaar se hardeskyf (
die helfte van die motor)
van 'n ander hardeskyf (3-6)
Daar is 'n tweede klein motor op die silwer skyf op die hardeskyf (DC geborselde OK)
rubberband of (verkieslik)
die borsellose DC-motor met 'n handvatsel met 'n ander motoriese elektroniese broodplaat Solid Wire Month, die Arduino Duemilanove 120 K OHM Weerstand Six To 400 OHM OHM Weerstand Poteniometer100 K Ohmst Micro Circuit L6234 Driefase Motorbestuurder IC Twee 100 UF-kondenseerders Een 10 NF Kondensator One 220 nf Kondensator Een 1 UF Kondensator Een 100 UF Kondensator Drie ontvangsdiodes een 2.
Honeywell SS411A Bipolêre Hall-5 Amp Fuse 1 Fuse Holder 3
: Mike Anton het 'n vertoonde produk wat die Power-elektron sal vervang Hierdie handleiding (
dit word beheer met behulp van potensiële induksie).
Spesifikasies en verkrygingsinligting kan in hierdie twee skakels gevind word: as u hierdie projek gaan doen, stel ek voor dat u die tyd neem om deeglik te verstaan ​​hoe die BLDC werk en beheer.
Daar is 'n groot aantal verwysings aanlyn (
sien hieronder vir sommige voorstelle).
Ek bevat egter 'n paar kaarte en tafels in my projek wat u moet help om dit te verstaan.
Hier is 'n lys van die konsepte wat volgens my die belangrikste is om hierdie projek te verstaan: MOSFET-transistors 3-fase halfbrug 6-
3-stap vermindering van sin
Pulswydte Modulasie van fase-motoriese motor (PWM) Hall-
mikroskyfie AVR443: Sensors-generaal verwysing DC-motoriese basiese beginsels vir digitale posisiesensors
van drie-fase Brushless DC-motor gebaseer op ATHELBRURSLESS DC
-Motorbeperking Die Flying Star Hall -sensor, 'n goeie video om die hardeskyfmotor op te ruim, maar dit lyk asof die skrywer die motor as 'n trapmotor en as 'n trapmotor bestuur. 'N Meer spesifieke verwysingswebblad vir die BLDC op die L6234 Motor Drive IC, insluitend datablaaie, toepassingsnotas en aankoopinligting.
Gratis monster vir PM Brushless Motor Drive vir hibriede elektriese voertuie.
Dit is die enigste artikel wat ek gevind het wat die volgorde van die regeneratiewe remfase -verandering beskryf.
Hierdie artikel, regeneratiewe remme in elektriese voertuie, is nuttig, ek het 'n paar getalle daaruit geleen, maar ek dink dit beskryf verkeerd hoe wedergeboorte werk.
Ek het hierdie projek met 'n herwinde skyfaandrywing gedoen, want dit was maklik om deur te gaan en ek gebruik graag 'n klein lae spanningsmotor om die koord wat deur BLDC beheer word, te leer en geen veiligheidsprobleme te veroorsaak nie.
Daarbenewens word die magneetkonfigurasie van die saalsensor baie eenvoudig deur die magnetiese ring (rotor)
vanaf die tweede van hierdie motors te gebruik (sien stap 4).
As u nie wil gaan om die Hall Sensor (Stappe 5-7) te installeer en te kalibreer nie (stappe 5-7),
weet ek dat daar ten minste 'n CD/DVD-dryfmotors is wat in die Hall-sensor gebou is.
Om 'n mate van traagheid aan die motor te gee en hulle 'n bietjie vrag te gee, het ek 5 hardeskywe op die motor gesit, saggies met 'n bietjie sterk gom vasgeplak en aan die motor vasgeplak (
dit het die vliegwiel in my oorspronklike projek gemaak).
As u die motor van die hardeskyf gaan verwyder, benodig u 'n T8 -torx -aandrywing om die behuising los te maak (
gewoonlik is daar twee skroewe agter die stok in die middelste etiket)
en interne skroewe wat die motor op sy plek hou.
U moet ook die hoofleser (
Sound Circle Executive) verwyder
, op hierdie manier kan u die geheueskyf uithaal om die motor te bereik.
Daarbenewens benodig u 'n tweede motoriese motor om die rotor uit die motor te verwyder (
daar is 'n magneet binne).
Om die motor uitmekaar te haal, gryp ek die rotor (bo)
'n vise van die motor en trek dit op die stator (onder).
Die twee skroewedraaiers is 180 grade van mekaar.
Dit is nie maklik om die motor op 'n stywe genoeg paar te hou sonder vervorming nie.
Miskien wil u 'n hout-
blok vir hierdie doel bou.
Ek het 'n gat in die magnetiese ring op die draaibank geboor sodat dit gemaklik aan die bokant van die motor pas.
As u nie die draaibank kan gebruik nie, kan u die omgekeerde rotor op die motor met 'n sterk gom regmaak.
Die foto's 2 en 3 hieronder toon die binnekant van een van die motors wat ek uitmekaar gehaal het.
In die eerste helfte is daar (die rotor) 8 pale (
magneet toegedraai in plastiek).
In die tweede helfte (die stator)
is daar 12 gleuwe (windings).
Elk van die drie motorfases het 4 gleuwe in reekse.
Sommige HD -motors het drie kontakte aan die onderkant, een kontak per fase, en die ander is die middelpunt van die motor (
waar drie fases bymekaarkom).
In hierdie projek is geen sentrumkraan nodig nie, maar dit kan handig te pas kom in sensorvrye beheer (
ek hoop om eendag 'n nota oor sensorvrye beheer vry te stel).
As u motor vier kontakte het, kan u die fase met ohmeter identifiseer.
Die weerstand tussen die middelste kraan en die fase is die helfte van die weerstand tussen enige twee fases.
Die meeste van die literatuur oor BLDC-motors handel oor diegene met 'n potensiële golfvorm van die leervormige rug, maar dit lyk asof die hardeskyfmotor 'n rugpotensiaal het wat soos 'n sinus lyk (sien hieronder).
Sover ek weet, werk 'n sinusgolfmotor met 'n sinusgolf PWM goed, hoewel die doeltreffendheid ietwat kan daal.
Soos al die BLDC-motors, bestaan ​​hierdie een uit driefase halftransistorbrug
(
sien 2de foto's hieronder).
Ek gebruik die IC wat deur ST Micro (L6234) gemaak is
vir die brug, ook bekend as die motorbestuurder.
Die elektriese verbinding van L6234 word in stap 8 getoon.
Die derde foto hieronder toon 'n skematiese diagram van die motorbestuurder en die drie motorfases.
In order for the motor to operate clockwise, the switch will be made in the following order (
The first letter is the upper transistor and the second letter is the lower transistor)
: Step 1 2 3 4 5 6 clockwise: CB, AB, AC, BC, BA, CA counter clockwise: BC, BA, CA, CB, AB, AC these 6-
The step sequence requires a \'electrical degree\' of 360, but only a physical degree of 90 vir hierdie motors.
Daarom kom die draaisnelheid van elke motor vier keer voor.
Die twee reekse blyk dieselfde te wees, maar dit is nie dieselfde nie, want vir 6-
stap volgorde, vir CW, is die huidige rigting deur die fase een rigting, en vir CCW is die huidige rigting teenoorgestelde.
U kan dit self sien deur die spanning van die battery of kragbron op enige motorfase toe te pas.
As u die spanning toepas, sal die motor 'n bietjie in een rigting beweeg en stop.
As u vinnig die spanning op die fase in een van die bogenoemde rye kan verander, kan u die motor met die hand draai.
Transistors en mikrobeheerders voltooi al hierdie skakelaars baie vinnig, en skakel honderde kere per sekonde oor wanneer die motor teen 'n hoë snelheid loop.
Let ook daarop dat as die spanning op albei fases toegepas word, die motor 'n bietjie beweeg en dan stop.
Dit is omdat die wringkrag nul is.
U kan dit op die vierde foto hieronder sien, wat die agterste potensiaal van 'n paar motorfases toon.
Dit is 'n sinusgolf.
As die golf deur die X-
as gaan, is die wringkrag wat deur hierdie fase voorsien word nul. In die ses-
stap BLDC-faseveranderingsvolgorde wat nooit gebeur het nie.
Voordat die wringkrag op 'n spesifieke fase laag word, word die drywing oorgeskakel na 'n ander fase -kombinasie.
Groter BLDC -motors word gewoonlik vervaardig deur saalsensors in die motor.
As u so 'n motor het, kan u hierdie stap oorslaan.
Ek weet ook dat daar ten minste 'n paar CD-/DVD-dryfmotors is wat in 'n reeds-hall-sensor ingebou is.
As die motor draai, word drie saalsensors gebruik vir posisieopsporing, dus word die faseverandering op die regte oomblik uitgevoer.
My HD -motor het tot 9000 r / min (150 Hz).
Aangesien daar 24 veranderinge per wiel is, teen 9000 r / min, word die masjien elke 280 mikrosekondes verander.
Die Arduino-mikro-beheerder werk teen 16 MHz, dus is elke kloksiklus 06 mikrosekondes.
Ek weet nie hoeveel kloksiklusse nodig is om 'n vonnis te verminder nie, maar selfs al is 100 kloksiklusse nodig, dit wil sê, dit neem 5 mikrosekondes vir elke vermindering van die vonnis.
HD -motors het nie saalsensors nie, daarom is dit nodig om dit aan die buitekant van die motor te installeer.
Die sensor moet vasgestel word ten opsigte van die motorrotasie en blootgestel word aan 'n reeks pale wat ooreenstem met die motorrotasie.
My oplossing is om die magnetiese ring van dieselfde motor te verwyder en dit onderstebo op die motor te installeer om beheer te word.
Daarna het ek drie saalsensors bo hierdie magnetiese ring geïnstalleer, 30 grade van mekaar op die motoras (
120 grade elektriese motorrotasie).
My saalsensorhouer bestaan ​​uit 'n eenvoudige houer wat bestaan ​​uit drie aluminiumonderdele wat deur my verwerk is en drie plastiekonderdele wat op 'n vinnige prototipe gemaak is.
As u nie hierdie instrumente het nie, moet dit nie moeilik wees om 'n ander manier te vind om die posisie aan te dui nie.
Dit sal meer uitdagend wees om hakies vir saalsensors te skep.
Dit is 'n moontlike manier om te werk: 1.
Soek 'n plastiekbakkie van die regte grootte en u kan die saalsensor versigtig epoxy. 2.
'n Sjabloon word op die papier gedruk, met dieselfde sirkel as die magnetiese ringradius, en die drie merke is 15 grade 3 uitmekaar.
Plak die sjabloon op die skyf en gebruik dan die sjabloon as 'n gids om die Hall Sensor Epoxy op sy plek versigtig te plaas.
Noudat saalsensors op die motor geïnstalleer is, koppel dit aan die stroombaan hieronder en toets dit met 'n DMM of ossilloskoop om seker te maak dat die uitset hoër en laer word namate die motor draai.
Ek bestuur hierdie sensors onder 5 V met behulp van Arduino 's 5 V -uitset.
Die saalsensor is hoog of laag in die uitset (1 of 0),
dit hang af of hulle die Antarktika of die Arktiese gebied voel.
Aangesien hulle 15 grade van mekaar is, draai die magnete onder hulle en verander die polariteit elke 45 grade, sal hierdie drie sensors nooit terselfdertyd hoog of laag wees nie.
As die motor draai, is die sensoruitset 6-
die stappatroon in die volgende tabel.
Die sensor moet in lyn wees met die beweging van die motor, sodat een van die drie sensors presies verander in die posisie van die motorfase.
In hierdie geval moet die stygende rand van die eerste saalsensor (H1)
ooreenstem met die opening van die C -kombinasie (hoog) en B (laag).
Dit is gelykstaande aan die aanskakeling van transistors 3 en 5 in die brugbaan.
Ek bring die sensor in lyn met die magneet met 'n ossilloskoop.
Om dit te kan doen, moet ek drie omvangskanale gebruik.
Ek draai die motor deur aan die gordel van die tweede motor te koppel en meet die rugpotensiaal tussen die tweefase -kombinasies (
A en B, A en C).
Dit is twee sinus.
Soos die golwe op die foto hieronder,
kyk dan na die sein van Hall Sensor 2 op kanaal 3 van die ossilloskoop.
Die saalsensorhouer is gedraai totdat die stygende rand van die saalsensor volledig in lyn is met die punt waar die faseverandering uitgevoer moet word (sien hieronder).
Ek besef nou dat daar net twee kanale is om dieselfde kalibrasie te doen.
As die BEMF van fase-kombinasie B-
met behulp van C, sal die stygende rand van H2 verband hou met BC-kromme.
Die rede waarom die faseverandering hier uitgevoer moet word, is om die motor -wringkrag altyd so hoog as moontlik te hou.
Die agterste potensiaal is eweredig aan die wringkrag en u sal sien dat elke fase -verandering plaasvind wanneer die rugpotensiaal onder die volgende fase -kromme gaan.
Daarom bestaan ​​die werklike wringkrag uit die hoogste deel van elke fase -kombinasie.
As u nie toegang tot die omvang kan kry nie, is my idee van belyning hier.
Dit is eintlik 'n interessante oefening vir almal wat wil weet hoe die BLDC -motor werk.
As die motorfase A (positief) en B (negatief)
aan die kragbron gekoppel is en die kragbron aanskakel, sal die motor effens draai en stop.
Dan, as die negatiewe kraglood na die C -fase verskuif word en die krag aangeskakel word, sal die motor verder draai en stop.
Die volgende deel van die volgorde is om die positiewe voorsprong na fase B te skuif, ens.
As u dit doen, stop die motor altyd waar die wringkrag nul is, wat ooreenstem met een plek waar die kaart deur die x-as op die kaart beweeg.
Let daarop dat die nulpunt van die derdefase-kombinasie ooreenstem met die faseveranderingsposisie van die eerste twee kombinasies.
Daarom is die nul wringkragposisie van B-
die C-kombinasie waar u die stygende rand van H2 wil posisioneer.
Merk hierdie posisie met fyn merke of skerp lemme, en pas dan die Hall -sensorhouer met DMM aan totdat die uitset van H2 presies hoër is op hierdie merk.
Selfs as u 'n bietjie van u skoolskedule afwyk, moet die motor goed werk.
Die drie motorfase sal krag van die L6234 driefase-motorbestuurder ontvang.
Ek het gevind dat dit 'n goeie produk is wat die toets van die tyd kan verduur.
Daar is baie maniere om u komponente per ongeluk te braai as u kragelektronika gebruik, ek is nie 'n elektriese ingenieur nie, en ek weet nie altyd wat aangaan nie.
In my skoolprogram het ons ons eie 3-
fase halfbruguitset van 6 MOSFET-transistors en 6 diodes gedoen.
Ons het dit op die HIP4086 van die ander bestuurder Intersil gebruik, maar ons het baie probleme met hierdie opstelling.
Ons het 'n klomp transistors en skyfies verbrand.
Ek bestuur L6234 (
so die motor) op 12V.
Die L6234 het 'n ongewone stel insette om 'n halfbrug van 6 transistors te beheer.
Nie elke transistor het 'n inset nie, maar 'n moontlik (EN)
-invoer vir elk van die drie fases, en dan 'n ander invoer (in)
kies watter transistor in die oop fase (boonste of onder).
Byvoorbeeld, aanskakel Transistor 1 (boonste) en 6 (laer)
beide EN1 en EN3 is hoog (
EN2 laag om die verhoog toe te hou)
in1 hoog, in3 laag.
Dit maak die fasekombinasie-C.
Terwyl die L6234 -toepassingsnota voorgestel het dat die PWM gebruik word om die snelheid van die motor op die in -pen te beheer, het ek besluit om dit op die entjie te doen, want ek dink dat dit destyds '' vreemde \ 'sou wees om die boonste en onderste transistors van die fase afwisselend aan te skakel
. hulle gaan
deur
.
stroom
die Klein, dus vir groter weergawes, verwys na die dokumentasie vir L6234.
Opmerking: Mike Anton het die PCB vir L6234 gemaak, wat (glo ek)
hierdie snit sal vervang en u die taak sal bespaar om dit saam te stel.
Kyk na hierdie skakels vir spesifikasies en aankoopinligting: ek het nie baie gevind oor 3 nie.
Ek sal my begrip van hoe dit werk, beskryf.
Let daarop dat ek nie 'n elektriese ingenieur is nie en dat ons enige regstellings vir my verduideliking sal waardeer.
As u bestuur, stuur die beheerstelsel die stroom in drie motorfases op 'n manier wat die wringkrag maksimeer.
In regeneratiewe remme maksimeer die beheerstelsel ook die wringkrag, maar hierdie keer is dit 'n negatiewe wringkrag wat veroorsaak dat die motor vertraag terwyl die stroom na die battery terugstuur.
Die regeneratiewe remmetode wat ek gebruik het, kom uit 'n referaat van die Oakridge National Laboratory in die Verenigde State. S. Govt.
'N Laboratorium wat baie navorsing doen vir motormotors.
Die onderstaande grafiek kom van 'n ander artikel wat help om te illustreer hoe dit werk (
ek dink egter die verduideliking wat in hierdie tweede artikel gegee word, is gedeeltelik verkeerd).
Hou in gedagte dat wanneer die motor draai, die BEMF -spanning in die motorfase op en af ​​wissel.
In die figuur wys dit die oomblik wanneer BEMF hoog in fase B is en laag in die stadium is.
In hierdie geval is dit moontlik dat die stroom van B na.
Krities vir regeneratiewe remme, lae-end-transistors skakel vinnig aan en uit (
duisende PWM-skakelaars per sekonde).
Wanneer die hoë-end-transistor-skakelaar afgeskakel is;
As die lae transistor aangeskakel is, vloei die stroom soos in die eerste foto getoon.
Wat kragelektronika betref, is die kring soos 'n toestel wat 'n boost -omskakelaar genoem word, waar energie in die fase van die motor gestoor word (
Wikipedia het 'n goeie artikel wat verduidelik hoe die Boost Converter werk).
Hierdie energie word vrygestel wanneer die lae-end-transistor afgeskakel word, maar met 'n hoër spanning vloei die stroom onmiddellik deur die \ 'anti-excitation \' -diode langs elke transistor en keer dan terug na die battery.
Die diode verhoed dat stroom vanaf die battery na die motor vloei.
Terselfdertyd is die stroom in hierdie rigting (
in teenstelling met bestuur)
in wisselwerking met die magneetring om 'n negatiewe wringkrag te produseer wat die motor vertraag.
Die lae-sy-transistor gebruik 'n PWM-skakelaar, en die werksiklus van PWM beheer die hoeveelheid remme.
As u ry, skakel die pendel van die motor mettertyd van een kombinasie na die volgende om die hoogste moontlike wringkrag te handhaaf.
Die pendel van die regeneratiewe rem is baie dieselfde omdat die een of ander skakelmodus veroorsaak dat die motor soveel negatiewe wringkrag lewer.
As u die video in die eerste stap kyk, kan u sien dat die regeneratiewe rem goed werk, maar dit werk nie goed nie.
Ek dink die hoofrede is dat die hardeskyfmotor wat ek gebruik 'n baie lae wringkragmotor is, en dit produseer nie baie BEMF nie, behalwe teen die hoogste snelheid.
Met 'n laer snelheid is daar baie min regeneratiewe remme (indien enige).
My stelsel loop ook teen 'n relatiewe lae spanning (12 V)
, aangesien elke pad deur die anti-eksitasie-diode die spanning met verskillende volt verminder, verminder dit ook die doeltreffendheid.
Ek gebruik normale gelykrigterdiodes en ek kan beter werkverrigting kry as ek 'n paar spesiale diodes met laer spanningsval gebruik.
Hieronder is 'n lys insette en uitsette op Arduino.
Sluit ook kaarte en foto's van my bord in. 2-
Digitale intreemaal 1
120 K Weerstand van GND 3
Digital Entry Hall 2
120 K Weerstand van GND 4
Hall 3 Digitale inset-
120 K Weerstand van GND 5
1 Digitale uitset in serie met 400 Ohm-weerstand 6
2 Digitale uitsette in serie met 400 OHM-weerstand 7
3 Digitale uitsette in serie met 400 Ohm-weerstand van 9-
Digitale uitset van en 1 in serie met 400
OHM Reeks met 400 Ohm-weerstand 11-
Die EN 3-digitale uitset is in serie met 'n 400 ohm-weerstand, 100 K ohm potensiometer, met 5 V en GND aan beide ente gekoppel en analoog PIN 0 in die middel gekoppel.
Hierdie potensiometer word gebruik om die snelheid en remvolume te beheer.
5 V -kragtoevoer word ook gebruik om saalsensors uit te voer (sien stap 5).
Hier is die hele program wat ek vir Ardjuino geskryf het, wat opmerkings bevat:/* bldc_congroller 3. 1.
1* 3 deur David Glazer.
Die X-reeks is ST L6234 3-
Fase Motorbestuurder IC * Lopende skyfaandrywing Motor met die kloksgewys * met 'n regeneratiewe rem * Motorsnelheid en remme beheer deur 'n enkele potensiometer * Motorposisie deur drie saal-
effek-sensor * Arduino ontvang die uitset van 3 Hall-sensors (Pins 2,3,4)
en omskep hul kombinasie na 6 verskillende fase-uitsette (pins op pins 9, 10, 11, 11 op 32 kH
. Om onderskeidelik 1,2, 3 * 3 op penne 5,6, 7 te doen (in 1,2,3)
-dienssiklus te verander en te verander * tussen bestuur en regeneratiewe rem
* Verbind die simulasie in 0 aan die potensiometer om die
PWM
.
* Allstate1





​() {pinMode (2, invoer);
/Hall 1 PinMode (3, inset);
/Hall 2 PinMode (4, inset);
/L6234 HALL 3/Uitset van PinMode -motorbestuurder (5, uitvoer);
/In 1 pinmode (6, uitset);
/In 2 pinmode (7, uitset);
/In 3 pinmode (9, uitset);
/En 1 pinmode (10, uitset);
/En 2 pinmode (11, uitset);
/EN 3/serie. begin (9600);
As u 'n seriële verbinding gaan gebruik, moet u hierdie reël ontbloot.
Die Flush -opdrag aan die einde van die program.
/* Stel PWM-frekwensie op penne 9, 10 en 11/Set PWM op 32 kHz vir penne 9, 10/Maak al drie die voorverdelingsstukke uit: int prescalerval = 0x07;
/Skep 'n veranderlike genaamd Prescalerval en stel dit gelyk aan die binêre getal \ '00000111 \' tccr1b & = ~ Prescaler
/en die waarde in tccr0b met 'n binêre aantal \ '11111000 \' /Stel nou die toepaslike voor-ingemerkte bit: int pre-incoing bit 2 = 1;
/Stel Prescalerval in gelyk aan die binêre nommer \ '00000001 \' tccr1b | = Prescalerval2;
/Of waarde in tccr0b met 'n binêre aantal \ '00000001 \' /Stel PWM op 32 kHz vir pen 3,11 (
hierdie program gebruik slegs PIN 11)
/Maak al drie die voorkalerbits eers skoon: TCCR2B & = ~ Pre-kalifaal;
/En die waarde in tccr0b met 'n binêre aantal \ '11111000 \'/Stel nou die toepaslike voor-koderingsbit in: TCCR2B | = Vooraf-kodering bit 2;
/Of die waarde in tccr0b met 'n binêre aantal \ '00000001 \'/maak eers al drie vooraf gekodeerde stukkies skoon:}
Die hooflus van die/prgrom void lus () {
/tyd = millis ();
Tyd nadat die drukprogram begin. println (tyd); // reeks. druk (\ '\');
Throttle = analogread (0);
/Gasspotensiometer MSP's = MAP (
Throttle, 512,1023, 0,255);
/Die bestuur word gekarteer na die boonste helfte van die potensiometer BSPEED = MAP (
versneller, 0,511,255, 0);
/Half-deel regeneratiewe rem aan die onderkant van die pot/MSPS ed = 100;
/Vir ontfouting van HallState1 = DigitalRead (2);
/Lees die insetwaarde uit Hall 1 2 = digitale lees (3);
/Lees die insetwaarde uit Hall 2 3 = Digital Read (4);
Lees insetwaarde/numeriese skrywe uit Hall 3 (8, Hallstate1);
/As die ooreenstemmende sensor met 'n hoë krag is, sal die LED aanskakel
wat oorspronklik gebruik word om DigitalWrite te ontfout (9, Hallstate2);
// DigitalWrite (10, Hallstate3); HallVal = (Hallstate1)+ (2*Hallstate2)+ (4*Hallstate3);
/Bereken die binêre waardes van 3 Hall Sensors/* -reeks. druk (\ 'h 1: \');
Vir ontfouting van seriële poort. println (Hallstate1); Reeks. druk (\ 'H 2: \'); Reeks. println (Hallstate2); Reeks. druk (\ 'H 3: \'); Reeks. println (Hallstate3); Reeks. println (\ '\');
*/// reeks. println (MSPEED); // reeks. println (Hallval); // reeks. druk (\ '\');
/Monitor Transistor -uitset/vertraging (1000);
/* T1 = digitalRead (2); // t1 = ~ t1;
T2 = digitalRead (4); // t2 = ~ t2;
T3 = digitalRead (5); // t3 = ~ t3; Reeks. druk (T1); Reeks. druk (\ '\ t \'); Reeks. druk (T2); Reeks. druk (\ '\ t \'); Reeks. druk (T3); Reeks. druk (\ '\'); Reeks. druk (\ '\'); Reeks. Druk (DigitalRead (3)); Reeks. druk (\ '\ t \'); Reeks. Druk (DigitalRead (9)); Reeks. druk (\ '\ t \'); Reeks. println (DigitalRead (10)); Reeks. druk (\ '\'); Reeks. druk (\ '\'); // vertraging (500);
*/Bestuursfaseverandering/Elke binêre nommer het 'n geval wat ooreenstem met die verskillende transistors wat aangeskakel is/bit wiskunde wat gebruik word om die waarde van die uitset arduino te verander:/portd bevat die uitset van die in -pen op die L6234 -drywer/die uitset wat gebruik word om te bepaal of die boonste transistor of die onderste transistor/en pen vir elke fase beheer word deur die ARDuino -kommando -analogie, stel die pligsiklus van PWM (
0 = OFF, 255 = op Ortrottle, stel die pligsiklus van PWM (0; waarde beheer deur potensiometer). if (Throttle> 511) {skakelaar (HallVal) {
geval 3:/portd = 1111xxx00;
/Verwagte uitset van PIN 0-
7 XXX verwys na Hall-inset en PORTD & = B00011111 moet nie verander word nie;
Portd | = B01100000;
/Analowrite (9, MSPEED);
PWM op 'n fase (
hoë-end-transistor) analoogskryf (10,0);
Fase B -sluiting (plig = 0) analogwrite (11.255); // Fase C op -Duty = 100% (
lae -end transistor) breek;
Geval 1:/portd = b001xxx00;
/Verwagte uitset van PIN 0-
7 PORTD & = B000111111;
/Portd | = B00100000;
/Analowrite (9, MSPEED);
PWM op 'n fase (
hoë-end-transistor) analoogskryf (10.255); // Fase B op (
lae-end transistor) analoogskryf (11,0); // Fase B af (plig = 0) breek;
Geval 5:/portd = b101xxx00;
/Verwagte uitset van PIN 0-
7 PORTD & = B000111111;
/Portd | = B10100000; Analogwrite (9,0); Analogwrite (10.255); AnalogWrite (11, MSPEED); breek;
Geval 4:/portd = b100xxx00;
/Verwagte uitset van PIN 0-
7 PORTD & = B000111111;
Portd | = Bym000;
/Analowrite (9,255); Analogwrite (10,0); AnalogWrite (11, MSPEED); breek;
Geval 6:/portd = b110xxx00;
/Verwagte uitset van PIN 0-
7 PORTD & = B000111111;
Portd B11. 000 =;
/Analowrite (9,255); analogwrite (10, MSPEED); Analogwrite (11,0); breek;
Geval 2:/portd = b010xxx00;
/Verwagte uitset van PIN 0-
7 PORTD & = B000111111;
B0201700 PORTD | =;
/Analowrite (9,0); analogwrite (10, MSPEED); Analogwrite (11.255); breek; }}
/Regeneratiewe remfase -verandering /portd (
uitset van in PIN op L6234)
Die penne is altyd laag, dus word slegs lae transistors in elke fase tydens regen gebruik. rem. anders {
/portd = b000xxx00;
/Verwagte uitset van PIN 0-
7 PORTD & = B000111111;
Portd | = Bym0000; // skakelaar (HallVal) {
geval 3: analogie -skryfwerk (9, bSpeed); // analogwrite (9,0); Analogwrite (10,0); Analogwrite (11,0); breek;
Saak 1: Analogie -skryfwerk (9, BSPEED); Analogwrite (10,0); Analogwrite (11,0); breek;
Saak 5: Analogie -skryfwerk (9,0); Analogwrite (10,0); AnalogWrite (11, BSPEED); breek;
Saak 4: Analogie -skryfwerk (9,0); Analogwrite (10,0); AnalogWrite (11, BSPEED); breek;
Saak 6: Analogie -skryfwerk (9,0); AnalogWrite (10, BSPEED); Analogwrite (11,0); breek;
Saak 2: Analogie -skryfwerk (9,0); AnalogWrite (10, BSPEED); Analogwrite (11,0); breek; }}
/Tyd = millis ();
Tyd nadat die drukprogram begin. println (tyd); // reeks. druk (\ '\'); // reeks. spoel ();
/As u met 'n seriële poort wil ontfout,
dan dink ek dat die operasie wat Arduino in hierdie projek doen, so eenvoudig is dat dit soos 'n vermorsing lyk om hierdie taak met 'n mikroverwerker te doen.
In werklikheid beveel L6234 se toepassingsnotas 'n eenvoudige programmeerbare hekskikking aan (
Gal16v8 van rooster halfgeleier) om hierdie werk te verrig.
Ek is nie vertroud met die programmering van hierdie toestel nie, maar die koste van IC is slegs $ 2. 39 by Newark.
Ander soortgelyke geïntegreerde stroombane is ook baie goedkoop.
'N Ander opsie is om die diskrete logiese hekke saam te stel.
Ek het met 'n paar relatiewe eenvoudige logiese reekse vorendag gekom wat die L6234 IC van die uitset van die drie saalsensors kon dryf.
Die grafiek vir stadium A word hieronder getoon, en die waarheidstabel vir al drie die fases (
om die logiese stroombaan van die B- en C -fases te laat oorgaan, moet die ~ 'nie \' -deur na die ander kant van die \ 'oorgeskakel word, of
die probleem met hierdie benadering is dat daar byna 20 verbindings op elke stadium is, so dit neem 'n bietjie werk om dit saam te stel.
Dit is die beste om dit as 'n ontginde logiese hek te programmeer.

Hoprio Group 'n Professionele vervaardiger van beheerder en motors, is in 2000 gestig. Groep se hoofkwartier in Changzhou City, Jiangsu -provinsie.

Vinnige skakels

Kontak ons

Whatsapp: +86 18921090987 
Tel: +86-18921090987 
Voeg by: No.19 Mahang South Road, Wujin High-Tech District, Changzhou City, Jiangsu Provinsie, China 213167
Los 'n boodskap
Kontak ons
Kopiereg © 2024 Changzhou Hoprio E-Commerce Co., Ltd. Alle regte voorbehou. Sitemap | Privaatheidsbeleid