RE: Arduino , Hilfe erbeten

#26 von Bodo , 25.04.2020 08:10

Hallo Ralf,

falls es noch um den Sketch in #14 geht … der Taster sagt dem Programm, wo unten ist. Der Motor bewegt den Aufzug im Setup bis zum Taster, dort bleibt er stehen und das Programm weiß jetzt "hier ist unten". Solange das Programm läuft und der Aufzug nicht "mit Gewalt" verschoben wird - ist immer "0" unten und "4000" (als "obererEndpunkt" definiert) oben. Zwischen diesen beiden Punkten bewegt sich der Aufzug dann im Hauptprogramm - 5 mal, dann eine längere Pause, dann wieder 5 mal … .

Zum Thema Schaltpläne … auf der Arduino-Homepage https://www.arduino.cc/ sind unter Resources neben der Befehlsreferenz u.a. auch unter Tutorials die mitgelieferten Beispiele mit Bildern dokumentiert, z.B. https://www.arduino.cc/en/Tutorial/Button (wobei genau der leider nicht mit internem Pullup gegen Masse sondern umgekehrt dargestellt ist). Die Variante mit internem PullUp-Widerstand findet sich z.B. hier: http://popovic.info/html/arduino/pics/pu...teckplatine.png aus http://popovic.info/html/arduino/arduino...in_wenig_Physik .

Viele Grüße, Bodo


Die Freiheit des Menschen liegt nicht darin, dass er tun kann, was er will, sondern dass er nicht tun muss, was er nicht will. (Jean-Jacques Rousseau)

Meine Anlage - Meine Dauerbaustelle
Platinen für Modellbahn- und Arduino-Anwendungen


 
Bodo
InterCityExpress (ICE)
Beiträge: 2.471
Registriert am: 28.04.2005
Homepage: Link
Gleise C-Gleis, Lenz 0
Spurweite H0, 0
Steuerung MS2 & CS2
Stromart Digital


RE: Arduino , Hilfe erbeten

#27 von jacco60 , 25.04.2020 09:26

Danke Bodo ,
jetzt habe ich es aber auch gesehen .
Der Motor dreht in Abwärtsrichtung , bei betätigen des Tasters ist der untere Punkt erreicht .
Das heißt also nach oben sollte es auch einen Taster geben , oder es gibt eine Handauslösung die den Motor in seiner Bewegung nach oben stoppt und nach unten fahren lässt .


Ecos 2 . nur Lopi´s , K-Gleise , Weichen mit Servoantrieben .
MFX freie Zone

Gruss
aus
Berlin
Ralf

Komisch , beim Strippen ziehen , reißen die immer ab


jacco60  
jacco60
InterRegio (IR)
Beiträge: 241
Registriert am: 08.07.2018
Ort: Kurz vor Ende der Erdscheibe
Spurweite H0
Steuerung Digital mit WDP
Stromart Digital


RE: Arduino , Hilfe erbeten

#28 von Bodo , 25.04.2020 09:51

Hallo Ralf,

aktuell läuft das Programm ja komplett zeitgesteuert über die delays … ich versuche mal, eine Tasterauslösung einzubauen (und schlagt mich nicht, wenn da wieder Fehler drin sind - die IDE meckert nicht, aber ich habe keinen Motor dran ):

Zusätzlich: startPin für zweiten Taster definieren (ich habe jetzt mal Pin 7 genommen), im Setup als Eingang mit PullUp definieren, Umläufe kann entfallen, Statt des Umlaufzählers Start-Taster abfragen, die Wartezeit am Ende des Umlaufs auf 2s verkürzt ...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 

#include <MobaTools.h>
 
#define STEPS 2038 // Anzahl der Schritte des Motor´s ( 28BYJ-48 )
const byte endschalterPin = 12; // Zur Feststellung der Endposition. der Schalter verbindet den Pin mit Gnd, wenn der Aufzug dort angekommen ist.
const byte startPin = 7; // Zum Starten des Aufzugs
 
const long obererEndpunkt = 4000; // Zahl der Stepperschritte zwischen 'unten' und 'oben'
 
MoToStepper stepper(STEPS, FULLSTEP); // Einrichten des Steppers
 
void setup() {
stepper.attach ( 8, 9, 10, 11 ); // Nr. der Pins für den Stepper
pinMode( endschalterPin, INPUT_PULLUP ); // Endschalter schaltet nach Gnd
pinMode( startPin, INPUT_PULLUP ); // Endschalter schaltet nach Gnd
stepper.setSpeed(20); // Geschwindigkeit in RPM*10
stepper.rotate(-1); // Die Drehrichtung muss hin zum Schalter sein!
while ( digitalRead( endschalterPin ) == HIGH ); // Warten bis der Endschalter anspricht
stepper.stop(); // anhalten
delay(500);
stepper.setZero(); // Momentane Position als 'Startpunkt' einrichten.
stepper.setSpeed(60); //Geschwindigkeit in Rpm * 10 im Aufzugbetrieb
stepper.setRampLen( 100 ); // Sanftes Anfahren und Anhalten
}
void loop() {
if ( digitalRead( startPin ) == LOW ); // Bei Verwendung mit PULLUP, sonst auf == HIGH prüfen
{
stepper.writeSteps(obererEndpunkt); // zum oberen Ebdpunkt bewegen
while ( stepper.moving() ); // Warten bis Stepper oben angekommen ist
delay(2000); // Wartezeit in ms
stepper.writeSteps(0); // zurück zum Nullpubkt ( = unten )
while ( stepper.moving() ); // Warten bis Stepper unten angekommen ist
}
delay (2000);
}
 
 



Die nächste Stufe wäre dann ein Taster für rauf und einer für runter und schon wären die delays weg .

Viele Grüße, Bodo


Die Freiheit des Menschen liegt nicht darin, dass er tun kann, was er will, sondern dass er nicht tun muss, was er nicht will. (Jean-Jacques Rousseau)

Meine Anlage - Meine Dauerbaustelle
Platinen für Modellbahn- und Arduino-Anwendungen


 
Bodo
InterCityExpress (ICE)
Beiträge: 2.471
Registriert am: 28.04.2005
Homepage: Link
Gleise C-Gleis, Lenz 0
Spurweite H0, 0
Steuerung MS2 & CS2
Stromart Digital


RE: Arduino , Hilfe erbeten

#29 von MicroBahner , 25.04.2020 10:04

Hallo Ralf,

Zitat

Das heißt also nach oben sollte es auch einen Taster geben

die MobaTools arbeiten da etwas anders als die Stepper.h des Arduino. Nachdem im Setup der untere Punkt festgelegt wurde, kennen die MobaTools die absolute Position des Aufzugs (= Schrittmotorstellung). Wenn Du jetzt z.B. die Anweisung 'writeSteps(4000)' ausführst, bewegt sich der Schrittmotor zu dem Punkt, der 4000 Schritte vom unteren Punkt entfernt ist. Und zwar unabhängig davon, wo sich der Motor bei der Ausführung der Anweisung gerade befindet. Wenn Du später Zwischenhalte einbauen willlst, musst Du nur ermitteln, wieviel Schritte diese Halte jeweils vom unteren Punkt entfernt sind. Wenn Du nun dorthin fahren willst, gibst Du einfach writeSteps(Halt1) an, wobei dann Halt1 diese Zahl der Schritte ist. Dann wird der Motor immer genau dorthin fahren. Egal ob er gerade oben, unten oder irgendwo dazwischen ist.
Deshalb brauchst Du auch oben keinen Schalter. Wenn Du niemals eine Position angibst, die größer als 'oben' ist, wird er auch nie darüber hinaus fahren. Das ist dann quasi wie ein Maßband mit Schritteinteilung in deinem Aufzugschacht. Und Du gibst nur noch an, zu welcher Stelle des Maßbandes Du fahren willst. Die Bewegungsrichtung und wieviele Schritte dazu nötig sind ermitteln die MobaTools anhand der momentanen Position des Aufzugs.

Nach einem Stromausfall wird immer zuerst nach unten bis zum Taster gefahren, um dort die unterste Position zu bestimmen, und ab da weis er wieder immer wo er ist.

Das einzige, was Du einmal bestimmen musst, wenn deine Mechanik aufgebaut ist, sind die Abstände von 'unten' in Motorschritten gemessen. Grob kann man das ja erstmal berechnen, weil Du weist, wieviel Schritte der Motor pro Umdrehung macht, und auch deine Übersetzung in der Mechanik kennst. Das Feintuning musst Du dann über Versuche machen.

Zitat

Du verwendest einige Befehle die unter der Bibliothek von Arduino anders benannt sind - das ist erstmal schwere Kost , aber so langsam komme ich dahinter .

Das ist durchaus Absicht, denn sie funktionieren meist auch etwas anders - s.o.


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog


RE: Arduino , Hilfe erbeten

#30 von jacco60 , 25.04.2020 12:09

Bodo und Franz Peter
Ich danke Euch beiden für die Erklärungen .

Franz Peter , ich werde mal eben einen Versuchsaufbau ( Fischer Technik sei Dank ) mit Schalter und Motor bauen um das auch als Mechanik zu testen .
Das mit den Zwischenhalten habe ich verstanden , bzw mir schon gedacht . Ich schätze mich schon glücklich , das zumindest dieses Projekt , mit Deiner Hilfe am laufen ist .
Ich werde mich dann nochmal ( heute , spätestens morgen ) melden , ggf auch mal ein zwei Bilder mit einstellen . Wenn die Ansteuerung und die Mechanik passen , kann der 3D Druck in Angriff genommen werden .


Ecos 2 . nur Lopi´s , K-Gleise , Weichen mit Servoantrieben .
MFX freie Zone

Gruss
aus
Berlin
Ralf

Komisch , beim Strippen ziehen , reißen die immer ab


jacco60  
jacco60
InterRegio (IR)
Beiträge: 241
Registriert am: 08.07.2018
Ort: Kurz vor Ende der Erdscheibe
Spurweite H0
Steuerung Digital mit WDP
Stromart Digital


RE: Arduino , Hilfe erbeten

#31 von jacco60 , 25.04.2020 23:55

Hallo Bodo ,
Der Sketch von Alfred Peter kommt mit einem Endschalter aus .
Im Falle eines Stromausfalls , erkennt der Motor bzw , der Controller , beim Wiedereinschalten welche Richtung zum Nullpunkt führt . Das klappt auch super .

Ich habe jetzt erstmal ein bißchen mit den Zeiten und der Geschwindigkeit experimentiert .

Hallo Franz Peter
Hast Du irgendwo einen Beispielsketch , wo ich mir das mit der Ansteuerung , mit einem Dekoder ( DCC ) ansehen kann ?


Ecos 2 . nur Lopi´s , K-Gleise , Weichen mit Servoantrieben .
MFX freie Zone

Gruss
aus
Berlin
Ralf

Komisch , beim Strippen ziehen , reißen die immer ab


jacco60  
jacco60
InterRegio (IR)
Beiträge: 241
Registriert am: 08.07.2018
Ort: Kurz vor Ende der Erdscheibe
Spurweite H0
Steuerung Digital mit WDP
Stromart Digital


RE: Arduino , Hilfe erbeten

#32 von MicroBahner , 26.04.2020 11:22

Zitat

Hast Du irgendwo einen Beispielsketch , wo ich mir das mit der Ansteuerung , mit einem Dekoder ( DCC ) ansehen kann ?

Ein externer Decoder? Dann sollte es ja einfach ein digitaler Eingang sein.
Oder soll der Arduino selbst den Decoder spielen? Das ist ja auch möglich, dann wird es aber schon etwas komplizierter. Das funktioniert dann auch nur noch, wenn Du deine delays losgeworden bist. Beispiele dazu gibt es zum einen direkt in der NmraDcc-Library, die für das Decodieren des DCC-Signals verantwortlich ist. Zum anderen habe ich auch im MobaTools Thread ganz am Anfang mal einen einfachen Servo-Decoder beschrieben. Ist zwar schon eine ganze Weile her, aber im Prinzip sollte das schon noch so gehen ( Die dort gezeigte Eingangsbeschaltung für das DCC-Signal lässt sich auch noch etwas vereinfachen ).


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog


RE: Arduino , Hilfe erbeten

#33 von jacco60 , 26.04.2020 12:07

Danke , werde mir das gleich mal ansehen .
Angedacht ist ja :
Ein Zug löst bei Einfahrt in den BHF einen Kontakt aus und der Aufzug startet seine Fahrten . Danach schaltet er sich aus , bis der Kontakt wieder ausgelöst wird .
Eine andere Möglichkeit wäre einfach die Standzeit nach den Durchgängen zu erhöhen , dann wäre das so schon voll funktionsfähig .


Ecos 2 . nur Lopi´s , K-Gleise , Weichen mit Servoantrieben .
MFX freie Zone

Gruss
aus
Berlin
Ralf

Komisch , beim Strippen ziehen , reißen die immer ab


jacco60  
jacco60
InterRegio (IR)
Beiträge: 241
Registriert am: 08.07.2018
Ort: Kurz vor Ende der Erdscheibe
Spurweite H0
Steuerung Digital mit WDP
Stromart Digital


RE: Arduino , Hilfe erbeten

#34 von MicroBahner , 26.04.2020 16:42

Wozu brauchst Du dann ein DCC-Signal, wenn das einfach durch den Zug selbst ausgelöst werden soll?


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog


RE: Arduino , Hilfe erbeten

#35 von jacco60 , 27.04.2020 06:32

Hallo Franz Peter ,
Da fragste mich was , ich weiß auch nicht wie ich darauf gekommen bin .

Allerdings muß das Projekt erstmal ausgesetzt werden , der China Nano macht mucken , der Uno oder das 2560 zeigen das Verhalten nicht . Er stoppt mitten in der Bewegung , so als wenn er in der Endposition angekommen ist , er verschiebt dadurch die Endlage , komischerweise zeigt der andere China Nano das gleiche Verhalten . Etliche Durchgänge laufen normal und dann auf einmal ist der Wurm drin . Ich versuch mal andere zu bekommen .
Endlage nach Stromausfall / Reset - Endschalter betätigt


Nach einigen Durchläufen , wird irgendwo gestoppt




Im Moment ist ein kurzer Weg eingestellt , so kann ich das auch nach einer falschen Startposition laufen lassen . Ein kompletter Durchlauf und 3 falsche Positionen , wie in den Bildern zu erkennen ist .


Parallel dazu werde ich auch gleich die Motorhalterung drucken lassen .

Derzeit schwanke ich noch etwas , da ja mit dem Zeitablauf , schon erreicht wird , das der Aufzug nicht den ganzen Tag raus und runter rennt . Sowie die Halterung da ist , werde ich mich wieder melden .

Auf jeden Fall schonmal meinen herzlichsten Dank an Franz Peter für die super Hilfe und seine Geduld mit mir


Ecos 2 . nur Lopi´s , K-Gleise , Weichen mit Servoantrieben .
MFX freie Zone

Gruss
aus
Berlin
Ralf

Komisch , beim Strippen ziehen , reißen die immer ab


jacco60  
jacco60
InterRegio (IR)
Beiträge: 241
Registriert am: 08.07.2018
Ort: Kurz vor Ende der Erdscheibe
Spurweite H0
Steuerung Digital mit WDP
Stromart Digital


RE: Arduino , Hilfe erbeten

#36 von Bodo , 27.04.2020 08:03

Hallo Ralf,

Zitat

Hallo Bodo ,
Der Sketch von Alfred Peter kommt mit einem Endschalter aus .
Im Falle eines Stromausfalls , erkennt der Motor bzw , der Controller , beim Wiedereinschalten welche Richtung zum Nullpunkt führt . Das klappt auch super .


ja sicher ... ich habe auch nichts anderes behauptet. Auch meine Änderung hat nur einen Endschalter.

Ich habe inzwischen den Eindruck, Du denkst bzgl. des Arduino noch zu analog ... also Strom einschalten, um ein Programm ablaufen zu lassen. Kann man machen. Dann gibt es aber nur genau eine Eingabe-Option - nämlich "Starten". Üblicher wäre es, den Arduino einmal zu starten und dem laufenden Programm dann mitzuteilen, was gemacht werden soll. In meiner Änderung wäre das der zweite Taster, der dem Programm sagt "einmal rauf und runter fahren und dann wieder auf den nächsten Tasterdruck warten". Nur so kann man das Programm weiter ergänzen, dass es z.B. einen Taster zum rauffahren und einen zum runterfahren gibt. Wobei diese Taster auch Reed-Kontakte zu Auslösung durch den Zug sein können. Oder z.B. über Optokoppler K83-Ausgänge (Beschreibung z.B. http://moba.noethlich.info/?page_id=684 ). Der Weg über den K83 ist für den Anfang sicher leichter, als die NMRADCC-Library - für die der Arduino übrigens auch permanent laufen muss, weil er den Highspeed-Optokoppler an Port 2 "abhören" muss.

Viele Grüße, Bodo


Die Freiheit des Menschen liegt nicht darin, dass er tun kann, was er will, sondern dass er nicht tun muss, was er nicht will. (Jean-Jacques Rousseau)

Meine Anlage - Meine Dauerbaustelle
Platinen für Modellbahn- und Arduino-Anwendungen


 
Bodo
InterCityExpress (ICE)
Beiträge: 2.471
Registriert am: 28.04.2005
Homepage: Link
Gleise C-Gleis, Lenz 0
Spurweite H0, 0
Steuerung MS2 & CS2
Stromart Digital


RE: Arduino , Hilfe erbeten

#37 von jacco60 , 07.07.2020 17:30

So , mittlerweile sind alle Komponenten zusammen :
Von der https://lichtschnitzer-shop.de/ wurde die Motoraufnahme mit der Zahnstangenführung gedruckt . Wie auch die letzen D Drucke , eine hervorragende Arbeit .
Zahnstange und Ritzel m0,5 , Conrad
5 Volt Schrittmotor mit Platine
und Dank MicroBahner der fertige Sketch . mit dem ich auch schonmal einiges ausprobieren konnte .
Doch erstmal die Bauteile im Bild :





Ich habe mich für diese Art und Weise entschieden , weil der Faller Aufzug über eine 2mm Gewindestange läuft und mit Endschaltern , die Richtung ändert . Von anderen MoBahnern weiß ich das das ganze eher sehr anfällig ist , und die Microschalter nicht sehr zuverlässig sind .
Das ganze wird wahrscheinlich etwas nach unten Aufbauen , aber dort ist genügend Platz .
Der Bahnsteig ist mittlerweile auch ausgebaut und wird für den Ausschnitt vorbereitet .


Ecos 2 . nur Lopi´s , K-Gleise , Weichen mit Servoantrieben .
MFX freie Zone

Gruss
aus
Berlin
Ralf

Komisch , beim Strippen ziehen , reißen die immer ab


jacco60  
jacco60
InterRegio (IR)
Beiträge: 241
Registriert am: 08.07.2018
Ort: Kurz vor Ende der Erdscheibe
Spurweite H0
Steuerung Digital mit WDP
Stromart Digital


   

Modellbahn-Tool Theo
TC Bronze und CS3+ kombinieren ???

  • Ähnliche Themen
    Antworten
    Zugriffe
    Letzter Beitrag
Xobor Einfach ein eigenes Forum erstellen
Datenschutz