INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Ansteuerung DC-Motor + Schrittmotor mit Lichtschranke und Taster
07.08.2019, 14:52 (Dieser Beitrag wurde zuletzt bearbeitet: 07.08.2019 15:39 von D1_.)
Beitrag #1
Ansteuerung DC-Motor + Schrittmotor mit Lichtschranke und Taster
Hallo zusammen,

ich als ziemlicher Arduino-Neuling würde gerne ein kleines Projekt realisieren und bräuchte dazu eure Hilfe. Es ist mein erster Beitrag und ich beschäftige mich mit den Themen Programmieren, und Schaltkreise aufbauen noch nicht sehr lange, daher bitte ich möglicherweise dumme Fragen oder Anfängerfehler zu verzeihen.

Zu dem Projekt:
Ich möchte gerne einen DC-Motor und einen Schrittmotor über einen Arduino UNO und ein Adafruit MotorShield V2 ansteuern. Das klappt soweit auch schonmal. Ich kann sie durch das Betätigen eine Drucktasters an- bzw. ausschalten (siehe Skizze unten).
Nun möchte ich den Motoren über das Arduino gerne befehlen, dass sie durch das Betätigen eines Drucktasters (tastend) ihre Bewegung starten und durch das Betätigen einer Lichtsschranke beenden. Der DC-Motor treibt ein Förderband an, das beim Durchfahren der Lichtschranke stoppen soll. Der Schrittmotor soll seine vorher definierte Anzahl an Schritten einfach abfahren. Der Drucktaster soll nur einmal kurz gedrückt werden und nicht gehalten werden, die Motoren sollen ihre Bewegung aber "zu Ende fahren".

Also: Drucktaster-Signal -> DC-Motor und Schrittmotor starten -> DC-Motor hält bei Lichtschranken-Signal -> Schrittmotor fährt definierte Anzahl an Schritten ab -> Ende -> bereit zur nächsten Runde

Fragen:
1. Der Schrittmotor wird in meiner jetzigen Skizze schon recht warm, was ja vom Haltestrom kommen dürfte. Gibt es da Möglichkeiten, diesen zu senken? (Der DC-Motor ist dabei ein 12V Schneckengetriebemotor und der Schrittmotor ist ein 12V 0,35A NEMA 17 mit 200 Steps). Angetrieben wird das Ganze über ein 12V-Netzteil, das am Arduino angeschlossen ist. Jumper auf MotorShield ist aufgesteckt.
2. Wie könnte die Skizze zu dem geplanten Projekt aussehen? Ich glaube zu wissen, dass ich hier am besten mit if-Schleifen arbeite?
3. Wie könnte der Schaltplan dazu aussehen? Leider sind meine Kenntnisse hier recht spärlich.
4. Der DC-Motor (im Fall, dass ich es hinbekomme Smile) bleibt stehen, wenn das Förderband in die Lichtschranke fährt und der Befehl z.B. lautet "Anhalten wenn Lichtschranke ausgelöst wird". Wie schaffe ich es in der Skizze darzustellen, dass bei erneutem Durchlaufen des Programms der Motor wieder anfährt (da er ja dann immer noch das Signal von der Lichtschranke bekäme und dadurch ja anhalten soll)?
5. In meiner jetzigen Skizze halte ich den Schrittmotor einfach mit "motor2->step (0,FORWARD,DOUBLE);" an, was sicherlich nicht die beste Möglichkeit ist, oder? Was könnte ich hier sonst eingeben?

Ich hoffe, ihr könnt mir weiterhelfen und falls ihr weitere Angaben braucht, versuche ich gerne diese zu liefern. Danke schonmal! Shy

Gruß

Code:
#include <Wire.h>
#include <Adafruit_MotorShield.h>

Adafruit_MotorShield AFMS = Adafruit_MotorShield();
Adafruit_DCMotor *motor1= AFMS.getMotor (1);
Adafruit_StepperMotor *motor2 = AFMS.getStepper (200, 2);

int button =12;

void setup() {
  Serial.begin(9600);
  Serial.println ("TEST");
  
motor1->run (FORWARD);
AFMS.begin ();
motor1->setSpeed (100);
motor2->setSpeed (20);

pinMode (button, INPUT);

}
void loop() {
if (digitalRead(button) == HIGH) {
  motor1->run (FORWARD);
  motor2->step (1,FORWARD,DOUBLE);
}
  else {
  motor1->run(RELEASE);
  motor2->step (0,FORWARD,DOUBLE);
  }
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.08.2019, 15:14
Beitrag #2
RE: Ansteuerung DC-Motor + Schrittmotor mit Lichtschranke und Taster
Texte als Bild darzustellen ist die ungünstigste Variante überhaupt.
Stelle Deinen Sketch bitte in Codetags. So ist er auch auf portablen Geräten lesbar.
Wie das geht, steht hier.
Das kannst Du auch noch nachträglich ändern.

Du hast ja schon einen Teil gelöst. Du kannst Den Motor bewegen und Du kannst den Taster einlesen.
Dann wäre als nächstes die Lichtschranke dran. Welche willst Du benutzen?
Wie soll das Verhalten beim erneuten Drücken des Tasters sein? Soll der Motor wieder auf die Ausgangsposition zurück oder soll dann die Lichtschranke einfach ignoriert werden und der Motor weiter laufen? Das hängt stark vom Zweck und vom Aufbau ab.

Es gibt übrigens keine if-Schleifen (da wiederholt sich nichts), sondern nur if-Abfragen.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.08.2019, 15:54
Beitrag #3
RE: Ansteuerung DC-Motor + Schrittmotor mit Lichtschranke und Taster
Hallo Tommy56,

danke für den Hinweis, wurde abgeändert.

Zitat:Dann wäre als nächstes die Lichtschranke dran. Welche willst Du benutzen?
Als Lichtschranke habe ich folgende gewählt:
https://www.conrad.de/de/p/omron-gabel-l...79999.html
Alternativ steht noch eine TCST 2103 zur Verfügung, die hat aber eine recht geringe Schlitzbreite.

Zitat:Wie soll das Verhalten beim erneuten Drücken des Tasters sein? Soll der Motor wieder auf die Ausgangsposition zurück oder soll dann die Lichtschranke einfach ignoriert werden und der Motor weiter laufen?
Genau, also zunächst die Schranke ignorieren und das "Stoppobjekt" die Schranke passieren lassen. Also weiterfahren. Dann beim nächsten "Stoppobjekt", das die Lichtschranke erreicht, wieder den Motor anhalten.

Zitat:Es gibt übrigens keine if-Schleifen (da wiederholt sich nichts), sondern nur if-Abfragen.
Notiert Smile

Gruß
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.08.2019, 16:09 (Dieser Beitrag wurde zuletzt bearbeitet: 07.08.2019 16:10 von Tommy56.)
Beitrag #4
RE: Ansteuerung DC-Motor + Schrittmotor mit Lichtschranke und Taster
Ok. Die LED der Lichtschranke mit 120-150 Ohm an 5V und GND. Die Detektorseite Emitter an GND, Collektor an einen Eingang des Arduino und den internen PULLUP nutzen. Kein Hindernis = LOW, Hindernis =HIGH.

Den loop ohne delay.
Wenn Taster gedrückt und Lichtschranke HIGH--> Motor laufen lassen, bis Lichtschranke LOW, dann ist Lichtschranke wieder aktiv.
Bei der ganzen Geschichte musst Du etwas mit Statusvariablen arbeiten. Suche mal unter dem Stichwort Statusmaschine.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.08.2019, 20:18
Beitrag #5
RE: Ansteuerung DC-Motor + Schrittmotor mit Lichtschranke und Taster
Hallo Tommy56,

erstmal nochmal danke für deine Antwort.
Leider komme ich noch nicht ganz mit.

PHP-Code:
Wenn Taster gedrückt und Lichtschranke HIGH--> Motor laufen lassenbis Lichtschranke LOW 
Wie sage ich ihm denn "bis Lichtschranke LOW" in Programmiersprache?
Außerdem soll der Taster ja nicht durchgängig HIGH bleiben weil ich ihn ja nur kurz betätigen will und dann wieder loslasse, die Motoren jedoch trotzdem ihre Bewegungen zu Ende abfahren sollen.

Ich habe mal folgendes aus ein paar Youtube-Videos zusammengeschustert und mich würde interessieren, ob das so Sinn macht. Hier sehe ich immer noch das Problem, dass der Taster gedrückt bleibe muss bis das Signal der Lichtschranke kommt und der DC-Motor dann stehen bleibt. Stimmt das überhaupt?

Code:
#include <Wire.h>
#include <Adafruit_MotorShield.h>

Adafruit_MotorShield AFMS = Adafruit_MotorShield();
Adafruit_DCMotor *motor1= AFMS.getMotor (1);
Adafruit_StepperMotor *motor2 = AFMS.getStepper (200, 2);

int button =12;
int schranke =A0;
int schrankeWert =0;

void setup() {
  Serial.begin(9600);
  Serial.println ("TEST");
  
motor1->run (FORWARD);
AFMS.begin ();
motor1->setSpeed (100);
motor2->setSpeed (20);

pinMode (button, INPUT);
}

void loop() {
  schrankeWert =analogRead(schranke);
  Serial.println(schrankeWert);
  
if (digitalRead(button) == HIGH) {
  motor1->run (FORWARD);
  motor2->step (1,FORWARD,DOUBLE);
  if (schrankeWert >500) {
    motor1->run (RELEASE);
  }
}
  else {
  motor1->run(RELEASE);
  motor2->step (0,FORWARD,DOUBLE);
  }
}

Gruß
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.08.2019, 20:52
Beitrag #6
RE: Ansteuerung DC-Motor + Schrittmotor mit Lichtschranke und Taster
Da sehe ich noch nichts von einer Statemaschine.
Du musst den Status in Abhängigkeit von den Bedingungen weiter schalten.

Schreibe Dir doch die Zustände mal auf (richtig mit Stift und Papier)

- Taster drücken
. Motor läuft an
. Lichtschranke ist scharf
- Lichtschranke erreicht
....

usw.
Lies Dir das zum Endlichen Automaten mal durch.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.08.2019, 09:48
Beitrag #7
RE: Ansteuerung DC-Motor + Schrittmotor mit Lichtschranke und Taster
Hallo Tommy56,

nein, da steige ich im Moment auch leider noch nicht durch. Aber ich werde mal recherchieren und melde mich, falls es Fortschritte gibt.
Hast du eventuell gerade ein Beispiel parat, damit ich so etwas mal sehen kann? Hilft sicherlich beim Verständnis.

Danke und Gruß
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.08.2019, 12:49
Beitrag #8
RE: Ansteuerung DC-Motor + Schrittmotor mit Lichtschranke und Taster
Die Suche nach Arduino+Endlicher Automat / Zustandsautomat / Finite State Machine in der Suchmaschine Deiner Wahl sollte genügend Beispiele liefern.
z.B.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
Smile Brushless-motor Steuerung Meyer.F 10 7.165 02.09.2018 19:23
Letzter Beitrag: Tommy56
  3 Taster über einen Analogen eingang Steve39 17 7.350 14.05.2017 18:42
Letzter Beitrag: georg01
  Schrittmotor NEMA 17 luj1990 9 10.348 14.04.2017 22:04
Letzter Beitrag: georg01
  CNC-Fräse, Schrittmotor und Treiber hardyy 9 18.143 13.04.2017 16:50
Letzter Beitrag: Alex75
  Servo Seilwinde mit 2 Taster steuern SomosTres 17 10.286 13.02.2017 05:19
Letzter Beitrag: Binatone
  Tauchbeschichtungsanlage / Arduino UNO / Schrittmotor Drummerboy 26 6.771 01.12.2016 15:29
Letzter Beitrag: Bitklopfer
  motor shield hankewitz 2 2.987 24.11.2016 08:11
Letzter Beitrag: Binatone
  Motor-Parameter-TFT im Auto ChristianK 10 5.277 22.12.2015 11:44
Letzter Beitrag: aef
  Ferngesteuerter Motor Kreativlos 3 3.321 27.11.2015 22:22
Letzter Beitrag: hotsystems
Bug Segway / Self Balancing Robot DIY mit Gyro, Accel, Sabertooth 2x60 und My1020z2 Motor Wampo 17 36.937 30.10.2015 16:46
Letzter Beitrag: wsm

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste