BLDC Motor Control med Arduino, räddad HD -motor och hallsensorer
Hem » Blogga » BLDC Motor Control med Arduino, räddad HD -motor och hallsensorer

BLDC Motor Control med Arduino, räddad HD -motor och hallsensorer

Visningar: 0     Författare: Webbplatsredaktör Publicera tid: 2020-09-02 Ursprung: Plats

Fråga

Facebook -delningsknapp
Twitter -delningsknapp
linjedelningsknapp
WeChat Sharing -knapp
LinkedIn Sharing -knapp
Pinterest Sharing -knapp
whatsapp delningsknapp
Kakao Sharing -knapp
Snapchat Sharing -knapp
telegramdelningsknapp
Sharethis Sharing -knapp

Nuförtiden är entusiaster mycket intresserade av att kontrollera borstfri DC (BLDC)
jämfört med den traditionella likströmsmotorn, motorens prestanda har förbättrats, energieffektiviteten har också förbättrats, men det är svårare att använda. Många produkter utanför hyllan
finns för detta ändamål.
Till exempel finns det många små BLDCS -styrenheter som fungerar mycket bra för RC -flygplan.
För dem som vill undersöka kontrollen av BLDC på mer djup finns det också många olika mikrokontroller och annan elektronisk hårdvara för industriella användare, som vanligtvis har mycket bra dokumentation.
Hittills har jag inte hittat någon omfattande beskrivning av hur man använder Arduino-mikrokontroller för BLDC-kontroll.
Om du är intresserad av att göra regenerativ bromsning, eller använda en BLDC för kraftproduktion, har jag inte hittat många produkter som är lämpliga för användning med små motorer, och jag har inte heller fått reda på hur jag kontrollerar 3-fas generator.
Denna struktur var ursprungligen i en berättelse om realtidsberäkning
, jag fortsätter att göra det efter att kursen är över.
Idén med projektet är att visa en proportionell modell av en hybridbil med svänghjul energiförvaring och regenerativ bromsning.
Motorn som används i projektet är en liten BLDC: er som städas upp från den skadade datorhårddisken.
Denna manual beskriver hur man använder Arduino-mikrokontrollen och hall-
påverkar positionssensorer vid körning och regenerativa bromslägen.
Observera att det är mycket hjälpsamt, om inte nödvändigt, att besöka Oscillisoft.
Om du inte kan komma åt omfattningen har jag lagt till några förslag på hur du gör det utan räckvidden (steg 5).
En sak som detta projekt inte bör inkludera i någon faktisk motorstyrenhet är någon säkerhetsfunktion som över nuvarande skydd.
Det värsta är faktiskt att du bränner ut HD -motorn.
Att implementera överströmsskydd med aktuell hårdvara är dock inte svårt, och kanske kommer jag att göra det vid någon tidpunkt.
Om du försöker styra en större motor, lägg till det nuvarande skyddet för att skydda din motor och din egen säkerhet.
Jag vill försöka använda den här styrenheten med en större motor som kan göra några 'riktiga' arbete men jag har inte rätt ännu.
Jag märkte att eBay sålde en 86 W -bil för cirka 40 dollar.
Ser ut som en bra kandidat.
Det finns också en RC -webbplats som heter \ 'gobrushless \' som säljer kit som monterar sin egen BLDC.
Dessa är inte för dyra och det är värt upplevelsen att bygga en.
Observera att det inte finns någon hallsensor för motorn på denna webbplats. Whew!
Att skriva denna struktur är ett stort jobb.
Jag hoppas att du tycker att det är användbart, vänligen gör dina kommentarer och förslag.
Digital Multimeter (DMM)-
Om din DMM har ett frekvensmätare oscilloskop (
det är bättre att ha minst 2 kanaler)
T8 Torx-drivrutin (
du behöver en av dem för att öppna någon hårddisk).
Det finns en bra järnaffär.
Maskinverkstad och snabb prototyp (
dessa är mycket hjälpsamma men jag tror att detta projekt kan göras utan dem).
Material bldc motor magnetic ring from computer hard disk (
Half of the motor)
From another hard driveSeveral (3-6)
There is a second small motor in the silver disk on the hard disk (DC brushed OK)
Rubber band or (preferably)
The brushless DC motor with a handle with another motor electronic bread plate solid wire month the Arduino Duemilanove 120 k ohm resistor six to 400 ohm resistor linear or rotating Poteniometer100 k Ohmst Micro Circuit L6234 Tre-fas Motordrivrutin IC Två 100 UF-kondensatorer En 10 NF-kondensator En 220 NF-kondensator En 1 UF-kondensator En 100 UF-kondensator Tre Mottagande dioder One 2.
Honeywell SS411a Bipolar Hall-5 AMP-säkring 1 säkringshållare 3
Obs: Mike Anton Desede and Selling a Product That Will Ersättande Electicy och Hall-sense Circu och Hall-sensor Circu-tillträdeskretsar ELEKTION OCH HALL SENSER CIRCUS ID HALLE ELEKTIC OCH HALL ELEKTION OCH HALL ELEKTION OCH SENSERA ECH SENSORSKRIFTERING Manual (
den styrs med hjälp av backpotentialinduktion).
Specifikationer och upphandlingsinformation finns i dessa två länkar: om du ska göra detta projekt föreslår jag att du tar dig tid att förstå hur BLDC fungerar och kontroller.
Det finns ett stort antal referenser online (
se nedan för några förslag).
Jag inkluderar emellertid några diagram och tabeller i mitt projekt som borde hjälpa dig att förstå.
Here is a list of the concepts that I think are most important to understanding this project: MOSFET transistors 3-phase half-bridge 6-
3-step reduction of sentence
Pulse Width Modulation of phase motor (PWM)Hall-
Microchip AVR443: sensors-general reference DC motor Basic Principles for Digital position sensors
Control of three-phase brushless DC motor based on atmelbrusless DC motor control
Phase BLDC motor control of the Flying Star Hall Sensor, en bra video om att rensa upp hårddiskmotorn, men författaren verkar köra motorn som en springmotor och som en springmotor. En mer specifik referenswebbsida för BLDC på L6234 Motor Drive IC, inklusive datablad, applikationsanteckningar och inköpsinformation.
Gratis prov för PM -borstlös motordrivning för hybridelektriska applikationer.
Detta är det enda papperet jag hittade som beskriver ordningen på den regenerativa bromsfasändringen.
Denna artikel, regenerativ bromsning i elektriska fordon är användbar, jag lånade några nummer från det, men jag tror att det felaktigt beskriver hur regenerering fungerar.
Jag gjorde detta projekt med återvunnen diskdrivmotor eftersom det var lätt att passera och jag gillar att använda en liten lågspänningsmotor för att lära sig sladden som styrs av BLDC och inte orsakar några säkerhetsproblem.
Dessutom blir magnetkonfigurationen för hallsensorn mycket enkel genom att använda den magnetiska ringen (rotorn)
från den andra av dessa motorer (se steg 4).
Om du inte vill gå till allt besväret med att installera och kalibrera hallsensorn (steg 5-7)
vet jag att det finns åtminstone några CD/DVD-drivmotorer inbyggda-sensor.
För att ge lite vändande tröghet till motorn och ge dem lite belastning, satte jag 5 hårddiskar på motorn, limmad försiktigt med lite starkt lim och limmade på motorn (
detta gjorde svänghjulet i mitt ursprungliga projekt).
Om du ska ta bort motorn från hårddisken behöver du en T8 Torx -enhet för att skruva loss huset (
vanligtvis finns det två skruvar dolda bakom pinnen i centeron -etiketten)
och inre skruvar som håller motorn på plats.
Du måste också ta bort huvudläsaren (
Sound Circle Executive)
på detta sätt kan du ta ut minnesskivan för att nå motorn.
Dessutom behöver du en andra hårddiskmotor för att ta bort rotorn från den motorn (
det finns en magnet inuti).
För att ta isär motorn tog jag tag i rotorn (överst)
ett hänsyn till motorn och byter den på statorn (botten)
är de två skruvmejslarna 180 grader från varandra.
Det är inte lätt att hålla motorn på ett tillräckligt tätt par utan deformation.
Du kanske vill bygga ett träblock
som används för detta ändamål.
Jag borrade ett hål i den magnetiska ringen på svarven så att den passar bekvämt på toppen av motorn.
Om du inte kan använda svarven kan du fixa den inverterade rotorn på motorn med ett starkt lim.
Bilderna 2 och 3 nedan visar interiören i en av de motorer jag har demonterat.
Under första halvåret där (rotorn) finns 8 poler (
magnet inslagna i plast).
Under andra halvlek (statorn)
finns det 12 slots (lindningar).
Var och en av de tre motorfaserna har fyra slots i serie.
Vissa HD -motorer har tre kontakter längst ner, en kontakt per fas, och den andra är motorns mittkran (
där tre steg möts).
I detta projekt krävs ingen mittkran, men det kan vara praktiskt i sensorfri kontroll (
jag hoppas kunna släppa en anteckning om sensorfri kontroll en dag).
Om din motor har fyra kontakter kan du identifiera fasen med ohmeter.
Motståndet mellan mittkranen och fasen är hälften av motståndet mellan två faser.
De flesta av litteraturen om BLDC-motorer handlar om de med en stege-formad bakpotential vågform, men hårddiskmotorn verkar ha en ryggpotential som ser ut som en sinus (se nedan).
Så vitt jag vet fungerar det bra att köra en sinusvågmotor med en sinusvåg PWM, även om effektiviteten kan sjunka något.
Liksom alla BLDC-motorer består den här av trefas halvtransistorbro
(
se 2: a foton nedan).
Jag använder IC gjord av St Micro (L6234)
för bron, även känd som motorföraren.
Den elektriska anslutningen av L6234 visas i steg 8.
Det tredje fotot nedan visar ett schematiskt diagram över motordrivaren och de tre motorfaserna.
För att motorn ska fungera medurs kommer omkopplaren att göras i följande ordning (
den första bokstaven är den övre transistorn och den andra bokstaven är den nedre transistorn)
: Steg 1 2 3 4 6 medurs: CB, AB, AC, BC, BA, CA-moturs: BC, BA, CA, CB, AB, AC-AC-STEG
SECKENS motorer.
Därför sker rotationshastigheten för varje motor fyra gånger.
De två sekvenserna verkar vara desamma, men de är inte desamma eftersom för 6-
stegs sekvens, för CW är den aktuella riktningen genom fasen en riktning, och för CCW är den aktuella riktningen motsatt.
Du kan se detta själv genom att applicera spänningen på batteriet eller strömförsörjningen på endera motorfasen.
Om du applicerar spänningen kommer motorn att röra sig lite i en riktning och stoppa.
Om du snabbt kan ändra spänningen på fasen i en av ovanstående sekvenser kan du rotera motorn manuellt.
Transistorer och mikrokontroller slutför alla dessa switchar mycket snabbt och växlar hundratals gånger per sekund när motorn körs med hög hastighet.
Observera också att om spänningen appliceras på båda faserna rör sig motorn lite och stannar sedan.
Detta beror på att vridmomentet är noll.
Du kan se detta på det fjärde fotot nedan, som visar ryggpotentialen för ett par motorfaser.
Detta är en sinusvåg.
När vågen går igenom x-
axeln är vridmomentet som tillhandahålls av denna fas noll. I Six-
Step BLDC-fasändringssekvensen som aldrig hänt.
Innan vridmomentet i en viss fas blir låg byts kraften till en annan faskombination.
Större BLDC -motorer tillverkas vanligtvis av hallsensorer inuti motorn.
Om du har en sådan motor kan du hoppa över detta steg.
Jag vet också att det finns åtminstone några CD/DVD-drivmotorer inbyggda redan-hall-sensor.
När motorn roterar används tre hallsensorer för positionsdetektering, så fasändringen utförs i rätt ögonblick.
Min HD -motor kör upp till 9000 rpm (150 Hz).
Eftersom det finns 24 förändringar per hjul, vid 9000 varv / minut, ändras maskinen varje 280 mikrosekunder.
Arduino-mikrokontrollen fungerar vid 16 MHz, så varje klockcykel är 06 Mikrosekunder.
Jag vet inte hur många klockcykler som krävs för att utföra en minskning av meningen, men även om 100 klockcykler krävs, det vill säga det tar 5 mikrosekunder för varje minskning av meningen.
HD -motorer har inte hallensorer, så det är nödvändigt att installera dem på utsidan av motorn.
Sensorn måste fixas med avseende på motorrotationen och utsätts för en serie poler som överensstämmer med motorrotationen.
Min lösning är att ta bort den magnetiska ringen från samma motor och installera den upp och ner på motorn som ska styras.
Jag installerade sedan tre hallsensorer ovanför denna magnetiska ring, 30 grader bortsett från varandra på motoraxeln (
120 graders elektrisk motorrotation).
Min hallsensorhållare består av en enkel hållare bestående av tre aluminiumdelar som bearbetas av mig och tre plastdelar tillverkade på en snabb prototyp.
Om du inte har dessa verktyg bör det inte vara svårt att hitta ett annat sätt att ange positionen.
Att skapa parenteser för hallensorer kommer att vara mer utmanande.
Detta är ett möjligt sätt att arbeta: 1.
Hitta ett plastfack i rätt storlek och du kan försiktigt epoxy hallsensorn. 2.
En mall skrivs ut på papperet, som har samma cirkel som den magnetiska ringradie, och de tre märkena är 15 grader 3 från varandra.
Limma mallen på skivan och använd sedan mallen som en guide för att noggrant placera hallsensorns epoxi på plats.
Nu när hallsensorer är installerade på motorn, anslut dem till kretsen som visas nedan och testar dem med ett DMM eller oscilloskop för att se till att utgången blir högre och lägre när motorn roterar.
Jag kör dessa sensorer under 5 V med Arduino 's 5 V -utgång.
Hallsensorn är hög eller låg utgång (1 eller 0)
det beror på om de känner Antarktis eller Arktis.
Eftersom de är 15 grader från varandra, magneterna roterar under dem och ändrar polariteten var 45 grader, kommer dessa tre sensorer aldrig att vara höga eller låga samtidigt.
När motorn roterar är sensorutgången 6-
stegmönstret som visas i följande tabell.
Sensorn måste anpassas till motorns rörelse så att en av de tre sensorerna ändras exakt vid motorfasbytesläget.
I detta fall bör den stigande kanten på den första hallsensorn (H1)
vara förenlig med öppningen av C -kombinationen (hög) och B (låg).
Detta motsvarar att slå på transistorerna 3 och 5 i brokretsen.
Jag anpassar sensorn med magneten med ett oscilloskop.
För att göra detta måste jag använda tre omfattningskanaler.
Jag roterar motorn genom att ansluta till bältet på den andra motorn och mäta bakpotentialen mellan de två faskombinationerna (
A och B, A och C)
Detta är två sinus.
Liksom vågorna på bilden nedan
titta sedan på signalen från Hall Sensor 2 på kanal 3 i oscilloskopet.
Hallsensorhållaren vänds tills hallsensorns stigande kant är helt i linje med den punkt där fasändringen ska utföras (se nedan).
Jag inser nu att det bara finns två kanaler för att göra samma kalibrering.
Om BEMF för faskombinationen B-
med C kommer den stigande kanten för H2 att vara relaterad till BC-kurva.
Anledningen till att fasändringen ska genomföras här är att alltid hålla motormomentet så högt som möjligt.
Den bakre potentialen är proportionell mot vridmomentet och du kommer att märka att varje fasförändring inträffar när den bakre potentialen passerar under nästa stegskurva.
Därför består det faktiska vridmomentet av den högsta delen av varje faskombination.
Om du inte kan komma åt omfattningen, här är min idé om anpassning.
Detta är faktiskt en intressant övning för alla som vill veta hur BLDC -motoren fungerar.
Om motorfasen A är ansluten (positiv) och B (negativ)
till strömförsörjningen och slå på strömförsörjningen, kommer motorn att rotera lite och stoppa.
Sedan, om den negativa kraftledningen flyttas till C -fasen och strömmen är påslagen, kommer motorn att svängas längre och stoppar.
Nästa del av sekvensen är att flytta den positiva ledningen till fas B, etc.
När du gör detta stannar motorn alltid där vridmomentet är noll, vilket motsvarar en plats där diagrammet passerar genom x-axeln på diagrammet.
Observera att nollpunkten för tredje faskombinationen motsvarar fasförändringspositionen för de två första kombinationerna.
Därför är nollmomentpositionen för B-
C-kombinationen där du vill placera den stigande kanten på H2.
Markera denna position med fina märken eller skarpa blad och justera sedan hallsensorhållaren med DMM tills utgången från H2 är exakt högre på detta märke.
Även om du avviker lite från ditt skolplan, bör motorn fungera bra.
Den tre motorfasen kommer att få kraft från L6234 trefasmotorförare.
Jag fann att det här är en bra produkt som kan stå tidens test.
Det finns många sätt att av misstag steka dina komponenter när jag använder kraftelektronik, jag är inte en elektrotekniker och jag vet inte alltid vad som händer.
I mitt skolprogram gjorde vi vår egen 3-
fashalvbryggning av 6 MOSFET-transistorer och 6 dioder.
Vi använde detta på HIP4086 av den andra föraren Intersil, men vi har många problem med denna installation
vi brände ett gäng transistorer och chips.
Jag kör L6234 (
så motorn) vid 12V.
L6234 har en ovanlig uppsättning ingångar för att kontrollera en halvbrygg av 6 transistorer.
Inte varje transistor har en ingång, utan en aktivering (EN)
ingång för vart och ett av de tre stegen, och sedan en annan ingång (in)
väljer vilken transistor i den öppna fasen (övre eller nedre).
Slå till exempel på transistor 1 (övre) och 6 (nedre)
både EN1 och EN3 är höga (
EN2 låg för att hålla scenen stängd)
i 1 hög, i3 låg.
Detta gör att faskombinationen C.
While the L6234 application note suggested applying the PWM used to control the speed of the motor to the IN pin, I decided to do it on the EN pin because, at that time, I think it would be \'strange\' to turn on the upper and lower transistors of the phase alternately \'.
In fact, it seems that there is nothing wrong with turning on the low transistors of both phases at the same time, because they have the same potential, so neither Av dem
passerar
den
.
nuvarande är lite liten, så för större versioner, se dokumentationen för L6234.
Obs: Mike Anton gjorde PCB för L6234, som (tror jag kommer)
att ersätta det här spåret och spara jobbet med att montera det.
Se dessa länkar för specifikationer och köpinformation: Jag har inte hittat mycket cirka 3-
Jag kommer att beskriva min förståelse för hur det fungerar.
Observera att jag inte är elektrotekniker och vi skulle uppskatta alla korrigeringar av min förklaring.
Vid körning skickar styrsystemet strömmen i tre motorfaser på ett sätt som maximerar vridmomentet.
Vid regenerativ bromsning maximerar styrsystemet också vridmomentet, men den här gången är det ett negativt vridmoment som får motorn att sakta ner när den strömmar tillbaka till batteriet.
Den regenerativa bromsmetoden som jag använde kom från ett papper från Oakridge National Laboratory i USA. S. Govt.
Ett laboratorium som gör mycket forskning för bilmotorer.
Diagrammet nedan kommer från ett annat papper som hjälper till att illustrera hur det fungerar (
jag tror dock att förklaringen som ges i detta andra artikel är delvis felaktig).
Tänk på att när motorn roterar, fluktuerar BEMF -spänningen i motorfasen upp och ner.
I figuren visar det det ögonblick då BEMF är högt i steg B och låg i scenen.
I detta fall är det möjligt för strömmen att flyta från B till.
Kritiska för regenerativ bromsning, låg-end-transistorer slås på och av snabbt (
tusentals PWM-switchar per sekund).
När den avancerade transistoromkopplaren är avstängd;
När den låga transistorn är påslagen flyter strömmen som visas i den första bilden.
När det gäller kraftelektronik är kretsen som en enhet som kallas en boost -omvandlare, där energi lagras i motorfasen (
Wikipedia har en bra artikel som förklarar hur boost -omvandlaren fungerar).
Denna energi frigörs när den låg-end transistorn är avstängd, men vid en högre spänning flyter strömmen direkt genom \ 'anti-excitation \' dioden bredvid varje transistor och återgår sedan till batteriet.
Dioden förhindrar ström från att strömma från batteriet till motorn.
Samtidigt interagerar strömmen i denna riktning (
i motsats till körning)
med magnetringen för att producera ett negativt vridmoment som bromsar motorn ner.
Den lågsidiga transistorn använder en PWM-switch, och PWM: s arbetscykel styr mängden bromsning.
Vid körning växlar pendlingen av motorn från en kombination till nästa i tiden för att upprätthålla högsta möjliga vridmoment.
Pendlingen av den regenerativa bromsen är mycket lik eftersom vissa omkopplingsläge får motorn att producera så mycket negativt vridmoment som möjligt.
Om du tittar på videon i det första steget kan du se att den regenerativa bromsen fungerar bra, men den fungerar inte bra.
Jag tror att det främsta skälet är att hårddiskmotorn jag använder är en mycket låg vridmomentmotor, så den producerar inte mycket BEMF utom med högsta hastighet.
Vid en lägre hastighet finns det väldigt lite regenererande bromsning (om någon).
Mitt system körs också vid en relativt låg spänning (12 V)
, eftersom varje väg genom anti-excitationsdioden minskar spänningen med flera volt, detta minskar också effektiviteten kraftigt.
Jag använder normala likriktningsdioder och jag kan få bättre prestanda om jag använder några speciella dioder med lägre spänningsfall.
Nedan är en lista över ingångar och utgångar på Arduino.
Inkludera också diagram och foton av mitt bräde. 2-
Digital inträdeshall 1
120 K Resistance of GND 3
Digital Entry Hall 2
120 K Resistance of GND 4
Hall 3 Digital Ingång-
120 K Motstånd av GND 5
1 Digital utgång i serie med 400 Ohm-motstånd 6
2 Digitala utgångar i serie med 400 Ohm-motstånd 7
3 Digital Outputs i serie med
400 Ohm-motstånd 9-
Digital utgång av EN 1 i serie med 400 Ohm motstånd
10- EN 3 Digital utgång är i serie med ett 400 ohm -motstånd, 100 k ohm potentiometer, med 5 V och GND anslutna i båda ändarna och analog stift 0 ansluten i mitten.
Denna potentiometer används för att styra motorhastighet och bromsvolym.
5 V Strömförsörjning används också för att köra Hall -sensorer (se steg 5).
Här är hela programmet jag skrev för Ardjuino, som innehåller kommentarer:/* bldc_congroller 3. 1.
1* 3 av David Glazer.
The X series is ST L6234 3-
Phase motor driver IC * running disk drive motor clockwise * with regenerative braking * motor speed and braking controlled by a single potentiometer * motor position by three Hall-
Effect Sensor * Arduino receives output from 3 hall sensors (pins 2,3,4)
* And convert their combination to 6 different phase-changing steps on pins 9, 10, 11 at 32 kHz * PWM output (
Corresponding to EN 1,2, 3 * 3 gör på stift 5,6, 7, (i 1,2,3)
Anslut simuleringen i 0 till potentiometern för att ändra PWM-arbetscykeln och förändring * mellan körning och regenerativ
*
bromsning
*
. Variabler
tre hallsensorer (3,2,1
)
av
;
int
hallstate2
/Hall 1 PinMode (3, ingång);
/Hall 2 pinMode (4, ingång);
/L6234 Hall 3/utgång från PinMode Motor Driver (5, utgång);
/I 1 pinMode (6, utgång);
/I 2 pinMode (7, utgång);
/I 3 pinMode (9, utgång);
/Sv 1 PinMode (10, utgång);
/Sv 2 PinMode (11, utgång);
/Sv 3/serie. börja (9600);
Om du kommer att använda en seriell anslutning, vänligen avmarkera den här raden.
Flush -kommandot i slutet av programmet.
/* Ställ in PWM-frekvens på stiften 9, 10 och 11/Ställ PWM till 32 kHz för stift 9, 10/Först rensar alla tre förbehållare BIT: int prescalerval = 0x07;
/Skapa en variabel som kallas Prescalerval och ställ in den så att det är lika med det binära numret \ '00000111 \' TCCR1B & = ~ PRESCALER
/och värdet i TCCR0B med ett binärt antal \ '11111000 \' /Ställ nu lämpligt förekodande bit: intekoding bit 2 = 1;
/SET PRESCALVAL för att vara lika med det binära numret \ '00000001 \' TCCR1B | = Prescalerval2;
/Eller värde i TCCR0B med ett binärt antal \ '00000001 \' /Ställ PWM till 32 kHz för stift 3,11 (
detta program använder endast stift 11)
/rensa alla tre pre-caler bitar först: tccr2b & = ~ pre-calveral;
/Och värdet i tccr0b med ett binärt antal \ '11111000 \'/Ställ nu in lämplig förkodande bit: tccr2b | = Förkodande bit 2;
/Eller värdet i tccr0b med ett binärt antal \ '00000001 \'/först rensar alla tre förkodade bitar:}
Den huvudsakliga slingan för/prgrom void loop () {
/time = millis ();
Tid efter utskriftsprogrammet startar. println (tid); //Serie. skriva ut(\'\');
Gasspjället = analogread (0);
/Gaspotentiometer MSPS = karta (
gasreglage, 512,1023, 0,255);
/Körning mappas till den övre halvan av potentiometern Bspeed = MAP (
gasreglage, 0,511,255, 0);
/Halvdelens regenerativ bromsning längst ner i potten/MSPS ed = 100;
/För felsökning HallState1 = DigitalRead (2);
/Läs inmatningsvärde från hall 1 2 = digital läsning (3);
/Läs inmatningsvärde från hall 2 3 = digital läsning (4);
Läs inmatningsvärde/numerisk skrivning från Hall 3 (8, Hallstate1);
/När motsvarande sensor är i hög effekt kommer lysdioden att slå på
ursprungligen för att felsöka DigitalWrite (9, Hallstate2);
// DigitalWrite (10, Hallstate3); HallVal = (hallstate1)+ (2*hallstate2)+ (4*hallstate3);
/Beräkna de binära värdena i 3 Hall -sensorer/* -serier. tryck (\ 'H 1: \');
För felsökning av serieporten. println (hallstate1); Serie. tryck (\ 'H 2: \'); Serie. println (hallstate2); Serie. print (\ 'h 3: \'); Serie. println (hallstate3); Serie. println (\ '\');
*/// serie. println (mspeed); //Serie. println (hallval); //Serie. skriva ut(\'\');
/Monitor transistorutgång/fördröjning (1000);
/* T1 = DigitalRead (2); // t1 = ~ t1;
T2 = DigitalRead (4); // t2 = ~ t2;
T3 = DigitalRead (5); // t3 = ~ t3; Serie. tryck (T1); Serie. tryck (\ '\ t \'); Serie. tryck (T2); Serie. tryck (\ '\ t \'); Serie. tryck (T3); Serie. skriva ut(\'\'); Serie. skriva ut(\'\'); Serie. tryck (DigitalRead (3)); Serie. tryck (\ '\ t \'); Serie. tryck (DigitalRead (9)); Serie. tryck (\ '\ t \'); Serie. println (DigitalRead (10)); Serie. skriva ut(\'\'); Serie. skriva ut(\'\'); // Fördröjning (500);
*/Körningsfasändring/Varje binärt nummer har ett fodral som motsvarar de olika transistorerna som är aktiverade/bitmatematik som används för att ändra värdet på utgången Arduino:/Portd innehåller utgången från in -stiftet på L6234 -drivrutinen/utgången som används för att bestämma om den övre transistorn eller den nedre transistorn/EN -stiftet för varje fas styrs av Arduino
-kommandot värde kontrolleras av potentiometer). if (gasreglage> 511) {switch (hallval) {
case 3:/portd = 1111xxx00;
/Förväntad utgång av stift 0-
7 xxx hänvisar till Hall Input och Portd & = B00011111 bör inte ändras;
Portd | = B01100000;
/Analowrite (9, mspeed);
PWM på en fas (
high-end transistor) analogwrite (10,0);
Fas B -stängning (plikt = 0) Analogwrite (11 255); // Fas C på -Duty = 100% (
Low -End Transistor) Break;
Fall 1:/Portd = B001xxx00;
/Förväntad utgång av stift 0-
7 Portd & = B00011111;
/Portd | = B00100000;
/Analowrite (9, mspeed);
PWM på en fas (
high-end transistor) analogwrite (10 255); // Fas B på (
Low-End Transistor) AnalogWrite (11,0); // fas B off (tull = 0) paus;
Fall 5:/Portd = B101xxx00;
/Förväntad utgång av stift 0-
7 Portd & = B00011111;
/Portd | = B10100000; analogwrite (9,0); analogwrite (10 255); analogwrite (11, mspeed); bryta;
Fall 4:/Portd = B100xxx00;
/Förväntad utgång av stift 0-
7 Portd & = B00011111;
Portd | = BYM000;
/Analowrite (9 255); analogwrite (10,0); analogwrite (11, mspeed); bryta;
Fall 6:/Portd = B110xxx00;
/Förväntad utgång av stift 0-
7 Portd & = B00011111;
Portd B11. 000 =;
/Analowrite (9 255); analogwrite (10, mspeed); analogwrite (11,0); bryta;
Fall 2:/Portd = B010xxx00;
/Förväntad utgång av stift 0-
7 Portd & = B00011111;
B0201700 PORTD | =;
/Analowrite (9,0); analogwrite (10, mspeed); analogwrite (11 255); bryta; }}
/Regenerativ bromsfasbyte /PORTD (
utgång från i stift på L6234)
stiften är alltid låga, så endast låga transistorer i varje fas används under regen. bromsning. annars {
/portd = b000xxx00;
/Förväntad utgång av stift 0-
7 Portd & = B00011111;
Portd | = BYM0000; // switch (HallVal) {
Case 3: Analogy Writing (9, BSPEED); // analogwrite (9,0); analogwrite (10,0); analogwrite (11,0); bryta;
Fall 1: Analogikskrivning (9, BSPEED); analogwrite (10,0); analogwrite (11,0); bryta;
Fall 5: Analogikskrivning (9,0); analogwrite (10,0); Analogwrite (11, BSPEED); bryta;
Fall 4: Analogikskrivning (9,0); analogwrite (10,0); Analogwrite (11, BSPEED); bryta;
Fall 6: Analogikskrivning (9,0); Analogwrite (10, BSPEED); analogwrite (11,0); bryta;
Fall 2: Analogikskrivning (9,0); Analogwrite (10, BSPEED); analogwrite (11,0); bryta; }}
/Time = millis ();
Tid efter utskriftsprogrammet startar. println (tid); //Serie. skriva ut(\'\'); //Serie. spola();
/Om du vill felsöka med en seriell port, vänligen avmarkera}
Jag tror att operationen som Arduino gör i detta projekt är så enkelt att det verkar som ett slöseri att göra denna uppgift med en mikroprocessor.
I själva verket rekommenderar L6234: s applikationsanteckningar en enkel programmerbar grindarray (
GAL16V8 gjord av halvledarens gitter) för att göra detta jobb.
Jag känner inte till programmeringen av den här enheten, men kostnaden för IC är bara $ 2. 39 på Newark.
Andra liknande integrerade kretsar är också mycket billiga.
Ett annat alternativ är att sammanföra de diskreta logikgrindarna.
Jag kom med några relativt enkla logiska sekvenser som kunde driva L6234 IC från utgången från de tre hallsensorerna.
Diagrammet för steg A visas nedan, och sanningstabellen för alla tre stegen (
för att den logikkretsen i B- och C -faserna, 'inte \' -dörren måste bytas till den andra sidan av \ 'eller. Problemet med detta tillvägagångssätt är att det är nästan 20 anslutningar i varje steg, så
kräver en hel del arbete för att sätta det tillsammans.
det

Hoprio Group A professionell tillverkare av controller och motorer, grundades 2000. Gruppens huvudkontor i Changzhou City, Jiangsu -provinsen.

Snabblänkar

Kontakta oss

Whatsapp: +86 18921090987 
Tel: +86-18921090987 
ADD: No.19 Mahang South Road, Wujin High-Tech District, Changzhou City, Jiangsu Province, China 213167
Lämna ett meddelande
Kontakta oss
Copyright © 2024 Changzhou Hoprio E-Commerce Co., Ltd. Alla rättigheter reserverade. Webbplatskart | Integritetspolicy