Forum: Mikrocontroller und Digitale Elektronik Source RolladenSteuerung in C


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von sn00py (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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. (achs)


Bewertung
0 lesenswert
nicht 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. (jojos)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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. (jojos)


Bewertung
0 lesenswert
nicht 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

: Bearbeitet durch User

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.