QuickStart - en transistor DC motor controller
En enda liten transistor används för att köra en liten likströmsmotor.
Medan kretsen är mycket rakt fram (vissa säger tråkiga?) har en
ganska cool trick i programvaran - Pulse bredd modulerade (PWM)
snabba kontroll - med speed ramp upp och ner.
Det är bara en transistor... Jag var tvungen att göra något för att göra det mer
intressant!
Transistorn (2N3904 NPN typ) finns till för att hantera de högre
ström som krävs av motorn. (se Principschema för anslutningar).
Jag har lagt till ett par andra leksaker till enkla transistor krets att göra det
lättare att se vad som händer här.
Den röda lysdioden är programvara kontrolleras. Den är påslagen endast när motorn är
accelererande (påskynda), och avstängd tillbaka precis innan motorn börjar
sakta ner.
Den blå lampan är ansluten över transistorn samlaren - sändare stift.
Det tänds endast när transistorn är aktiverat OFF. Så är det i princip visar
av perioden mellan motordrift pulser.
Eller - Anslut den blå lampan mellan transistorns samlare och V +
så du kan faktiskt se EMF kickback spänningen!
Video:
Ett kort videoklipp på denna demo i drift...
http://www.youtube.com/watch?v=gd39Jtel2uA&feature=youtu.be
Demo:
SPINN kan se lite konstigt ut först, men det är ett lätt språk att lära.
Först och främst måste du verktyget Propeller, som inkluderar redaktör, hjälp
filer, exempel, vanliga objekt och Propeller manualen.
Se länken nedan för att ta tag i som.
Det finns tre loopar i denna lilla demo program.
Den yttre loopen - Loop för evigt.
Och två inre loopar som gör rampen puls tåg - ramp upp och ramp ner.
Ramp upp börjar med mycket kort puls bredder och ökar bredden på varje
successiva pulse i tåget.
Ramp ner gör motsatsen, förkorta varje efterföljande puls i tåget.
Motorn reagerar som strömmen är påslagen, kör snabbare eftersom strömmen är kvar på
för en längre period.
Det är verkligen hjärtat av alla puls bredd modulering system
Propeller programmeringsverktyg är fri från Parallax på:
http://www.Parallax.com/tabid/832/default.aspx
Programstrukturen bestäms av indrag. Så var försiktig med det!
Detta exempel kan kopieras och klistras in direkt i verktyget Prop.
Kod:
{Motor.spin Richard Lamb - 15 juni 2013 cavelamb}
CON
_CLKMODE = XTAL1
_XINFREQ = 5_000_000
' definiera gånger
MSec = _XINFREQ / 1_000
USec = _XINFREQ / 1_000_000
Tlong = Usec * 600
Tshort = Msec * 300
' definiera IO pinnar
P_LED = 06
P_Motor = 07
ON = 1
OFF = 0
' definiera programmet konstanter
Tsteps = 120' antal steg per ramp
VAR
Lång X
PUB PWM_Motor_Demo
Dira [P_LED]: = 1'
Dira [P_Motor]: = 1'
Outa [P_Motor]: = 0' börjar lågt
Upprepa "Upprepa för evigt
Outa [P_LED]: = 0' LED på accelererat
Upprepa från 1 X till Tsteps steg 1' Ramp upp slinga
Outa [P_Motor]: = 1' turn motoreffekt ON
waitCNT ((X*Tlong) + cnt) "längre dröjsmål varje steg gör en längre puls
Outa [P_Motor]: = 0' turn motoreffekt OFF
waitCNT ((Tsteps - X + 1) * Tlong + cnt) ' + 1 att förhindra 0 wrap räknaren till 8 minuter.
Outa [P_Motor]: = 1' kort fördröjning för att förlänga om tid.
waitcnt (Tshort * 5 + cnt)
Outa [P_LED]: = 1' LED av medan saktar in
Upprepa från 1 X till Tsteps steg 1' Ramp ner loop
Outa [P_Motor]: = ON
waitCNT ((Tsteps - X + 1) * Tlong + cnt) "kortare dröjsmål varje steg gör en kortare puls
Outa [P_Motor]: = OFF
waitCNT ((X*Tlong) + cnt)
waitcnt (Tshort * 5 + cnt) "kort fördröjning medan av