www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Konstansstromquelle stört µC/LCD


Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich hab hier eine Konstantstromquelle (LED-Treiber) mit 1,4A und einen 
ARM7 µC, der ein (COG) 128x64px LCD mit UC1601SA ansteuert ...

Mein Problem ist nun, dass das LCD einwandfrei funktioniert, wenn die 
Konstanstromquelle ausgeschaltet ist. Ist sie eingeschaltet gibt es 
Übertragungsfehler über den SPI-Bus.

Das LCD ist per SPI angebunden und hat keine offenen Eingänge, die 
Signal treiben alle sauber - nachgemessen mit Oszi.

Spannungsversorgung (inkl Masse) sind seperat.

Wenn ich den Treiber in der Hand halte, scheint die Übertragung zu 
funktionieren, leg ich sie weg, gibts plötzlich wieder Fehler ...

Weiß jemand, was man da machen kann?

Grüße,
Thomas

Autor: Andreas K. (derandi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist die Konstantstromquelle für die Hintergrundbeleuchtung gedacht?

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andreas K. schrieb:
> Ist die Konstantstromquelle für die Hintergrundbeleuchtung gedacht?

Jap, also nein, nicht direkt ... hier gibts ein Video von dem Ding:

Youtube-Video "Lowest Cost DIY LCD Projector with 64x64px"

Ist eine Art Mini-Low-Cost Projektor, der einen 64*64px Teil an die Wand 
beamen soll, daher die starke LED

Grüße,
Thomas

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thomas schrieb:
> Wenn ich den Treiber in der Hand halte, scheint die Übertragung zu
> funktionieren, leg ich sie weg, gibts plötzlich wieder Fehler ...

Klingt nach offenen Eingängen des MC.

Prinzipiell sind offenen Eingänge nicht sehr schlimm, sie erhöhen nur 
den Stromverbrauch.

Deshalb muß da noch ein Softwarefehler hinzukommen, z.B. Interrupts 
dafür enabled oder beim Einlesen nicht ausmaskiert.

Anfänger vergessen sehr oft, alle anderen Pins zu maskieren, wenn sie 
nur einen Pin einlesen wollen und werten dann immer den ganzen Port aus. 
Das geht schief.


Peter

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter Dannegger schrieb:
> Klingt nach offenen Eingängen des MC.
> Prinzipiell sind offenen Eingänge nicht sehr schlimm, sie erhöhen nur
> den Stromverbrauch.

Jap, ist ein Mini-ARM7-Board, Marke Eigenbau, und ich verwende es 
praktisch bei jedem neuen Projekt, seit ungefähr 3 Jahren.

Die meisten Pins sind tatsächlich offen, weil ich sie nicht gebraucht 
hab. Ich kann mal die SAM7-Internen Pullups für die unbenutzten Pins 
aktivieren und schauen, ob sich dann dadurch was ändert ...

Hmm ... offener Pin mit Interrupt aktiviert? Zu 95% nicht, das werde ich 
aber prüfen ... Aber ich seh auch nicht, wie das das SPI stören würde 
...

Der µC hängt sich auch nicht auf oder sowas, sobald ich den LED-Treiber 
ausschalte, fängt sich auch das LCD wieder ...


Grüße,
Thomas

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn's ein Hardwareproblem ist, dann könnten Schaltung und Aufbau in 
Bildform mehr bringen als reine Prosa.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. K. schrieb:
> Wenn's ein Hardwareproblem ist, dann könnten Schaltung und Aufbau in
> Bildform mehr bringen als reine Prosa.

µC und LCD-Platine:
http://home.in.tum.de/~pototsch/webcam/1.jpg
http://home.in.tum.de/~pototsch/webcam/2.jpg

LED-Treiber:
http://home.in.tum.de/~pototsch/webcam/7.jpg
http://home.in.tum.de/~pototsch/webcam/8.jpg

Zusammengebaut:
http://home.in.tum.de/~pototsch/webcam/11.jpg

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Btw ... beim 10pol Flachbandkabel zum LCD ist jeder 2te Pin GND.

Vlt fängt das ja irgendwelche Störungen ein, weil die beiden Potentiale 
für µC+LCD und LED-Treiber getrennt sind ...

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was mir an der Platine als Erstes auffällt ist das was mir dort nicht 
auffällt: Kondensatoren zwischen VDD/GND dicht an den entsprechenden 
Pins.

http://www.atmel.com/dyn/resources/prod_documents/...

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. K. schrieb:
> Was mir an der Platine als Erstes auffällt ist das was mir dort nicht
> auffällt: Kondensatoren zwischen VDD/GND dicht an den entsprechenden
> Pins.

Bei welcher Platine?

Auf der LED-Platine gibs die 100nF direkt an der Versorgungsspannung und 
einen 10uF Tantal, auf der ARM7-Platine gibts 5*100nF und 2*4,7uF auf 
der Unterseite des Moduls, direkt an den Spannungspins.

100nF-Cs hab ich mir beim LED-Treiber gespart, wobei sie wohl nicht 
falsch wären ...

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thomas schrieb:

> Bei welcher Platine?

Der Controller-Platine. Wenn die hinten sind, dann ok, aber vor vorne 
sind die eben nicht zu erkennen.

Ein Schaltbild funktioniert in Bildform viel viel besser als in 
Textform.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab das Problem gefunden ... War software ...

Vlt interessiert es jemanden:

Es gibt 2 Funktionen, die Daten oder Kommandos an das LCD schicken:
void lcd_command(char c)
{
  AT91F_PIO_ClearOutput(AT91C_BASE_PIOA, SPI_CD);
  spi_SendData(0,c);
}

void lcd_data(char c)
{
  AT91F_PIO_SetOutput(AT91C_BASE_PIOA, SPI_CD);
  spi_SendData(0,c);
}

und die spi_SendData-Funktion:
void spi_SendData(u8 adr, u16 data)
{
  volatile unsigned int sr;
  
  do
  {
    sr = AT91C_BASE_SPI->SPI_SR;
  } while (!(sr & AT91C_SPI_TXEMPTY));

  unsigned int tdr = 0;
  tdr |= AT91C_SPI_LASTXFER;
  tdr |= (adr & 0x0000000f) << 16;
  tdr |= (data & 0x0000ffff);
  AT91C_BASE_SPI->SPI_TDR = tdr;
}

Das Problem war, dass nach dem Transfer eines Datums/Kommandos gleich 
neue Daten verschickt wurden. Es wird davon ausgegangen, dass die 
spi_SendData-Funktion so lange wartet, bis der TX-Buffer leer ist.

Das, was aber passieren kann - und das war anscheinend haarscharf an der 
Grenze - war, dass das Bit SPI_CD (Selektion Datum/Kommando) 
gesetzt/gelöscht wurde, wenn der SPI-Transfer noch nicht beendet war, 
weil an der Stelle nicht gewartet wurde, dass der TX-Buffer leer ist.

Erstaunlicherweise hat es immer funktioniert, wenn die 5W-LED und der 
Treiber aus waren, aber nur selten, wenn sie an waren.

Lustig sowas ;-)

Erst durch Messung der Signale im Zeitbezug zueinander bin ich dem auf 
die Spur gekommen ... Ich dachte wirklich, irgendwas wäre weich oder 
falsch konfiguriert oder fehlerhafte Hardware ...

Vielen Dank an alle, die versucht haben mir zu helfen, auch wenns zum 
Schluss garnicht die Hardware war ...

Grüße,
Thomas

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Finde ich ne lustige Idee übrigens, sieht ziemlich "low cost" aus. Das 
Objektiv vorne kriegt man ja auch günstig von Pollin o.ä. wenn ich nicht 
irre.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Simon K. schrieb:
> Finde ich ne lustige Idee übrigens, sieht ziemlich "low cost" aus. Das
> Objektiv vorne kriegt man ja auch günstig von Pollin o.ä. wenn ich nicht
> irre.

Ich hab das Objektiv für 6EUR bei Eb*y ersteigert :)

Glaub, das teuerste ist da nur das selbstgebastelte µC-Board und da kann 
man ja eigentlich alles hernehmen, was man möchte.

Ansonsten hab ich die LED vom Reichelt (7EUR), Kleinkram für den 
LED-Treiber (5EUR), einen alten CPU-Kühler, ein paar Linsen von 
Astromedia (1,50EUR pp), ein polnisches 128x64px LCD für 8,50EUR ...

Für vieles reicht so ein monochromer LowRes-Beamer aus :)

Grüße,
Thomas

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thomas schrieb:
> Ich hab das Problem gefunden ... War software ...
...

Das ist sehr schön, daß auch mal jemand etwas Feedback gibt.

Man sollte meinen, sowas wäre selbstverständlich, wenn man andere um Rat 
fragt.
Aber leider herrscht heutzutage fast nur Schweigen im Walde. Man sollte 
in der Schule ein Fach Höflichkeit und Freundlichkeit in den Lehrplan 
aufnehmen, es täte Not.
Hast jetzt nen dicken Pluspunkt bei mir.


Peter

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.