mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Initialisierung HD44780


Autor: Ronny Schulz (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe ein LCD-Display 2x20 mit den oben genannten Chipsatz drauf. Ich
möchte es im 4-Bit-Modus betreiben. Allerdings bekomme ich die
Intialisierung nur auf 1 Zeile hin. An die zweite komme ich nicht ran,
ob nun mit direkter Speicheraddressierung oder ewigen schreiben. Was
mache ich falsch? Hier der Header und im Anhang das C-File:

#ifndef LCD_H_INCLUDED
#define LCD_H_INCLUDED
#ifdef __cplusplus
extern "C" {
#endif

#define LCD_ADDR_LINE1        0x00
#define LCD_ADDR_LINE2        0x40

#define LCD_CMD_SET_4BIT      (0x20 | 0x08)  /* 4 bit control, 2 lines
display */
#define LCD_CMD_CLEAR        0x01
#define LCD_CMD_HOME        0x02
#define LCD_CMD_DISPLAY_OFF      (0x08 | 0x00)
#define LCD_CMD_DISPLAY_ON      (0x08 | 0x02)
#define LCD_CMD_DISPLAY_BLINK    (0x08 | 0x01)
#define LCD_CMD_CURSOR_SET      0x80

#define LCD_E_INIT          DDRC |= 1<<PC0
#define LCD_E_SET          PORTC |= 1<<PC0
#define LCD_E_CLR          PORTC &= ~(1<<PC0)

#define LCD_RS_INIT          DDRC |= 1<<PC1
#define LCD_RS_SET          PORTC |= 1<<PC1
#define LCD_RS_CLR          PORTC &= ~(1<<PC1)

#define LCD_RW_INIT          DDRE |= 1<<PE1
#define LCD_RW_SET          PORTE |= 1<<PE1
#define LCD_RW_CLR          PORTE &= ~(1<<PE1)

#define LCD_DATA_OUT_INIT      DDRD |= 0xF0
#define LCD_DATA          PORTD
#define LCD_DATA_IN_INIT      DDRD &= 0x0F
#define LCD_DATA_IN          PIND

#define LCD_LIGHT_INIT        DDRB |= 1<<PB6 | 1<<PB7

void lcd_init(void);
void lcd_set(uint8_t option, uint16_t value);
void lcd_putc(unsigned char c);

#ifdef __cplusplus
};
#endif
#endif

Autor: cazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
och ne....
über welches Thema wurde schon mehr geredet als darüber?
Ponyprog funktioniert nicht richtig?
PortC Mega16/32 funktioniert nicht richtig?

Auf Platz 3 bist du bestimmt mit deiner Frage. Bemühe mal die
Forumssuche. Hier wurde schon (fast) jedes Display zum Laufen gebracht.

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann muss ich wohl bis jetzt 3Threads erwischt haben, wo es nicht der
Fall war...
Naja ich habe auch noch nicht die Forumsuche benutzt. Wollte ich auch
nur so anmerken...

Autor: Ronny Schulz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja ich habe auch schon gesucht, aber nicht so das richtige gefunden. Wer
nicht antworten will, brauch es ja nicht tun. Ist ja alles freiwillig.
Wer helfen kann und will tut das eben.

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie sieht's denn aus, wenn der µC mit 4MHz statt mit 16MHz läuft?

Autor: Klaus...(Norad) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nja Ich kann zwar noch nicht Asm in AVR aber sowie das Aussieht kann ich
mir nur schwer vorstellen, daß das geht.

#define LCD_E_INIT          DDRC |= 1<<PC0
#define LCD_E_SET          PORTC |= 1<<PC0
#define LCD_E_CLR          PORTC &= ~(1<<PC0)

Warum um Himmelswillen schiebst Du die Ports?
Warum für jeden PORT die gleiche vereinbarung?

Worin besteht der unterschied zwischen
#define LCD_E_INIT   DDRC |= 1<<PC0
  und
#define LCD_E_SET   PORTC |= 1<<PC0

Macht für mich keinen Sinn!

Zudem kann dises Codefragment wohl kaum alles von deiner
Initialisierung vom Display sein.

Erklär mal was Du da vorhattest!

Gruß Klaus

Autor: Ronny Schulz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@A.K.:
Auf 4 MHz habe ich noch nicht getestet. Da wäre ich gespannt, ob die
ganze Schaltung überhaupt läuft. Der Display-Teil ist nur ein kleiner
Teil der gesamten Ansteuerung.

@Klaus:
Ich programmiere ja auch nicht in Assembler, sondern in C. Das da ist
nur der Header. Das C-File ist im Anhang. ;) Ich schiebe auch keine
Ports, sondern die Pins. LCD_E_INIT ist ein Makro und bedeutet. PC0 auf
Ausgabe, LCD_E_SET bedeutet PC0 auf High setzen, LCD_E_CLR, PC0 auf Low
setzen. Die ganzen Makros gehen schon. Nur eben das Problem mit der 2.
Zeile ....

Autor: Klaus...(Norad) (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
@Ronny!
Schau mal in das PDF ich denke es wird dir weiter helfen.

Ist was schönes drin wegen Adressverteilung vielleicht geht dir dann
ein Licht auf.

Gruß Klaus

Autor: Ronny Schulz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank! Die Anleitung ist sehr schön. Ich werde mich damit nochmal
ganz genau auseinander setzen. Also alles nochmal lesen und schauen, wo
der Fehler liegt. Wobei ich gerade sehe die Adressen stimmen. Aber
nochmal lesen kann ja nichts schaden.

Autor: Ronny Schulz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jetzt geht es doch. War ein timing-Problem in der Initialisierung.

Autor: Ronny Schulz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kaum läuft es, gibt es schon wieder merkwürdige Fehler. Ich habe das
jetzt hinbekommen. Abfrage läuft mit Busy-Flag lesen und auch ein CR
und LF wird mittels Addresspointer umgesetzt. Was jetzt allerdings sehr
merkwürdig ist, nach dem Umbau der Hardware:

Ich habe den Kontrast als auch die Hinterleuchtung mittels PWM
geregelt. Nund hatte ich den Kontrast noch über ein 10k-Poti laufen.
Grundsätzlich dachte ich aber nicht, dass das wirklich sinnvoll ist.
Also Poti raus und mittels Drahtbrücke ersetzt. Die Einstellung des
Kontrastes funktioniert auch so wunderbar. Nur eben in einem anderen
Regelbereich, was aber durchaus in Ordnung ist. Was aber jetzt
komischerweise passiert ist, dass der Text nicht mehr richtig
ordentlich ist. Einige Zeichen (ist immer verschieden) sind einfach
durch ein anderes ersetzt. Also es werden eben falsche Zeichen
ausgegeben. Woran kann denn das liegen? Bzw. was ist da durch den Umbau
passiert?

Beispiel:

Normal: "Control"
Falsch: "Congrol"

Autor: Klaus...(Norad) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Ronny!

Da musst Du wohl ein Orakel fragen vielleicht!

Ohne Code keine chance!


Aber ich Tippe das deine Ausgabe-Routine nicht richtig funzt oder
Timing passt dazu nicht richtig vor allem Enable!

Debuggen kann da hilfreich sein! Wenn Du dir sicher bist das deine
Zeichen aus dem Codespeicher richtig an den Datenport am Display
ankommt solltest dann Timing Enable prüfen ( RS muss vorher gesetzt
sein)

Gruß Klaus

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hm? Tu mal die PWMs raus und probiere dann nochmal.

Autor: Ronny Schulz (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
@Klaus:
Ja ein Orakel wär cool. Aber im ernst. Vorher ging es. Mir ging schon
durch den Kopf, dass das Kabel evtl. zu lang ist (ca. 30cm). Da könnten
ja solche Zufälle dann auftreten. Nur kann man das ja durch Verlängerung
der Timings wieder ausgleichen. Aber auch das bringt nichts. Ich hatte
mal probiert die lcd_enable() - Routine zu verzögern:

  delay_us(10);
  LCD_E_SET;
  delay_us(10);
  LCD_E_CLR;
  delay_us(10);

Leider auch hier kein Erfolg. Der Code ist mal anhängig.

@Simon:
Ohne die PWMs kann ich doch garnichts auf dem Display sehen.

Autor: TravelRec. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die PWMs stören den normalen Datentransfer, wenn sie durch das gleiche
Kabel (Flachband?) gejagt werden. PWM-Leitungen von den anderen
absetzen und mit eigenen Masse-Rückleitungen versorgen.

Autor: Ronny Schulz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast recht mit dem PWM. Ich habe das mal deaktiviert. Sieht zwar von
Helligkeit und Kontrast total blöd aus, aber zum testen reicht es. Die
Daten stimmen jetzt. Welchen Einfluss allerdings der Poti vorher hatte,
weiß ich auch nicht. War im Prinzip ja mehr oder weniger einfach nur ein
Pull-Down und ein Widerstand in der Leitung vor dem Flachbandkabel. Ich
vermute mal, er hat die Pegel etwas kleiner gemacht, sodass jetzt die
"Schmerzgrenze" überschritten wurde.

Jetzt ist es aber an der Zeit das Problem reel zu lösen. Ich jage da
knapp 4kHz rüber, weil es auf Grund der anderen Timer nicht niedriger
geht. Ein Tiefpass kommt wahrscheinlich nicht wirklich in Frage, weil
es  schwer möglich ist die genaue Leistungsaufnahme des Display zu
ermitteln. Zumal das Display flexibel austauschbar sein soll. Auch
zusätzliche Masseleitungen sind nicht möglich, weil die ja im Stecker
des Displays nicht vorgesehen sind. Was könnte man also tun?

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dann nimmste nen tiefpass+opamp als impedanzwandler. Also auf die
verrückte Idee, als Kontrastspannung ne PWM zu nehmen, bin ich auch
noch nicht gekommen. Ist doch vorprogrammiert dass das stört.
Schließlich geht die PWM dann auf irgndnen Draht auf der Platine, die
sehr dicht aneinander herlaufen...

Stell den Kontrast doch einmal gut ein, dann passts. Ich hab bei meinem
4x27 einen Spindeltrimmer neben die anschlüsse gelötet.

Autor: Ronny Schulz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die grundsätzliche Idee, dass so zu machen ist einfach, dass ich das
ganze sowieso mit einem Mikrocontroller ansteuere, Konfigurationen im
EEPROM speichere und ich nachher ohnehin nicht so gut an die
Leiterplatte mehr rankomme. Und irgendwie ist es einfacher im Terminal
einzugeben "display contrast xxx", also irgendwo da an einem Poti zu
drehen. Zumal das gleich ja auch mit dem Backlight passiert.

Die OP-Stufe mit dem Impedanzwandler habe ich schon für eine andere
Funktionalität drauf. Die könnte ich nehmen. Es wird dann nur wieder
etwas eng vom Platz und umfangreich. Ich bräuchte dann mindestens einen
Doppel-Op, 2 Widerstände und 2 Kondensatoren für Kontrast und
Backlight.

Ich habe das alles auch nochmal ausprobiert. Ich habe das Problem nur
mit dem PWM des Kontrastes. Und das seitdem ich das Poti ausgelötet
habe. Die LCD-Treiber ziehen ja recht wenig Strom. Wäre es vorstellbar,
dass der PWM für den Kontrast mehr oder weniger rumschwingt? Ich will
mal probieren da evtl. ein Pull-Down von 10k reinzubauen. Evtl. reicht
das ja aus. Oder denke ich da jetzt komplett falsch?

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein passives RC-Glied sollte reichen.

Dein Poti hat ja auch schon die Flanken etwas gedämpft, wodurch es
keine Störungen gab.

Nimm also einen Widerstand (probieren, mit etwa 470 Ohm beginnen) in
Reihe und dann einen Elko 1µF...22µF gegen GND, dann stellt sich am
Elko halbwegs die gewünschte Spannung ein. Der noch vorhandene "Hub"
wird kaum noch Störungen erzeugen, da keine steilen Flanken mehr da
sind.

...

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>24  525592492   459-6634  10,35 €  9,83 €  9,21 €
Heftig. Das Ding kostet ja sogar bei einer Stückzahl von mehr als 11
über 9€ und bei Pollin bekommt man es in einem Bausatz für 3E
beigelegt...

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Freak5:

Muss ich das jetzt verstehen?

Worauf bezieht sich dein Posting?

...

Autor: Ronny Schulz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sicher irgendwie im falschen Thread.

Ich hatte noch eine andere Idee, weil ich wirklich nicht unbedingt mit
den Filtern herumexperimentieren will - schon allein wegen der
Kompatibilität zu anderen Displays. Wie sieht es denn mit einem
einfachen Frequenzteiler aus? Funktionieren würde es sicher schon, wenn
ich die 4kHz durch 10 oder 20 teile. Damit sind die "hohen" Frequenzen
vom Flachbandkabel weg. Allerdings will ich auch kein 16poligen IC da
raufsetzen. Gibt es da nicht was kleineres, das den Takt teilt?

Alternativ wäre natürlich interessant welche Möglichkeiten ich über den
ATmega selbst habe. Grundsätzlich benötige ich 4 (OC1, OC3) der Timer
auf 4kHz. OC0 ist anderweitig extern belegt und OC2 benutze ich als
Software-Timer um einige Sachen getimt zu "pollen". Die 2 anderen von
OC1 hätte ich frei. Nun kann ich da nicht den Takt ändern. Aber gibt es
da vielleicht andere Ansatzmöglichkeiten?

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du das einfache RC-Glied schon probiert?

Es geht nicht um die Frequenz, sondern um die Flankensteilheit.
Idealerweise würde das Display für Kontrast ja Gleichspannung
benötigen, allerdings mit nur geringer Belastung (10k oder etwas mehr
als Spannungsteiler reicht ja). Also gib ihm doch eine (noch etwas
unsaubere) Gleichspannung aus einem Elko, den die PWM über einen
Widerstand durch Aufladen und Entladen auf dem gewünschten Wert hält.
Diese Gleichspannung mit aufmoduliertem Dreieck wird kaum Störungen
verursachen und ist für das LCD immer noch besser als PWM (zerhackte
Gleichspannung) mit ihren steilen Flanken.

Ein Frequenzteiler würde zwar die Frequenz verringern, aber die steilen
Flanken nicht. Also würden die Störungen erhalten bleiben.

...

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Entschuldigung. Falscher Thread...

Autor: Kalsu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

einfach in BASCOM

initLCD fertig

Klaus

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Cool...

INIT LCD beseitigt also die Störungen der PWM???

...

Autor: Ronny Schulz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Okay das mit dem RC probiere ich einfach mal aus. Beim Kontrast geht es
ja. Beim Backlight allerdings nicht, da an dem Widerstand zuviel Strom
abfällt.

Wieso ist das Problem mit den steilen Flanken überhaupt? Grundsätzlich
ist doch jedes Signal über den Kabel ein Wechselspannungssignal. Da
sind dann doch auch steile Flanken. Also wird es doch eher ein Problem
mit der Frequenz sein. Das ist mein Gedankenproblem.

Autor: Ronny Schulz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Noch immer habe ich das ganze nicht ausprobiert. ABER ich habe gerade
mal kurz den Kontrast verändert (mit PWM). Erstaunlich ist, dass die
Schrift total merkwürdig aussieht, wenn ich den Kontrast herabsenke.
Anscheinend kommt der mit der Frequenz nicht klar. Die Schrift läuft
dann so farbig durch. Kann ich kaum erklären - erinnert so wie beim
alten Fenerseher, wenn da nur so Balken laufen.

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das sind Interferenzen. Die entstehen durch Überlagerung zweier
Frequenzen. Die LCD-Aisgabe ist ja kein statisches Bild, sondern ein
pulsierendes. Wenn die Beleuchtung schon gepulst sein muss (muss sie
das wirklich?), dann sollte die Frequenz schon sehr weit von der
Ausgabefrequenz des LCDs entfernt sein.

...

Autor: TravelRec. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>Wieso ist das Problem mit den steilen Flanken überhaupt?
>>Grundsätzlich ist doch jedes Signal über den Kabel ein
>>Wechselspannungssignal. Da sind dann doch auch steile Flanken. Also
>>wird es doch eher ein Problem mit der Frequenz sein. Das ist mein
>>Gedankenproblem.

Das kommt drauf an. Wenn einigermaßen viel Strom fließt, dann wirken
sich auch niedrigere Frequenzen störend auf Nachbarleitungen aus
(Induktion). Die Datenleitungen, die CMOS mit hochohmigen PullUps
darstellen, ziehen kaum Strom und dadurch stört dann auch nicht so
viel. Du kannst natürlich auch jede 2. Flachbandader auf Masse legen,
das bringt Dich dann auch nochmal ein Stück weiter. Vielleicht
probierst Du doch erstmal ein paar Anregungen durch und meldest Dich
mit den Ergebnissen.

Autor: Stephan Walter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hätte da eine Idee. Ist nicht sonderlich schön, aber so als
Workaround:
Kurz vor dem Enable die PWM einfach abschalten, nach dem Enable wieder
einschalten. Die Enable Pulse sind so kurz, da wird das ja wohl kaum
auffallen, oder?

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Initialisieren kann man das LCD auch im unbeleuchteten Zustand. Aber ich
denke mal, dass die Störungen auch beim Senden von Daten auftreten
werden. Und dann die Beleuchtung jedesmal abschalten, das sieht
sicherlich dumm aus...

Ich würde auf die PWM komplett verzichten und stattdessen mit 2 oder 3
verschiedenen Vorwiderständen 3 bzw. 7 verschiedene Helligkeiten
vorsehen, die durch Transistoren (oder ULN2x03) ausgewählt werden. Wenn
die Ströme gut aufeinander abgestimmt sind (1:2:4), kann man damit
sicher leben.

...

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum kann man den PWM denn nicht vorher glätten? Man braucht doch nur
eine Drosselspule und einen Kondensator, oder?

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weil dann der Vorteil der PWM, Energie (Verlustleistung) zu sparen, im
Eimer wäre. Ein für PWM dimensionierter Transistor würde dann den
Wärmetod sterben...

Sicher kann man mit der geglätteten PWM eine steuerbare Stromquelle
ansteuern, aber die erzeugt nunmal Wärme, und das möchte nicht Jeder.

...

Autor: Stephan Walter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
?

Jetzt erzähl mir nochmal, du kannst es sehen, wenn die
Hintergrundbeleuchtung für ein paar µ-Sekunden abgestellt wird.

Einfache Routine:
PWM aus (Zustand halten)
NOP
Enable ein
NOP
Enable aus
NOP
PWM ein
ferig!

Wahlweise geht das als Makro.

Autor: Ronny Schulz (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Die Idee mit dem abschalten ist ganz clever. Nur das Problem liegt nicht
beid er Hintergrundbeleuchtung, sondern beim Kontrast. Das Problem mit
der Hintergrundbeleuchtung liesse sich sehr leicht regeln, weil davor
noch ein FET liegt, den man mit einen kleinen Filter (RC: 100k, 220n)
schon glätten könnte. Allerdings macht der keine Zicken, sondern der
Kontrast. Da gab es Probleme mit den Interferenzen, sodass auch das
abschalten nichts bringen würde.

Ich habe jetzt die Hardware geändert:
Laut Hannes seinen Anweisungen. 470 Ohm Widerstand und 10uF ELKO vor
dem Kontrast am LCD und schon war alles super. Die Spannung ist danach
superglatt (auch mit Oszi geschaut).

Vielen Dank für eure Hilfe. Am Anhang findet sich der Schaltplan mit
dem LCD-Stecker.

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@...HanneS... Lux (HanneS): So meinte ich das nicht. Ich meine, dass man
sich soetwas wie einen Step-Downregler damit baut.
Der Kondensator mit der Spuele muss hinter dem Transistor sein und
nicht davor.
Man kann die PWM-Frequenz, die sonst das Display bekommen würde, doch
durch eine Drosselspule leiten. Dadurch müsste der Strom eigentlich
geglättet werden und ohne einen veränderlichen Strom gibt es kein
Magnetfeld und ohne Magnetfeld gibt es keine Induktion.
Den Strom, den das Display benötigt kennt man doch ~.

Natürlich bleibt noch ein Teil des PWMs, aber das Problem wäre schon
einmal nicht mehr so groß.

Wenn man genug Energie übrig hat kann man natürlich auch durch einen
Ohmischen Widerstand das gleiche Resultat bekommen. Für ein Kleines
Display wäre das ja auch nicht schlimm, besonders wenn man es nur zum
Basteln brauchen würde.

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
............................................................
Laut Hannes seinen Anweisungen. 470 Ohm Widerstand und 10uF ELKO vor
dem Kontrast am LCD und schon war alles super. Die Spannung ist danach
superglatt (auch mit Oszi geschaut).
............................................................
Das meinte ich doch. Aber ist es nicht so, dass für das Übersprechen
der Strom und nicht der Kondensator verantwortlich ist? Außerdem
verursacht ein welliger Strom eine höhere Verlustleistung am
Kondensator, denke ich.
Meine Vermutung dazu war, dass eine kleine Spule vor dem Kondensator
das Resultat weiter verbessert.(Mit Blick auf das Übersprechen und auf
die Verlustleistung)
Praktisch gesehen braucht man das natürlich nicht mehr, wenn es schon
funktioniert. Liege ich hier aber theoretisch richtig?

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Freak5:

Zu einem Schaltregler gehört etwas mehr, als nur Spule und Kondensator.
Vor allem muss der exakt dimensioniert und an die PWM-Frequenz
angepasset werden. Wenn du das kannst, dann ist ja gut. Ich kann das
(derzeit noch) nicht. Ich empfehle Anderen auch keine kritischen
Schaltungen.

OT:
Was macht dein Grafik-LCD? Funktioniert es nun endlich? Wenn ja, woran
lag es nun?

...

Autor: Ronny Schulz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was mir noch fehlt ist wirklich eine Berechnungsgrundlage. Ich habe das
jetzt zusammengefrickelt und es geht. Aber viel besser ist es, wenn ich
das auch nachrechnen kann. Die gesamte Schaltung auf der Leiterplatte
ist auch nicht ausexperimentiert, sondern berechnet.

Ich habe grundsätzlich folgende Angaben:

- PWM-Frequenz (wenn 50/50): 3906 Hz
- Betriebsspannung: 5V
- Stromaufnahme des LCD-Drivers: 0,5 mA (kann sicher nach Display
variieren)

Theoretisch wären meine Gedankengänge folgende:

- 3906 Hz entsprechen einer Periodendauer von 256ns
- tau = R * C
- um eine vernünftige Glättung zu haben sollte die Ladezeit vom
Kondensator ca. 5 tau haben
- LCD-Driver entspricht bei 5V und 0,5mA etwa einem 10k Widerstand
- somit gilt bei 50/50 halbe Periodendauer von 128ns
- R gebe ich mal mit 470 Ohm vor

-> 5 * tau = R * C
-> 5 * tau / R = C
-> 5 * 128ns / R = C
-> 640ns / 470 = C

Ja und da haperts .. so richtig komme ich nicht weiter. Welchen
Einfluss nämlich das LCD noch hat ist zu klären wegen der Last, Eben
wegen der Entladung.

Noch was anderes:
Was ich jetzt noch gefunden habe, dass bei den Reichelt-LCDs die
PWM-Frequenz des Backlights mit angegeben ist (400 - 1000 Hz) und auch
da bin ich weit drüber ...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.