Mehrere LCD mit Bascom

shurikn

Neues Mitglied
14. Jan. 2010
39
0
0
Zürich
Sprachen
Hallo Zusammen!

Nach langem googleln gebe ich schliesslich auf. Könnt ihr mir weiterhelfen und evtl sagen wie ich mit einem atmega32 mehrere LCD (4*20) betreiben kann, falls es überhaupt möglich ist?

Ich dachte anfänglich, dass ich die R/W mit einem separaten Pin am AVR die einzelnen LCD anwähle, aber so wie das aussieht, werden die LCD nicht korrekt initialisiert.

Ich danke euch für euren Support schon im Voraus!

Freundliche Grüsse
Shurikn
 
Hallo Shurikn!

Was bedeutet denn, mehrere LCD`s ?
Zwei Displays, oder vier, oder acht, oder 50? :eek:

Eigentlich müsstest du nur die "E" und "RS"-Leitung "multiplexen".
Alles andere könnte doch ruhig parallel laufen, oder?

Sollen denn alle LCD`s das selbe anzeigen, oder jedes etwas anderes? :hmmmm:


Du kannst es ja mal mit zwei LCD`s ausprobieren.
Wenn du mit BASCOM arbeitest gibt es die Möglichkeit, eine zweite E-Leitung (E2) zu aktivieren.
Diese zweite Leitung verwendest du dann am E-Eingang des zweiten LCD`s.

In BASCOM kannst du dann mit "___lcdno" die E-Leitungen "umschalten".
Code:
Dim ___lcdno as Byte

.
..
...
___lcdno = 0               'erste E-Leitung


___lcdno = 1               'zweite E-Leitung



Eine weitere Möglichkeit wäre dann noch mehrere LCD`s über den TWI (I2C) BUS anzusteuern......

Gruß,
Cassio
 
Hi Cassio,

mein LCD ist hin. Zeile 1 und 2 des 27x4 (E- Leitung) werden sporadisch nur schlierenhaft angezeigt. Macht nix, ist jetzt auch nicht so das Problem.


Grüsse,

Michael
 
Hi Michael!

Ist ja ärgerlich!
Wenn es manchmal nur schlecht zu erkennen ist....
Hast du es mal zerlegt und nach den Kontakten gesehen? (Habe ich bei diesen aber noch nicht gemacht)

Kannst ja auch mal etwas an verschiedenen Stellen an den Metallrand drücken.
Vielleicht gibt es nur Probleme mit der Kontaktierung?


Grüße,
Cassio
 
Hi Cassio,

gedrückt ja, zerlegt nein. Das Zweite hat noch keinen Anschluss, hab ich jetzt auch keine Lust dazu, hält mich nur ab. Ich könnte nochmal das POWERTIP mit negativer Kontrasteinstellung dransetzen...muss ich erst wieder zusmmenstecken...wo sind die 7660...:confused:


Grüsse,

Michael
 
Hallo Zusammen!

Danke für eure Antworten.

Ich möchte 5 Displays mit einem Atmega32 ansteuern, welche unterschiedliche Sachen anzeigen. Damit ihr eine Ahnung habt, wieso ich soviele LCDs brauche:

Ich baue gerade "immer noch :( " an meinem Terrarium-Steuerung, mit welcher ich 10 Terrarien unabhängig das Licht (LED-Lampe von Osram) und die Heizmatten dimmen, bzw. regulieren kann, die Temperaturen mit DS18B20 ablesen messen kann. Weitere features baue ich ein, wenn die Hauptfunktionen funktionieren. Dabei möchte ich ein kleines "OS" schreiben, mit dem ich all die Zeitsteuerung für das Licht, die Soll-Temperatur und die Sensoren-Zuweisung regeln / einstellen kann.

Damit ich jedoch alle Temperaturen zu jeder Zeit ablesen kann, dachte ich, dass ich pro 2 Terrarien ein 4*20 LCD in Betrieb nehme.

Wenn mein Projekt fertig wird, werde ich es auf jeden Fall hier in diesem Forum posten, da ihr mir dabei doch bei einigen Problemen geholfen habt. Hier für nochmals einen herzlichen Dank an Alle.

Ich werde das mit dem "___lcdno" heute Abend noch ausprobieren. :rolleyes:

Freundliche Grüsse
Shurikn
 
Hallo Shurikn!

OK, dann wissen wir jetzt wenigstens, was du genau machen möchest und warum du nun fünf 4-Zeilen Displays mit verschiedenen Inhalten verweden möchtest.

Als ich deine Zeilen eben gelesen habe ist mir spontan dazu nur I2C eingefallen.
Wie komme ich darauf....
  • mehrere LCD`s am I2C-Bus möglich
  • zusätzliches Modul für Eingabe der Werte möglich
  • durch Verwendung von "Extendern" kannst du den BUS bis 250m verlängern
  • es werden maximal nur 3 Pins (SCL & SDA & INT0 bzw. 1) am AVR benötigt
  • du kannst jederzeit neue Komponenten hinzufügen

Ich weiß ja nicht ob deine zehn Terrarien alle beieinander stehen, aber durch die Möglichkeit die BUS-Leitungen auf einige Meter hin auszudehnen, kannst du die Displays dann direkt an die Gehäuse setzen.

Theoretisch kannst du dann auch gleich die Temperaturerfassung mit I2C-Tempsensoren machen (DS1631, DS1624,...)!
Obendrein hättest du die Möglichkeit bei jedem LCD noch eine zusätzliche "Schnittstelle" (5polige Buchse) für eine externe Eingabeeinheit (z.B. Matrixtastatur) zu integrieren.
So kannst du dann direkt an jedem Terrarium vor dem LCD deine Sollwerte eingeben. :)


Ich habe mit dem Thema "Auslagern von LCD und Tastatur per I2C" ebenfalls mal angefangen und mir eine Art "Serviceeinheit" gebaut---> KLICKST DU !

Was mir zur Zeit noch fehlt ist der "Feldversuch" den I2C-BUS mit den zugehörigen IC`s auf bis zu 100m Leitungslänge zu testen.


Grüße,
Cassio
 
Hallo Cassio!

Dein Debug-Gerät "Ise" sieht ja toll aus. Schon gewusst dass einer der heiligsten Schreine in Japan, Ise Shrine, in Ort Ise liegt, und die Japaner deshalb auch oft ihre Läden, Geräte, usw. Ise benennen? ;)

Ich werde mal sehen, ob ich noch einen PCF8574 herumliegen habe. Für meine 8*8 Matrix Tastatur benutze ich bereits einen PCF8574. Da man ja aber bis zu 8 dieser I/O Erweiterung einsetzen kann, sollte es gerade noch funktionieren :D .

Ich habe mir überlegt, ob ich evtl einen 6. LCD einsetze sollte um die Zeit und sonstige allgemeine Werte anzeigen zu lassen. Somit kann ich all die Einstellungen für alle 10 Terrarien auf diesem einen LCD mit einer Tastatur einstellen. Der Vorteil ist, so denke ich zumindest, dass ich die Einstellungen an einem zentralen Ort vornehmen kann, obwohl die Terrarien aufeinander gestapelt sind.

Weshalb wird hier der Int0 bzw Int1 für die I2C gebraucht?

Kannst Du mir vielleicht noch einen Tipp geben, welcher Extender ich kaufen sollte, falls ich überhaupt einen brauche, da die max. Länge der Kabel bei max. 3m liegen wird.

Ach noch was, ich brauche den DS18B20 für die Temp-Messungen. Bin mir nicht sicher ob mein Formel negative Werte anzeigen kann, aber soo kalt darf es in meinem Schlangen-Terri eh nie werden... :eek:

Gruss
Shurikn

Edit: ach ja, falls die 8 PCF8574 nicht reichen gibt es ja noch den PCF8574A ;)
 
Schon gewusst dass einer der heiligsten Schreine in Japan, Ise Shrine, in Ort Ise liegt, und die Japaner deshalb auch oft ihre Läden, Geräte, usw. Ise benennen? ;)

Hallo!

Öhm...... nö, wuste ich nicht! :hmmmm:

Ich bin aber auch kein Japaner und habe da lediglich nur den deutschen AKF angewendet......

Abkürzfimmel :D

Du meinst also, ich sollte mein Gerät auf dem japanischen Markt anbieten?
Auf Grund der Bezeichnung müssten sie dann ja schon vor mir auf die Knie fallen. :D



Ach noch was, ich brauche den DS18B20 für die Temp-Messungen.

Das ist schon klar.
Allerdings..... wenn du den I2C-BUS sowieso am laufen hast, warum noch einen 1-Wire-BUS zusätzlich verwenden? :hmmmm:
So hättest du alles mit einer BUS-Technik "erschlagen" und gut. :)

Schau doch mal hier---> DS1624 I2C-Tempsensor

Ich habe mir überlegt, ob ich evtl einen 6. LCD einsetze sollte um die Zeit und sonstige allgemeine Werte anzeigen zu lassen.

....

Da man ja aber bis zu 8 dieser I/O Erweiterung einsetzen kann, sollte es gerade noch funktionieren

Warum auch nicht? So hast du eine "zentrale Anzeige- und Eingabe-Einheit" (ZAEE ;) ) für den Mega32.

Da es von den PCF8574 auch eine "A"-Version gibt, kannst du sogar 16 Einheiten an den BUS hängen..... 8x PCF8574 und 8x PCF8574A ! ;)



Weshalb wird hier der Int0 bzw Int1 für die I2C gebraucht?

Den INT kannst du für die I2C-Matrixtastatur verwenden.... musst es aber nicht. ;)
Ich habe allerdings die Erfahrung gemacht, dass man ohne die INT-Variante die Tastatur im laufenden Programm nicht einfach vom BUS entfernen kann....
Außerdem finde ich es sinnvoller die Matrix nicht permanent im Programm abzufragen, wenn doch gar keine Tasten gedrückt wurden.
Aus dem Grunde würde ich den INT immer mit einplanen..... es sei denn, es geht nicht anders. ;)




Mal etwas anderes......
Soll dein Mega32 denn 10 verschiedene Lampen dimmen und dann auch noch 10 verschiedene 230V-Heizungen regeln? :eek:
Laufen die dann alle auf dem selben Außenleiter, z.B. L1?
Von der Leistung her wäre das ggf. machbar.... 250W x 10 Stück = 2500W Heizleistung
Ich frage ja nur wegen der "NDE............ Nulldurchgangserkennung" der Wechselspannung.
Vielleicht wird der Mega32 insgesamt doch etwas knapp? :hmmmm:


Grüße,
Cassio
 
Also mit deiner Bezeichnung ISE hast Du schon zu 90% richtig gemacht im japnanischen Markt :D .

Dass ich die DS18B20 für Temp-Messungen brauche hat schon den Nachteil, dass ich eben noch einen 1-Wire-Bus verwenden muss. Der Vorteil ist jedoch, dass ich mit dem DS18B20 pro Sensor 9.5 CHF spare :D . Ein DS18B20 kostete mich gerade mal 1.5 CHF. Ein DS1624 würde mich 11 CHF kosten, wenn ich mehr als 10 Stück kaufen würde...

Ja, ich werde wahrscheinlich eine ZAEE errichten ;)

Nach deiner Argumentation werde ich wohl noch heute das Int für meine Tastatur hinzufügen. Die Displays brauchen jedoch keine Int's, nicht wahr?

Die 12V LED werde versuchen mit TLC59116 und mit Transistoren zu dimmen. Sollte eigentlich kein Problem sein und somit entlastet er auch mein atmega :rolleyes: .

Wegen der Dimmer für die Heizmatten (voraussichtlich 25 W pro Matte) habe ich leider noch nicht testen (nachbauen) können. Ich hatte mal vor ca. 1,5 Monat den Dimmer von Markus nachzubauen, es fehlte mir aber die Zeit. Sehr wahrscheinlich werde ich hier für jeden einzelnen Dimmer ein atmega8 einsetzen und dann mit I2C mit Master-Slave Funktion ausstatten, damit der Master (ZAEE) dann den einzelnen atmega8 die Dimmwerte durchgeben kann.

Ja, der atmega32 ist doch was knapp für mein Vorhaben, da könntest Du wohl recht haben :D

Gruss
Shurikn
 
Hallo !

Vielleicht ist die Idee mit den DS18B20 Sensoren doch nicht so schlecht.
Die kleinen Dreibeiner kann man extern besser einsetzen, als die 8-beinigen Käfer für den I2C.
Außerdem müsste ich erst mal schauen, ob die DS1624 und DS1631 verschiedene Standardadressen verwenden, sonst kommst du nur auf 8 Sensoren.

Wenn du jedem Dimmer einen eigenen Controller spendierst, dann solltest du auch keine Timingprobleme mit dem restlichen Programm bekommen und der ATMega32 sollte wohl auch ausreichen.
Wenn es hinterher doch eng wird, kannst du immer noch auf den Mega644 umsatteln.

Theoretisch würde für die "Dimmer" ein Tiny25 reichen......
das Blöde ist nur, dass INT0 und SCL auf dem selben Pin liegen. :mad:
Ob die NDE (Nulldurchgangserkennung) bzw. neudeutsch ZCD (ZeroCrossingDetection :D ) auch mit den PCINT`s zuverlässig funktioniert kann ich leider nicht sagen.
Wenn das problemlos laufen sollte, dann kannst du den Tiny25 für die Dimmer nehmen.
PinB.2 = SCL
PinB.0 = SDA
PinB.1 = PCINT1 (für NDE)
PinB.3 oder PinB.4 als Ausgang zum Optotriac.

Der Speicher von 2K sollte dabei wohl auch reichen...


Wegen der 25W je Heizung....
Ich habe meinen "Norkadosendimmer" mal mit 11W getestet...... und es gab keine Probleme.


Grüße,
Cassio
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)