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
Anfänger braucht Hilfe Schrittmotorsteuerung für den Hund
25.08.2019, 14:13 (Dieser Beitrag wurde zuletzt bearbeitet: 25.08.2019 14:15 von dg8ngj.)
Beitrag #1
Anfänger braucht Hilfe Schrittmotorsteuerung für den Hund
Guten Tag liebe User,
ich benötige Hilfe für das Projekt, Hunde Klappe zur Garage. Der Motor dreht die benötigte Umdrehungszahl zum Aufspulen des Hebe und Senke Seils , aber ich komme nicht auf eine Lösung, um den Programmablauf nach dem Heben, Verweilen und wieder Absenken zu verlassen und erst nach dem reagieren der Lichtschranke wieder neu zu starten. Das heißt, die Lichtschranke soll den Startimpuls für das Hinaufziehen geben und die Endschalter abschalten, aber beim Unterbrechen der Lichtschranke soll der Ablauf von neuem beginnen. Jetzt habe ich nur einen Stop und nach dem Aufheben läuft der Vorgang an der angehaltenen Stelle weiter.
Es ist schwer sich kurz und präzise auszudrücken, aber ich hoffe es kann jemand nachvollziehen und mir helfen. Danke im Voraus.
MfG DG8NGJ[/code]

[/code]
Code:
[code]
// Programm für Hundklappe, (Falltür) , heben und senken mit Schrittmotor und Sensoren
// 2 Sensoren ( Lichtschranke) Außen und Innen an der Klappe die bei
// Untebrechung durch den Hundekörper
// das Aufziehen der Klappe auslössen soll und jeweils ein Sensor für
// Endanschleg Oben und Unten.
//   Motor
//     I
//   __I___ SO  Sensor oben
//  II''''II ^
//  II    II Lichtschranke hoch und dann wieder herunter.
//  II___ II
//   -----  SU  Sensor unten
//**********************************************************


word x = 0;
#define BAUD (9600)

int SensorStart = 11;
int EndschalterOben = 10;
int EndschalterUnten = 9;
byte Dir = HIGH;
byte schrittzaehler1 = 0;
word schritte1 = 6400;

// Der Microwert für pwzeit & whzeit nicht unter 200 !!
unsigned long pwzeit1 = 500;// +/- Pulswechselzeit1
unsigned long pwablauf1 = 0;// Pulswechselablaufzeit1
unsigned long whzeit1 = 500;// Sinus Wiederhohlzeit1
unsigned long whablauf1 = 0;// Wiederhohlablaufzeit1

void setup()
{
  pinMode(4, OUTPUT); // Dir Drehrichtung des Motors
  pinMode(5, OUTPUT); // Step Impulse für den Motor
  pinMode(6, OUTPUT); // Enable Motor ein und aus

  pinMode(SensorStart,INPUT);// Sensor für Start
  pinMode(EndschalterOben,INPUT);// Endschalter für Stop Oben
  pinMode(EndschalterUnten,INPUT);// Endschalter für Stop Unten
  
  digitalWrite(SensorStart, HIGH); //Pullup einschalten
  digitalWrite(EndschalterOben, HIGH); //Pullup einschalten
  digitalWrite(EndschalterUnten, HIGH); //Pullup einschalten
}

void loop()
{

  digitalWrite(6, LOW); // Set Motor an und Enable LOW
  digitalWrite(4, Dir); // Set Dir
  
  // *********************Abfrage der Lichtschranke
if (digitalRead(SensorStart)==LOW )
{
    digitalWrite(6,HIGH); // Enable auf HIGH setzen Motor aus
  } else {
    digitalWrite(6, LOW); // Enable auf LOW setzen Motor an
    
//*********************Abfrage des  Endschalters Oben
     if (digitalRead(EndschalterOben)==LOW)
     {
    digitalWrite(6,HIGH);
  } else {
    digitalWrite(6, LOW);
  
//******************* Abfrage des Endschalters unten
     if (digitalRead(EndschalterUnten)==LOW)
     {
    digitalWrite(6,HIGH);
  } else {
    digitalWrite(6, LOW);
  
  if (x < schritte1) {  // Ziel noch nicht erreicht?

//---------------------Schritt 0---------------------------------------
    if ((schrittzaehler1 == 0) && (micros() - whablauf1 >= whzeit1)) {
      digitalWrite(5, HIGH); // Step auf high
      schrittzaehler1 = 1;  // Steuerung für Schritt 1 einstellen
      pwablauf1 = micros(); // Timer für Schritt 1 starten
    }
    
//---------------------Schritt 1---------------------------------------  
    if ((schrittzaehler1 == 1) && (micros() - pwablauf1 >= pwzeit1)) {
      digitalWrite(5, LOW); // Step auf low
      schrittzaehler1 = 0;  // Steuerung für Schritt 0 einstellen
      whablauf1 = micros(); // Timer für Schritt 0 starten
      x++;
    }
  }
  
  //--------------------Ziel erreicht ?--------------------------------
  if (x == schritte1) {
    x = 0;
    Dir = !Dir; // Dir Richtung wechseln
   delay(3000); // Eine Sekunde Pause
      }

   }
   }
    }
     }
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.08.2019, 14:43 (Dieser Beitrag wurde zuletzt bearbeitet: 25.08.2019 14:46 von MicroBahner.)
Beitrag #2
RE: Anfänger braucht Hilfe Schrittmotorsteuerung für den Hund
Hallo,
so ganz verstehe ich die Abläufe noch nicht. Der Hund unterbricht die Lichtschranke? Was passiert, wenn er die LS wieder verlässt, bevor das Tor aufgeht? Wann soll es wieder zugehen? nur zeitgesteuert? - Und wenn der Hund dann noch drin steht?
Ich nehme mal an, Du hast die HW schon, aber ein Schrittmotor ist für die Aufgabe eigentlich nicht der richtige Antrieb. Da ist ein einfacher Getriebemotor mit Endschaltern besser geeignet.

Insgesamt macht man sowas üblicherweise mit einem 'endlichen Automaten'. Wenn Du nach 'endlicher Automat' oder 'state machine' suchst, findest Du da reichlich Informationen zu. Wichtig ist, sich erstmal die Abläufe mit allen Eventualitäten klarzumachen und aufzuschreiben oder aufzuzeichnen. Dann kann es an die Programmstruktur gehen.

Für die Ansteuerung des Steppers ( wenn es denn dabei bleiben soll ) solltest Du auf eine Lib zurückgreifen. Das ist einfacher und zuverlässig.

Gruß, Franz-Peter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.08.2019, 15:59 (Dieser Beitrag wurde zuletzt bearbeitet: 25.08.2019 16:04 von dg8ngj.)
Beitrag #3
RE: Anfänger braucht Hilfe Schrittmotorsteuerung für den Hund
Guten Tag Franz-Peter,
danke für die schnelle Reaktion. Die Fallklappe soll erst mal bei Unterbrechung durch einen meiner zwei Westis hochfahren, und später ca. 10 Sek. Zeitgesteuert, momentan 1 Sek., oben bleiben und wenn die Lichtschranke frei ist wieder herunter.
Ist die Lichtschranke nicht frei oder wird dies kurz vor dem herunterfahren unterbrochen, soll diese sofort wieder herauf gehen. Das Programm macht jetzt schon dies, das hinauf ,warten und wieder herunterfahren, aber das ständig und ich weis nicht, wie ich eingreifen kann. Mit der Anweisung, Enable auf LOW zu legen hält also der Motor an um dann egal wieviel Zeit verstreicht an der alten Position weiter zu machen.
Mit DC-Motoren mit Getriebe ist die Sache leider nicht zu machen, habe ich mit Treiber und Relais getestet, da die Wiederholgenauigkeit mit der Zeit die Klappe zu weit nach oben zieht oder zu weit nach unten lässt, das Seil rollt sich dann von der Rolle oder die Klappe schlägt oben an. Die Motoren laufen immer etwas nach, welches sich addiert.
Mein Stepper läuft jetzt schon über 4 Std. und die Position ist immer exakt die gleiche. Es gibt später zwei Lichtschranken, eine innen und eine außen an der Tür.
Danke für die Geduld.

Nachtrag,
mit Endschalter am Getriebemotor würde gehen, wenn's nicht änderst geht, wäre ein Versuch dies wert.

Nachtrag 2, Mein Name ist Klaus und ich bin 67 Jahre alt, dies zur Personalisierung meinerseits.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.08.2019, 16:50
Beitrag #4
RE: Anfänger braucht Hilfe Schrittmotorsteuerung für den Hund
Hallo Klaus,
(25.08.2019 15:59)dg8ngj schrieb:  mit Endschalter am Getriebemotor würde gehen, wenn's nicht änderst geht, wäre ein Versuch dies wert.
So hätte ich es von Anfang an konzipiert, aber wenns jetzt schon mit Stepper aufgebaut ist..
An deinem grundsätzlichen Problem mit dem Ablauf würde das auch nichts ändern, denn das ist von der Motortechnik unabhängig.
Hast Du mal nach 'Arduino endlicher Automat' gesucht? Auch hier im Forum gibt's einen Beitrag dazu. Lies dir das mal durch, und wenn Du noch Fragen hast (wirst du haben Wink ), kannst Du dich ja wieder melden. Damit kannst Du dein Problem auf jeden Fall lösen.

Gruß, Franz-Peter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.08.2019, 17:00
Beitrag #5
RE: Anfänger braucht Hilfe Schrittmotorsteuerung für den Hund
Danke für die Anregung, ich werte den Bericht anschauen und sehen, ob ein Licht aufgeht.
Vor einem Jahr hatte ich ja noch nicht mal den Tunnel gesehen und jetzt leuchtet ab und zu mal eine LED in der Ferne auf. Aber es ist ja kein Broterwerb sondern Hobby, mit dem Wunsch etwas nützliches zu erstellen.
Gruß Klaus
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Brauch Hilfe bei Laser Nevelierung mit Traktor Schild SiR WonG 3 300 23.06.2020 15:15
Letzter Beitrag: elux011
  Hilfe Millis treibt mich in den Wahnsinn Nefrett 17 1.021 04.05.2020 20:53
Letzter Beitrag: Tommy56
  Brauche Hilfe, Was Stimmt an meinem Sketch nicht Andi-1090 12 932 20.03.2020 10:04
Letzter Beitrag: hotsystems
  Bitte um Hilfe für ein Arduino Nano Andi-1090 14 1.046 08.03.2020 14:55
Letzter Beitrag: Andi-1090
  brauche Hilfe, zeitlicher Ablauf tolotos789 9 967 05.03.2020 13:34
Letzter Beitrag: MicroBahner
  Hilfe bei Facharbeit anonymertom 6 755 03.03.2020 00:44
Letzter Beitrag: Bitklopfer
  Blutiger Anfänger/ Projekt: Visuelle Takthilfe bencha 17 1.396 01.03.2020 17:45
Letzter Beitrag: Tommy56
  Hilfe mit Funktinen/Bedingungen maxxctv 25 1.800 21.01.2020 20:30
Letzter Beitrag: maxxctv
  COM Port Hilfe HeikeF 8 1.044 03.01.2020 09:26
Letzter Beitrag: HeikeF
  433Mhz RX + LED Matrix = Hilfe?! Till1 36 3.006 10.12.2019 13:42
Letzter Beitrag: Tommy56

Gehe zu:


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