Arduino Mega als Schaltcomputer missbrauchen

Hallo zusammen,

erst mal meinen Glückwunsch zu diesem guten und informativen Forum.
Ich bin neu hier im Forum und brauche Infos bzw. Hilfe. Mein Name ist Heinz, bin 59 Jahre und ich bin selbstständiger Handwerker. Da es in den 90´Jahren bei uns im Gewerbegebiet immer wieder zu Einbrüchen kam, habe ich mir mittels C-Control zwei Systeme aufgebaut eines für Licht eines für Rollladen. An dem C-Control waren ein Erhaltungslader mit Batterie, ein DCF77 Modul und eine Relaisplatine mit 16 Relais für die 8 Rollladen (2 Relais pro Rolllade für rauf und runter) angeschlossen.
Um eine echte Anwesenheit für den Büro- und Werkstattteil vorzutäuschen habe ich für jede Rolllade und für jeden Tag andere Schaltzeiten programmiert (war sehr viel Tipparbeit). Zusätzlich habe ich 4 Programme gehabt für jede Jahreszeit eines, da der Speicher vom C-Control nicht besonders groß ist musste ich das aufteilen.
Diese ganze Einheit lief bis heute ununterbrochen (13,5 Jahre) vom 1.11.1999 bis auf eine Pause von 2 Stunden (wegen Renovierungsarbeiten bis zum 05.06.2013 und ist jetzt defekt, starke Leistung für einen Controller der mal 50 D-Mark gekostet hat.
Gefallen hat mir die sehr zu verlässliche Sache und das mir das Teil enorme Laufwege über die Jahre erspart hat um die Rollläden von Hand zu bedienen.
Jetzt bin ich auf der Suche nach einem Ersatz und da kam der Arduino Mega ins Spiel der von Haus aus die nötigen Ports mitbringt und für den es jede Menge Zubehör im Netz zu bekommen ist, scheint er ideal. Leider vermisse ich Infos über die Ansteuerung mit DCF77 viel Infos gibt es aber über den Uhrenbaustein DS 1307 der aber scheinbar nicht sehr genau arbeitet. Da ich damals die Sache in Basic programmiert habe und ich von C keine Ahnung habe kommen zusätzliche Probleme auf mich zu, die ich aber lösen würde.
Jetzt meine Frage ist der Arduino Mega überhaupt der richtige Baustein für so ein Vorhaben, das würde bedeuten wenn ich das umsetzen könnte, Sekundengenaue Schaltzeiten und für die 8 Rollladen sind das 16 Schaltzeiten am Tag und an jedem neuen Tag wieder andere Schaltzeiten.
Für Infos von eurer Seite wäre ich sehr dankbar.

Gruß heinz

Hallo Heinz,

willkommen im Forum!
Ich bin auch noch im Anfängerstadium und sauge also mehr Informationen auf als dass ich konkrete Hilfe geben könnte.
ABER: der Mega wird das locker stemmen.

Zur DCF77 Geschichte bin ich selbst noch nicht vorgestoßen, aber das funktioniert bestens wie man hier lesen kann. Gibt verschiedene Bausteine, such einfach mal im Forum nach dem Stichwort.

Warum für die Rolladensteuerung sekundengenaue Schaltzeiten nötig sind erschließt sich mir nicht, ist aber auch kein Problem.
Die Anwesenheits-Simulation durch variierende Schaltzeiten kann man auch ohne elende Tipparbeit erledigen, letztlich wirst Du ja nicht mal morgens um 7 hochfahren und mal um 11 (oder doch?). Aber auch das ist natürlich möglich. Reicht der interne Speicher nicht aus gibt's halt ne SD-Karte Huckepack (meine Variante).

Vor C brauchst Du keine Angst zu haben. Einstieg über die mitgelieferten Sketches, haufenweise Tutorials und freundliche Profis hier die helfen - da bleibt niemand auf der Strecke.

Hilft Dir das jetzt? Als Schubs zum Weitermachen hoffentlich.

Grüße

Klaus

Hallo Heinz,
Du könntest auch einen UNO verwenden und die Ausgangsports mit einem 74HC595 erweitern.
Um die Tipparbeit etwas einzuschränken (und auch Speicherplatz zu sparen) könntest Du für jeden Tag ein Zeitfenster festlegen und die Ansteuerung per Zufallsgenerator verzögern.

Grüße,
Jürgen

Ja, natürlich. Was Du mit C-Control vor über 13 Jahren konntest, das kannst Du mit Arduino heute schon lange.

Die Programmierung ist natürlich ein wenig anders, auch wenn es mit Arduino jetzt auch wieder C/C++ ist.

Für DCF77 gibt es durchaus Ansteuermöglichkeiten, aber weil das DCF77-Signal eine deutsche Besonderheit ist, wird es von internationalen Arduino-Entwicklern nicht besonders beachtet. Die Schweizer haben ihr Zeitsignal schon vor Jahren abgeschaltet, die Engländer ihres in der Sendeleistung reduziert, und die Störungen auf Langwelle werden mit zunehmender Funkverseuchung (WLAN, Bluetooth, Funk beim Öffnen von Garagentoren, Wettersensoren in den Gärten, Funkfernbediente Türschließanlagen bei Kfz etc.) immer größer, so dass es immer schwieriger wird, die DCF-Signale störungsfrei auszuwerten.

Ersatz für genaue Zeitsignale sind, falls man DCF77 nicht möchte:
a) GPS-Module für Arduino: GPS gibt nicht nur den Ort, sondern auch die Zeit sehr exakt aus.
Sehr einfach abzufragen (serielle Schnittstelle), sehr genau. Nachteil: Sichtverbindung zum Himmel wäre vorteilhaft, in Räumen am besten auf einem Fensterbrett Richtung Süden. Auch ist ein GPS-Modul teuerer als ein DCF77-Modul.
b) NTP-Zeitabfrage über Internet: Im Internet gibt es diverse frei nutzbare Zeitserver, in Deutschland z.B. von der PTB betrieben. Weltweit einheitlicher Standard. Beispiel-Sketch gehört zur Arduino-Software. Sehr genau. Nachteil: Man benötigt ein Ethernet-Shield zum Aufstecken auf den Arduino und Anschluß ans Internet.
c) Echtzeit-Uhrenmodule: Gibt es in unterschiedlicher Genauigkeit und Preislage. Man muss ja nicht die einfachste DS1307 nehmen, die pro Monat um mehrere Minuten falschgehen kann.

Um Motoren anzutreiben, benötigt man natürlich entweder Motorentreiber (wenn man auch die Drehzahl regeln möchte) oder Relais (nur schalten).

Hallo Klaus,

das Input über den Arduino im Netz ist gewaltig, da ist deine Bemerkung - ich sauge also mehr Information ...... - sehr zutreffend.
Mein Vorgehensweise ist, erst wenn ich das mit der Uhrzeit geregelt bekomme werde ich weiter machen. Relais anzuschliessen und anzusteuern ist so denke ich ist die leichteste Übung. Du schreibst eine Anwesenheits-Simulation kann man auch ohne elende Tipparbeit erledigen, hast du dafür einen konkreten Vorschlag? Die morgentlichen Hochfahrzeiten liegen sehr dicht beieinander so zwischen 6:15 Uhr - 9:00 Uhr, am Abend liegen sie aber so zwischen 16:00 Uhr und 22:00 Uhr. Per Zufall möchte ich so etwas nicht schalten lassen, da einige Rollladen bevorzugt als erstes hochfahren bzw. runter fahren. Sekundengenaue Schaltzeiten ist etwas übertrieben, ich war es halt vom DCF77 Modul gewöhnt, da ich ja
auch noch ein zweites C-Control im Einsatz habe, dass für die Lichtsteuerung über Funkmodule zuständig war und diese Schaltzeiten mit denen der Rollladensteuerung im Einklang waren bzw. aufeinander abgestimmt sind, deshalb sollte es schon eine sehr genaue Uhrzeit geben, mit der man auch nicht mit Sommer/Winter Umstellungen vornehmen muss, eben halt alles automatisch.
Als Schubs hilft mir das, wenn auch da noch einiges vor mir liegt.
Übrigens zum Thema DCF77 und RTC, habe ich bei ELV einen neuen Baustein gefunden der auf einer Platine alles vereint liest sich interessant.
Gruß Heinz

Hallo Jürgen,
an den Uno hatte ich auch schon gedacht, aber da der Mega nur unwesentlich teurer ist kann ich mir den zusätzlich Aufwand mit der Porterweiterung 74HC595 sparen. Das einsparen der Tipparbeit wäre natürlich ein großer Vorteil, aber die Ansteuerung über einen Zufallsgenerator ist nicht sinnvoll so denke ich, da ja dann die Rollladen unkontrolliert fahren und ich habe doch schon ein gewisses System in meinen Zeiten auch wenn die unterschiedlich sind. Zum Beispiel fährt das Büro Chef immer als erstes, Werkstatt als zweites usw.
Beim Zufall sind ja nicht nur die Zeiten zufällig sondern auch die Auswahl der Rollladen, oder sehe ich das falsch?
Gruß Heinz

Das hängt ja davon ab, was als Zufall programmiert wird.

Wenn jetzt zum Beispiel der Zufall das "Büro Chef" als erste Verfahrzeit festlegt, und dann die anderen mit festen (oder ebenfalls zufälligen) Abständen folgen sollen, läßt sich auch das natürlich programmieren.

Hallo Jurs,
danke für deine Infos in Sachen Zeit. Ich habe seit Jahren ein gutes DCF77 Signal, deshalb lag es nahe auch dies weiter zu verwenden, zumal ich die Bausteine schon habe (DCF77 von Conrad). Ein Zeitabgleich übers Internet ist auch interessant zumal bei mir eine Internetverbindung bis auf wenige Ausnahmen ein Dauerzustand ist allerdings so gab meine Recherche das ich wie du ja auch schreibst eine Netzwerkarte haben muss. Die Sache mit GPS hört sich auch gut an, ist aber im Verhältnis zum Internet teuer, wenn sich dies leichter Abfragen lassen würde wäre es mir egal.
DS1307 muss man selber einstellen und läuft die Uhr, du schreibst es gibt sie in unterschiedlicher Genauigkeit und Preislage, woher weiß ich denn das wenn ich mir so ein Teil bestelle dies auch genau geht, oder hast du eventuell eine Tipp für einen genau gehenden Baustein?
Motoren brauche ich nicht antreiben, wir haben damals sinnvoller Weise die Leitungen aller Rollladenschalter an einen zentralen Punkt verlegen lassen, von da aus werden sie halt über die Relais angesprochen.
Also das Zufallsprinzip stirbt bei mir im Moment, auch wenn es weniger Arbeit ist als die Zeiten ein zu tippen. Da ich parallel auch eine Lichtsteuerung betreibe die dann der Arduino auch noch übernehmen soll ist es sinnvoller die jeweilige hoch oder runter Fahrzeit auf die Zeiten der Einschaltzeiten vom Licht abzustimmen.
Ich werde mich erst daran begeben mir etwas Hardware zu besorgen und am Wochenende in mich gehen um C zu erlernen.
Meine alten Relaiskarten (8 Relais pro Karte) wird auch wie der Arduino über 5 Volt angesteuert, die kann ich schon mal weiter verwenden.
Gruß Heinz

Ist doch dann noch einfacher: nimm einen Lichtsensor mit in's Programm, dann kannst Du Uhrzeit und Licht abstimmen.

Ich schrieb, dass die DS1307 die billigste und ungenaueste Uhr mit Gangabweichungen von mehreren Minuten pro Monat ist und dass es genauere Uhrenbausteine gibt.

Suche mal bei eBay Artikelnummer 251208194968

Da wird ein Uhrenmodul mit DS3231 angeboten.
Fertig aufgelötet auf eine kleine Anschlußplatine mit Pufferbatterie komplett anschlußfertig für Arduino.

Datenblatt: http://datasheets.maximintegrated.com/en/ds/DS3231.pdf
Angegebene Genauigkeit:
Accuracy ±2ppm from 0°C to +40°C
Falls Du also den Betriebstemperaturbereich von 0 bis 40 Grad sicherstellen kannst, sollte dieses temperaturkompensierte Uhrenmodul pro Jahr (wenn ich richtig gerechnet habe) nur maximal 64 Sekunden in einem Jahr falsch gehen.

Wenn Du keine automatische Sommerzeit-/Winterzeitumstellung programmierst, sondern die Uhr zweimal im Jahr bei der Zeitumstellung umstellst, geht sie niemals mehr als eine halbe Minute falsch.

Und wenn Du Dich nicht durch die einzelnen Register und Bits der Uhr mit dem Datenblatt durchkämpfen willst, dann benötigst Du nur noch eine passende Arduino-Library dafür. Einmal gegoogelt, gibt es:

Also steht einer Einbindung dieses Präzisions-Uhrenmoduls auf dem Arduino auch mit geringen Programmierkenntnissen nichts gravierendes im Wege.

Aber Du kannst natürlich auch Dein Conrad DCF77-Modul an einem Arduino laufen lassen.
Bei gutem Empfangssignal hast Du dann immer die genaue Zeit ohne nachzustellen, sogar mit Sommer-/Winterzeitumstellung. Nur eben nach einem Stromausfall hast Du dann erstmal einige Minuten keine Zeit, wenn der Strom wiederkommt, bis das Zeitsignal sich wieder mit dem DCF77 Zeitsignal synchronisiert hat.

Hallo Heinz,

Falls du dieses DCF77-Modul hast: http://www.conrad.de/ce/de/product/641138/
Das betriebe ich seit längerem am Arduino mit dieser Library: https://github.com/thijse/Arduino-Libraries/tree/master/DCF77
Funktioniert einwandfrei. Wenn du dich in die Arduino-Programmierung eingearbeitet hast, sollte das auch kein Problem darstellen.
Ich hatte es "damals" gleich in meinem zweiten Projekt eingebaut.

ulli.

Hallo Jurs,
danke für den Tipp. Bei der Genauigkeit vom DS3231 könnte man sich das mit dem DCF77 Modul überlegen. Ich werde aber beides testen. So bekomme ich auch mehr Einblick in die ganze Sache. Das zweimalige umstellen ist kein Problem, da ein Rechner direkt dem Arduino steht, wenn er denn am Samstag kommt. In Sachen Stromverlust wollt ich das ganze eigentlich wie beim C-Control Batterie gepuffert betreiben, dann hätte man keine Ausfälle. Bei ELV gibt es einen Kombibaustein DCF77 mit RTC, die Daten sind auch sehr interessant, könnte sich auch eignen.
Link: http://www.elv.de/output/controller.aspx?cid=74&detail=10&detail2=42201
Gruß Heinz

Hallo Jubi40,
ja genau den habe ich zweimal und funktioniert seit Jahren super. Wenn ich das zum laufen bekomme melde ich noch einmal habe bestimmt noch eine paar Fragen. Samstag soll mein Mega kommen. Ich sehe schon, dass man beim Arduino Libarys für die jeweilige Hardware einbauen muss um sie anzusprechen. Ist eine andere Vorgehensweise wie ich es vom C-Control her keine.
Gruß Heinz

[quote author=heinz g link=topic=171865.msg1278367#msg1278367 date=1371228003]
Ich sehe schon, dass man beim Arduino Libarys für die jeweilige Hardware einbauen muss um sie anzusprechen. Ist eine andere Vorgehensweise wie ich es vom C-Control her keine.[/quote]

Man muss keine Librarys verwenden, aber man kann, damit man nicht jedes Mal das Rad neu erfinden muss. :slight_smile:

[quote author=heinz g link=topic=171865.msg1278367#msg1278367 date=1371228003]
Ich sehe schon, dass man beim Arduino Libarys für die jeweilige Hardware einbauen muss um sie anzusprechen. Ist eine andere Vorgehensweise wie ich es vom C-Control her keine.[/quote]

Beim C-Control Basic war halt alles defaultmässig drin, nur hier "includest" nur das was du wirklich braucht - und es gibt im arduino playground eine Lib für fast alles.
Die DCF77 Lib zu benutzen ist wirklich simpel, und läuft perfekt wenn DCF Empfang gut ist.

Da du mit DCF77 Modul beim C-Control diesbezüglich keine Probleme gehabt hast, sollte es keine Probleme geben.

Hallo zusammen,
Samstag ist ein Teil meiner bestellten Hardware gekommen. Den Arduino Mega habe ich natürlich gleich mit dem DCF77 Modul verbunden, hatte mir aus dem Netz einige Beispiel-Programme geladen ausprobiert. Das synchronisieren dauert etwas länger als beim C-Control aber klappte auf Anhieb und ich habe auch das Gefühl das sich der Arduino (die Uhrzeit) öfters synchronisiert wie das das C-Control tat. Leider habe ich aber nachdem ich wahrscheinlich auf die primitivste Art im Programm ein Relais angesprochen und Schaltzeiten programmiert hatte festgestellt. Immer wenn sich das Modul neu synchronisiert kommt es zu falschen Uhrzeiten, sprich die Uhr geht etwas nach bis zu 2 Minuten um dann wenn der Vorgang abgeschlossen ist wieder genau zu gehen. Kommt es in dieser Zeit allerdings zu Schaltvorgängen werden die zum Teil gar nicht oder später ausgeführt. Das geht überhaupt nicht. Beim C-Control läuft die Uhrzeit genau weiter und die Schaltvorgänge werden auch während eines Synch-Vorgangs ausgeführt. Hat jemand irgendeine Idee wie man das abstellen kann ? Ich denke mir eventuell das man die Zeiten das DCF77 Moduls in eine Software Uhr einspeichert oder als Variable übergibt und die Zeiten aus dieser Softwareuhr benutzt um Schaltvorgänge zu starten.
Toll ist auf jeden Fall wie einfach sich der Arduino bedienen lässt und der Input im Netz ist gewaltig.
Gruß Heinz

Seltsam, ich verwende die Lib's DCF77.h und Time.h und kann diesen Fehler nicht nachvollziehen.

Hast du das Problem auch wenn keine Relais angeschlossen sind ?
Je nach Design der Relaistreiberschaltung macht der Arduino seltsame Dinge.

Es gibt fertige Relaisplatinen mit Optokopplern die mit dem Arduino gut funktionieren,
einige hier verwenden auch SS Relais weil die offensichtlich Ärger mit den mechanischen Relais hatten.

Interessant wäre die Frage, wie die Uhrzeit kontrolliert wird (Display?) und wie die Steuerung der Relais hinterlegt ist, "delay()" könnte da z.B. eigenwillige Effekte haben, da es ja den Arduino in der Abarbeitung seiner Routinen unterbricht.
Aber die DCF-Library nutzt Interrupt, da sollte nichts zwischenfunken.

jurs:
Suche mal bei eBay Artikelnummer 251208194968

Ich finde da ein Modul für 5 Euro. Kostenloser Versand aus China :astonished: Verkäufer hat super Bewertungen aber die verdienen doch daran nichts mehr.

Serenifly:

jurs:
Suche mal bei eBay Artikelnummer 251208194968

Ich finde da ein Modul für 5 Euro. Kostenloser Versand aus China :astonished: Verkäufer hat super Bewertungen aber die verdienen doch daran nichts mehr.

Das glaubst Du aber nur. Schon mal gesehen was ein durchschnittlicher Arbeiter da verdient?

Micky