-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 16

Thema: LCD-Hintergrundbeleuchtung funktioniert nicht

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    15.11.2010
    Ort
    Oberbayern
    Alter
    32
    Beiträge
    38

    LCD-Hintergrundbeleuchtung funktioniert nicht

    Anzeige

    Hallo zusammen,

    habe ein ANAG VISION AV1640 16x4 LCD-Modul per I2C-Port-Expander PCF8574P im 4-Bit-Modus an eine C-Control Pro 128 angeschlossen - gemäß angehängtem Schaltplan.
    Funktioniert alles wunderbar, nach 3 Tagen Kopfarbeit weiß ich nun auch, wie die Kommunikation abläuft und wie das LCD Befehle und Daten entgegen nimmt.

    Eines will aber einfach nicht laufen: die LCD-Hintergrundbeleuchtung. Wenn ich Pin 15 mittels der Funktion LCD_EnableBL() auf high (0b10000000) schalte, sollte der BC557B doch von Emitter auf Kollektor durchschalten. Das Display bleibt jedoch dunkel, auch ein Ersetzen des Transistors durch eine Brücke hilft nicht.

    Das Display sollte auf jeden Fall eine Beleuchtung besitzen, es hat ja auch 16 Pins.

    Was mache ich falsch?

    Wenn es hilft, hier noch mein Code:

    Code:
    #define I2C_PCF_ADDR	0x40		'Slave-Adresse des PCF8574P
    #define LCD_BL			0b10000000	'Backlight high
    #define LCD_ENABLE		0b01000000	'Enable high
    #define LCD_RS			0b00100000	'RS high = Datenausgabe
    #define LCD_RW			0b00010000	'R/W high = Lesemodus
    
    Sub main()
    	I2C_Init(I2C_100kHz)
        LCD_Init_I2C()
        LCD_Clear_I2C()
        LCD_EnableBL_I2C()  '<-- Funktioniert nicht!
    End Sub
    
    
    Sub LCD_Init_I2C()
        'Initialisierungssequenz für 4-Bit-Modus.
        I2C_Out(0x3)
        AbsDelay(1)
        I2C_Out(0x3 + LCD_ENABLE)
        AbsDelay(1)
        I2C_Out(0x3)
    
        I2C_Out(0x2 + LCD_ENABLE)
        I2C_Out(0x2)
    
        '*** 4-Bit-Modus ***
    
    	'DISPLAY ON/OFF CONTROL
        'Display ein, Cursor aus, Blinken aus
        LCD_Write_I2C(0, 0b00001100)
    
    	'FUNCTION SET
        '4-Bit-Modus, 5x7 dots?, F=0?
        LCD_Write_I2C(0, 0b00101000)
    End Sub
    
    Sub LCD_Clear_I2C()
    	'Display löschen und Cursor zurücksetzen.
        LCD_Write_I2C(0, 0b00000001)
        LCD_Write_I2C(0, 0b00000010)
    End Sub
    
    Sub LCD_EnableBL_I2C()  '<-- Funktioniert nicht!
    	LCD_Write_I2C(0, LCD_BL)
    End Sub
    
    Sub LCD_Write_I2C(bRS As Byte, bData As Byte)
    	'RS high (bRS = 0x20) für Datenausgabe
        'RS low (bRS = 0x00) für Befehlsübergabe
        'bData enthält Befehle u./o. Daten
    
        Dim bDataOut As Byte
    
        '*** High Nibble ***
        bDataOut = bRS Or (bData >> 4)
        I2C_Out(bDataOut)
        bDataOut = bDataOut + LCD_ENABLE
        I2C_Out(bDataOut)
        AbsDelay(1)
        bDataOut = bDataOut - LCD_ENABLE
        I2C_Out(bDataOut)
        AbsDelay(1)
    
        '*** Low Nibble ***
        bDataOut = bRS Or (bData And 0b00001111)
        I2C_Out(bDataOut)
        bDataOut = bDataOut + LCD_ENABLE
        I2C_Out(bDataOut)
        AbsDelay(1)
        bDataOut = bDataOut - LCD_ENABLE
        I2C_Out(bDataOut)
        AbsDelay(1)
    End Sub
    
    Sub I2C_Out(bData As Byte)
        I2C_Start()
        I2C_Write(I2C_PCF_ADDR)
        I2C_Write(bData)
        I2C_Stop()
    End Sub

    Danke für's Lesen.
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken av1640.jpg  

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.05.2009
    Ort
    Berlin
    Beiträge
    450
    Hi,
    was steht den im Datenblatt zum Display ? Wieviel Spannung brauchst Du denn für die Hintergrund Beleuchtung ? Leuchtet das Display wenn Du PIN 1 + 2 mit 16 + 15 verbindest (vorher nach Spannung gucken)
    Messe doch mal nach was da am PIN 15 noch ankommt ?
    MfG Trainmen

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    15.11.2010
    Ort
    Oberbayern
    Alter
    32
    Beiträge
    38
    Hallo TrainMen,

    im Datenblatt (Link) steht:

    THERE ARE THREE POSSIBILITIES TO USE LED BACKLIGHT IN ANAG VISION CHARACTER MODULES.

    1. DRIVING THE LED THROUGH A CURRENT LIMITING RESISTANCE (RA) WHICH IS ALREADY INCLUDED IN THE LCM, BY EXTERNAL 5V TO J1 AND J2 BETWEEN PIN 1 AND PIN 2.

    2. PROVIDING 5V BY PIN 15 AND 16 OF THE INTERFACE TO DRIVE THE LED, J15 AND J16 MUST BE SHORTENED AND RA = 3~7 OHMS IN THIS CASE.

    3. PROVIDING 4.2V BY DIRECT CONNECTION TO THE LED THROUGH A CURRENT LIMITING RESISTANCE.
    Was ist mit J1/J2 und J15/J16 gemeint? Sind das die Pins? Finde die Beschreibung etwas widersprüchlich.

    Am Pin 15 kommt nichts an mit obigem Code und Aufbau. Und direkt Pin 15 an 5V legen traue ich mich nicht.

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.410
    Blog-Einträge
    101
    Hallo,

    Zitat Zitat von dariegel
    Was ist mit J1/J2 und J15/J16 gemeint? Sind das die Pins? Finde die Beschreibung etwas widersprüchlich
    J1, J2, J15, J16 sind im Datenblatt auf Seite 2, links unten unter Block "LCD CONTROL LSI" gezeichnet und ohne eigene Erfahrung verstehe ich den Text dazu trotzdem nicht.

    Zitat Zitat von dariegel
    Wenn ich Pin 15 mittels der Funktion LCD_EnableBL() auf high (0b10000000) schalte, sollte der BC557B doch von Emitter auf Kollektor durchschalten
    Verstehe ich so nicht. In Deiner oben geposteten Schaltung muß P7 vom PCF8574A auf low gehen, wenn der pnp Transistor durchschalten soll. Der legt dann über R3 Vcc an PIN 15 des Displays.

    Warum allerdings das Backlight dunkel bleibt, wenn Du den Transistor zwischen Emitter und Kollektor brückst, könnte an dem meiner Meinung nach zu hohem R3=33Ω Widerstand liegen.

    Nach Datenblatt gilt für die LED ein Vf=4,2V und If=220mA. Bei VCC von 5V errechnet sich der R3 mit (5V - 4,2V) / 0,22A = 3,6Ω. Kannst ja mal mit 4,7Ω anfangen.

    EDIT: der BC557 geht nur für einen Strom von 100mA und ist damit hier sowieso zu schwach!


    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    15.11.2010
    Ort
    Oberbayern
    Alter
    32
    Beiträge
    38
    Danke, das hilft mir schonmal sehr weiter. Man sollte sich eben nicht blind auf Schaltungen verlassen - auch nicht in Büchern. Wenn ich soweit bin, melde ich mich wieder.


    Gruß

    EDIT: Weitere Verbesserungsvorschläge für Aufbau und Code sind natürlich willkommen.

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    15.11.2010
    Ort
    Oberbayern
    Alter
    32
    Beiträge
    38
    Zitat Zitat von Searcher
    Verstehe ich so nicht. In Deiner oben geposteten Schaltung muß P7 vom PCF8574A auf low gehen, wenn der pnp Transistor durchschalten soll. Der legt dann über R3 Vcc an PIN 15 des Displays.
    Also brauche ich einen NPN-Transistor, wenn ich bei P7 = high = 0b1000000 die Hintergrundbeleuchtung aktivieren will?

    Welchen Typ würdest Du mir empfehlen, denn der BC557B verträgt ja maximal I = 100 mA zwischen C und E?

  7. #7
    Erfahrener Benutzer Roboter Genie Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.410
    Blog-Einträge
    101
    Hallo,

    ich bin jetzt nicht der Schaltungsentwerfprofi und folgender Vorschlag sollte besser nochmal bestätigt werden.

    Also brauche ich einen NPN-Transistor, wenn ich bei P7 = high = 0b1000000 die Hintergrundbeleuchtung aktivieren will?
    Nein, wenn Du bei low="Hintergrundbelechtung ein" machst. Die Schaltung würde ich dann unverändert lassen (mit R3 von 4,7Ω) und statt des BC557 einen BD676 oder BD678 einsetzen. Die PNP Darlingtontransistoren wären wohl etwas überdimensioniert, sollte aber gut funktionieren.

    Man könnte auch zB einen BC327 nehmen. Der hat aber keine so hohe Stromverstärkung und man müßte deshalb noch den Basisvorwiderstand anpassen. Je nach Belastungsfähigkeit des PCF, der ja den Basisstrom liefern muß, wäre das vielleicht gar nicht machbar.

    EDIT: ich sehe gerade im Datenblatt, daß der PCF an den I/Os bei low einen Strom von 25mA abgeben kann. Damit kannst Du einen BC327 mit R4=220Ω als Basisvorwiderstand nehmen.


    PS: Hab Dein Programm nicht bewerten, da von Programmierung keine Ahnung.

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  8. #8
    Erfahrener Benutzer Roboter Genie Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.410
    Blog-Einträge
    101
    Code:
             .------------------------------.
             |                              |
             |    LCD                       |
             |                              |
             |                   15     16  |
             '------------------------------'
                                  |      |
                                 .-.     |
                            VCC  | |R3   |
                             +   | |     |
                             |   '-'     |
                             '----'      |
                                         |
                             ___       |/  BD677
           von PCF P7 >-----|___|------|
                             4,7k      |<             VCC
                                         |             +
                                         |     \]      |
                                         o-----|]------'
                                         |     /]+
                                         |
                                         |
                                        ===
                                        GND
    Mit NPN (BD677 als NPN Darlington) und high=Hintergrund aktivieren könnte es wie im code gezeichnet gehen. Da ich das LCD aber nicht kenne, ist das aber auch nur mit Vorsicht zu genießen.

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  9. #9
    Erfahrener Benutzer Roboter Genie Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.410
    Blog-Einträge
    101
    dein Display läßt auch mir keine Ruhe; wegen des mir nicht ganz klaren Datenblattes.

    Conrad hat laut Datenblatt Seite 1 in der Fußnote vier verschiedene Displays, die sich in der Hintergrundbeleuchtung unterscheiden, im Angbot. Das Datenblatt ist das gleiche für alle.

    Das erste (18334) ist ohne!

    Welches hast Du denn genau - Bestellnummer?


    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    15.11.2010
    Ort
    Oberbayern
    Alter
    32
    Beiträge
    38
    Stimmt, hast recht, bin da vor einiger Zeit auch drüber gestolpert, hab's dann aber wieder verdrängt.

    Hab grad in die Bestellung geschaut, es ist tatsächlich das 18334. Das erklärt wohl so einiges... und ich weiß, dass ich ein ähnliches Display auch billiger haben könnte. Jetzt bin ich schlauer. Naja, egal, frisst eh bloß Akku.

    Dann leg ich Pin 15 u. 16 auf GND und reiß den ganzen Transistor-Kram raus, oder?

    Danke für Deine Hartnäckigkeit und Mühe.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •