Forum: Mikrocontroller und Digitale Elektronik Boilersteuerung attiny 2313 Bascom


von Micha (Gast)


Lesenswert?

Hallo, alle!
ich möchte aus Stromspargründen meinen Boiler zu einer festgelegten Zeit 
automatisch starten lassen.
und zwar immer um 6 uhr morgens.
Dazu soll noch eine LED immer blinken, damit ich weiss das die Schaltung 
noch läuft :)
ich habe leider in Programmierung überhaupt keine Ahnung.
kann mir einer HELFEN?
also keine fertige Lösung.
Würde mich über jede Hilfe freuen!
Danke schön!
MfG michael

von Marko (Gast)


Lesenswert?

zunächst mal brauchste ne Uhr,
also am Einfachsten nen Uhrenquarz.
Wenn ichs aber recht weiß geht das
dann nicht mit dem Tiny, ne Mega8
(nur n paar cent teurer) kann den dann
direkt an nem Timer verwenden und
fertig ist die Realtimclock, also die
Uhr. Dann solltest Du die Uhr noch
stellen können, also Taster und LCD
währen sinnvoll. Dann noch n Relais dran
und fertig ist die Boilersteuerung.

von Micha (Gast)


Lesenswert?

Vielen Dank für dein Beitrag! ;)
Die Idee is schon sinnvoll.
Eine Uhr krige ich WAHRSCHEINLICH noch hin (es gibt fertige Beispiele)
aber wie soll ich ihm sagen, dass er um 6 uhr einschalten soll und um 8 
uhr ausschalten?
etwa so:
if $time = 06:00:00 then
set portB.0
if $time = 08:00:00 then
reset portB.0

ich glabue es wird so NICHT funktionieren :(

von Christian Auerswald (Gast)


Lesenswert?

Was passiert aber, wenn Du die Schaltung um 09:17:22 in Betrieb nimmst? 
Zum Ausschalten ist es zu spät (das würde ja nur um 8 passieren..). Ich 
würde in der Abfrage irgendwas reinbauen wie

wenn (zeit > einschaltzeit) und (zeit < ausschaltzeit) dann "heizen"
ansonsten "nicht heizen"

von Holger K. (krulli) Benutzerseite


Lesenswert?

Im Baumarkt gibt es Zeitschaltuhren ab 2 Eur. Low-Tech ist manchmal 
sinnvoller...

von Christian Auerswald (Gast)


Lesenswert?

Den Kommentar hatte ich versucht mir zu verkneifen ;-) Seh die Sache 
aber auch so. :-)

von Micha (Gast)


Lesenswert?

>wenn (zeit > einschaltzeit) und (zeit < ausschaltzeit) dann "heizen"
>ansonsten "nicht heizen"

Sehr gute Idee!!!!!
Iwe macht man das Code-mässig? hat gerade mal jemand Ahnung von Bascom?

von Micha (Gast)


Lesenswert?

wo ist hier der Fehler?

$regfile = "m8def.dat"
$crystal = 1000000
$baud = 19200
$hwstack = 32
$swstack = 10
$framesize = 40


Enable Interrupts

Config Pinb.7 = Output
Boiler Alias Portb.7


Date$ = "11/11/00"
Time$ = "02:00:00"


Config Date = Mdy , Separator = /
Config Clock = Soft

   Do
   If Time$ = "02:01:00" Then Set Boiler
   Wait 10
   Reset Boiler
   Loop

   Return


der compiler meckert pber diese 2 Zeilen:
Date$ = "11/11/00"
Time$ = "02:00:00"


alles ist hier entnommen:
http://avrhelp.mcselec.com/config_clock.htm?zoom_highlightsub=clock

von Christian Auerswald (Gast)


Lesenswert?

Ich hab selber keine AHnung von Bascom. Kann man da wirklich so relativ 
komplizierte Variablenkonstrukte wie Datum und Uhrzeit verwenden? Also 
wenn ichs in C machen würde würde ich für Stunde/Minute/Sekunde jeweils 
eine extra Variable nehmen. Da ist das Vergleichen dann ja eigentlich 
auch nicht mehr schwierig. Ob das sehr effizient im Resourcenverbrauch 
ist, ist eine andere Frage. Aber ich glaub so ne einfache Zeitsteuerung 
lässt genug Platz im Controller frei. Wahrscheinlich könnte man ja sogar 
noch auf die Sekunden verzichten bei diesem Beispiel.

von Holger K. (krulli) Benutzerseite


Lesenswert?

Micha wrote:
> wo ist hier der Fehler?

>
>    Return
>
Das Return ist erstmal schon zuviel...

von Holger K. (krulli) Benutzerseite


Lesenswert?

>Date$ = "11/11/00"
>Time$ = "02:00:00"
>
>Config Date = Mdy , Separator = /
>Config Clock = Soft

Die Reihenfolge der Zuweisung von Date$, Time$ und den Configs ist 
falsch
Versuche es mal so rum...

Config Date = Mdy , Separator = /
Config Clock = Soft

Date$ = "11/11/00"
Time$ = "02:00:00"

von Paul Baumann (Gast)


Lesenswert?

So geht es erst mal. Zuerst muß die Uhr mit Config Clock konfiguriert 
werden, dann kann man Datum und Zeit zuweisen. Der Atmega8 muß mit 
seinem internen Takt laufen (macht er bei Dir ja auch) und an die 
"normalen" Quarzanschlüsse kommt ein Uhrenquarz mit 32,768 kHz.

Jetzt siehst Du aber noch nicht, wie spät es ist. ;-)

$regfile = "m8def.dat"
$crystal = 1000000
$baud = 19200
$hwstack = 32
$swstack = 10
$framesize = 40


Enable Interrupts

Config Pinb.7 = Output
Boiler Alias Portb.7


Config Date = Mdy , Separator = /
Config Clock = Soft

Date$ = "11/11/00"
Time$ = "02:00:00"



   Do
   If Time$ = "02:01:00" Then Set Boiler
   Wait 10
   Reset Boiler
   Loop


MfG Paul

von Holger K. (krulli) Benutzerseite


Lesenswert?

Den Konstrukt:
>  Do
>   If Time$ = "02:01:00" Then Set Boiler
>   Wait 10
>   Reset Boiler
>   Loop

würde ich ändern in:
  Do
    If Time$ = "02:01:00" Then
      Set Boiler
      Wait 10
      Reset Boiler
    End if
  Loop

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.