Wir bauen in unserer Firma zurzeit ein fahrbares Gerät was von einem 12V DC-Motor in Links und Rechtslauf fahren soll. Die Drehrichtung soll durch eine Lichtschranke (TCST 2103) bestimmt werden.
Ich schaffe es des Rechts und Linkslauf umzustellen schaffe es aber nicht die Lichtschranke richtig ins Programm einzuarbeiten, und ich weiß auch nicht, ob die Pin-Belegung richtig ist da ich noch nie eine Lichtschranke im Arduino Programm hinzugefügt habe.
Danke schonmal für eure Hilfe.
Verwendete Bauteile zum Testaufbau:
MDR-20-12 Netzteil 12V/1.67A
Arduino UNO R3
Arduino Motor Shield
Lichtschranke 2x TCST 2103
Modelcraft RB350100-0A101R Getriebemotor 12V
Wie schon gesagt das ist nur ein Testaufbau ob es so funktioniert deswegen ist auch die Verdrahtung und alles noch nicht ordentlich.
du könntest das Datenblatt von der Gabellichtschranke verlinken
du könntest einen Schaltplan posten, weil am Foto sind die Anschlüsse nicht erkennbar und 3 blaue Kabel gehen undefiniert irgendwo hin
du könntest den Code in Code Tags posten so wie im Forum How To beschrieben, weil die meisten Grafikprogramme können keinen Code auf den Arduino laden.
//Setup Channel A
pinMode(12, OUTPUT); //Initiates Motor Channel A pin
pinMode(9, OUTPUT); //Initiates Brake Channel A pin
pinMode(2, INPUT); //Lichtschranke Input
}
void loop(){
//Motor A forward @ full speed
digitalWrite(12, HIGH); //Establishes forward direction of Channel A
digitalWrite(9, LOW); //Disengage the Brake for Channel A
analogWrite(3, 255); //Spins the motor on Channel A at full speed
delay(3000);
digitalWrite(9, HIGH); //Engage the Brake for Channel A
delay(1000);
//Motor A forward @ full speed
digitalWrite(12, LOW); //Establishes backward direction of Channel A
digitalWrite(9, LOW); //Disengage the Brake for Channel A
analogWrite(3, 123); //Spins the motor on Channel A at half speed
delay(30000);
digitalWrite(9, HIGH); //Engage the Brake for Channel A
Soll der Motor auch gelegentlich gar nicht laufen?
Je nach Motor ist es auch gut, beim Umschalten zwischen L und R eine Pause einzufügen.
Das Bild des Sketch hab ich nur grob angeschaut und befürchte, da kann noch was verbessert werden. Aber auf jeden Fall sollte die Aufgabenstellung klarer sein.
Bzw. von einem funktionierenden einfachen Beispiel ausgehend die gewünschte Funktionsänderung beschreiben und den Realisierungsversuch zeigen.
Ansonsten ist eine Lichtschranke genauso (oder eher einfacher) zu behandeln wie ein Taster/Schalter.
Der Motor soll sobald die Maschine läuft auch mitlaufen deswegen haben wir ein extra 12V Netzteil für den Arduino eingebaut.
Ja eine kurze Pause dazwischen muss ich noch einbauen.
Jetzt zurzeit ist es ja einfach so das die Drehrichtung sich ändert nach den paar Sekunden das muss ich jetzt nur umbauen damit die Drehrichtung sich durch Betätigung einer der beiden Lichtschranken ändert.
Deswegen schreibe ich hier in dieses Forum weil ich davon echt keine Ahnung habe.
Ja.
Am einfachsten ist es, den Emitter der Lichtschranke (D in deinem Plan) auf Arduino-GND zu legen, und den Kollektor (+ darunter) mit einem INPUT_PULLUP - Pin zu verbinden.
Wenn die Lichtschranke offen ist, sollte dieser Pin LOW liefern, wenn etwas die Schranke unterbricht HIGH.
180 Ohm bei 12V an der LED ist ein bisschen klein: 60 mA an der LED der TCST2103 ist absolutes Maximum. ( 560 Ohm sollte ca 20 mA LED Strom liefern, 1k geht sicher auch )
Hallo,
du benötigst einen Hilfsmerker der für die eine Richtung HIGH ist und für die andere Richtung LOW. Eingeschaltet wird er mit der einen Lichtschranke und aus mit der anderen.
sowas in der Art
void loop(){
digitalWrite(9,LOW); //Disengage the Brake for Channel A
if( digitalRead(lichtschranke1)== HIGH) merker=HIGH;
if (digitalRead(lichtschranke2)== HIGH) merker =LOW;
digitalWrite(pinReverse,merker); // Richtung schalten
if(merker) analogWrite(3,255); full Speed
else analogWrite(3,128) slow Speed
}
Auch solltest Du auf das delay() verzichten, der Prozessor macht dabei eine Pause und du kannst die Eingänge der Lichtschranken nicht vernünftig abfragen.
Wenn Du das mit kleinen Pausein den Wendepunkten machen willst dann solltest Du über den Einsatz einer Schrittkette oder Ablablaufsteuerung nachdenken. Eventuell noch mit Ein/aus Funktion z.B hier stop immer rechts.