PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LCD Kontrast am DAC des AVR



PCMan
20.10.2008, 18:57
Hallo Leute,
wäre es prinzipiell denkbar, den Kontrast des LCDs über den DAC des AVRs zu steuern?
Es wird ja eine Spannung vom LCD erwartet. Die kann ich mit dem AVR ausgeben.
Durch einen geeigneten Spannungsteiler kann ich dann auch die volle Bandbreite (0..5V) am DAC-Ausgang verwenden?
Grüße Simon

McJenso
20.10.2008, 19:45
Hallo,

welcher AVR?
XMega? Hast du einen?

Gruß

Jens

PCMan
20.10.2008, 20:34
Hi Jens,
jau würde da nen Mega32 hernehmen wollen. Wäre auch deswegen cool, weil man das Display dann ausdimmen lassen könnte...
Spräche da prinzipiell was dagegen?
Simon

pyr0skull
20.10.2008, 22:06
Würdest du einen XMega oder einen Mega nehmen?

Ich weiß nicht ob die XMegas einen richtigen DAC haben, bei den "alten" Megas kann man das aber auch über PWM und einem dahinterliegenden Tiefpass machen.

McJenso
21.10.2008, 04:57
Hallo,

der AtMega32 hat kein DAC. Wie pyr0skull schon geschrieben hat, kann man das mit PWM aber prima hin bekommen. Bei mir habe ich die max. PWM-Frequenz gewählt, dadurch konnte ich den Tiefpass sparen. Das mag aber auch abhängig vom Display sein Ich habe auf diese Weise erst einen Displaytypen beschaltet.

Gruß

Jens

PCMan
21.10.2008, 11:30
Achso der ATMega32 hat keinen DAC? Okay, dann muss es wohl PWM sein. Ich glaube dazu habe ich hier schon einen Thread gesehen...

pyr0skull
21.10.2008, 15:51
Ja, ich habe mal einen Thread dazu eröffnet. Wenn man den Tiefpass dahinter schaltet muss die PWM-Frequenz nicht so extrem hoch sein und man spart Rechenzeit. Den Thread solltest du finden wenn du nach "PWM" und "Kontrast" suchst.

PCMan
21.10.2008, 16:25
alles klar. und dieses pwm ausgangssignal geht dann direkt an den Kontrast-Pin des Displays nehme ich an!? Ist an PWM eigentlich ein bestimmter Port vom AVR gekoppelt?
Thx Simon

pyr0skull
21.10.2008, 16:34
Es gibt Hardware PWM-Ausgänge, ich hab das per Soft-PWM (Timer und normaler Port) gemacht. Der Ausgang kommt dann bei einem Display mit positivem Spannungseingang direkt an den entsprechenden Pin, andernfalls musst du u.U. noch einen Transistor davor schalten. Bei der Tiefpass-Variante kommt noch ein http://de.wikipedia.org/wiki/RC-Glied dazwischen.

Passende Werte dazu stehen in meinem Thread.

PCMan
22.10.2008, 09:34
Ich würde da gerne noch ein paar Dinge wissen, da du ja schon erfolgreich mit der Sache gearbeitet hast:
1) welchen Timer und welche Ausgangsfrequenz hast du gewählt? Den Timer1 brauch ich nämlich für was anderes.
2) ich würde einen Hardware-PWM verwenden. Kann man da on-the-fly die Parameter des PWM-Signals verändern? Also dass ich dem sage kontinuierlich das signal zu senken oder muss ich dafür immer stoppen und reinitialisieren?
3) Worin unterscheiden sich OC1A/B von OC2? Der OC2 ist nämlich auch an meinem AVR dran...
Vielen Dank,
Grüße Simon

pyr0skull
22.10.2008, 10:04
Welchen Ausgang du benutzen kannst, müsstest du im Datenblatt nachsehen.. Wenn du Hardware-PWM verwenden möchtest musst du meines Wissens nach den 16-Bit-Timer verwenden, welcher das ist, steht ebenfalls im Datenblatt.

Den Parameter des PWM-Signals kannst du on-the-fly verändern, die genaue Frequenz kann ich dir jetzt nicht sagen. Du kannst das aber mit einem Oszilloskop relativ einfach rausfinden. Die Frequenz kannst du soweit reduzieren bis du kein sauberes Signal mehr bekommst. Dann etwas erhöhen und es passt.

Bevor du das Display anschließt misst du am besten die geglättete Spannung und grenzt die Spanne des Duty-Cycles (der Parameter den du verändern kannst) ein, so dass du das Display mit unzulässigen Spannungen betreibst.

Bei mir war es so, dass das Display leicht geflackert hat, wenn das Signal nicht absolut glatt war, da musst du also ein bisschen rumspielen.

McJenso
22.10.2008, 16:41
Hallo,

du kannst sowohl den 16 Bit als auch die 8 Bit-Timer nehmen. Der Timer 1 kann mit der gleichen Frequenz zwei verschiedene PWM-Signale erzeugen. Der Timer muss nicht neu initialisiert werden. Den Sollwert (Vergleichswert) muss du schon selber vorgeben. Wenn du dimmen möchtest, muss du das entsprechende ORC-Register in deinem Programm immer weiter runter zählen. Die anderen Timmer Einstellungen brauchst du aber nicht neu zu schreiben.

Gruß

Jens