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
  Hilfe für Kita-Projekt gesucht. cyberiss 8 792 06.08.2019 07:57
Letzter Beitrag: Der Hobbyelektroniker
  Passwort Schutz fuer Client-Server Verbindung TCP/IP im W-Lan, braucht man einen? gutschy 9 595 04.08.2019 21:12
Letzter Beitrag: hotsystems
  Brauche Hilfe bei Arrays mega-hz 23 1.361 10.07.2019 15:59
Letzter Beitrag: MartinZ
  Hilfe benötigt bei der folgenden Aufgabe hanneswave 10 843 01.07.2019 18:08
Letzter Beitrag: Wochenendprogrammierer
  Anfänger: Fehlermeldung expected primary-expression before Reiseeck 5 587 31.05.2019 12:09
Letzter Beitrag: amithlon
  Oled 0.91 wechselnde Anzeige . Benötige hilfe MotD 6 900 24.03.2019 22:48
Letzter Beitrag: Bitklopfer
  Simon Says bzw. Senso - Spiel bitte Hilfe Riddle 3 769 15.03.2019 13:46
Letzter Beitrag: Tommy56
  Hilfe benötigt beim Verknüpfen von Klassen Batucada 7 847 02.03.2019 23:47
Letzter Beitrag: georg01
  Hilfe bei Formulierung der Frage Matt 3 889 23.02.2019 12:45
Letzter Beitrag: Tommy56
  Hilfe bei Fehlermeldung Badboy89 9 1.164 13.02.2019 15:23
Letzter Beitrag: Tommy56

Gehe zu:


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