Go Down

Topic: Re: Schiebetür mit 2XPIR (Read 391 times) previous topic - next topic

christo73

Hallo Guccini,

ich bin neu hier auf der Plattform und ein Arduino Einsteiger und noch dazu sind meine C-Programmierkenntnisse über die Jahre ziemlich eingestaubt :-)!
Dennoch möchte ein Schiebetürprojekt, vergleichbar mit deinem, realisieren und die komplette Hardware ist auch schon fertig (Arduino uno, Alu-Geze-Schiebtür-Schiene mit Nema17 Schrittmotor sowie Zahnriemenrädern und Zahnriemen).

Ziel ist eine automatisierte Fliegengitterschiebetür (leichtes Alu-Modell, das der Motor ohne Getriebe hoffentlich bewegen kann) an einer doppelten Terrassentür.

Das Ganze soll mit 2 PIR-Sensoren ausgelöst werden und wie bei dir bis in die jeweilige Endlage fahren. Nachdem die Tür im Offenzustand ist, soll sie nach 5 Sekunden wieder automatisch schließen. Selbstverständlich muss die Tür beim Schließvorgang reversieren, wenn ein erneutes Signal von einem PIR-Sensor kommt. Abrunden möchte ich das Ganze, indem die Tür sowohl beim Öffnen, als auch beim Schließen langsam anläuft und dann beschleunigt und kurz vor dem Endpunkt wieder langsam fährt.

Wenn möglich, möchte ich den Aufbau nur mit einem Endlageschalter (Schließer) realisieren, der primär für die Positionsbestimmung des Systems (am Anfang) genutzt werden soll. Danach sollen alle Positionen über die Schrittanzahlen angefahren werden (hängt natürlich von der Länge meiner Laufschiene ab).

Hast du deinen damaligen Post und Sketch eigentlich irgendwo als Gesamtlösung eingestellt? Ich habe leider diesbezüglich nichts gefunden.

Ich würde mich riesig freuen, wenn du mir mit deiner Umsetzung auf die Sprünge helfen könntest.
Herzlichen Dank!

uwefed

Neuen Post abgespaltet.
Grüße Uwe

agmue

#2
Sep 11, 2020, 11:46 pm Last Edit: Sep 12, 2020, 12:01 pm by agmue
... und noch dazu sind meine C-Programmierkenntnisse über die Jahre ziemlich eingestaubt :-)!
Dann ist Dir prozedural näher als OOP?

Welche elektrischen Kennwerte hat der Moror? Welchen Motortreiber verwendest Du? Welches Netzteil verwendest Du?

Einsteigerfreundlich sind die MobaTools zur Schrittmotoransteuerung, die Du mittels IDE installieren kannst. Auch wenn der Programmierer an Modellbahnen gedacht hat, kann man die üblichen Schrittmotoren ansteuern.

Eine Schrittkette (=endlicher Automat =finite state machine) sollte Dir geläufig sein!? Und loop ist sowas wie while(1){...}, eine ständige Schleife.

Aus meiner Grabbelbox:

Code: [Select]
#include <MobaTools.h>
#define TUERBEWEGUNG 150
const uint32_t OEFFNUNGSZEIT = 5000;  // in Millisekunden
const int STEPS_UMDREHUNG = 200; //Stepper einrichten ( 200 Schritte / Umdrehung )
MoToStepper tuer( STEPS_UMDREHUNG, STEPDIR );
const byte dirPin = 8;
const byte stepPin = 9;
const byte refPin = 2;          // Input für Referenzpunktschalter
const byte pirPin = 3;          // Input für PIR

void setup() {
  Serial.begin(115200); while (!Serial);
  tuer.attach( stepPin, dirPin );
  tuer.setSpeedSteps( 1500 );
  tuer.setRampLen( 20 );           // Rampenlänge 100 Steps bei 20U/min
  tuer.setZero( -TUERBEWEGUNG );   // Nullpunkt bei geöffneter Tür
  pinMode(LED_BUILTIN, OUTPUT);
  pinMode(refPin, INPUT_PULLUP );
  pinMode(pirPin, INPUT_PULLUP );
}

void loop() {
  uint32_t jetzt = millis();
  static uint32_t vorhin = jetzt;
  enum {WARTEN, OEFFNEN, OFFEN, SCHLIESSEN};
  static byte schritt = WARTEN;
  digitalWrite( LED_BUILTIN, digitalRead( pirPin ) );
  switch ( schritt ) {
    case WARTEN:
      if (digitalRead(pirPin)) {
        tuer.writeSteps(0);
        schritt = OEFFNEN;
      }
      break;
    case OEFFNEN:
      if (!tuer.moving()) {
        vorhin = jetzt;
        schritt = OFFEN;
      }
      break;
    case OFFEN:
      if (digitalRead(pirPin)) {
        vorhin = jetzt;
      }
      if (jetzt - vorhin >= OEFFNUNGSZEIT) {
        tuer.writeSteps(TUERBEWEGUNG);
        schritt = SCHLIESSEN;
      }
      break;
    case SCHLIESSEN:
      if (digitalRead(pirPin)) {
        tuer.writeSteps(0);
        schritt = OEFFNEN;
      }
      if (!tuer.moving()) {
        schritt = WARTEN;
      }
      break;
  }
}

TODO: Zweiter PIR; Referenzfahrt.
Die Vorstellungskraft ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)

christo73

Super und vielen Dank!
Das für den Anfang deutlich mehr, als ich erwartet habe.

Der Motor ist ein ACT Motor (17HS4415-04) mit 1.8° und 1,5A(U).

Da ich bisher nur einen PIR-Sensor (HC-SR501) habe und noch einen zweiten bestellen muss, werde ich mich auch gleich um den richtigen Motortreiber kümmern müssen, denn leider habe ich aktuell nur den ULN2003 vorliegen und der scheint völlig ungeeignet. Ich dachte an den A4988, da dieser schön kompakt ist. Der müsste doch passen, oder?

Als Netzteil habe ich ein Steckernetzteil bei dem man verschieden Spannungen einstellen kann. Da das aber nur 800mA leistet, werde ich da wohl auch eins mit größerer Stromstärke benötigen. Mit etwas Glück habe ich noch sowas im Keller...

Mit den von Dir genannten Begriffen, kann ich im Wesentlichen etwas anfangen und ich habe mir auch schon eine ganze Reihe an Tutorials und Sketches angesehen, die in etwa in die Richtung gehen, wo ich hin möchte.

Von daher wird meine erste Aufgabe nun sein, den Sketch aus Deiner Grabbelbox mal zu analysieren und zu verstehen. Im Moment steh ich noch wie der Ochs vor dem Berg und es wäre extrem hilfreich, wenn die Zeilen etwas mehr kommentiert wären, dann hätte ich eine Plan, was das passiert! Die Rampe dürfte für die Beschleunigung des Motors von langsam nach schnell sein, oder?

Für die Referenzfahrt muss ich zunächst den Endlagenschalter definieren und dem Motor sagen, dass er solange drehen soll, bis der Schlitten den Schalter betätigt. Das wäre dann quasi mein "Nullpunkt". Von dort aus hätte ich jedoch versucht die Gesamtumdrehungen bis zum Offenzustand über die Anzahl der Schritte zu definieren. In Deinem Beispiel schein es irgendwie über die Öffnungszeit geregelt zu sein!?

Na ich versuche mich mal dahinter zu klemmen und learning by doing zu betreiben.

Mit den Moba Tools habe ich leider noch nicht gearbeitet...aber dazu müsste man im Netz ja so einiges finden.

Bis dahin!

agmue

#4
Sep 13, 2020, 11:15 am Last Edit: Sep 13, 2020, 12:49 pm by agmue
Der Motor ist ein ACT Motor (17HS4415-04) mit 1.8° und 1,5A(U).
...
Ich dachte an den A4988, ...
Besser passend DRV8825. Das ist ein Stromtreiber, der den Strom regelt und dafür mehr Spannung benötigt! Jeder Strang möchte 1,5 A, aber nicht gleichzeitig, daher brauchst Du ein Netzteil beispielsweise 24 V mit mehr als 2,5 A.

Mit einem StepDown von 24 V auf 5 V für den Nano oder ProMini, der ist viel kleiner als ein UNO.

In Deinem Beispiel schein es irgendwie über die Öffnungszeit geregelt zu sein!?
Nö, Bewegungen über Schritte, nur die Öffnungszeit als Zeit.

Die Rampe dürfte für die Beschleunigung des Motors von langsam nach schnell sein, oder?
Ja.

Im Moment steh ich noch wie der Ochs vor dem Berg und es wäre extrem hilfreich, wenn die Zeilen etwas mehr kommentiert wären, dann hätte ich eine Plan, was das passiert!
Ich kommentiere, was ich eventuell in einem halben Jahr nicht mehr auf Anhieb verstehe. Den Rest "sieht man doch". Nicht falsch verstehen, ist aber schwierig. Jetzt mit ein paar mehr Kommentaren:

Code: [Select]
#include <MobaTools.h>
const uint32_t TUERBEWEGUNG = 150;     // Anzahl Schritte fuer Tuerbewegung
const uint32_t OEFFNUNGSZEIT = 5000;   // in Millisekunden
const int STEPS_UMDREHUNG = 200;       //Stepper einrichten ( 200 Schritte / Umdrehung )
MoToStepper tuer( STEPS_UMDREHUNG, STEPDIR );
const byte dirPin = 8;                 // DRV8825
const byte stepPin = 9;                // DRV8825
const byte refPin = 2;                 // Input für Referenzpunktschalter
const byte pir1Pin = 3;                // Input für PIR
const byte pir2Pin = 4;                // Input für PIR

void setup() {
  Serial.begin(115200); while (!Serial);
  tuer.attach( stepPin, dirPin );
  tuer.setSpeedSteps( 1500 );
  tuer.setRampLen( 20 );               // Rampenlänge 100 Steps bei 20U/min
  pinMode(LED_BUILTIN, OUTPUT);
  pinMode(refPin, INPUT_PULLUP );
  pinMode(pir1Pin, INPUT_PULLUP );
  pinMode(pir2Pin, INPUT_PULLUP );
  tuer.doSteps(-TUERBEWEGUNG - 100);   // Referenzfahrt; relative Bewegung etwas über Türbreite
}

void loop() {
  uint32_t jetzt = millis();                                   // aktuelle Zeit
  static uint32_t vorhin = jetzt;                              // gemerkte Zeit
  bool pir = digitalRead( pir1Pin ) || digitalRead( pir2Pin ); // Zustand der PIRs
  digitalWrite( LED_BUILTIN, pir );
  enum {REFERENZ, GESCHLOSSEN, OEFFNEN, OFFEN, SCHLIESSEN};
  static byte schritt = REFERENZ;
  switch ( schritt ) {
    case REFERENZ:
      if (!digitalRead(refPin)) {
        tuer.setZero( 0 );   // Nullpunkt bei geöffneter Tür
        tuer.writeSteps(TUERBEWEGUNG);
        schritt = GESCHLOSSEN;
      }
      break;
    case GESCHLOSSEN:
      if (pir) {
        tuer.writeSteps(0); // öffnen
        schritt = OEFFNEN;
      }
      break;
    case OEFFNEN:
      if (!tuer.moving()) { // Bewegung abgeschlossen
        vorhin = jetzt;
        schritt = OFFEN;
      }
      break;
    case OFFEN:
      if (pir) {
        vorhin = jetzt; // Zeit verlängern
      }
      if (jetzt - vorhin >= OEFFNUNGSZEIT) {
        tuer.writeSteps(TUERBEWEGUNG);
        schritt = SCHLIESSEN;
      }
      break;
    case SCHLIESSEN:
      if (pir) {
        tuer.writeSteps(0); // erneut öffnen
        schritt = OEFFNEN;
      }
      if (!tuer.moving()) { // Bewegung abgeschlossen
        schritt = GESCHLOSSEN;
      }
      break;
  }
}
Die Vorstellungskraft ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)

MicroBahner

#5
Sep 13, 2020, 04:19 pm Last Edit: Sep 13, 2020, 04:20 pm by MicroBahner
Der ULN2003 ist in der Tat vollkommen ungeeignet. Leider finde ich keine genauen Daten zu deinem Motor - nur zu einem 1,7A Motor. Hast Du da einen Link? Aber das ist sicherlich ein Motor für Stromsteuerung. Grundsätzlich geht das mit dem A4988 schon, aber der von agmue vorgeschlagene DRV8825 ist der neuere und etwas leisungsfähigere Chip.


Jeder Strang möchte 1,5 A, aber nicht gleichzeitig, daher brauchst Du ein Netzteil beispielsweise 24 V mit mehr als 2,5 A.
Je nach Einstellung am Treiber und der Position des Motors kann das schon gleichzeitig sein. Im Fullstep sind z.B. immer beide Spulen bestromt. Allerdings funktioniert der DRV8825 ähnlich wie ein Step-Down Schaltregler, daher muss dass Netzteil diesen Strom nicht vollständig liefern können. Wichtiger ist, dass die Leistung des Netzteiles ausreichend ist und ein ordentlicher Pufferkondensator am Treiber verbaut ist.

Die Rampe dürfte für die Beschleunigung des Motors von langsam nach schnell sein, oder?
Die Rampe gilt für beide Richtungen: Anfahren und Bremsen.

Ob ein Stepper so ideal für deine Anwendung ist, ist eine andere Frage. Ein Stepper zieht auch im Stillstand seinen Nennstrom. Deine Tür wird aber in aller Regel wohl stillstehen. Da musst Du dann den Motor gegebenenfalls ganz abschalten, damit nicht unnötig Strom verbraten wird.
Was ist der 'normale' Zustand der Tür? Ich vermute mal dass sie die meiste Zeit geschlossen ist. Dann solltest Du den Referenzschalter auch dorthin machen, dann steht sie beim Einschalten üblicherweise schon dort, und es ist keine großartige Referenzfahrt notwendig.
Gruß, Franz-Peter

Rentner

Hallo,

ich sehe das ebenso wie Franz-Peter, der Schritt Motor zieht ständig Strom, und eigendlich gibt es nur zwei Positionen. auf /zu . Da wo sich ein Endschalter anbringen lässt kann man meist auch einen zweiten anbauen. Und dann ist ein DC Getriebemotor genau das Richtige.

Wenn es sein muss kann der auch noch einen Encoder drauf haben dann könnte man auch auf Position fahren und auf den zweiten Endshalter verzichten. Indutrielle Schiebetüren laufen auch mit Endschalter. Mach halt einfach die Kufe etwas länger. Und benutze die Flanke für eine Rampe. Mit kleiner Geschwindigkeit könnte der Motor eventuell auch noch für kurze Zeit gegen mech. Ende fahren bevor er ausgeschaltete wird.

Heinz

christo73

Hallo zusammen,

na das hilft mir zunächst mal sehr weiter. Von daher Danke an agmue für die Kommentierung und Erläuterungen. In der Tat ist es so, dass der Endschalter auf der Seite der Laufschiene montiert werden soll, der den Geschlossen-Zustand der Tür darstellt.

Die Idee war nur, dass ich im Winter die Tür evtl. (elektrisch) deaktiviere, da es dann ja keine Fliegen / Mücken gibt :-) , dann aber grundsätzlich die Möglichkeit besteht die Tür händisch zu schieben (vsl. besser mit ausgehängtem Zahnriemen am Laufschlitten. Oder verträgt es der Stepper, wenn er stromlos ab und zu mal bewegt wird? - Achtung es sind auch Kinder im Spiel!

Das war übrigens auch einer der Gründe warum ich keinen DC-Motor mit Getriebe verbauen wollte, da ich diesen dann definitiv nicht stromlos über das Zahnriemenrad drehen kann. Dennoch sind eure Argumente bzgl. dauerhaftem Stromverbrauch natürlich nachvollziehbar und mir in dieser Form nicht bewusst. Gäbe es denn eine Möglichkeit den Stromverbrauch über den Endlageschalter zu unterbrechen? Kann ich mir nicht vorstellen, da der (dann stromlose) Motor bei Bewegungserkennung ja schließlich aus der Position mit dem gedrückten Endlageschalter wieder anlaufen soll....das kann wohl kaum funktionieren!

Blöderweise ist die ganze Hardware mit Motorhalter für den Nema17 auch schon fertig und wenn möglich wollte ich das Ganze nicht mehr auf einen alternativen DC-Motor umrüsten. Das Problem ist ohnehin, dass ich für die Laufschiene mit Motor nur 4,5 cm Bauraumbreite zwischen Türrahmen und Rollladenschiene habe. Das passt derzeit perfekt und hat den Vorteil, dass die Fliegengittertür z.B. bei Sturm durch den Rollladen geschützt ist.

Wenn ihr es für sinnvoll / zweckmäßig erachtet, soll es aber am zweiten Endlageschalter nicht scheitern.
Den DRV8825 habe ich aktuell noch nicht aber der lässt sich natürlich für kleines Geld kurzfristig bestellen.

Ich werde jetzt mal in Klausur gehen und versuchen vollends durch den Sketch durchzusteigen und natürlich ein wenig rumzuspielen. Ich werde aber ganz sicher mit weiteren Fragen auf euch zukommen und würde mich über einen weiterhin regen Austausch freuen.

Gruß
Christoph

Ps: Übrigens habe ich auch einen Nano Zuhause und habe im Netz jemanden gefunden, der eine Platine hat anfertigen lassen, die auf extrem kleinem Raum den Nano und den Motortreiber miteinander kombiniert. Der Charme ist die extrem kompakte Bauweise. Mit meinem zusätzlichen ProtoShield ließe sich das Ganze zwar auch mit Uno umsetzen aber ist natürlich ungleich größer...
Macht es Sinn mit einem StepDown auf 5V Basis zu arbeiten?

MicroBahner

Oder verträgt es der Stepper, wenn er stromlos ab und zu mal bewegt wird? - Achtung es sind auch Kinder im Spiel!
Wenn der Stepper stromlos ist, kannst Du ihn leicht drehen. Das sollte kein Problem sein.

Gäbe es denn eine Möglichkeit den Stromverbrauch über den Endlageschalter zu unterbrechen? Kann ich mir nicht vorstellen, da der (dann stromlose) Motor bei Bewegungserkennung ja schließlich aus der Position mit dem gedrückten Endlageschalter wieder anlaufen soll....das kann wohl kaum funktionieren!
Das stromlos machen solltes Du dem DRV8825 überlassen. Der hat einen 'enable' Eingang, über den man die Endstufen abschalten kann. Die MobaTools bieten auch die Möglichkeit, diesen enable-Eingang automatisch ein bzw. auszuschalten. Allerdings kannst Du dann nicht mehr sicher sein, dass die Refrenzposition gehalten wird, da der Motor im stromlosen Zustand ja leicht verdreht werden kann.
Das Programm sollte dann so aufgebaut sein, dass der Referenzpunkt über den Endschalter bei jeder Bewegung aus der 'Zu' Stellung neu gesetzt wird. Evtl. wäre dann doch aus Sicherheitsgründen auch ein Endschalter am anderen Ende notwendig, falls die Tür im stromlosen Zustand bewegt wurde.
Gruß, Franz-Peter

agmue

#9
Sep 15, 2020, 11:21 am Last Edit: Sep 15, 2020, 12:09 pm by agmue
Blöderweise ist die ganze Hardware mit Motorhalter für den Nema17 auch schon fertig ...
Das ist mutig bis leichtsinnig :)

Aber auch einen Schrittmotor kann man von der Programmlogik wie einen DC-Motor ansehen. Das setzt nur Endschalter auf beiden Seiten voraus. Die Bewegung wird angehalten, wenn der jeweilige Endschalter betätigt wird. Das ergänzt dann das tuer.moving().

Macht es Sinn mit einem StepDown auf 5V Basis zu arbeiten?
Der Längsregler des Nano heizt unnötig, also ja. Eventuell eine Steckbrücke vorsehen, damit sich 5 V von USB und StepDown nicht beißen.

... Kinder ...
Da möchte ich den SilentStepStick TMC2209 V2 ins Spiel bringen, die leisere Alternative, zusätzlich mit "Automatic standby current reduction". Kühlkörper nicht vergessen!

Praktische Erfahrungen habe ich leider keine.

Die Vorstellungskraft ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)

christo73

Das ist mutig bis leichtsinnig :)
Stimmt, besser wäre wenn man sich vorher informiert  :smiley-confuse:
Aber jetzt mache ich das Beste daraus und schließlich ist es mein erstes Projekt und ich will mich ja steigern...

...Das setzt nur Endschalter auf beiden Seiten voraus. Die Bewegung wird angehalten, wenn der jeweilige Endschalter betätigt wird. Das ergänzt dann das tuer.moving().
O.k. das mit den zwei Endschaltern ist - wie gesagt - kein Problem, ich muss nur noch verstehen wie das mit dem enable Eingang des Motortreibers funktioniert! Vom Prinzip her dürfte es klar sein, dass bei Betätigung des Endschalters die Endstufen abgeschaltet werden...bloß kenne ich die Befehle hierzu noch nicht und mit MobaTools habe ich ja leider auch noch nicht gearbeitet! Wenn ich diesen Weg also wähle, müsste ich mir sinngemäß die Position danach wieder über eine Referenzfahrt zu einem der beiden Endschalter definieren, oder?

Bloß wie funktioniert das in der Praxis? Angenommen ich schalte die Endstufen mittels enable ab und man verschiebt die Tür händisch, sodass die Position unbestimmt ist, was würde die erste Referenzfahrt auslösen? Wenn der PIR ein Signal ausgibt, soll ja schließlich nicht erst eine Referenzfahrt stattfinden, oder? Bzw. wäre das schon denkbar, sofern man als Referenzfahrt die Offen-Position wählt.

Aber in diesem Fall wäre es doch unlogisch, wenn der Motor während der Referenzfahrt mit unterschiedlichen Geschwindigkeiten (langsame Anfahrt + langsame Endfahrt und dazwischen schneller). Schließlich weiß das System ja nicht wo es sich befindet??? Oder verstehe ich hier etwas völlig falsch? Noch dazu möchte ich natürlich vermeiden, dass die Tür nach jeder Fahrt erneut eine Referenzfahrt benötigt...

Sorry, Fragen über Fragen... :o



...Da möchte ich den SilentStepStick TMC2209 V2 ins Spiel bringen, die leisere Alternative, zusätzlich mit "Automatic standby current reduction". Kühlkörper nicht vergessen!
Der sagt mir natürlich auch noch nichts aber ich werde versuchen mich im Netz mal damit zu befassen.

Das Ganze kann allerdings ein paar Tage dauern, da ich mich ab Morgen mal für drei Tage in die österreichische Bergwelt verdrücke und in dieser Zeit natürlich offline sein werde. Ich möchte aber unbedingt an dem Thema dran bleiben und bin für konstruktive Vorschläge und Tipps natürlich dankbar.

Na dann bis in ein paar Tagen!!!

Gruß
Christoph


agmue

Wenn ich diesen Weg also wähle, müsste ich mir sinngemäß die Position danach wieder über eine Referenzfahrt zu einem der beiden Endschalter definieren, oder?
Da muß man mal in das Datenblatt des Treibers, den Du verwendest, schauen, aber nach meinem Verständnis behält der Treiber die zur mechanischen Stellung des Motors passende Schaltung der Ausgänge. Die Position merkt sich Dein Programm.

Bloß wie funktioniert das in der Praxis? Angenommen ich schalte die Endstufen mittels enable ab und man verschiebt die Tür händisch, sodass die Position unbestimmt ist, was würde die erste Referenzfahrt auslösen? Wenn der PIR ein Signal ausgibt, soll ja schließlich nicht erst eine Referenzfahrt stattfinden, oder? Bzw. wäre das schon denkbar, sofern man als Referenzfahrt die Offen-Position wählt.
Ich würde eine DC-Motor-Logik ohne Referenzfahrt verwenden. Bei einem PIR-Signal wird die Tür geöffnet, bis der Endschalter die Bewegung anhält. Das mußt Du mechanisch so geschickt lösen, daß es nicht knallt.

Wenn die normale Tür geschlossen ist, sollte die Bewegung der Insektentür z. B. mit einem Reedkontakt ausgeschaltet sein. Sonst spielt die Katze nachts mit der Türbewegung.

Manche Dinge muß man auch ausprobieren, beispielsweise schneller auf als zu, wer raus will hat es eilig.

... für drei Tage in die österreichische Bergwelt verdrücke und in dieser Zeit natürlich offline sein werde.
Kein WLAN auf der Wanderhütte? Aber vernünftiges Essen gibt es hoffentlich?

Viel Spaß, gute Erholung und bleibe den gefährlichen Ecken fern!

Die Vorstellungskraft ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)

MicroBahner

Sorry, Fragen über Fragen... :o
Ja, einige grundsätzliche Fragen wie die ganze Türsteuerung und Bedienung ablaufen soll, sollte man sich schon vorher machen.
Das ist auch eine Frage der Mechanilk. Wenn man die Tür von Hand bewegen kann, helfen ja keine Endschalter. Da muss der Endanschlag das einfach aushalten, wenn die Kiddies die Tür mal mit Schwung auf- oder zumachen. Und wieviel Widerstand setzt die Mechanik von Zahnriemen und leerlaufendem Schrittmotor der 'schwungvollen' Bedienung entgegen? Das hat dann erstmal noch gar nichts mit Elektrik und Programmierung zu tun.
Nächste Frage: Wie kräftig ist dein Schrittmotor im Verhältnis zum mechanischen Endanschlag. Kann der da was beschädigen, oder bleibt der einfach hängen und schafft keine weitere Bewegung ( was mMn am Besten wäre )? Das hängt auch wieder alles vom genauen mechanischen Aufbau ab.
Dann sollte der Endschalter den Schrittmotor nicht stromlos machen, sondern als Signal für den Prozessor dienen. Der sollte dann auch überfahrbar sein, und nicht den eigentlichen Endanschlag bedeuten. Hängt aber alles stark von der mechanischen Auslegung ab. Muss die geschlossene Tür an einem Anschlag stehen, oder ist da noch Luft für etwas zusätzliche Bewegung?

Wenn Du das geschickt auslegst, kann der Prozessor bei jedem Schließen der Tür den Referenzpunkt prüfen, und gegebenenfalls neu setzen.
Gruß, Franz-Peter

agmue

#13
Sep 17, 2020, 01:07 pm Last Edit: Sep 17, 2020, 01:11 pm by agmue
Jeder Strang möchte 1,5 A, aber nicht gleichzeitig, daher brauchst Du ein Netzteil beispielsweise 24 V mit mehr als 2,5 A.
Wichtiger ist, dass die Leistung des Netzteiles ausreichend ist ...
Deine Darlegungen zu Stepper-Stromregelung mit A4988&Co habe ich mit großem Interesse gelesen, allerdings handelt es sich nicht gerade um leicht verdaulichen Stoff. Die Quintessenz für das eigene Projekt ist daher nicht so leicht zu ermitteln.

In solchen Bastelprojekten fehlen dann auch noch verläßliche mechanische Kenngrößen, weshalb die Berechnung der mechanischen Leistung kaum möglich ist.

Dann hat der TO auch noch einen Motor ausgewählt, für den ich kein Datenblatt finden kann. Die Homepage der chinesischen Firma ist derzeit nicht erreichbar.

Da lehne ich mich dann schon sehr weit aus dem Fenster, wenn ich dennoch einen konkreten Wert angebe ;D

Mit einer Berechnung von Watterott möchte ich meinen Schätzwert überprüfen. Dazu verwende ich das Datenblatt eines ähnlichen Motors.  

Widerstand pro Phase: 2,55 Ω/Phase
Nennstrom pro Phase: 1,5A
Drehmoment: 0,18 Nm min bei 1000 /min aus dem Datenblatt
Netzteil: 24 V

Pmot = 2 Wicklungen * R * I2 = 2 * 2,55 Ω * (1,5 A)2 = 11,5 W

Pmech = 0,18 * 2 * pi * 1000 / 60 W = 19 W

Igesamt = (11,5 + 19) W / 24 V = 1,3 A

Auch dieser Wert beruht auf ungenauen Annahmen.

Wäre es mein Projekt, so würde ich mein Labornetzteil anschließen, den Strom messen und einschließlich Sicherheitsaufschlag nach einem passenden Netzteil auf dem Markt suchen. Möglicherweise würde ich bei einem preisgünstigen mit 2,5 A landen :smiley-mr-green:  

Das ist auch eine Frage der Mechanilk. Wenn man die Tür von Hand bewegen kann, helfen ja keine Endschalter.
Da stimme ich Dir gänzlich zu!

Die mechanische Begrenzung sollte durch Gummipuffer oder Federn erfolgen. Endschalter sind eigentlich als Taster, die die Endlage signalisieren, auszuführen. Mechanisch wird dabei alleine die Tasterzunge betätigt, wenn sich die Tür am Taster vorbeibewegt. Die Tür sollte den Endtaster um die Länge der Rampe überfahren können, bis sie auf den Puffer trifft.

Bis die Familie einschließlich der intuitiv agierenden Kinder das Projekt als Gewinn akzeptiert, dürfte noch einige Feinarbeit notwendig sein.

Die SilentStepStick Treiber habe ich selbst noch nicht in den Fingern gehabt, sondern nur hier im Forum Positives gelesen. Im Wohnumfeld dürfte ein knurrender Schrittmotor schon lästig sein, daher mein Hinweis.

Die Vorstellungskraft ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)

christo73

Hallo Zusammen, ich bin aus der österreichischen Diaspora zurück und muss mich erst wieder an Internet und Handyempfang gewöhnen :)

Ich bin ganz happy, dass ihr mein Projekt eifrig weiterdiskutiert habt und ich nun an diesem Austausch teilhaben kann.

Ich schaue mal, ob ich die exakten Motordaten nicht irgendwo auftreiben kann...und teile sie euch natürlich dann mit! Die Geschichte mit der passenden Stromstärke für das Netzteil behalte ich natürlich im Auge!

Übrigens hat mir der Vorschlag den Endlagenschalter gar nicht als solchen zu verwenden, sondern eher als "Überfahrschalter" zu nutzen, um bei Betätigung mittels Rampe die Restfahrstrecke mit niedriger Geschwindigkeit zu fahren, gut gefallen. Gleichzeitig kann man ja durch die exakte Position des Überfahrschalters die Restfahrstrecke über die Schrittzahlen bis zu jeweiligen Endposition so definieren, dass der Motor erst gar nicht gegen einen Anschlagpuffer fahren muss, oder wie sehr ihr das?

Damit sollte es doch auch mit dem Thema Referenzfahrt erledigt sein, da der Antrieb zwischen den beiden Überfahrschaltern mit "hoher Geschwindigkeit" fährt und die jeweilige Reststrecke bis zur Offen- bzw. Geschlossenposition mit "niedriger Geschwindigkeit" fährt. Damit dürfte es doch auch dann keine Probleme geben, wenn z.B. die Kinder die Tür händisch verschieben und die Steuerung damit ihre Position verliert. Diese würde doch dann spätestens bei der Überfahrt des ersten Tasters wieder eingelernt werden, oder? Das sollte doch steuerungsmäßig umsetzbar sein...nur wie???

Noch eine Frage am Rande:
Wenn der Sketch eines Tages hoffentlich mal steht, möchte ich die Hardware natürlich möglichst kompakt in einem (kleinen) Gehäuse unterbringen. Könnt ihr mir ein Erweiterungsboard empfehlen, das man auf den Arduino steckt und auf dem man wiederum den Motortreiber (DRV8825) steckt. Ich habe sowas mal in einem Arduino Video gesehen und fand die Idee recht charmant.

Euch einen schönen Abend und bis bald!
Gruß
Christoph

Go Up