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.
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
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
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.
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.
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.
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.
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.