Forum: Mikrocontroller und Digitale Elektronik Source RolladenSteuerung in C


von sn00py (Gast)


Lesenswert?

Hallo

Suche gerade einen Sourcecode für eine Rolladensteuerung in C ... aber 
irgendwie finde ich nichts, was mich doch sehr wundert das muss doch 
schon öfters mal gemacht worden sein oder?

(Wollte nur das Rad nicht erneut erfinden/programmieren)

Ablauf:
Taste entprellen (per Software), danach sofort das Relais in die 
richtige richtung laufen lassen.
Wird der Taster nur xx ms gedrückt, dann wird bis an die Endposition 
gelaufen (fixer wert)
Wird der Taster länger gedrückt, dann wird solange gefahren bis der 
Taster ausgelassen wird.
Wenn der Motor zu der Endposition fährt und der Taster wird erneut 
gedrückt dann Stopp des Motors.

von Maxim B. (max182)


Lesenswert?

Hallo,
sehr gute Routine für Tasten gibt es hier:
Beitrag "Universelle Tastenabfrage mit 2 Tastenerkennung"

Ich habe sie ausprobiert und sehr zufrieden damit. Sie hat alles: 
Tastendruck, Tasten halten, kurz und lang.
Statt einfach die Tasten von Port zu lesen, kann man auch kompliziertere 
Tastenschaltungen verwenden (z.B. Pins gleichzeitig für Tasten und 
Anzeige benutzen, oder Matrix von Tasten befragen), dafür braucht man 
nur eine Funktion zusätzlich schreiben.
Als Tasten kann man sicher auch Endposition-Schalter von Motor bedienen.

Dann bleibt nur kleine logische Bearbeitung übrig.

Gruß, Max.

: Bearbeitet durch User
von Klaus (Gast)


Lesenswert?

sn00py schrieb:
> Wollte nur das Rad nicht erneut erfinden

Du willst ja gar nichts erfinden, jemand soll dir ein Rad für lau 
dengeln. Wird schon klappen, wie heißt die alte Händlerweisheit "Jeden 
Tag steht irgendwo ein Dummer auf"

MfG Klaus

von Andi S. (sn0000py)


Lesenswert?

Danke für den Link zu der Tastenerkennung, die kannte ich noch nicht.

Und ja Klaus hast natürlich recht, ich will nichts erfinden, den solche 
Steuerungen gibt es ja schon seit Jahrzehnte .... daher war das sicher 
falsch formuliert ... danke für den Hinweis.

von Volle22 (Gast)


Lesenswert?

sn00py schrieb:
> Wenn der Motor zu der Endposition fährt und der Taster wird erneut
> gedrückt dann Stopp des Motors.

wie erkennt deine Steuerung das der Motor an der Endposition ist.

und üblicherweise ist
kurz drücken = verstellen
lang drücken = bis zu Endposition fahren

Deswegen hat niemand "deine" Steuerung und du musst sie selbst machen.

von A. S. (Gast)


Lesenswert?

Der "allgemeine" Anteil sind keine 50 Zeilen und der eigentlich kreative 
(interessante) Teil.

ein Timertick (Interruptroutine) von 1ms oder 10ms, in der auch 1 oder 2 
Taster entprellt werden. Zustände:
- AUS
- GEHALTEN (Motor an bis AUS)
- TRIGGER (Starte / Beende Motor läuft)

und ein Main, dass etwa 2 Zustände + eine Richtung kennt:
bei 2 Tasten:
- IDLE (inclusive direkter Ansteuerung hoch / runter)
- Rollade fährt auf Zeit (bzw. auf Endschalter)

Dem stehen >>50 Zeilen plattform- und prozessorspezifische Dinge 
gegenüber:

- Wie mache ich den TimerTick-Interrupt
- Wie steuere ich den Motor rauf / runter
- Endschalter einlesen, Zeiten parametrieren,
- Initialisierung des µC, Watchdog, IO-Ports,

Zudem müsste ein allgmeiner Code verschiedene Variationen 
berücksichtigen, sonst passt er nicht auf Deine Wünsche (1- oder 2 
Taster, Zeit oder Endschalter, Parametrierung, ...). Den Code kann ein 
Anfänger erst lesen / verstehen, wenn er es einmal einfach selber 
gemacht hat.

von Johannes S. (Gast)


Lesenswert?

Auf github findet man mit den Stichworten 'Rolladen' oder 'blinds 
control' schon einige Projekte, aber in der Zeit in der man etwas 
passends gefiltert hat bekommt das schon selber geschrieben. Jedenfalls 
wenn man für den Hardwareteil Arduino oder mbed benutzt.

von Andi S. (sn0000py)


Lesenswert?

Ist nun halt mal so wenn man ein paar Beispiele und co bekommt dann 
kommt man halt schneller zum Ziel, und deswegen war das auch meine 
Frage.

Das ich keine 100% Lösung und auch nicht mal ein 40% Lösung bekomme war 
mir klar, den ich brauche da ja so und so noch einen CAN Kommunikations 
Teil usw.

Nur das Verhalten kurzer / langer Tasten druck und das fahren in eine 
Position hätte ja möglich schon wer anders gelöst haben können ... aber 
ich werde es eh selber machen.

Endschalter gibt es keine, glaub man fährt einfach so 1-2 sekunden 
länger wie benötigt wird, der Motor hat seinen internen Endschalter und 
stoppt automatisch.

Was ich noch überlege ist das eigentlich beim rauf fahren ja länger 
benötigt wird wie beim hinunterfahren ... sollte man auch 
berücksichtigen?

von Johannes S. (Gast)


Lesenswert?

Andi S. schrieb:
> Was ich noch überlege ist das eigentlich beim rauf fahren ja länger
> benötigt wird wie beim hinunterfahren ... sollte man auch
> berücksichtigen?

Nimm eine Stoppuhr und messe die Zeiten. Wenn dir die Differenz zu gross 
ist mit einer Zeit zu arbeiten siehst du halt zwei Parameter statt einem 
vor.

Die Steuerung ist ein typischer Anwendungsfall einer state machine, wenn 
du hier im Forum danach suchst findest du - tada - eine Rollosteuerung 
(im Prinzip): https://www.mikrocontroller.net/articles/Statemachine

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.