Sa panahong ito, ang mga mahilig ay interesado na makontrol ang Brushless DC (BLDC)
Kung ikukumpara sa tradisyunal na DC motor, ang pagganap ng motor ay bumuti, ang kahusayan ng enerhiya ay napabuti din, ngunit ito ay mas mahirap gamitin. Maraming mga off-the-
Shelf na produkto ang umiiral para sa layuning ito.
Halimbawa, maraming maliliit na controller ng BLDC na napakahusay na gumagana para sa RC aircraft.
Para sa mga gustong tumingin sa kontrol ng BLDC nang mas malalim, mayroon ding iba't ibang micro-controller at iba pang elektronikong hardware para sa mga pang-industriyang gumagamit, na kadalasang mayroong napakahusay na dokumentasyon.
Sa ngayon ay wala pa akong nakitang komprehensibong paglalarawan kung paano gamitin ang Arduino micro-controller para sa kontrol ng BLDC.
Gayundin, kung interesado kang gumawa ng regenerative braking, o gumamit ng BLDC para sa pagbuo ng kuryente, wala akong nakitang maraming produkto na angkop para gamitin sa maliliit na motor, at hindi ko nalaman kung paano kontrolin ang 3-Phase generator.
Ang istrakturang ito ay orihinal na nasa isang kuwento tungkol sa real-
Time na pagkalkula, patuloy kong ginagawa ito pagkatapos ng kurso.
Ang ideya ng proyekto ay upang ipakita ang isang proporsyonal na modelo ng isang hybrid na kotse na may flywheel energy storage at regenerative braking.
Ang motor na ginamit sa proyekto ay isang maliit na BLDC na nalinis mula sa nasirang hard drive ng computer.
Inilalarawan ng manual na ito kung paano gamitin ang Arduino micro-controller at Hall-
Affects position sensors sa pagmamaneho at regenerative braking mode.
Pakitandaan na ang pagbisita sa oscillisoft ay lubhang nakakatulong, kung hindi mahalaga, upang makumpleto ang proyektong ito.
Kung hindi mo ma-access ang saklaw, nagdagdag ako ng ilang mungkahi kung paano ito gagawin nang walang saklaw (hakbang 5).
Ang isang bagay na hindi dapat isama ng proyektong ito sa anumang aktwal na controller ng motor ay ang anumang function ng kaligtasan tulad ng higit sa kasalukuyang proteksyon.
Sa katunayan, ang pinakamasama ay na-burn mo ang HD motor.
Gayunpaman, ang pagpapatupad ng over-current na proteksyon sa kasalukuyang hardware ay hindi mahirap, at marahil ay gagawin ko iyon sa isang punto.
Kung sinusubukan mong kontrolin ang isang mas malaking motor, mangyaring magdagdag ng higit sa kasalukuyang proteksyon upang maprotektahan ang iyong motor at ang iyong sariling kaligtasan.
Gusto kong subukang gamitin ang controller na ito gamit ang isang mas malaking motor na maaaring gumawa ng ilang \'real\' na trabaho ngunit wala pa akong tama.
Napansin ko na ang eBay ay nagbebenta ng 86 W na kotse sa halagang $40.
Mukhang magaling na kandidato.
Mayroon ding RC website na tinatawag na \'GoBrushless\' na nagbebenta ng mga kit na bumubuo ng sarili nilang BLDC.
Ang mga ito ay hindi masyadong mahal at ito ay nagkakahalaga ng karanasan upang bumuo ng isa.
Pakitandaan na walang hall sensor para sa motor sa website na ito. Whew!
Ang pagsulat ng istrukturang ito ay isang malaking trabaho.
Umaasa ako na nahanap mo itong kapaki-pakinabang, mangyaring gawin ang iyong mga komento at mungkahi.
Digital Multimeter (DMM)-
Kung ang iyong DMM ay may frequency meter oscilloscope (
Mas mainam na magkaroon ng hindi bababa sa 2 channel)
T8 Torx driver (
Kailangan mo ng isa sa mga ito upang buksan ang anumang hard drive).
May magandang tindahan ng hardware.
Machine Workshop at mabilis na prototype (
Malaking tulong ang mga ito ngunit sa tingin ko ay magagawa ang proyektong ito nang wala sila).
Materyal na bldc motor magnetic ring mula sa hard disk ng computer (
Kalahati ng motor)
Mula sa isa pang hard driveMarami (3-6)
May pangalawang maliit na motor sa silver disk sa hard disk (DC brushed OK)
Rubber band o (mas mabuti)
Ang brushless DC motor na may hawakan kasama ang isa pang motor electronic bread plate solid wire month ang Arduino Duemilanove 120 k ohm linear0 resistor o 60 k ohm na umiikot o 6000 resistor ohmST micro circuit L6234 three phase motor driver IC dalawang 100 uF capacitor isa 10 nF capacitor isa 220 nF capacitor isa 1 uF capacitor isa 100 uF capacitor tatlong receiving diodes Isa 2.
Honeywell SS411A bipolar Hall-5 Ampholder na fuse na
ibebenta ang Mike na produkto ng Antonse na ibebenta ang Mike na power capacitor at Antonse3 electronics at Hall sensor circuits na ipinakita ko sa manwal na ito (
Ito ay kinokontrol gamit ang back potential induction).
Ang mga detalye at impormasyon sa pagkuha ay matatagpuan sa dalawang link na ito: Kung gagawin mo ang proyektong ito, iminumungkahi kong maglaan ka ng oras upang lubusang maunawaan kung paano gumagana at kinokontrol ang BLDC.
Mayroong isang malaking bilang ng mga sanggunian online (
Tingnan sa ibaba para sa ilang mga mungkahi).
Gayunpaman, nagsasama ako ng ilang mga tsart at talahanayan sa aking proyekto na dapat makatulong sa iyo na maunawaan.
Narito ang isang listahan ng mga konsepto na sa tingin ko ay pinakamahalaga sa pag-unawa sa proyektong ito: MOSFET transistors 3-phase half-bridge 6-
3-step na pagbabawas ng pangungusap
Pulse Width Modulation ng phase motor (PWM)Hall-
Microchip AVR443: sensors-general reference DC motor Mga Pangunahing Prinsipyo para sa Digital position sensors
Control ng three-phase DC motor na walang kontrol sa DC na motor na walang kontrol sa
DC na motor na kontrol. ng Flying Star Hall sensor, isang magandang video ng paglilinis ng hard drive na motor, ngunit ang may-akda ay tila pinapatakbo ang motor bilang isang stepping motor at bilang isang stepping motor. Isang mas tiyak na reference na web page para sa BLDC sa l6234 motor drive IC, kasama ang mga data sheet, mga tala ng aplikasyon, at impormasyon sa pagbili.
Libreng sample para sa PM brushless motor drive para sa hybrid electric vehicle applications.
Ito ang tanging papel na nakita ko na naglalarawan sa pagkakasunud-sunod ng pagbabago ng yugto ng pagbabagong-buhay na pagpepreno.
Ang papel na ito, ang regenerative braking sa mga de-kuryenteng sasakyan ay kapaki-pakinabang, humiram ako ng ilang numero mula dito, ngunit sa palagay ko ay mali itong inilalarawan kung paano gumagana ang pagbabagong-buhay.
Ginawa ko ang proyektong ito gamit ang recycled disk drive motor dahil madali itong dumaan at gusto kong gumamit ng maliit na low voltage na motor para malaman ang cord na kinokontrol ng BLDC at hindi magdulot ng anumang problema sa kaligtasan.
Bilang karagdagan, ang pagsasaayos ng magnet ng sensor ng hall ay nagiging napaka-simple sa pamamagitan ng paggamit ng magnetic ring (rotor)
Mula sa pangalawa ng mga motor na ito (Tingnan ang Hakbang 4).
Kung hindi mo gustong pumunta sa lahat ng abala sa pag-install at pag-calibrate ng hall sensor (mga hakbang 5-7)
Alam kong mayroong kahit ilang CD/DVD drive na motor na binuo sa Hall sensor.
Upang magbigay ng ilang pag-ikot ng pagkawalang-galaw sa motor at bigyan sila ng kaunting pag-load, naglagay ako ng 5 hard drive sa motor, malumanay na nakadikit kasama ng isang maliit na malakas na pandikit at nakadikit sa motor (
Ginawa nito ang flywheel sa aking orihinal na proyekto).
Kung aalisin mo ang motor mula sa hard drive, kailangan mo ng T8 torx drive upang maalis ang takip ng Housing (
Kadalasan mayroong dalawang turnilyo na nakatago sa likod ng stick sa label ng centeron)
At mga panloob na turnilyo na humahawak sa motor sa lugar.
Kailangan mo ring tanggalin ang head Reader (
Sound circle executive)
Sa ganitong paraan maaari mong ilabas ang memory disk para maabot ang motor.
Bilang karagdagan, kakailanganin mo ng pangalawang parehong hard drive na motor upang alisin ang rotor mula sa motor na iyon (
May magnet sa loob).
Upang mahiwalay ang motor, hinawakan ko ang rotor (itaas)
Isang vise ng motor at pinikit ito sa stator (ibaba)
Ang dalawang screwdriver ay 180 degrees ang pagitan.
Hindi madaling hawakan ang motor sa isang masikip na pares nang walang pagpapapangit.
Baka gusto mong bumuo ng kahoy na v-
Block na ginagamit para sa layuning ito.
Nag-drill ako ng isang butas sa magnetic ring sa lathe upang kumportable itong magkasya sa tuktok ng motor.
Kung hindi mo magamit ang lathe, maaari mong ayusin ang baligtad na rotor sa motor gamit ang isang malakas na pandikit.
Ang mga larawan 2 at 3 sa ibaba ay nagpapakita ng loob ng isa sa mga motor na aking na-disassemble.
Sa unang kalahati doon (ang rotor) ay 8 pole (
Magnet na nakabalot sa plastic).
Sa ikalawang kalahati (ang stator)
Mayroong 12 puwang (windings).
Ang bawat isa sa tatlong phase ng motor ay may 4 na puwang sa serye.
Ang ilang HD motor ay may tatlong contact sa ibaba, isang contact sa bawat phase, at ang isa ay ang center tap ng motor (
Kung saan nagtatagpo ang tatlong stage).
Sa proyektong ito, walang kinakailangang center tap, ngunit maaari itong magamit sa kontrol na walang sensor (
Sana maglabas ako ng tala tungkol sa kontrol na walang Sensor balang araw).
Kung ang iyong motor ay may apat na contact, maaari mong tukuyin ang phase gamit ang ohmeter.
Ang paglaban sa pagitan ng center tap at ng phase ay kalahati ng paglaban sa pagitan ng alinmang dalawang phase.
Karamihan sa mga literatura sa BLDC motors ay tumatalakay sa mga may hugis-hagdan na back potential waveform, ngunit ang hard drive motor ay tila may back potential na mukhang sine (Tingnan sa ibaba).
Sa pagkakaalam ko, ang pagmamaneho ng sine wave na motor na may sine wave na PWM ay gumagana nang maayos, kahit na ang kahusayan ay maaaring bumaba nang bahagya.
Tulad ng lahat ng BLDC motors, ang isang ito ay binubuo ng three-phase half-
Transistor Bridge (
Tingnan ang ika-2 larawan sa ibaba).
Ginagamit ko ang IC na ginawa ng ST Micro (L6234)
Para sa tulay, na kilala rin bilang driver ng motor.
Ang de-koryenteng koneksyon ng L6234 ay ipinapakita sa hakbang 8.
Ang ikatlong larawan sa ibaba ay nagpapakita ng isang schematic diagram ng driver ng motor at ang tatlong phase ng motor.
Upang ang motor ay gumana nang sunud-sunod, ang switch ay gagawin sa sumusunod na pagkakasunud-sunod (
Ang unang titik ay ang itaas na transistor at ang pangalawang titik ay ang mas mababang transistor)
: Hakbang 1 2 3 4 5 6 clockwise: CB, AB, AC, BC, BA, CA counterclockwise: BC, BA, CA, CB, AB, AC these 6-
The step sequence of 6- The step sequence of 6 isang pisikal na antas lamang na 90 para sa mga motor na ito.
Samakatuwid, ang bilis ng pag-ikot ng bawat motor ay nangyayari nang apat na beses.
Ang dalawang sequence ay tila pareho, ngunit hindi sila pareho dahil para sa 6-
Step sequence, para sa CW, ang kasalukuyang direksyon sa pamamagitan ng phase ay isang direksyon, at para sa CCW, ang kasalukuyang direksyon ay kabaligtaran.
Makikita mo ito sa iyong sarili sa pamamagitan ng paglalapat ng boltahe ng baterya o power supply sa alinmang bahagi ng motor.
Kung ilalapat mo ang boltahe, ang motor ay lilipat ng kaunti sa isang direksyon at hihinto.
Kung mabilis mong mababago ang boltahe sa phase sa isa sa mga pagkakasunud-sunod sa itaas, maaari mong iikot nang manu-mano ang motor.
Ang mga transistor at microcontroller ay kumpletuhin ang lahat ng mga switch na ito nang napakabilis, lumilipat ng daan-daang beses bawat segundo kapag ang motor ay tumatakbo nang napakabilis.
Gayundin, mangyaring tandaan na kung ang boltahe ay inilapat sa parehong mga phase, ang motor ay gumagalaw nang kaunti at pagkatapos ay hihinto.
Ito ay dahil ang metalikang kuwintas ay zero.
Makikita mo ito sa ikaapat na larawan sa ibaba, na nagpapakita ng potensyal sa likod ng isang pares ng mga phase ng motor.
Ito ay isang sine wave.
Kapag ang wave ay dumaan sa x-
Shaft, ang torque na ibinigay ng phase na ito ay zero. Sa anim
na Hakbang na BLDC phase change sequence na hindi nangyari.
Bago maging mababa ang metalikang kuwintas sa isang partikular na bahagi, ang kapangyarihan ay inililipat sa isa pang kumbinasyon ng bahagi.
Ang mas malalaking BLDC motor ay kadalasang ginagawa ng Hall sensors sa loob ng motor.
Kung mayroon kang ganoong motor, maaari mong laktawan ang hakbang na ito.
Gayundin, alam kong mayroong hindi bababa sa ilang mga CD/DVD drive motor na binuo sa na-Hall sensor.
Kapag umiikot ang motor, tatlong hall sensor ang ginagamit para sa pagtukoy ng posisyon, kaya ang pagbabago ng bahagi ay ginagawa sa tamang sandali.
Ang aking HD na motor ay tumatakbo nang hanggang 9000 RPM (150 Hz).
Dahil mayroong 24 na pagbabago sa bawat gulong, sa 9000 RPM, binabago ang makina bawat 280 microseconds.
Gumagana ang Arduino micro-controller sa 16 MHz, kaya ang bawat clock cycle ay 0. 06 microseconds.
Hindi ko alam kung ilang cycle ng orasan ang kinakailangan upang maisagawa ang pagbabawas ng pangungusap, ngunit kahit na 100 cycle ng orasan ang kailangan, ibig sabihin, ito ay tumatagal ng 5 microseconds para sa bawat pagbabawas ng pangungusap.
Ang mga HD motor ay walang Hall sensor, kaya kinakailangan na i-install ang mga ito sa labas ng motor.
Ang sensor ay kailangang maayos na may paggalang sa pag-ikot ng motor at nakalantad sa isang serye ng mga pole na pare-pareho sa pag-ikot ng motor.
Ang aking solusyon ay tanggalin ang magnetic ring mula sa parehong motor at i-install ito nang baligtad sa motor na kinokontrol.
Pagkatapos ay nag-install ako ng tatlong hall sensor sa itaas ng magnetic ring na ito, 30 degrees ang layo sa isa't isa sa motor shaft (
120 degree electric motor rotation).
Ang aking Hall sensor holder ay binubuo ng isang simpleng holder na binubuo ng tatlong aluminum parts na pinoproseso ko at tatlong plastic parts na ginawa sa isang mabilis na prototype.
Kung wala kang mga tool na ito, hindi dapat mahirap maghanap ng ibang paraan upang ipahiwatig ang posisyon.
Ang paggawa ng mga bracket para sa mga Hall sensor ay magiging mas mahirap.
Ito ay isang posibleng paraan upang gumana: 1.
Maghanap ng isang plastic na tray na may tamang sukat at maaari mong maingat na epoxy ang hall sensor. 2.
Ang isang template ay naka-print sa papel, na may parehong bilog sa magnetic ring radius, at ang tatlong marka ay 15 degrees 3 ang pagitan.
Idikit ang template sa disk at pagkatapos ay gamitin ang template bilang gabay upang maingat na ilagay ang hall sensor epoxy sa lugar.
Ngayong naka-install na ang mga Hall sensor sa motor, ikonekta ang mga ito sa circuit na ipinapakita sa ibaba at subukan ang mga ito gamit ang isang DMM o oscilloscope upang matiyak na ang output ay pataas nang pababa habang umiikot ang motor.
Pinapatakbo ko ang mga sensor na ito sa ilalim ng 5 v gamit ang 5 v output ng Arduino.
Ang Hall sensor ay mataas o mababa sa output (1 o 0)
Depende ito kung nararamdaman nila ang Antarctic o ang Arctic.
Dahil ang mga ito ay 15 degrees ang pagitan, ang mga magnet ay umiikot sa ilalim ng mga ito at binabago ang polarity tuwing 45 degrees, ang tatlong sensor na ito ay hindi kailanman magiging mataas o mababa sa parehong oras.
Kapag umiikot ang motor, ang output ng sensor ay 6-
Ang pattern ng hakbang na ipinapakita sa sumusunod na talahanayan.
Ang sensor ay dapat na nakahanay sa paggalaw ng motor upang ang isa sa tatlong mga sensor ay tiyak na nagbabago sa posisyon ng pagbabago ng bahagi ng motor.
Sa kasong ito, ang tumataas na gilid ng unang hall sensor (H1)
ay dapat na pare-pareho sa pagbubukas ng kumbinasyon ng C (mataas) at B (mababa).
Ito ay katumbas ng pag-on sa mga transistors 3 at 5 sa circuit ng tulay.
Inihanay ko ang sensor sa magnet gamit ang isang oscilloscope.
Upang magawa ito, kailangan kong gumamit ng tatlong channel ng saklaw.
Pinaikot ko ang motor sa pamamagitan ng pagkonekta sa sinturon ng pangalawang motor at sinusukat ang potensyal sa likod sa pagitan ng dalawang kumbinasyon ng phase (
A at B, A at C)
Ito ay dalawang sine.
Tulad ng mga alon sa larawan sa ibaba
Pagkatapos ay tingnan ang signal ng Hall sensor 2 sa channel 3 ng oscilloscope.
Ang Hall sensor holder ay pinihit hanggang ang tumataas na gilid ng hall sensor ay ganap na nakahanay sa punto kung saan dapat gawin ang pagbabago ng phase (Tingnan sa ibaba).
Napagtanto ko ngayon na mayroon lamang dalawang channel upang gawin ang parehong pagkakalibrate.
Kung ang BEMF ng phase combination B-
Gamit ang C, ang tumataas na gilid ng H2 ay mauugnay sa BC curve.
Ang dahilan kung bakit dapat isagawa ang pagbabago ng bahagi dito ay para laging panatilihing mataas ang torque ng motor hangga't maaari.
Ang back potential ay proporsyonal sa torque at mapapansin mo na ang bawat phase change ay nangyayari kapag ang back potential ay pumasa sa ibaba ng susunod na stage curve.
Samakatuwid, ang aktwal na metalikang kuwintas ay binubuo ng pinakamataas na bahagi ng bawat kumbinasyon ng phase.
Kung hindi mo ma-access ang saklaw, narito ang aking ideya ng pagkakahanay.
Ito ay talagang isang kawili-wiling ehersisyo para sa sinumang gustong malaman kung paano Gumagana ang BLDC Motor.
Kung ang motor Phase A ay konektado (positibo) at B (negatibo)
Sa power supply at i-on ang power supply, ang motor ay iikot ng kaunti at hihinto.
Pagkatapos, kung ang negatibong power lead ay inilipat sa C phase at ang power ay naka-on, ang motor ay liliko pa at hihinto.
Ang susunod na bahagi ng pagkakasunud-sunod ay ang paglipat ng positibong lead sa Phase B, atbp.
Kapag ginawa mo ito, ang motor ay palaging hihinto kung saan ang torque ay zero, na tumutugma sa isang lugar kung saan ang tsart ay dumadaan sa x-axis sa chart.
Tandaan na ang zero point ng third-phase combination ay tumutugma sa phase change position ng unang dalawang kumbinasyon.
Samakatuwid, ang zero torque na posisyon ng B-
Ang kumbinasyon ng C ay kung saan mo gustong iposisyon ang tumataas na gilid ng h2.
Markahan ang posisyong ito ng mga pinong marka o matutulis na blades, at pagkatapos ay ayusin ang hall sensor holder gamit ang DMM hanggang ang output ng H2 ay eksaktong mas mataas sa markang ito.
Kahit na lumihis ka ng kaunti sa iskedyul ng iyong paaralan, dapat gumana nang maayos ang motor.
Ang tatlong bahagi ng motor ay makakatanggap ng kapangyarihan mula sa L6234 na tatlong-phase na motor driver.
Nalaman ko na ito ay isang magandang produkto na kayang tiisin ang pagsubok ng oras.
Maraming paraan para aksidenteng maprito ang iyong mga bahagi kapag gumagamit ng power electronics, hindi ako electrical engineer at hindi ko palaging alam kung ano ang nangyayari.
Sa aking programa sa paaralan, ginawa namin ang aming sariling 3-
Phase half-bridge na output ng 6 MOSFET transistors at 6 diodes.
Ginamit namin ito sa HIP4086 ng isa pang driver na Intersil, ngunit marami kaming problema sa setup na ito
Nagsunog kami ng grupo ng mga transistor at chips.
Pinapatakbo ko ang L6234 (
Kaya ang motor) sa 12V.
Ang L6234 ay may hindi pangkaraniwang hanay ng mga input upang kontrolin ang kalahating tulay ng 6 na transistor.
Hindi lahat ng transistor ay may input, ngunit isang enable (EN)
Input para sa bawat isa sa tatlong yugto, at pagkatapos ay isa pang input (IN)
Piliin kung aling transistor sa open phase (itaas o ibaba).
Halimbawa, i-on ang transistor 1 (itaas) at 6 (ibaba)
Parehong mataas ang EN1 at EN3 (
EN2 mababa para panatilihing nakasara ang stage)
IN1 High, IN3 mababa.
Ginagawa nitong kumbinasyon ng phase-C.
Habang ang L6234 application note ay iminungkahi na ilapat ang PWM na ginamit upang makontrol ang bilis ng motor sa IN pin, nagpasya akong gawin ito sa EN pin dahil, sa oras na iyon, sa tingin ko ay magiging \'kakaiba\' na i-on ang upper at lower transistors ng phase na halili \'.
Sa katunayan, tila walang mali sa pag-on sa parehong mga phase, dahil ang mga ito ay may parehong potensyal na mga transistors sa parehong oras ang mga ito ay dumadaan sa kasalukuyang
Sa aking pamamaraan, ang mataas na bahagi ay pinagana at hindi pinagana sa PWM
ako ay nagdagdag ng
frequency, habang ang mababang bahagi ay nananatiling sa panahon ng buong pagbabago ng phase sa ibaba ay isang schematic ng motor drive,
sa dokumentasyon para sa L6234
paliwanag .
pin connection sa Arduino board. Medyo maliit ang figure na ito, kaya para sa mas malalaking bersyon, mangyaring
tsart sa ibaba
sumangguni
sa tingin ko ang paliwanag na ibinigay
Kapag nagmamaneho, ang control system ay nagpapadala ng kasalukuyang sa tatlong bahagi ng motor sa isang paraan na nagpapalaki ng torque Automotive motors. Ang
kung paano ito gumagana (Gayunpaman,
ay nagmula sa isa pang papel na tumutulong sa paglalarawan
pamamagitan ng \'anti-excitation\' diode sa tabi ng bawat transistor
sa ikalawang papel na ito ay bahagyang hindi tama mabilis na nag-on at off ang mga transistor ( Libo-libong PWM
switch bawat segundo)
Kapag naka-off ang high-end na transistor; off, ngunit sa isang mas mataas na boltahe, ang kasalukuyang daloy sa
at pagkatapos ay bumalik sa baterya Ang diode ay humahadlang
sa daloy mula sa baterya papunta sa motor Kasabay nito, ang kasalukuyang sa
(
Taliwas sa pagmamaneho) Makipag-ugnayan sa
magnet na singsing upang makabuo
direksyon na ito
ng isang negatibong torque ng motor Kinokontrol ng PWM ang dami ng pagpepreno kapag nagmamaneho, ang pag-commute ng motor ay lumilipat mula sa isang kumbinasyon sa susunod na panahon
upang mapanatili ang
pinakamataas na posibleng torque Ang ginagamit ko ay isang napakababang torque na motor, kaya
hindi ito gumagawa ng maraming BEMF maliban sa pinakamabilis na bilis,
(kung mayroon man , ang aking sistema
ay tumatakbo sa medyo mababang boltahe (12 V) Bukod dito, dahil
mayroong napakakaunting regenerative braking
ang bawat daanan sa pamamagitan ng anti-excitation diode ay nakakabawas ng boltahe ng ilang volt, ito ay maaaring
gumamit ng mas mahusay na pagganap kung ako ay gumagamit ng mas mahusay
Ang mga diode na may mas mababang boltahe ay nasa ibaba ng isang listahan ng mga input at output sa arduino. 400 ohm
risistor 7 3 Digital output sa serye na may 400 ohm risistor 9- Digital Output ng
EN 1 sa serye na may 400 ohm risistor 10- Digital Output ng EN 2
sa serye
na may 400 ohm risistor 11- Ang
EN 3 digital na output ay nasa serye na may 400 ohm g risistor at 400 ohm na risistor, 100 ohm na risistor, 100 ohm na
risistor, 100
sa gitna. Ang potentiometer na ito ay ginagamit upang kontrolin ang
ng
100
ohm na risistor, 100 ohm na risistor, 100 ohm na risistor,
analog
ohm na resistor ends at
bilis
pin 0 na konektado
ohm na risistor, 100
motor at ang 5
V power supply ay ginagamit din upang patakbuhin ang mga
na isinulat ko para sa Ardjuino
sensor ng Hall (tingnan ang hakbang 5. Narito ang buong programa
, na may kasamang mga komento:/* bldc_congroller 3. 1. 1*3
ni David Glazer na tumatakbo sa motor na X3 *62. regenerative braking *
sensors (pins 2,3,4) * At i-convert ang kanilang
controlled by a single potentiometer * motor position by three Hall- Effect Sensor * Ang Arduino ay
sa
kumbinasyon
motor speed at braking
tumatanggap ng output mula sa 3 hall
sa 6 na magkakaibang phase-changing step sa mga pin 9, 10, 11 sa 32 kHz * PWM output ( Naaayon
1, 2, EN 3, EN3) ayon sa pagkakabanggit (SA 1,2,3)
* Ikonekta ang simulation sa 0 sa potentiometer upang baguhin ang PWM duty cycle at Palitan * sa pagitan ng pagmamaneho at regenerative braking * * 0-
499: preno * 500-
: Taxi * 524-
1023: pagmomotor * mga komento sa lahat ng mga linya para sa pag-debug sensors (
523
)int HallState3; ()
3,2,1
;
/Hall 1 pinMode (3,INPUT); (10,OUTPUT);
magsisimula
{pinMode(2,INPUT)
/EN 2 pinMode (11,OUTPUT); /EN 3
(9600); int prescalerVal = 0x07;
/ serial
/Gumawa ng variable na tinatawag na prescalerVal at itakda ito sa katumbas ng binary number na \'00000111\' TCCR1B & = ~
value sa TCCR0B
Prescaler /At ang
11111000\'
na may binary number na \'
/now set the : pre-coding /Itakda
ng binary na numero na \'00000001
ang prescalerVal sa katumbas
/set PWM sa 32 kHz para sa pin 3,11 na unang ginagamit ng Pinlear1 ang program na ito (
\' TCCR1B | = prescalerVal2 /O halaga sa TCCR0B na may binary na numero na \'00000001\'
tatlo lang) TCCR2B & = ~ Pre-calerval; /At ang value sa TCCR0B na may binary na numero na \'11111000\'/ngayon ay itakda ang naaangkop na pre-encoding bit: TCCR2B | = Pre-encoding bit 2
O
ang value sa TCCR0B na may isang binary na numero na \'01000000
/
lahat ng: pangunahing
loop (){ /Time = millis (); Throttle,
0,511,255, 0); ang katumbas na sensor ay nasa mataas na kapangyarihan, ang led ay i-on na orihinal na ginamit upang i-debug
loop ng/PRGROM void
(
ang digitalWrite (9, HallState2); //digitalWrite(10, HallState3 = (HallState1)+
2*HallState2)+ (4
*HallState3
/
Kalkulahin ang mga
' println(
binary
HallState1); Serial . print(\'H 2: \');
na halaga ng \' pag-print ng bulwagan.
Serial. println(HallState2); Serial. print(\'H 3: \')
HallState3
; Serial. println (
); 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(10)); Serial. print(\'\'); Serial. print(\'\'); //delay(500);
*/Driving phase change/bawat binary number ay may case na tumutugma sa iba't ibang transistor na naka-on/bit na math na ginamit upang baguhin ang value ng output arduino: /PORTD ay naglalaman ng output ng IN pin sa L6234 driver/ang output na ginagamit para matukoy kung ang upper phase ng
;
B01100000
transistor ay/
EN. ang duty cycle ng PWM ( 0 = OFF, 255 = ON o
/
Analowrite
throttle
value na kinokontrol ng potentiometer kung (throttle > 511){switch (HallVal){ Case 3:/PORTD = 1111xxx00;
(9,mSpeed); 0- 7
PORTD &
= B00011111;. /
=
PORTD &
PORTD |. = B00100000; 5:/PORTD = B101xxx00; /
Expected output of pin 0- 7
B00011111
; /PORTD | = B10100000; analogWrite
(9,0); analogWrite(10,255); analogWrite(11,mSpeed); break;
Case 4:/
output of pin 0- 7
Expected
PORTD = B100xxx00; /
PORTD & = B00011111; PORTD
/
| = bym000;
Analowrite (9,255)
; analogWrite(10,0); analogWrite(11,mSpeed); break;
Case 6:/PORTD = B110xxx00;
/Expected output of pin 0-
7 PORTD & = B00011111;
PORTD b11. 000 =;
/Analowrite (9,255); analogWrite(10,mSpeed); analogWrite(11,0); break;
Case 2: /
pin 0- 7 PORTD &
/Expected output
PORTD = B010xxx00;
of
); analogWrite(10 ,mSpeed); analogWrite(11,255); bym0000
B00011111 ;
=
B0201700 PORTD | =; /Analowrite ( 9,0
//
;
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); 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
to
(time); //Serial. print(\'\'); //Serial. flush(); /If you want
debug using a serial port, please uncomment}
the operation that Arduino does in this project is so simple that it seems like a waste to do this task
I think
with a
microprocessor. In fact, L6234's application notes recommend a simple programmable gate array
( GAL16V8 na gawa sa Lattice Semiconductor) hindi ako pamilyar sa programming
ng device na ito, ngunit ang halaga ng IC ay $2 lang sa newark sa ibaba, at ang
talahanayan ng katotohanan para sa lahat ng tatlong yugto ( Upang ang logic circuit ng B at C phase, ang \'not\' na pinto ay dapat ilipat sa kabilang panig ng \'o. Ang problema sa diskarteng ito ay mayroong halos 20 na koneksyon sa bawat yugto, kaya nangangailangan ng kaunting trabaho upang pagsamahin ito.
Pinakamainam na i-program ito bilang isang programmable logic gate.