PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bitte um Unterstützung bei MC33926 Dual Motor Controller an Arduino Micro



pemiso
17.01.2013, 22:14
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 :-)

Chypsylon
17.01.2013, 23:19
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 :confused:

pemiso
18.01.2013, 19:11
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 ... :-(

pemiso
19.01.2013, 22:58
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 :-(

Toby
05.06.2013, 12:15
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.


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);

}

Aber eventuell hat einer von Euch schon eine Intelligentere/Portsparendere Belegung gefunden.

bernd_h_schulz
25.10.2014, 18:02
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")

bernd_h_schulz
28.10.2014, 13:35
Mit dieser Konfiguration klappt es nun.
29282


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)


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.