Home > Het regelen van de richting en de snelheid van DC motor met behulp van Raspberry Pi

Het regelen van de richting en de snelheid van DC motor met behulp van Raspberry Pi

Tags:framboos-
Advertisement

Het regelen van de richting en de snelheid van DC motor met behulp van Raspberry Pi

Dit is een eenvoudige gids wanneer u leert hoe u DC-motoren met behulp van Raspberry Pi beheersen. Over Raspberry Pi - het is een cradit kaartformaat kleine computer die algemene doeleinden input output GPIO pennen die worden gebruikt om verschillende elektronische apparaten aan te sturen, sensing apparaat en motoren heeft

Stap 1: Controle Richting van DC motor via RPI

Het regelen van de richting en de snelheid van DC motor met behulp van Raspberry Pi

Controlling DC motor met behulp van RPI

Onze volgende taak is om een ​​DC-motor aan te sturen met behulp van Python-script en GPIO headers op de Raspberry Pi en dit zal een beeld van 'hoe de robot werkt' in onze geest creëren. U kunt fan van uw kamer te controleren op basis van het weer buiten (als u het gebruik van sensoren met RPI weet). Het doen van al deze zorgen ervoor dat u de basisregels van de robotica te begrijpen.

We gaan naar een DC-motor die ten minste 400mA van stroom zal nodig hebt om goed te werken onder controle te krijgen, maar onze RPI kan bijna alleen maar 20mA leveren. Het betekent dat we een DC voedingsbron extern aansluiten. Het is geen probleem! We hebben kleine accu van 6V en 9V beschikbaar in de markt.

Waarschuwing: een motor niet direct aansluiten op de Raspberry Pi, het zal je Raspberry Pi beschadigen.

Uiteraard zullen we verplicht een motor controller IC om de functionaliteit van de motor te regelen (met de klok mee draaien of tegen de klok in). Het is beter om te beginnen met L293D frequentieomvormer IC.

vereisten:

· Een Raspberry Pi met SD-kaart voorgeïnstalleerd met Raspbian

· Een Breadboard

· Een L293D motor driver IC

· Jumper draden (man op man en vrouw naar man)

· Een DC motor geschikt voor 6V

· Eén 6V of 9V batterij.

L293D

Het is een motor driver IC we kunnen 2 motoren besturen in een tijd van. De pin-configuratie is hieronder weergegeven. Het is een 16 pin IC waaronder (aan één kant) een Vcc (aan de macht), een GND pin, een enable pin (aan en uit een motor), twee ingangen overeenkomend met twee uitgangen.

aansluitingen:

· Sluit eerst de VCC pin van L293D naar 5V (3,3 V kan ook gebruik zijn)

· Sluit nu de gronden

· Wij gebruiken GPIO-2,3,4 op de IC te regelen. (GPIO-02 & GPIO-03 als ingang 1 & 2, respectievelijk)

· Sluit GPIO-04 aan respectieve inschakelen pin van de IC.

· Nu eindelijk uitgang 1 & 2 zowel de aansluiting van de motor aangesloten zoals weergegeven in figuur.

Python Code: -

import RPi.GPIO als GPIO

van tijd import slaap

GPIO.setmode (GPIO.BCM)

Motor1A = 02

Motor1B = 03

Motor1E = 04

GPIO.setup (Motor1A, GPIO.OUT)

GPIO.setup (Motor1B, GPIO.OUT)

GPIO.setup (Motor1E, GPIO.OUT)

print "Motor naar Start"

GPIO.output (Motor1A, GPIO.HIGH) # om de motor in de richting van de klok draaien

GPIO.output (Motor1B, GPIO.LOW) # zet het hoog motor tegen de klok in draaien

GPIO.output (Motor1E, GPIO.HIGH) # Moet altijd hoog om de motor te starten

slapen (5)

afdrukken "Het stoppen van de motor"

GPIO.output (Motor1E, GPIO.LOW) # om de motor te stoppen

GPIO.cleanup ()

Na het uitvoeren van de bovenstaande code zal uw motor gaan draaien in de richting van de klok gedurende 5 seconden. Door wijziging van de bovenstaande code die je kunt doen keren. Nu kunnen we een auto met twee of vier motoren te maken.

Controlling snelheid van DC motor met behulp van RPI

Zoals u weet in een aantal van de plaatsen die we nodig hebben om ook de snelheid van de motoren te controleren. Uit het bovenstaande onderwerp dat u de AAN-UIT-regeling van de motoren begreep, maar dat is niet genoeg toch ?? Nu moet je een vraag in je hoofd dat hoe we analoge spanning kan produceren uit GPIO pinnen van RPI hebben. Geen probleem, omdat we spanningspulsen kunnen produceren uit het via PWM (Pulse Width Modulation) en de controle uitgangsspanning van GPIO pin.

Pulse Width Modulation

Het is een zeer eenvoudig proces waarvan we de spanning frequentie van de bron kan besturen. PWM-module is beschikbaar voor GPIO in RPI & zoals wij die kennen

Periode = 1 / frequentie

Dus als ik selecteer een frequentie van 100 Hz dan betekent dit dat de periode is 10m sec. (Spanning triged op 'HIGH' voor 10m sec). Onze batterij leveren van 9V aan de motor en de snelheid moeten we deze spanning te verminderen verminderen. Dus als we willen dat de snelheid te verminderen tot de helft dan moeten we de dutycycle te veranderen (het percentage van de periode waarin de spanning hoog is) tot 50.

Als spanning naar de motor geleverd wordt door het regelen van pin van de motor driver IC- L293N inschakelen, dus we hoeven alleen de PWM van toepassing op pin inschakelen om de snelheid te variëren. Bellow is de python code om PWM te begrijpen en die de verbinding hierboven Vorige onderwerp (controle DC motor via RPI) nodig heeft.

>>> import RPi.GPIO als GPIO # import GPIO librery

>>> van tijd import slaap

>>> GPIO.setmode (GPIO.BCM)

>>> Motor1A = 02 # set GPIO-02 als ingang 1 van de controller IC

>>> Motor1B = 03 # set GPIO-03 als ingang 2 van de controller IC

>>> Motor1E = 04 # set GPIO-04 als Enable pin 1 van de controller IC

>>> GPIO.setup (Motor1A, GPIO.OUT)

>>> GPIO.setup (Motor1B, GPIO.OUT)

>>> GPIO.setup (Motor1E, GPIO.OUT)

>>> PWM = GPIO.PWM (04.100) # configureren inschakelen pin betekent GPIO-04 voor PWM

>>> pwm.start (50) # te beginnen met 50% dutycycle

>>> print "Go Forward"

>>> GPIO.output (Motor1A, GPIO.HIGH)

>>> GPIO.output (Motor1B, GPIO.LOW)

>>> GPIO.output (Motor1E, GPIO.HIGH)

>>> slaap (2)

# Dit zal uw motor in voorwaartse richting een looptijd van 2 seconden met 50% snelheid.

>>> pwm.ChangeDutyCycle (80) # toenemende dutycycle te 80

>>> print "GO achteruit"

>>> GPIO.output (Motor1A, GPIO.HIGH)

>>> GPIO.output (Motor1B, GPIO.LOW)

>>> GPIO.output (Motor1E, GPIO.HIGH)

>>> slaap (2)

# Dit uw motor in omgekeerde richting draaien 2 seconden met 80% snelheid door het leveren van 80% van de accuspanning

>>> print "Nu stop"

>>> GPIO.output (Motor1E, GPIO.LOW)

>>> pwm.stop () # halte PWM van GPIO-uitgang is het noodzakelijk

>>> GPIO.cleanup ()

Hoop dat het zal werken voor u !!

Advertisement

Related Articles