PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wochenschaltuhr mit µC ???



HPM
19.03.2007, 19:45
Hallo Forumler,

Ich bin gerade dabei eine Aquariumsteuerung mittels Mikrocontroller zu bauen. Das Projekt hat schon beachtliche Ausmaße angenommen (für meine Begriffe!)

Unter Anderen habe ich eine Temp.-steuerung mit einem LM75 realisiert, eine Funkuhr integriert und Eingaben über eine handelsüblich Infrarot- Ferbedienung aufgesetzt um die Tastatur wegzulassen (um Pins - Eigänge zu sparen)

Jetzt wollte ich die Funkuhr gleichzeitig noch abfragen um eine Wochenschaltuhr mit mehreren Kanälen (für Licht, Luft, u.s.w) zu programmieren.

Frage an die Spezialisten!
Es gibt für die AVR-Controller ja einen Haufen vorgefertigter Befehle!
Gibt es für den Fall evtl auch was? Habe bis jetzt noch nix gefunden!

Ratber
20.03.2007, 00:59
Yo,noch ne Aquariensteuerung.

Du solltest noch erzählen welche Uhr du da nutzt,hellsehen können wir leider nicht (Kristallkugel is inner Wäschen) :D

HPM
20.03.2007, 05:53
Hallo Ratber,

Ich vermute mal, Du magst keine Aquarien wobei das Hobby sehr entspannend ist und Agressionen abbaut!

Sollte ich mich zu allgemein ausgedrückt habe, hier etwas genauere Auskünfte zur Funkuhr:
Ich habe die LIB von albundy =D> und Codeschnipsel hier aus dem Forum genutzt.
Aufbau:
Programm-> DCF.lib in Prog einlesen -> Funkuhrmodul Ausgang -> Eingang µC -> Variablen setzen -> Variablen auslesen und auf Display anzeigen. O:)

Hier noch mal ein Stück Code der Funkuhr:



'-------------------------------------------------------------------------------
' DCF-Funkuhr Grundeinstellung
'-------------------------------------------------------------------------------
$lib "dcf77.lib" ' einrichten für M8
$external Dcf77 ' und Eingangssignal!
Declare Sub Dcf77
Config Timer2 = Timer , Prescale = 1024 'Timer für 40Hz (25ms)
Const Startwert = 158 'bei 4Mhz
'Const Startwert = 61 'bei 8MHz
Timer2 = Startwert
On Timer2 Tim2_isr 'Überlauf alle 25ms
Enable Interrupts
Enable Timer2

' Variablen für DCF Routine
Dim Status As Byte , Zaehler As Byte , Buffer As Byte , Impuls As Byte
Dim H_sek As Byte , Sekunde As Byte , T_min As Byte , T_std As Byte
Dim Minute As Byte , Stunde As Byte , Wotag As Byte , Tag As Byte
Dim Monat As Byte , Jahr As Byte , Pari As Byte , Pau As Byte , Imp As Byte

' Eingangssignal DCF-Empfänger
Config Pinb.0 = Input ' DCF 77 Eingang
Set Portb.0 ' Pullup einschalten
' ^^^^^^^^ Muss in der "Dcf77.lib" angepasst werden !


Locate 1 , 4 ' Zeit 1.Zeile, 4.Stelle
If Stunde < 10 Then Lcd "0" ; Stunde ; ":" Else Lcd Stunde ; ":"
If Minute < 10 Then Lcd "0" ; Minute ; ":" Else Lcd Minute ; ":"
If Sekunde < 10 Then Lcd "0" ; Sekunde Else Lcd Sekunde

'---------------------------------------------------------------------------------

Locate 1 , 12 ' Das Wort "Uhr" 1.Zeile 12. Stelle
Lcd " Uhr "
Locate 1 , 1
Lcd Lookupstr(wotag , Wochentag) 'akt.Wochentag von Data geholt!


Ich wollte halt die Schaltuhr nicht mit

If Wochentag erreicht Then kucke auf Stunde
If Stunde erreich, Then kucke auf Minute
If Minute ereicht u.s.w.)

Bedingungen aufbauen sondern dachte, es gibt was eleganteres, was sich evtl anpassen lässt.



Und... Kistalkugel ??? ... Ich kann maximal mit einem Stück Ferritkern der Funkantenne dienen und wenn man das richtig sehr drückt wird da sogar ein Diamant draus!!! :D

Ratber
20.03.2007, 12:37
Ich vermute mal, Du magst keine Aquarien wobei das Hobby sehr entspannend ist und Agressionen abbaut!

Habe ich nicht gesagt und nebenbei steht einige Meter neben mir ein 120L Becken und rund einem Dutzend Fischen.(Lebend !!) ;)

Ich wollte nur ausdrücken das Aquarien- und Heizungssteuerungen zu den beliebtesten Controllerbasteleien gehören (Ich bastel gerade selbst mal eben ne kleine Heizungssteuerung für nen Bekannten weils Original defekt ist) und das man sich also mit Informationen nicht zurückhalten braucht.

Erklärung:
Ziemlich oft kommen gerade Leute mit diesen Projekttypen (Heizung,Aquarium,Wecker,Licht,usw.) hier her und machen ein riesen Geheimnis drumm weil sie offensichtlich meinen sie hätten was einmaliges erfunden was es unbedingt zu schützen gilt.
Dabei ist es nur die x'te Version des Rades.
Es ist eben nur nervig den Leuten immer erst langatmig die Würmer (Informationen) aus der Nase zu ziehen bevor man weiß wo das tatsächliche Problem liegt.
Das hat was von Schrödingers Katze :D

Ok,weiter im Text !






Des weiteren hätte ich die Frage nicht ins Forum gestellt wenn ich in den Beiträgen hier oder in anderen Foren schon eine Antwort gefunden hätte, nicht um irgend jemanden zu nerven.

Du interpretierst zuviel.
Hier ist nicht das MC.net ;)



Kommen wir zum Thema.



ch habe die LIB von albundy.................

Ja,siehste,information ist alles.
Ich bin aufgrund deine Beschreibung von einer "Hardwareuhr" ausgegangen.

Also ne Softclock.
Welche ist im Grunde egal.




Ich wollte halt die Schaltuhr nicht mit

If Wochentag erreicht Then kucke auf Stunde
If Stunde erreich, Then kucke auf Minute
If Minute ereicht u.s.w.)

Bedingungen aufbauen sondern dachte, es gibt was eleganteres, was sich evtl anpassen lässt.


Du meinst so etwas wie einfache ,na nennen wir sie mal "Zeitrechenbefehle" ?

Nein,da ist nichts spezielles ausser den Befehlen die Bascom für die Systemuhr mitbringt (Suche in der Hilfe unter "Date and Time Routines" bzw. Time$,Date$)

Die Arbeit des ständigen Vergleichens bleibt weiterhin bestehen denn es ist eine Softwareuhr.

Oder gibt es denn bei dir ein spezielles Problem das du danach fragst ?
Flash wird eng oder irgendwas anderes ?

HPM
20.03.2007, 16:48
Hallo Ratber,

ich habe vermutlich mit meinem Thread etwas überreagiert. Entschuldigung!

Ziemlich oft kommen gerade Leute mit diesen Projekttypen (Heizung,Aquarium,Wecker,Licht,usw.) hier her und machen ein riesen Geheimnis drumm weil sie offensichtlich meinen sie hätten was einmaliges erfunden was es unbedingt zu schützen gilt.

Darauf kommt es mir nicht an, somal der größte Teil des Projektes ja auch nicht von mir direkt stammt sondern eine Sammlung von Informationen aus den verschiedenen Foren bzw. Homepages ist, die ich miteinander kombiniert habe. Wenn ich das Projekt fertig habe stelle ich es gern mal vor! (vorrausgesetzt, es wird fertig!)


Oder gibt es denn bei dir ein spezielles Problem das du danach fragst ?
Flash wird eng oder irgendwas anderes ?

Nein, ein Problem habe ich bis jetzt noch nicht. Ich habe nur nach Alternativen gesucht, die evtl. eleganter sind.

Die Platinen sind auch soweit im PC fertig. Ich will nur erst das Programm fertig machen und testen, bevor ich mich an die Elektronikarbeit mache.
Nebenbei werde ich in der Beziehung sicherlich keine Hilfe brauchen, da ich mich mit Elektronik schon viele Jahre beschäftige!

Trotzdem Danke für Deine Infos. Somit bleib mir wohl nicht anderes übrig als die Schaltuhr auf "altdeutsche Art" zu programmieren! O:)

Ratber
20.03.2007, 18:45
Trotzdem Danke für Deine Infos. Somit bleib mir wohl nicht anderes übrig als die Schaltuhr auf "altdeutsche Art" zu programmieren!

Ja,viel ist es im Grunde nicht.

Viele,dazu zähle ich mich natürlich auch,zeichnen sich einfach eine einfache Flussteuerung die dann solange verfeinert wird bis die einzelnen Punkte lösnbar sind.

Du mußt ja eh die Uhrzeit 1x die Sekunde behandeln um die Anzeige zu aktualisieren.
Da kannst du ja auch fix deine Vergleichsroutine für die Schaltzeiten mit reinpacken.

Die Schaltzeiten ins Eeprom einlagern und kurz eine einfache Tokensteuerung mit einbinden.
zb. E=Ein/A=Aus/T=Toggle/P=Puls,Kanalnummer, Datum/Zeit,Einmalig/Täglich,Wöchentlich usw.

Falls das Interne EEProm nicht reicht,einfach nen Externes anhängen.

Aber was red ich,auf das oder ähnliches biste sicher selber schon drauf gekommen.

Wie gesagt,schau mal in der Bascom Hilfe unter "Date and Time Routines"
Vieleicht ist da noch etwas Anregung für dich drinn.

raggy
20.03.2007, 20:53
Hallo
Ich bin sowas für Orchideen am bauen.Bin aber einen anderen weg gegangen,Im master atmega16 habe ich nur DCf und eine Rotine die jeder Minute einen string mit der Uhrzeit über dem Uart auf dem zweiten
atmega16 sendet .Dort stell ich den string in Stunden Minuten um,zu je einem byte.dann werte ich die Zeiten usw aus.das ganze habe ich mit
8 relais und einer funkfernbedienung von Intertechno /Düwi.sohabe ich auch keinen aerger mit 230V,

HPM
21.03.2007, 11:13
Hallo Raggy,
vielen Dank für Deine Info. Ich bin seit gestern schon am werkeln.
Da meine Platinen für den Bau schon fast fertig sind, werde ich mit einem µC arbeiten (wenn der Speicher reicht?)

Ich habe 5 SolidState Relais über Optokoppler auf einer zweiten Platine mit getrennter Stromversorgung sitzen. Somit habe ich dann auch keine Probleme mit den 230V.

Ich muss mir aber erst mal ein 4*20 Display kaufen, da mein 2*16 für Menüs total unübersichtlich ist!

Ist Dein Projekt schon am Laufen ???

raggy
21.03.2007, 19:35
Hallo HPM
Mein Programm ist in der Rohfassung am laufen,aber mit der übergabe bin ich noch am probieren.der Slave soll dann interrupt gesteuert den UART
abfragen.Zur Zeit mach ich das mit dem Input befehl.ich will auch die ganze Steuerung über den RS485 laufen lassen.das funktioniert auch.Da ich unten wohne soll auch im Urlaub die Lichtsteuerung darüber Laufen.mit dem RS485 ist die Sache dann dann immer noch ausbaufähig.
Da ich aber Anfänger in sachen Atmel bin dauert es wohl noch etwas.
gruß raggy