Arduino Tutorial Bundle.: Arduino experimenterande Kit:. (ARDX) (5 / 13 steg)
Steg 5:.: snurra Motor Spin:. (Transistor & Motor) - CIRC03
Vad vi gör:
Den Arduino stift är bra för att direkt kontrollera små elektriska artiklar som lysdioder. När man arbetar med större objekt (som en leksak motor eller tvättmaskin), krävs en extern transistor dock. En transistor är otroligt användbart. Det växlar en massa ström med en mycket mindre ström. En transistor har 3 stift. För en negativ typ (NPN) transistor ansluter du din last till kollektor och emitter marken. Sedan när en liten ström flödar från bas till sändaren en ström kommer att flyta genom transistorn och din motor kommer att snurra (det händer när vi ställer våra Arduino pin HIGH). Det finns bokstavligen tusentals olika typer av transistorer, så att varje situation matchas perfekt. Vi har valt en P2N2222AG en ganska gemensamma generella transistor. Viktiga faktorer i vårt fall är att dess högsta spänning (40 v) och dess maximala ström (600 MA) är båda högt nog för vår leksak motor (fullständig information kan hittas på dess datablad http://tinyurl.com/o2cm93 )
Obs: transistorn vi använder har en för: Base Collector utsläppskälla pinut (till skillnad från vissa andra populära transistorer)
(Den 1N4001 dioden fungerar som en flyback diod för detaljer om varför dess där besöka: http://tinyurl.com/b559mx)
(du kan också hämta bladet bakbord layout från botten av detta steg)
Delarna:
- CIRC-03 bakbord blad
- 2 stift huvud (x4)
- Transistor (P2N2222AG) (TO92) (x1)
- 2.2 k ohm Resistor (röd-röd-röd) (x1)
- Leksak Motor (x1)
- Diod (1N4001) (x 1)
Kretsen och ansluta allt:
En liten Video av allt att vara inkopplad
The Code: - http://tinyurl.com/dagyrb
int motorPin = 9; PIN motorn är ansluten till ogiltiga setup() //runs en gång {pinMode (motorPin, produktionen);} void loop() / / kör om och om igen {motorOnThenOff(); / / motorOnThenOffWithSpeed(); / / motorAcceleration();} / * * motorOnThenOff() - vänder sig motor på sedan bort * (märka här koden är identisk med koden som vi använde för * blinkande LED) * / void motorOnThenOff() {int onTime = 2500; //on tid int offTime = 1000; //off tid digitalWrite (motorPin, hög); / / varv motorn på delay(onTime); / / väntar onTime millisekunder digitalWrite (motorPin, låg); / / stängs motorn av delay(offTime); / / väntar offTime millisekunder} void motorOnThenOffWithSpeed() {int onSpeed = 200. / / ett tal mellan //0 (slutat) och 255 (full hastighet) int onTime = 2500; int offSpeed = 50; / / ett tal mellan //0 (slutat) och 255 (full hastighet) int offTime = 1000; analogWrite (motorPin, onSpeed); vänder sig motor på delay(onTime); väntar på onTime millisekunder analogWrite (motorPin, offSpeed); vänder sig motor av delay(offTime); väntar offTime millisekunder} void motorAcceleration() {int fördröjningstid = 50, //time mellan varje hastighet steg för (int jag = 0; jag < 256; i ++) {//goes genom varje hastighet från 0 till 255 analogWrite(motorPin, i), //sets den nya hastigheten delay(delayTime); / / väntar fördröjningstid millisekunder} för (int jag = 255; jag > = 0; i--) {//goes genom varje hastighet från 255 till 0 analogWrite (motorPin , i); Anger den nya hastigheten fördröjning (fördröjningstid); //waits för fördröjningstid millisekunder}}
Inte fungerar?
- Motor inte snurrar? -Om du kommer din egen transistor, dubbel check med det datablad som ordningen på pinout är kompatibel med en P2N2222A (många är omvända)
- Fortfarande ingen lycka? -Om du kommer din egen motor, dubbelkolla att det kommer att fungera med 5 volt och som drar inte det för mycket ström.
- Fortfarande inte fungerar? -Ibland kopplas Arduino styrelsen bort från datorn. Försök o-pluggning och sedan åter ansluta den till din USB-port.
Att göra det bättre:
Kontrollera hastighet:
Vi spelade med Arduinos förmåga att styra ljusstyrkan av en LED tidigare nu vi använder samma funktioner för att kontrollera hastigheten på vår motor. Arduinoen gör detta med hjälp av något som kallas puls bredd modulering (PWM). Detta bygger på Arduinos förmåga att fungera riktigt riktigt snabbt. I stället för direkt styra spänningen kommer från stiftet Arduino kommer att växla stiftet och på mycket snabbt. I datorvärlden detta kommer från 0 till 5 volt många gånger per sekund, men i den mänskliga världen ser vi det som en spänning. Till exempel om Arduino är PWM'ing på 50% ser vi ljuset nedtonade 50% eftersom är våra ögon inte snabba nog att se den blinkande på och av. Den samma funktionen fungerar med transistorer. Inte tror mig? Försök den ute.
I avsnittet loop() ändra det till detta
motorOnThenOff(); motorOnThenOffWithSpeed(); motorAcceleration();
Sedan ladda upp programmet. Du kan ändra hastigheterna genom att ändra variabler onSpeed och offSpeed
Påskynda och saktar in:
Varför sluta med två hastigheter, varför inte påskynda och bromsa motorn. För att göra detta helt enkelt ändra koden för loop() att läsa
motorOnThenOff(); / / motorOnThenOffWithSpeed(); motorAcceleration();
Sedan ladda upp programmet och se när din motor accelererar långsamt upp till full fart sedan saktar ner igen. Om du vill ändra hastigheten på acceleration ändra den variabel fördröjningstid (större innebär längre tid för acceleration)