Stap 13: Rijden motoren
Gelijkstroommotoren
Met de technieken uitgelegd in de vorige stap, kunt u alleen de motor in één richting draaien. Als u wilt wijzigen de richting, moet u een H-brug (ook wel een volledige brug genoemd). Het bestaat uit 2 NPN en 2 PNP transistors, of 2 N-kanaal en 2 P-kanaal FETs.
Neem een kijkje op de afbeelding voor een typische MOSFET H-brug-circuit.
Opmerking: u kunt niet alleen vervangen de MOSFETs in dit schema door transistoren: Transistors huidigemoeten baseren, FETs moeten poort spanning.
Kom te weten hoe dit circuit werkt:
We noemen de linker input input A, en de juiste is input B.
Wanneer de input A slinkt, voeren transistor Q1 niet. Dit betekent dat de poorten van Q2 en Q3 hoog zijn (ze zijn verbonden met VSS via R1). Q3 is een N-kanaal MOSFET, dus het begint uitvoeren (omdat er een positieve gate spanning). Q2 is een P-zenders MOSFET, zodat het niet voeren (omdat er geen spanningsverschil tussen de poort en de bron, beide zijn verbonden met VSS).
De linker terminal van de motor is nu gekoppeld aan grond, via Q3.
Wanneer input B hoog is, voert de Q4. Dit betekent dat de poorten van V5 en V6 laag zijn. (Ze zijn aangesloten op de grond door Q4 en R2 niet belangrijk in dit geval). Q6 is een N-kanaal MOSFET, zodat het niet voeren (omdat er geen spanningsverschil tussen de poort en de bron, beide zijn aangesloten op de grond).
Q5 is een P-zenders MOSFET, dus het begint uitvoeren (omdat het een negatieve gate spanning, ten opzichte van de bron heeft).
De juiste terminal van de motor is nu verbonden met VSS via Q5.
In dit geval zal de motor draaien linksom.
Het tweede beeld is een gelijkwaardig circuit voor deze situatie.
Je kunt al raden dat als input A hoog is, en B laag is, de motor zal met de klok mee draaien. Als A en B zowel hoog of beide laag zijn, zal niet de motor draaien, omdat beide terminals zijn verbonden met VSS of grond. (dus geen spanningsverschil)
Hoewel u dit circuit zelf bouwen kon, is het veel gemakkelijker te gebruiken een IC. Bijvoorbeeld, heb ik wat L6202 chips uit een oude printer. Een andere chip van de H-brug is L298 of L293.
Ze rechtstreeks verbinden met 2 digitale pinnen op de Arduino, en de meeste van hen hebben ook een 'inschakelen' pin, die u met een derde pin voor pwm, gebruiken kunt waarmee de snelheid van de motor.
Adafruit heeft een echt goede tutorial over hoe ze te gebruiken: https://learn.adafruit.com/adafruit-arduino-lesson...
Stappenmotoren
Een andere veel gebruikte motor is de stappenmotor.
Een normale DC-motor heeft een draaiende spoel binnen twee permanente magneten. Stappenmotoren hebben aan de andere kant, een bewegende magneet (de rotor) en sommige stationaire spoelen (de "stator"). Door het activeren van de spoelen in een bepaalde volgorde, zal de rotor draaien.
De volgende video's zal je helpen begrijpen hoe het werkt:
Voor het besturen van een unipolairestepper, je moet gewoon 4 NPN-transistors, of 4 N-kanaal MOSFETs. (zie afbeelding)
Vind de pinout voor uw stepper, opzoeken van het gegevensblad, of gebruik een multimeter en meet de weerstand tussen de draden. Sommige combinaties van de draad zal hebben een weerstand die 2 keer hoger is dan de anderen, dit zijn de buitenste twee draden in het schema.
De twee center draden verbinden met de positieve draad van de voeding en de buitenste draden aan de verzamelaars van de transistoren van de schijf (zie schema). Berekenen van de juiste basis weerstanden, zoals uitgelegd in de vorige stap, en hen verbinden met pinnen 8, 9, 10, 11 van de Arduino. Vergeet niet om de grond van de voeding verbinden met de grond van je Arduino.
Voor het besturen van een bipolairestappenmotoren, moet u 2 H-bruggen. Sluit de uitgangen van elke H-brug met een spoel van de stepper. De ingangen van de H-bruggen verbinden met pinnen 8, 9, 10, 11 van de Arduino. Vergeet niet om de grond van de voeding verbinden met de grond van je Arduino. VSSverbinden met de regel inschakelen.
Opmerking: stappenmotoren trekken veel stroom, dus u niet de ingebouwde voeding van de Arduino kunt. U moet ook high-power transistoren of MOSFETs gebruiken. Controleer de temperatuur van de transistors en een heat sink toevoegen indien nodig.
Open nu het voorbeeld van de stepper_oneRevolution (bestand > voorbeelden > Stepper) en wijzigen van het aantal stappen per omwenteling aan uw motor.
Op de top van het bestand is er een lijn
#include <stepper.h >
Dit voegt net de code o het Stepper.h bestand om de schets, zodat u de functies kunt gebruiken. Dit heet de stepper bibliotheek.
Op regel 24 maken we een exemplaar van de Stepper efficiëntieklasse Het aanleg heet ' myStepper'(deze naam is enkel willekeurige), en heeft 5 parameters: het aantal stappen in een revolutie (360°), en de 4 pennen die verbinding maken met de grondslagen van de transistors.
Een klasse heeft een aantal functies, een functie voor een bepaalde instantie uit te voeren, een periode (full stop) wordt gebruikt: instance.function(arguments);
myStepper.setSpeed(60);
Herinner Serial.print (...)? Dit werkt op een soortgelijke manier.
De setSpeed(rpm) funnction wordt de snelheid ingesteld in rotaties per minuut (dus het hangt af van het aantal stappen per omwenteling).
Een andere functie van de klasse van de Stepper is step(steps), blijkt net de motor voor een gegeven aantal stappen. Als dit getal positief is, zal het met de klok mee, verplaatsen dat als het negatief is, zal het tegen de klok in verplaatsen.
Upload het voorbeeld aan de Arduino, en de motor moet draaien 360° met de klok mee, dan 360° tegen de klok in, en zo verder. Als het niet, maar alleen trilt, probeer swappen 2 output pinnen, tot het werkt. U kunt de fysieke pinnen aan de Arduino ruilen of verander gewoon de volgorde van de pins op regel 24. (9, 8, 10, 11 in plaats van 8, 9, 10, 11)
Het gebruik van klassen maakt het zeer eenvoudig om meerdere exemplaren van de Stepper te maken. Neem een kijkje op voorbeeld _2steppers_oneRevolution.
Wanneer een stapfunctie niet beweegt is, blijft het één spoel op blok de motor, zodat het niet verplaatsen. Dit trekt veel stroom, echter, en de stepper zelf en de transistors kunnen erg warm krijgen.
Om dit te stoppen, kunt u alleen uitvoeren van een digitalWrite (pin, LOW) op de 4 pennen van de stepper.
Als u een IC-station (zoals een H-brug of een darlington-matrix), kon u de pin inschakelen ook aansluiten op je Arduino. Als u het hoge, de motor zal worden geactiveerd, en wanneer u het laag ingesteld, zal er geen spanning over de motor helemaal.
U kunt uw eigen kleine functie te zetten van de stepper, zoals ik deed in voorbeeld Stepper_stop
voidstepperOff() {}
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
}
Hier kun je functies die vrij veel om het even wat, bijvoorbeeld als je moet uitvoeren van een bepaalde reeks van commando's meerdere malen in uw programma. Een goede tutorial over klassen, functies en bibliotheken is de bibliotheek Tutorial over de Arduin