Seilbahn steuern

Gast #5078507
Lesenswert?

Hallo

Ich habe eine kleine Seilbahn gebaut und möchet diese nun steuern 
können.
Als Controller kommt ein  ESP8266 zum Einsatz,
da ich das Ganze gerne vomn Handy aus steuern möchte.

Der Motor besteht aus einem Servo, welches nur noch als Getriebemotor 
dient
und über das Poti ansteigende Werte an meinen analogen Eingang liefert.
Pro Radumdrehung gibt es einen Maximalwert von ca 3.3V.
Auf eine Radumdrehung genau zu steuern reicht vollkommen aus.

Nur soll die Bahn während er Fahrt wweitere Befehle empfangen können,
um z.B. eine Lampe einzuschalten.

Ich programmiere mit der ArduinoIDE und bin noch recht unerfahren.
Gehe ich recht in der Annahme, dass ich es mit Interrupts lösen sollte?
Also immer wenn ein (der) Maxiumalwert erreicht ist,
wird eine Runde gezählt und wenn Runde_ist == Runde_soll ist, wird 
gestoppt?

Leider finde ich dazu keine passenden Beispiele und frage daher hier 
nach.

Auch möchte ich, dass die Bahn nicht sofort stehen bleibt, sondern 
langsam bremst.
Wie realisiert man dies?

Vielen Dank für eure Mithilfe!

Kevin
Gast #5078522
Lesenswert?

Kevin schrieb:
> Auch möchte ich, dass die Bahn nicht sofort stehen bleibt, sondern
> langsam bremst.
> Wie realisiert man dies?

Immer mitzählen wo man ist und rechtzeitig vorm Ziel den Motor zunehmend 
langsamer laufen lassen. Man kann z.B. mit konstanter 
(Brems-)Beschleunigung arbeiten, d.h. ausgehend von der 
Fahrgeschwindigkeit per Integration den Bremsweg ausrechnen und dann 
entsprechend rechtzeitig anfangen zu bremsen.
Gast #5078526
Lesenswert?

Die Bahn soll ja nicht ewig bremsen.
Nur eben nicht so plötzlich, denn dann wackelt sie am Seil immer.

Eine Radumdrehung sind ca 10cm. Das sollte (gefühlt) als Bremsstrecke 
reichen.
Wie sage ich ihr, dass sie in der letzten Umdrehung von PWM 100% zu PWM 
0% verlangsamen soll?
#5078548
Lesenswert?

Hi

Wenn Dein Servo nicht zu 100% zum Getriebemotor rückgebaut wurde, 
könntest Du mit der Servo-Ansteuerung die Geschwindigkeit einstellen.
Also, wenn Du das im Servo enthaltene Poti entfernt und durch zwei 
Widerstände fest auf 'Mittelstellung' ersetzt hast und den mechanischen 
Anschlag auf der Welle weg ist, kannst Du über ein Signal 1ms...2ms den 
Motor von schnell links über Stop (1,5ms) nach schnell rechts (2ms) 
fahren lassen.

Die Stop-Position muß wegen der Toleranz der Widerstände erprobt werden, 
kann sein, daß der Aus-Bereich nicht ganz genau in der Mitte liegt.

MfG
Gast #5078808
Lesenswert?

Kevin schrieb:
> Wie sage ich ihr, dass sie in der letzten Umdrehung von PWM 100% zu PWM
> 0% verlangsamen soll?

In dem du die Bremsstrecke bestimmst und eine Rampe programmierst.
Wie man das programmiert, findest du aber auch im Netz.
Google: arduino pwm motor rampe
Gast #5078834
Lesenswert?

Kevin schrieb:
> Die Bahn soll ja nicht ewig bremsen.
> Nur eben nicht so plötzlich, denn dann wackelt sie am Seil immer.
>
> Eine Radumdrehung sind ca 10cm. Das sollte (gefühlt) als Bremsstrecke
> reichen.
> Wie sage ich ihr, dass sie in der letzten Umdrehung von PWM 100% zu PWM
> 0% verlangsamen soll?

Vermutlich hast Du in Deinem Programm ja schon eine Art Soll-Position, 
da wo die Bahn hinfahren soll, und eine Ist-Position wo die Bahn aktuell 
ist.

Vermutlich setzt sich Deine Ist-Position aus der Anzahl von vollem 
Umdrehungen des Potis sowie dem Aktuellen Drehwinkel des Potis zusammen.

Was Du brauchst, ist eine Einfach Regelung. Genauer reicht ein einfacher 
P-Regler mit zwei "Tricks"; in Pseudo-Code:
1
  IF soll_position_nicht_erreicht() THEN
2

3
    positions_abweichung = soll_position - ist_position;
4
    stellwert = p_faktor * positions_abweichung;
5

6
    pwm = SIGN(stellwert) * LIMIT(min_geschwindigkeit, ABS(stellwert), max_geschwindigkeit);
7

8
  ELSE
9

10
    pwm = 0:
11

12
  END


Die beiden "Tricks" sind die Maximal-Geschwindigkeit und die 
Minimal-Geschwindigkeit.
Gast #5078880
Lesenswert?

Hallo und danke für die vielen Beiträge!

Ich glaube, ich habe verstanden wie ich die Bahn bremsen kann :-)
Ab Dienstag wird programmiert.

Habt ihr bis dahin noch ein Tipp für die Positionierung?
Sind Interrupts der richtige Ansatz?
#5078916
Lesenswert?

Hi

Kevin schrieb:
> Habt ihr bis dahin noch ein Tipp für die Positionierung?

In wie fern Positionierung?
Wenn die Bahn nicht umlaufend fahren kann, sondern jeweils oben und 
unten ein Ende erreicht wird, musst Du doch auch nur wissen, wann Du 
oben bzw. unten angekommen bist.
Das sollte sich berechnen, spätestens mitzählen lassen.
In der 2 Minuten danach aufgebrannten Programm-Version wäre dann die 
maximale Fahrstrecke bekannt und man könnte auch eine Zwischen-Position 
anfahren (kA wofür ... Insassen per Bungy-Seil oberhalb der 
Teufelsschlucht raustreten?).

Wenn der µC sonst Nichts zu tun hat, dann Der auch pennen und sich 'alle 
Nase lang' durch einen Sensor aufwecken lassen, die gefahrene Strecke 
mitzählen, schauen, ob was gemacht werden muß (PWM umstellen) und wieder 
ins Bett.
Das geht sehr gut per Interrupt, beim Arduino bin ich aber der Falsche 
und bei meinen ATtinys wohl auch nur als Noob unterwegs ;)

MfG

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren