Hier wird das ganze mit Grafik und Tabelle schön erklärt http://www.pololu.com/docs/0J55/4.b
Allein aus der beschreibung bin ich auch nicht ganz schlau geworden
Anscheinend muss jeder Motor mit BEIDEN Anschlüssen auf je einen PWM-Ausgang. Aber mir ist unklar, ob die IN1 und 2 oder die PWM-Eingänge zu benutzen sind. Vielleicht hat jemand schon praktische Erfahrung, die er weitergeben kann.
Danke für jeden Tip
Hier wird das ganze mit Grafik und Tabelle schön erklärt http://www.pololu.com/docs/0J55/4.b
Allein aus der beschreibung bin ich auch nicht ganz schlau geworden
Zunächst mal vielen Dank für die Antwort. Leider habe ich den Controller nicht präzise genug beschrieben, es ist folgender, der etwas mehr Anschlussmöglichkeiten bietet: http://www.pololu.com/catalog/product/1213. Ich probier jetzt einfach mal ...
HELP - Wer hat Erfahrung mit dem MC33926 Dual Motor Driver CARRIER (NICHT Shield). Benötige genaue Anleitung der Mindestverbindung zum Arduino und am Besten einen Democode. Mit dem Democode für den Shield läuft nichts.
Vielen Dank für Eure Tips und ein schönes Wochenende. Mein fällt anscheinend dem Frust zum Opfer
Da steht zwar jetzt "ERLEDIGT" im Titel, aber da die Lösung nicht gepostet wurde und mir sie auch weitergeholfen hätte poste ich hier mal die Belegung für den Minimalbetrieb:
Vin: Stromquelle Motoren
Arduino +5V an:
- VDD
- EN(zum Aufwecken des Controllers, sonst stby Betrieb)
GND an:
- GND
- M1D1
- M2D1
Geschwindigkeit über PWM an M1D2 / M2D2.
Richtung über M1IN1=HIGH M1IN2=LOW oder umgekehrt.
Aber eventuell hat einer von Euch schon eine Intelligentere/Portsparendere Belegung gefunden.Code:const int M1D2 = 11; const int M1IN1 = 12; const int M1IN2 = 13; int i; void setup(){ pinMode(M1D2, OUTPUT); pinMode(M1IN1, OUTPUT); pinMode(M1IN2, OUTPUT); digitalWrite(M1IN1,HIGH); digitalWrite(M1IN2,LOW); analogWrite(M1D2,128); } void loop(){ for (i=0; i<255;i=i+10){ analogWrite(M1D2,i); delay(250); } delay(5000); for (i=255; i>0;i=i-5){ analogWrite(M1D2,i); delay(100); } digitalWrite(M1IN1,LOW); digitalWrite(M1IN2,HIGH); analogWrite(M1D2,0); for (i=0; i<255;i=i+10){ analogWrite(M1D2,i); delay(250); } delay(5000); for (i=255; i>0;i=i-5){ analogWrite(M1D2,i); delay(100); } delay(1000); digitalWrite(M1IN1,HIGH); digitalWrite(M1IN2,LOW); }
"Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher."
Albert Einstein
Versuche gerade mit dem Controller zwei Motore über den Raspberry zu steuern, was jedoch nicht klappt.
Mir ist nicht klar, wie ich den MC33926 mit dem PI konnekten muß.
Mit einem Controller L298N klappt es und der Python-Code sieht so aus.
import RPi.GPIO as GPIO
from time import sleep
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
rr1 = 19
rr2 = 26
lr1 = 27
lr2 = 17
GPIO.setup(rr1,GPIO.OUT)
GPIO.setup(rr2,GPIO.OUT)
GPIO.setup(lr1,GPIO.OUT)
GPIO.setup(lr2,GPIO.OUT)
GPIO.setup(pwm,GPIO.OUT)
p = GPIO.PWM(27, 50)
p.start(0)
#Ein Rad läuft mit voller Geschwindigkeit, das zweite wird kontinuierlich schneller bis 100% erreicht sind
def spirale():
print("Spiralfahrt")
GPIO.output(rr1, True)
for i in range(20,100):
p.ChangeDutyCycle(i)
sleep(0.6)
print("Ende")
Mit dieser Konfiguration klappt es nun.
Wenn ich die Doku richtig verstanden habe, müßte man das PWM-Signal auch auf die N1 und N2 geben können um noch Verbindungen einzusparen.import RPi.GPIO as GPIO
#import distance as abstand
from time import sleep
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
rv = 10 #rechte Rad vorwärts
rz = 9 #rechte Rad rückwärts
rpwm = 25 #rechte Rad Geschwindigkeit
lv = 17 #linke Rad vorwärts
lz = 27 #linke Rad rückwärts
lpwm = 24 #linke Rad Geschwindigkeit
en = 22 #Motortreiber aktivieren
GPIO.setup(rv,GPIO.OUT)
GPIO.setup(rz,GPIO.OUT)
GPIO.setup(lv,GPIO.OUT)
GPIO.setup(lz,GPIO.OUT)
GPIO.setup(en,GPIO.OUT)
GPIO.setup(rpwm,GPIO.OUT)
GPIO.setup(lpwm,GPIO.OUT)
GPIO.output(en, True)
pwmr = GPIO.PWM(rpwm, 50)
pwmr.start(0)
pwml = GPIO.PWM(lpwm, 50)
pwml.start(0)
def vor():
GPIO.output(rv, True)
GPIO.output(lv, True)
GPIO.output(rz, False)
GPIO.output(lz, False)
pwml.ChangeDutyCycle(100)
pwmr.ChangeDutyCycle(100)
Lesezeichen