Stap 5:.: Motor Spin Spin:. (Transistor & Motor) - CIRC03
Wat We doen:
Van de Arduino pinnen zijn groot voor het kleine elektrische items zoals LEDs rechtstreeks te beheersen. Echter, bij het omgaan met grotere items (zoals een speelgoed motor of wasmachine), een externe transistor is vereist. Een transistor is ongelooflijk nuttig. Er wordt overgeschakeld naar een heleboel stroom met behulp van een veel kleinere stroom. Een transistor heeft 3 pinnen. Voor een transistor negatieve type (NPN) verbindt u uw lading met de collector en de emitter op grond. Dan wanneer een kleine stroom van basis vloeit naar de emitter een stroom door de transistor vloeien zullen en uw motor zal draaien (dit gebeurt wanneer we onze Arduino pin HIGH ingesteld). Er zijn letterlijk duizenden verschillende soorten transistoren, zodat elke situatie perfect hand in hand gaan. Wij hebben gekozen een P2N2222AG een eerder gemeenschappelijke algemene doel-transistor. De belangrijkste factoren in ons geval zijn dat de maximale spanning (40 v) en de maximale stroom (600 milliamp) beide hoog genoeg voor de motor van onze speelgoed zijn (volledige details vindt u op het gegevensblad http://tinyurl.com/o2cm93 )
Opmerking: de transistor die wij gebruiken heeft een in orde: Base Collector-Emitter pinout (verschilt van sommige andere populaire transistors)
(De 1N4001 diode fungeert als een flyback-diode voor meer informatie over waarom zijn er bezoeken: http://tinyurl.com/b559mx)
(u kunt ook de fiche breadboard lay-out van de onderkant van deze stap)
De delen:
- CIRC-03 Breadboard blad
- 2 pin Header (x4)
- Transistor (P2N2222AG) (TO92) (x1)
- 2.2 k ohm weerstand (rood-rood-rood) (x1)
- Speelgoed Motor (x1)
- Diode (1N4001) (x 1)
Het Circuit en alles inpluggen In:
Een kleine Video van alles wordt aangesloten
The Code: - http://tinyurl.com/dagyrb
int motorPin = 9; //pin the motor is connected to void setup() //runs once{ pinMode(motorPin, OUTPUT); }void loop() // run over and over again{ motorOnThenOff(); //motorOnThenOffWithSpeed(); //motorAcceleration();}/* * motorOnThenOff() - turns motor on then off * (notice this code is identical to the code we used for * the blinking LED) */void motorOnThenOff(){ int onTime = 2500; //on time int offTime = 1000; //off time digitalWrite(motorPin, HIGH); // turns the motor On delay(onTime); // waits for onTime milliseconds digitalWrite(motorPin, LOW); // turns the motor Off delay(offTime);// waits for offTime milliseconds}void motorOnThenOffWithSpeed(){ int onSpeed = 200;// a number between //0 (stopped) and 255 (full speed) int onTime = 2500; int offSpeed = 50;// a number between //0 (stopped) and 255 (full speed) int offTime = 1000; analogWrite(motorPin, onSpeed); // turns the motor On delay(onTime); // waits for onTime milliseconds analogWrite(motorPin, offSpeed); // turns the motor Off delay(offTime); // waits for offTime milliseconds}void motorAcceleration(){ int delayTime = 50; //time between each speed step for(int i = 0; i < 256; i++){ //goes through each speed from 0 to 255 analogWrite(motorPin, i); //sets the new speed delay(delayTime);// waits for delayTime milliseconds } for(int i = 255; i >= 0; i--){ //goes through each speed from 255 to 0 analogWrite(motorPin, i); //sets the new speed delay(delayTime);//waits for delayTime milliseconds }}
Niet werkt?
- Motor niet spinnen? -Als u uw eigen transistor afkomstig, dubbel te controleren met de data-sheet die de pinout compatibel is met een P2N2222A (velen zijn omgekeerd)
- Nog geen geluk? -Als u afkomstig van uw eigen motor, dubbel te controleren dat het met 5 volt en dat werken zal trekt het niet te veel macht.
- Nog steeds niet werkt? -Soms zal de Arduino board loskoppelen van de computer. Probeer door de VN aansluiten en vervolgens opnieuw aan te sluiten op uw USB-poort.
Waardoor het beter:
Controle van de snelheid:
We speelden met de Arduino de mogelijkheid om controle van de helderheid van een LED eerder nu we gebruik van dezelfde functie maken zullen om te controleren de snelheid van onze motor. De arduino doet dit met behulp van iets genaamd de Pulse Width Modulation (PWM). Dit is gebaseerd op de Arduino het vermogen om te werken echt snel. In plaats van direct regelen de spanning komen vanaf de pin van de Arduino zal schakelen de pin zeer snel. In de computerwereld die dit gaat van 0 tot 5 volt veel keer per seconde, maar in de menselijke wereld zien wij het als een spanning. Als bijvoorbeeld de Arduino bedraagt 50% PWM'ing we zien dat het licht grijs 50%, omdat zijn onze ogen niet snel genoeg om het knipperen aan en uit te zien. De zelfde eigenschap werkt met transistors. Geloven me niet? Probeer het uit.
In de sectie loop Verander het in dit
// motorOnThenOff(); motorOnThenOffWithSpeed(); //motorAcceleration();
Vervolgens uploaden het programma. U kunt de snelheid wijzigen door het veranderen van de variabelen onSpeed en offSpeed
Versnellen en vertragen:
Waarom stoppen met twee snelheden, waarom niet versnellen en vertragen van de motor. Ga dit gewoon de loop code wijzigen om te lezen
// motorOnThenOff();// motorOnThenOffWithSpeed(); motorAcceleration();
Vervolgens uploaden van het programma en het horloge als uw motor langzaam tot versnelt volle snelheid dan vertraagt opnieuw. Als u zou willen veranderen van de snelheid van versnelling veranderen de variabele delayTime (grotere betekent een langere tijd van de versnelling)