Forum: Mikrocontroller und Digitale Elektronik Sonnenauf - Untergang mit Dimmer


von Richard S. (rhschneider)


Lesenswert?

Hallo Leute,
ich möchte mittels Atmega obengenannten Effekt erzielen. Es soll 
vermittelst einer Schaltuhr ein Dimmvorgang von 0-100% gestartet werden, 
dessen Zeit (ca.30-45min)ich irgendwie bestimmen möchte. Sind die 100% 
erreicht, dann soll ein zweiter Ausgang gesetzt werden und Sekunden 
danach sollte der Dimmer wieder ausgeschaltet werden. Am Abend genau 
umgekehrt: Dimmer von 0% auf 100%, Sekunden später zweiter Ausgang aus, 
danach Dimmer wieder runterdimmen auf 0% oder auf einen voreingestellten 
Wert. Klare Sache, daß es sich hier um eine Steuerung für 
Aquarien/Terrarien handelt.
Meine Frage: Wie groß ist der Programmieraufwand, bzw. hat jemand sowas 
ähnliches in der Schublade oder möchte sich gar jemand daran "austoben".
Leider hab ich in Sachen µC nicht so den Durchblick, wie es sein sollte!
Wenn also jemand helfen möchte würde ich mich sehr freuen.

Vorerst mal vielen Dank
Gruß Richard

von Timmo H. (masterfx)


Lesenswert?

Der Programmieraufwand ist nur minimal.
Du brauchst eigentlich nur den Timer starten, der z.B. jede Sekunde 
einen Interrupt auslöst. In der Interruptroutine stellst du dann immer 
den Wert für die PWM ein.
PWM und Timer sind im AVR-GCC-Tutorial gut erklärt.

von Karl H. (kbuchegg)


Lesenswert?

So schwer ist die Aufgabenstellung nicht.

Wenn du allerdings noch nie was mit Programmierung gemacht hast, stehst 
du vor einige Detailproblemen, die dich schlaflose Nächte kosten werden.

(Keine Ahnung ob es sowas fertig im Handel gibt. Wenn ja: Kauf dir so 
ein Teil. Wenn du sowas noch nie gemacht hast, kostet dich alleine das 
Lehrgeld bis du auch nur in die Nähe einer Lösung kommst, mehr als wie 
wenn du so ein Teil fertig kaufst)

von Richard S. (rhschneider)


Lesenswert?

Danke!
Das baut ja richtig auf. Leider gibt es sowas nicht zu kaufen, sonst 
hätte ich mir das schon überlegt.
Was das Programmieren angeht, ein wenig Bascom beherrsche ich schon, 
aber ich weiß, daß das nicht ausreicht. Andererseits ist es für mich 
eine Herausforderung, ich kann mich schon mit Problemen 
auseinandersetzen und mit annähernd 55 habe ich etliche Erfahrung in der 
Elektronik. Daß es diese Schaltung (ich hab mal vor Jahren sowas analog 
gebastelt) nirgendwo zu kaufen gibt, wundert mich schon. Es gibt 
bestimmt genug Aqua/Terrarianer, die sowas kaufen täten.
Also bleibt mir nichts anderes als es zu versuchen...

Vielen Dank und Grüße

Richard

von flätz (Gast)


Lesenswert?

Ich habe zwar kein Terrarium, aber ich denke, dass die dort eingesetzten 
Lampen sich nicht so leicht dimmen lassen.

von Richard S. (rhschneider)


Lesenswert?

...genau so ist das. Daher werden erstmal Glühlampen "hochgedimmt" bis 
diese 100% erreicht haben. Jetzt wird die "normale" Beleuchtung 
zugeschaltet und die Glühlampen werden ausgeschaltet. Am Abend wird 
getauscht...

Gruß Richard

von Karl H. (kbuchegg)


Lesenswert?

Richard Schneider wrote:

> Was das Programmieren angeht, ein wenig Bascom beherrsche ich schon,

Das ist doch schon mal was.
Bascom stellt dir doch eh so ziemlich alles zur Verfügung was du 
brauchst. Eine Uhr, einen PWM Ausgang, Zugang zu den Ausgängen.

Der Rest ist dann nur noch etwas verbindender Kram.

von Klaus2 (Gast)


Lesenswert?

...leuchtstoffröhren wurden schon in elektor "301 schaltungen" gedimmt.

und sone schaltung gibts unter garantie im netz, da wette ich drauf! nur 
wird man ne weile suchen müssen, was aber einfach und zielführender ist, 
asl ALLES selber zu machen - denn du müsstest ja erstmal laufen lernen, 
bevors an den kusselkopp geht :)

Klaus.

von flätz (Gast)


Lesenswert?

das klingt vernünftig. Als erstes uC-Projekt auch gut überschaubar. Viel 
Erfolg!

von flätz (Gast)


Lesenswert?

@Klaus2
hier ist sicherlich nicht von Leuchtstoffröhren die Rede.

von Richard S. (rhschneider)


Lesenswert?

@Klaus: es geht nicht um Dimmen von Leuchtstofflampen, im Terra sind 
z.B. Gasentladungslampen zu finden, da wird es mit Dimmen schon eng!
Und das Netz hab ich auch schon durchgesehen und nichts gefunden. Nicht 
daß ich das komplette Internet durchsucht hätte, aber ich war schon ne 
Zeitlang ergebnislos beschäftigt.
Und außerdem will ich es zumindest versuchen sowas auf die Beine zu 
stellen.

Gruß Richard

von Jürgen B. (hicom)


Lesenswert?

Richard Schneider wrote:
...
> Daß es diese Schaltung (ich hab mal vor Jahren sowas analog
> gebastelt) nirgendwo zu kaufen gibt, wundert mich schon. Es gibt
> bestimmt genug Aqua/Terrarianer, die sowas kaufen täten.
> Also bleibt mir nichts anderes als es zu versuchen...

z.B. http://www.heers.de/Dimmer.htm

von Klaus2 (Gast)


Lesenswert?

...das ja mal ne "Marktniesche" ;)

Sry, wusste nicht das es um GE-Lampen geht!

Klaus.

von Richard S. (rhschneider)


Lesenswert?

Danke für den Tipp. Das Light-Control GLC wäre das passende Gerät. Nun 
kostet es nicht die Welt (155€), jedoch ist wie bereits erwähnt der 
Wunsch und Wille des Selbstbauens doch ziemlich stark, was mit ca. 20€ 
bestimmt finanziert ist. Dennoch vielen dank für die Mühe und 
Unterstützung.

Gruß Richard

von Karl H. (kbuchegg)


Lesenswert?

Richard Schneider wrote:

> Wunsch und Wille des Selbstbauens doch ziemlich stark, was mit ca. 20€
> bestimmt finanziert ist.

20€ würd ich nicht unbedingt sagen.
Das wird schon alleine Gehäuse + der ganze mechanische Kram kosten. Dazu 
noch die Elektronik. Über den Daumen würd ich mal sagen so auf 80€ bis 
einen Hunni wirst in Summe schon kommen, wenn man alles rechnet.

Also: Was hast du an Hardware bereits verfügbar? Wie weit kommst du mit 
Bascom?

von Richard S. (rhschneider)


Lesenswert?

... Leider sind die Leistungswerte dieses Geräts nicht überzeugend. Ich 
hatte wie erwähnt mal eine solche Schaltung gebastelt. Diese hatte mir 
ein Zimmer mit 7 Terrarien gut versorgt, was einer Leistung von ca. 
1,5kW entsprach. Wichtig dabei ist, daß alle Terras synchron gesteuert 
werden.
Und das kann erhebliche Belastung bedeuten. Letztendlich ist dieses 
Problem im Vergleich zur Steuerung recht simpel und billig,  man 
benötigt nur eine entsprechend starke Triacsteuerung (Phasenanschnitt) 
oder mehrere parallel. Mit 300-500 Watt pro Steuerung ist leider nicht 
all zu viel anzufangen. Und wenn ich mir vorstelle 5 oder gar mehrere 
solcher Steuerungen kaufen zu müssen - nein danke. Daher schwebt mir 
eine modulare Lösung vor - eine Steuerung und getrennte Leistungsmodule.

Gruß Richard

von Richard S. (rhschneider)


Lesenswert?

@ Karl Heinz
...also die Hardware in Form von Elektronikbauteilen ist zur Genüge 
vorhanden. Alles, was ich dazu benötige ist ein Gehäuse, welches ich mir 
anfertigen lassen kann (wir haben hier wo ich arbeite eine erstklassige 
Blechnerei). Auch die Platinen stelle ich selber in Industriequalität 
her. Also das einzige Problem ist der Umgang mit Bascom, ich müsste 
wissen, wie ich den Anfang mache.

Gruß Richard

von Jürgen B. (hicom)


Lesenswert?

sowas kann man natürlich selber bauen.
Habe ich vor ca. 20 Jahren mit einem U210B mal für eine
Vogelvoliere gemacht. Lichtleistung war ca. 2kW.
Der U210 liess sich mit 0..10V ansteuern, die von einem
Zähler 4040 glaube ich, mit nachgeschalteten DA-Wandler (ZN4??)
erzeugt wurden.
Das ganze würde ich heute natürlich komplett mit einem AVR erschledigen.

Oder man nimmt einen Dimmer mit 0..10V und erzeugt nur die 
Steuerspannung
mit dem AVR.

Jürgen

von Karl H. (kbuchegg)


Lesenswert?

Richard Schneider wrote:
> @ Karl Heinz
> ...also die Hardware in Form von Elektronikbauteilen ist zur Genüge
> vorhanden. Alles, was ich dazu benötige ist ein Gehäuse, welches ich mir
> anfertigen lassen kann (wir haben hier wo ich arbeite eine erstklassige
> Blechnerei). Auch die Platinen stelle ich selber in Industriequalität
> her. Also das einzige Problem ist der Umgang mit Bascom, ich müsste
> wissen, wie ich den Anfang mache.

Ich würd so vorgehen:
Erst mal eine Testhardware zusammenstopseln (Steckbrett, etc)

Dann Softwaremässig
* Bischen mit Bascom rumspielen um zu sehen ob das System klappt
  Geht compilieren
  Geht µC programmieren
  Geht Programm debuggen
  Ganz einfach: vertraut machen mit der Entwicklungsumgebung und
  ausprobieren ob die Basissachen funktionieren.
  Viel ausprobieren. Doku überfliegen und mal einen Überblick über
  die mit Bascom mitgelieferten Komponenten kriegen. In deinem Projekt
  wirst du brauchen PWM, LCD, Taster, Uhr
  Darauf spezielles Augenmerk legen und im Web auch mal zu Tutorials
  für das eine oder andere suchen. Je besser du dich hier vorbereitest
  umso einfacher gehts dann im realen Projekt.

* PWM in Betrieb nehmen.
  An den Ausgang mal eine LED anhängen und schaun ob ich diese
  auf definierte PWM und damit Dimm-Werte setzen kann.
  Es reicht völlig, wenn der PWM Wert im Programm in einer Variablen
  sitzt und der Wert für diese Variable bei Programmieren vorgegeben
  wird.
  Wenn das soweit klappt, anstelle der LED mal einen Leistungsteil
  und eine richtige Lampe anhängen.

* PWM erst mal ad akta legen und mit dem Timer experimentieren.
  Ziel. Das System soweit bringen, dass in regelmässigen Zeitabständen
  ein Interrupt ausgelöst wird. In welchen Zeiträumen ist erst mal egal.
  Sekunden oder Minuten wär gut, muss aber nicht sein

* Dann beides kombinieren
  Aus der kompletten Dimmzeitvorgabe und der bekannten Interruptzeit
  ausrechnen, wie sich der PWM Wert in einem Interrupt verändern muss
  Das dann mal implementieren (Oben genannte Variable für den PWM-Wert
  entsprechend verändern)
  Das Programm muss dann in zb. 30 Minuten die Lampe von ganz aus auf
  ganz ein durchdimmen.

* Selbiges anders rum (also runterdimmen)

* LCD anhängen und in Betrieb nehmen

* Taster anhängen und in Betrieb nehmen

* Dimmzeit anzeigen und vom Benutzer mit größer/kleiner Tasten
  einstellbar machen. Ziel: Benutzer stellt Dimmzeit ein, drückt auf
  eine Taste und der µC dimmt die Lampe in diesem Zeitraum einmal
  von 0 auf 100

* Das bisherige wieder mal ad akta legen und ein Testprojekt anfangen
  Im Testprojekt mit der Bascom Uhr vertraut machen

* Ist bekannt wie man die Uhr stellt und ausliest, zurück zum
  eigentlichen Programm. Uhrzeit einbauen sowie eine Möglichkeit,
  wie man die stellen kann

* Morgendliche Schaltzeit, abendliche Schaltzeit ins Programm aufnehmen
  und einstellbar machen

* Und dann noch den Check ob eine der Schaltzeiten erreicht ist und wenn
  ja welche. Je nachdem die Werte für den Dimmtimer errechnen und den
  Timer starten, der dann die Lampe dimmt.

von sbernd78 (Gast)


Lesenswert?

Das mit dem 0-10-Voltdimmer finde ich eine Gute Idee. Ansteuern liese 
sich das doch dann hiermit:

http://aquacontrol.biz/html/homedimmy.html

Gruß
Bernd

von Richard S. (rhschneider)


Lesenswert?

Vielen Dank, das ist doch mal ein Anfang. Ich werde mich bei nächster 
Gelegenheit mal an mein Atmega Testboard machen und versuchen 
loszulegen. Wahrscheinlich werde ich mich noch mehrmals melden und um 
Hilfe bitten müssen. Jedenfalls Allen herzlichen Dank für die nette 
Unterstützung, insbesondere an Karl Heinz für seine Mühe - ich denke das 
hat mich schon weitergebracht.

Gruß Richard

von Richard (Gast)


Lesenswert?

Hallo Leute,
der Anfang ist gemacht, beinahe hätte es auch geklappt. Problem = Erster 
Durchlauf ist O.K. beim 2. Durchlauf dimmt er 2mal hintereinander hoch.
Hier mal das Listing:

$regfile = "m8def.dat"
$crystal = 8000000
Dim Pwm As Word
Gosub Hell
Gosub Dunkel
Hell:
Config Timer1 = Pwm , Prescale = 8 , Pwm = 10 , Compare A Pwm = Clear Up
    Pwm = 0
    For Pwm = 0 To 1023
    Pwm1a = Pwm
    Waitms 2
    Next Pwm
Return
Dunkel:
Config Timer1 = Pwm , Prescale = 8 , Pwm = 10 , Compare A Pwm = Clear 
Down
    Pwm = 0
    For Pwm = 0 To 1023
    Pwm1a = Pwm
    Waitms 2
    Next Pwm
Return

Ich hab hell und dunkel zum testen mal hintereinander gestellt. Später 
soll es so sein, daß ein Eingang abgefragt wird und je nach Status 
entweder hell oder dunkel gestartet werden soll. Die Zeit wird intern 
festgelegt.
Es würde mich freuen, wenn mir jemand zeigen könnte, was ich falsch 
gemacht habe.

Vielen Dank und Grüße
Richard

von klaus (Gast)


Lesenswert?

Hallo,

könnte es sein, dass das programm erst "gosub hell", dann "gosub dunkel" 
ausführt und dann mit "hell:" weitermacht ?
was dann beim "return" in der Zeile vor "dunkel:" passiert weiß ich 
nicht, das programm könnte evtl. in den acker laufen...

du solltest vielleicht vor dem "Hell:" irgendwohin springen 
(hauptschleife)

so als beispiel zum testen:
===================
hauptschleife:
  Gosub Hell
  Gosub Dunkel
  goto hauptschleife

hell:
  ...
  return

dnkel:
  ...
  return
===================

Gruß klaus


PS:
NEIN meine tastatur ich nicht defekt, ich bin nur faul.

von klaus (Gast)


Lesenswert?

nochmal hallo,

das "dnkel:" sollte natürlich "dunkel:" heißen!

von Mike (Gast)


Angehängte Dateien:

Lesenswert?

Hier in Bascom,habe es noch nicht ausgetestet.Dcf77 gesteuert,feste 
Schaltzeiten,aber einstellbar mit größerem MC.Probiere es aus und melde
dich.

Mike

von Mike K. (helimike0705)


Lesenswert?

Hallo Richard

Du solltest schon eine Schleife schreiben, Do(Programm)Loop.

Do
Gosub Hell
Gosub Dunkel
Loop
End

von Uwe (Gast)


Lesenswert?

Hi!
>Down
>    Pwm = 0
>    For Pwm = 0 To 1023
>    Pwm1a = Pwm
>    Waitms 2
>    Next Pwm
>Return
Bist du dir sicher das es überhaupt runter dimmt? Denke eher es schaltet
einfach auf aus (Pwm = 0) und beginnt neu aufzudimmen
    For Pwm = 0 To 1023
    Pwm1a = Pwm
Wolltest du nicht abwärts dimmen?
Ich kenne mich jetzt mit Bascom nicht aus, aber ist PWM eine Globale 
Variable? Wenn ja, PWM nicht 0 setzen sondern lassen und die 
For-Schleife von 1023 nach 0 laufen lassen.
Wenn nicht Global, Pwm = Pwm1a setzen und die For-Schleife ebenfalls 
rückwärts benutzen.
Das mit der Hauptschleife haben ja schon andere erwähnt.

Viel Erfolg, Uwe

von Richard S. (rhschneider)


Lesenswert?

Hallo,
danke für die Unterstützung! Bei nächster Gelegenheit werde ich die 
Empfehlungen ausprobieren und berichten...

Gruß Richard

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.