Da es sich nicht um Schrittmotoren handelt sondern um 12V DC Motoren mit seperat verbautem Poti und einem kleinen Schneckenantrieb (Klimamotoren KFZ) Werden wir unser Vorhaben nun Mittel den Shield's SHD MOPO umsetzen. Verstellung folgt über einen Drehimpulsgeber.STEC11B03: Drehimpulsegeber, 15 Impulse - 30 Rastungen, vertikal bei reichelt elektronik
Ich habe mit dem Code schon angefangen und Mir stellen sich da schon einige Fragen. Ich habe diese im Code gestellt.
/Grundskizze des Programms***/
/*Steuerung von bis zu 10 DC 12V Motoren über einen Drehimpulsgeber (jeder Motor einzeln)/
int Schalter_1 = 40; //Ein/Aus Schalter des Systems
int pwm_M1 = 3 ; //PWM Kontrolle für motor outputs 1 and 2
int pwm_M2 = 9 ; //PWM Kontrolle für motor outputs 3 and 4
int dir_M1 = 2 ; //Drehrichtung für motor outputs 1 and 2
int dir_M2 = 8 ; //Drehrichtung für motor outputs 3 and 4
int pwm_M3 = 3; //PWM Kontrolle für motor outputs 1 and 2
int pwm_M4 = 9; //PWM Kontrolle für motor outputs 3 and 4
int dir_M3 = 2; //Drehrichtung für motor outputs 1 and 2
int dir_M4 = 8; //Drehrichtung für motor outputs 3 and 4
int pwm_M5 = 3; //PWM Kontrolle für motor outputs 1 and 2
int pwm_M6 = 9; //PWM Kontrolle für motor outputs 3 and 4
int dir_M5 = 2; //Drehrichtung für motor outputs 1 and 2
int dir_M6 = 8; //Drehrichtung für motor outputs 3 and 4
int pwm_M7 = 3; //PWM Kontrolle für motor outputs 1 and 2
int pwm_M8 = 9; //PWM Kontrolle für motor outputs 3 and 4
int dir_M7 = 2; //Drehrichtung für motor outputs 1 and 2
int dir_M8 = 8; //Drehrichtung für motor outputs 3 and 4
int pwm_M9 = 3; //PWM Kontrolle für motor outputs 1 and 2
int pwm_M10 = 9; //PWM Kontrolle für motor outputs 3 and 4
int dir_M9 = 2; //Drehrichtung für motor outputs 1 and 2
int dir_M10 = 8; //Drehrichtung für motor outputs 3 and 4
void setup()
{
pinMode(Schalter_1, INPUT); //Setzt Schalter_1 als Input für Motor 1-2
pinMode(pwm_M1, OUTPUT); //Setzt control pins zu outputs für Motor 1-2
pinMode(pwm_M2, OUTPUT);
pinMode(dir_M1, OUTPUT);
pinMode(dir_M2, OUTPUT);
pinMode(pwm_M3, OUTPUT); //Setzt control pins zu outputs für Motor 3-4
pinMode(pwm_M4, OUTPUT);
pinMode(dir_M3, OUTPUT);
pinMode(dir_M4, OUTPUT);
pinMode(pwm_M5, OUTPUT); //Setzt control pins zu outputs für Motor 5-6
pinMode(pwm_M6, OUTPUT);
pinMode(dir_M5, OUTPUT);
pinMode(dir_M6, OUTPUT);
pinMode(pwm_M7, OUTPUT); //Setzt control pins zu outputs für Motor 7-8
pinMode(pwm_M8, OUTPUT);
pinMode(dir_M7, OUTPUT);
pinMode(dir_M8, OUTPUT);
pinMode(pwm_M9, OUTPUT); //Setzt control pins zu outputs für Motor 9-10
pinMode(pwm_M10, OUTPUT);
pinMode(dir_M9, OUTPUT);
pinMode(dir_M10, OUTPUT);
analogWrite(pwm_M1, 80); //Setzt Motorgeschwindigkeit auf (80/255 = 31)% duty cycle (very slow)
analogWrite(pwm_M2, 80);
analogWrite(pwm_M3, 80);
analogWrite(pwm_M4, 80);
analogWrite(pwm_M5, 80);
analogWrite(pwm_M6, 80);
analogWrite(pwm_M7, 80);
analogWrite(pwm_M8, 80);
analogWrite(pwm_M9, 80);
analogWrite(pwm_M10, 80);
}
void loop()
{
buttonState = digitalRead(Schalter_1);
if (buttonState == HIGH) {
digitalWrite(dir_M1, LOW); //Motoren M1,M2 sollen solange mit definierter Geschw. fahren, bis der Mechanische Anschlag erreicht ist
digitalWrite(dir_M2, LOW);
analogWrite(pwm_M1, 80);
analogWrite(pwm_M2, 80);
delay(5000)
digitalWrite(dir_M1, HIGH); //Motoren sollen nachdem sie den Meschanischen Anschlag erreicht haben, in entgegengesetzter Fahrtrichtung drehen
digitalWrite(dir_M2, HIGH);
analogWrite(dir_M1, 80);
analogWrite(dir_M2, 80);
}
Ich möchte das am Anfang ein Initalisierungslauf startet wo immer 2 Motoren Paarweise durch ihren Verstellbereich hoch und runter fahren.
Bitte nicht Steinigen.
Liebe Grüße