Aquariumbeleuchtung im Selbstbau

Der chaotische Hauptfaden

Moderatoren: Heaterman, Finger, Sven, TDI, Marsupilami72, duese

Antworten
Benutzeravatar
KampfKeks_MRZ
Beiträge: 382
Registriert: So 11. Aug 2013, 17:52
Wohnort: 52399 Merzenich
Kontaktdaten:

Aquariumbeleuchtung im Selbstbau

Beitrag von KampfKeks_MRZ »

Hallo zusammen,

ich bin derzeit dabei, eine Aquariumbeleuchtungssteuerung zu bauen (vlt. später auch noch mehr rund ums Aquarium), und möchte diese mit einem ATMega32 realisieren...

Stand ist derzeit folgender:

LEDs -> Bestellt
LED-Aluschienen -> Hm, der Höker kriegt erst wieder im Januar die richtigen rein...
LED-KSQ -> Bestellt, PWM-fähig. Preis mit 7,99 unschlagbar - da lohnt wirklich kein Selbstbau - zumindest nicht auf die Gefahr hin, sich die teuren LEDs zu zerschießen...
Hühnerfutter, Platinen etc -> vorhanden.

Nachdem ich früher mit BASCOM programmiert habe, bin ich nun auf C im AVR-Studio umgestiegen... Also C-Neuling, aber es ist mir bereits jetzt sympatischer.

Jetzt kommt das Problem: Ich benötige 3 PWMs, die ich unabhängig voneinander einstellen kann. Weiterhin brauche ich einen Timer, den brauche ich wirklich zwingend frei. Nun blicke ich nicht mehr durch... Atmel schreibt im Datenblatt http://www.atmel.com/Images/doc2503.pdf, dass der Mega32 4PWMs hat. Bei 3 Timern?!?? Logische Schlussfolgerung: Ein Timer muss 2 PWMs gleichzeitig können?!???
Irgendwie hat sich das bei mir mit den Timern in C noch nicht ins Hirn gefressen... Hat einer eine Hilfestellung diesbezüglich für mich? Ich habe beim Gockel leider nicht wirklich etwas gefunden, was mir da weiterhilft...

Gruß Rainer

PS: Selbstverständlich werde ich bei Erfolg des Projektes alle zugehörigen Daten veröffentlichen :D
Marodeur
Beiträge: 30
Registriert: Di 3. Sep 2013, 11:14

Re: Aquariumbeleuchtung im Selbstbau

Beitrag von Marodeur »

Das ist korrekt.
Ein Timer hat 2 voneinander Compare-Werte die dann auch unterschiedliche PINs steuern.
PWM läuft so ab:
PIN wird auf high gesetzt und wenn der Timer den Compare-Wert erreicht wieder auf 0. Nach dem Overflow des Timers geht das ganze wieder von vorne los (mehr oder weniger, muss nicht unbedingt ein Overflow sein, aber egal :lol: ).
Benutzeravatar
Hightech
Beiträge: 11493
Registriert: So 11. Aug 2013, 18:37

Re: Aquariumbeleuchtung im Selbstbau

Beitrag von Hightech »

Naja zum Dimmen kann man ja auch einfach einen Software PWM machen.
ZählerTimer0 von 0-255
Dann Pin 1=1 wenn Zähler > 128 entspricht 50% PWM
Benutzeravatar
KampfKeks_MRZ
Beiträge: 382
Registriert: So 11. Aug 2013, 17:52
Wohnort: 52399 Merzenich
Kontaktdaten:

Re: Aquariumbeleuchtung im Selbstbau

Beitrag von KampfKeks_MRZ »

Marodeur hat geschrieben:Das ist korrekt.
Ein Timer hat 2 voneinander Compare-Werte die dann auch unterschiedliche PINs steuern.
PWM läuft so ab:
PIN wird auf high gesetzt und wenn der Timer den Compare-Wert erreicht wieder auf 0. Nach dem Overflow des Timers geht das ganze wieder von vorne los (mehr oder weniger, muss nicht unbedingt ein Overflow sein, aber egal :lol: ).
Okay, in etwa so habe ich mir das gedacht... Aber wie konfiguriere ich das in C? Das will mir irgendwie im Moment gar nicht in die Birne...

@Hightech:
Wenn ich aber 3 unabhängige PWMS brauche, ist das dann nicht etwas unpraktikabel? Vor allem sehe ich da dann auch irgendwie ein Timing-Problem, da ja noch mehr im Programm läuft, bspw. das LCD, ne RTC usw...

Gruß Rainer
Benutzeravatar
zauberkopf
Beiträge: 9529
Registriert: So 11. Aug 2013, 15:33
Wohnort: gefährliches Halbwissen

Re: Aquariumbeleuchtung im Selbstbau

Beitrag von zauberkopf »

Du.. ich bin in einer ähnlichen verfassung .
Aber meine Timerproblem habe ich mit hilfe von Zabex gelöst bekommen.
Danke nochmal.

hier mein Codeauschnitt :

Code: Alles auswählen

   TCCR1A=(1<<COM1A1) | (1<<WGM11);
   TCCR1B= (1<<WGM13)  | (1<<WGM12) | (1<<CS10);
//   ICR1 = 799;
//   OCR1A=400; //irgendwas von einschließlich 0..639  

   ICR1 = 400; //25 khz bei 10MHZ
   OCR1A=200; //50:50  
Bei mir ist das einfach : Ich will einfach nur eine 25khz referenz aus 10MHZ generieren.
Benutzeravatar
KampfKeks_MRZ
Beiträge: 382
Registriert: So 11. Aug 2013, 17:52
Wohnort: 52399 Merzenich
Kontaktdaten:

Re: Aquariumbeleuchtung im Selbstbau

Beitrag von KampfKeks_MRZ »

Danke Zauberkopf...

Ich glaube, ich muss mein Wochenende noch einmal zwischen Datenblättern und C-Doku verbringen...
Benutzeravatar
zauberkopf
Beiträge: 9529
Registriert: So 11. Aug 2013, 15:33
Wohnort: gefährliches Halbwissen

Re: Aquariumbeleuchtung im Selbstbau

Beitrag von zauberkopf »

Ich muss sagen..mein APRS PLL Sender Projekt, ist mein ersters C-Projekt nach über 10 Jahren. und das macht so langsam aber sicher Spass !
Zwar bin ich das Bit-Popeln gar nicht gewöhnt.. und muss mir das auch erst mal wieder aneignen, aber das ein gut Formatierter C-Code lesbarer ist, als Basccom... das kann ich nachvollziehen !

Es ist aber auch schon erstaunlich, welche saudoofen fehler man machen kann.. z.B. bin u.A. am Timer und PWM gescheitert, weil ich DEPP dauernd am falschen Pin gemessen habe !!!
Eben habe ich noch was bemerkt : meine PLL wollte nicht einrasten.
Jetzt war ich mir aber nicht 100% sicher ob ich zu doof zum programmieren bin, oder aber zu doof für Analogtechnik.
Datenblattlesen rulez. Muxout von PLL Lock detect auf R-Counter eingestellt : Schwups habe ich auf dem Pin ein 25khz Signal.
d.H. Programmierung funktioniert.
jetzt den Muxout auf N-Counter eingestellt : NIX Signal. AHA ! PLL kriegt also keine frequenz zu vergleichen.
Folge : Etwas mehr pegel gegönnt(da war ich wohl zu geizig... ).. und schwups war der lock da ! *jubel*

Auf die Idee der Fehlersuche kam ich aber erst nach dem ich ne N8 darüber geschlafen hatte.
Benutzeravatar
Weisskeinen
Beiträge: 3950
Registriert: Di 27. Aug 2013, 16:19

Re: Aquariumbeleuchtung im Selbstbau

Beitrag von Weisskeinen »

KampfKeks_MRZ hat geschrieben:Danke Zauberkopf...

Ich glaube, ich muss mein Wochenende noch einmal zwischen Datenblättern und C-Doku verbringen...
Im Datenblatt steht drin, welche Register wie eingestellt werden müssen, damit etwas bestimmtes passiert. In den zum Controller passenden Header-Dateien sind diese Register unter den gleichen Namen definiert und lassen sich wie ganz normale Variablen verwenden.
Benutzeravatar
KampfKeks_MRZ
Beiträge: 382
Registriert: So 11. Aug 2013, 17:52
Wohnort: 52399 Merzenich
Kontaktdaten:

Re: Aquariumbeleuchtung im Selbstbau

Beitrag von KampfKeks_MRZ »

Soo, es geht weiter. Endlich habe ich mich dazu durchringen können, eine Platine zu entwerfen, die hoffentlich alle Aspekte die ich benötige beinhaltet.

Es sind verbaut:
2x Meanwell LDD 350mA KSQ (je eine PWM)
2x Meanwell LDD 700mA KSQ (die dritte PWM)
gesteuert von einem Mega32
Zeitpuffer per DS1307
1x Relais für CO2-Anlage...
Und ein Display ohne Beleuchtung, da ich ja Energiesparen möchte...

Hat jemand Lust, mal einen Blick darauf zu werfen? Möchte die Platine machen lassen, da ich doppelseitig nicht sauber hinbekomme... Wäre aber blöd, wenn dann noch ein Fehler drin ist...

Sobald es die entgültige Version gibt, stelle ich sowohl Board, Schaltplan als auch Software gerne ins Forum...

Gruß Rainer
Aquariumsteuerung_sch.jpg
Aquariumsteuerung_sch.jpg (57.8 KiB) 1260 mal betrachtet
Aquariumsteuerung_brd.jpg
Aquariumsteuerung_brd.jpg (72.51 KiB) 1260 mal betrachtet
[EDITH sagt]
Sind die PWM-Ausgänge richtig?!???
Antworten