Forum: Mikrocontroller und Digitale Elektronik LEDs leuchten nur mit Finger am Controller (Word2Clock)


von Nino K. (lnino)


Angehängte Dateien:

Lesenswert?

Hallo an alle,

ich habe ein ziemlich seltsames Problem bei einer Word2Clock Variante.

http://kevinrye.net/files/word_clock.php

Die LEDs leuchten nur dann wenn ich mit meinem Finger auf den ATMega328p 
oder darüber bin. Das Programm an sich läuft aber weiter.

Hier ein Video dazu zur besseren Darstellung:

https://www.dropbox.com/s/j7z566uyh8vw5sg/video%2003.01.16%2019%2030%2046.mov?dl=0

Die LEDs haben eine gemeinsame Anode.

Die Platine und der Schaltplan sind im Anhang zu sehen.

Was könnte ich hier falsch gemacht haben?

von Teo D. (teoderix)


Lesenswert?

Man sollte mal unter die Lötkleckse gugen, ob das auch richtig gelötet 
is!
Und dann a bisserl mehr Mühe geben, damit sowas nich wieder passiert.

von loeti2 (Gast)


Lesenswert?

Hi,
mit deinen fetten Lötklecksen eine Lötbrücke gebildet,
die unter Druck von oben sich wieder öffnet?

Deshalb alle Lötstellen der Platine kontrollieren und wenn möglich etwas 
Lötzinn wegnehmen (Entlötlitze).

Ansonsten könnte es alles mögliche sein ;-)

von Draco (Gast)


Lesenswert?

Stell mal was anderes drauf, vielleicht isses ja bloß ein Wackelkontakt 
oder kalte Lötstelle?!

von Flip B. (frickelfreak)


Lesenswert?

die oe leitung ist unterbrochen oder wird von der software nicht 
angesteuert.

von Gerhard O. (gerhard_)


Lesenswert?

Meistens ist das ein Symtom eines offenen CMOS Eingang der da in der 
Region zwischen GND und VCC schwebt. Wenn Du Deine Hand in die Nähe 
bringst verschieben kapazitive oder elektrostatische potentiele den 
Logischen Pin Zustand.

Überprüfe Deinen Schaltplan, messe ob alle Eingänge anweisungsgemäß 
angeschloßen sind. Ungebrauchte Pins sollten immer irgendwie in default 
gebracht werden (Pullups aktivieren, oder pins auf Ausgang schalten) 
nicht aktivierte Pullups an vorgesehene Eingänge kann auch eine Ursache 
sein.

Der Reset Pin darf nicht versehentlich in der Luft hängen. Auch eine 
schlechte IC Fassung kann Probleme verursachen. Es kann auch passieren, 
dass ein nicht gesehener verbogener pin nicht im Fassungskontakt steckt.

Versuche in der Zukunft nur die Hälfte Lötzinn zu verwenden.

von Flip B. (frickelfreak)


Lesenswert?

oder strobe oder beide. Initialisierung von port b?

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Versehentlich die QTouch Library eingebunden?

* duckundweg *

:D

von Nino K. (lnino)


Lesenswert?

Wenn ich was anderes außer meinen Finger drauflege passiert nichts. Nur 
mit dem Finger gehen die LEDs an.

Tja die Lötklekse sollten nun bald Geschichte sein, habe mir zu 
Weihnachten einen ERSA Feinlötkolben gegönnt.

von Nino K. (lnino)


Angehängte Dateien:

Lesenswert?

Ich habe nun noch einen Test gemacht. Wenn ich mit dem Schraubendreher 
auf PB0 vom 328p ankomme, dann gehen auch wieder die Lichter an.

von Tom (Gast)


Lesenswert?

Theorie:
PB1 (Pin 9) geht an die output-enable-Eingänge der Schieberegister, wird 
aber soweit ich das erkennen konnte, nie konfiguriert oder gesetzt, 
müsste also (wenn das Arduino-Framework nicht die nicht verwendeten Pins 
im Hintergrund irgendwie setzt. Habe keine Ahnung von Arduino) in der 
Luft hängen. Mit deiner Hand (oder dem Schraubenzieher am Nachbarpin) 
koppelst du kapazitiv irgendwelchen Mist ein, der den Pegel an dieser 
Leitung gelegentlich hoch zieht und die Ausgänge enablet.

Übrigens ist megacleverer Code wie der von Herrn Rye der Grund, warum 
ich Anfängern von Makros abrate, wenn es irgendwie anders geht.
1
#define HTEN  Display3=Display3 | (1<<3)

von Nino K. (lnino)


Angehängte Dateien:

Lesenswert?

Ich habe nun mit der Entlötlitze jede einzelne Lötstelle entfernt und 
nochmal neu gemacht.

Leider ist das Problem noch immer das gleiche.
Nur mit meinem Finger in der Nähe oder auf dem 328p leuchten die LEDs.
Das Programm läuft aber normal weiter, nur die LEDs gehen aus.

Kann ich hier irgendwo eine Brücke oder ähnliches setzen, damit die LEDs 
auch ohne Finger leuchten?

Die Lötstellen können wir nun sicherlich ausschließen, diese sind nun 
sauber.

Bin um jeden Tipp dankbar.

Seltsam ist nur, dass die Uhr von Kevin Rye schon mehrere gemacht haben 
und keiner hatte ein ähnliches Problem. Selber Code, selbes Boardfile.

von Tobias .. (bitfehler)


Lesenswert?

Kannst du denn mal ein Bild von der Oberseite zeigen?

Kann ja sein, dass der Mega nicht richtig in der Fassung steckt (bzw. 
Beinchen daneben) und du per Fingerdruck Kontakt herstellst?

von Harald (Gast)


Lesenswert?

Ich sehe überhaupt keinen Abblockkondensator, kann das sein?

Schaltungen funktionieren auch ohne eine übertriebene Anzahl von 
"Angstkondensatoren", aber überhaupt keiner kann auch nicht gut sein. 
Außerdem würde ich nochmal den Hinweis von Tom verfolgen, denn Arduino 
setzt im Framework IMHO keine Ports von alleine.

von Nino K. (lnino)


Angehängte Dateien:

Lesenswert?

Anbei ein Bild der Platine von oben. Sieht eigentlich ganz okay aus.

Ich habe 2x 22pF Kondensatoren für den Quarz und einen 0,1µF Kondensator 
für den 328p. Sollte das nicht reichen? Ich habe ein 5V 1A Netzteil und 
brauche somit auch keinen Spannungsregler.

Mit dem Hinweis von Tom kann ich aktuell nicht viel anfangen. Ist das so 
gemeint, dass PB1 im Code nirgends referenziert wird? Bin nämlich auch 
kein Arduino Spezialist.

von Nino K. (lnino)


Lesenswert?

Habe nun mal das Pinout vom Arduino gecheckt.

Meiner Meinung nach sollte das passen.
1
// hardware constants
2
int LEDClockPin = 6;
3
int LEDDataPin = 7;
4
int LEDStrobePin = 8;
5
int FWDButtonPin = 4;
6
int REVButtonPin = 5;
7
int EnablePin = 9;

9 bedeutet PB1 - welcher die Verbindung zu den Shift Registern ist.

Somit wird im Code darauf referenziert.

Laut dieser Tafel:
http://wwww.radikalblogger.de/wp-content/uploads/2015/09/uno.jpg

Sonst noch irgendwelche Ideen?

Wenn ich einfach eine Antenne wie beim Radio setze, oder ein 
Erdungskabel wie bei diversen elektronischen Geräten?

von Datenblattfinder (Gast)


Lesenswert?

Nino K. schrieb:
> einen 0,1µF Kondensator
> für den 328p

Hat der 328P nur einen Versorgungsspannunganschluß? Dann fehlen immer 
noch die 7 Kondensatoren für die anderen ICs.

von Nino K. (lnino)


Angehängte Dateien:

Lesenswert?

Ich habe es nun mit einem Erdungskabel versucht und siehe da es 
funktioniert.

Wenn dieses Stück Kupferdraht am PB1 gelötet ist, welcher die Verbindung 
zu den Shift Registern ist, dann scheinen die LEDs wie sie sollen ohne, 
dass ich den Finger benutzen muss.

Naja ist ein Workaround, aber ich denke unbedenklich. Die Platine sollte 
nicht abbrennen. :-)

Zu den Kondensatoren:
Das könnte in der Tat eine logische Ursache sein.
Hatte ich nicht bedacht, dass nicht nur den 328p sondern auch jeder 
andere IC einen eigenen Kondensator benötigen könnte.

von Rene H. (Gast)


Lesenswert?

Da fehlen jede Menge Abblockkondensatoren.

Ein Oszi hast Du nicht?

Grüsse,
René

PS: der Quarz schwingt auch ohne Finger?

von Tobias .. (bitfehler)


Lesenswert?

Nino K. schrieb:
> Ich habe es nun mit einem Erdungskabel versucht und siehe da es
> funktioniert.

Ich würde das nicht Erdungskabel nennen, dass ist eher eine Antenne, die 
jegliche Störungen einfängt.

von Joachim B. (jar)


Lesenswert?

Rene H. schrieb:
> Da fehlen jede Menge Abblockkondensatoren.

stört mich auch gewaltig, nicht mal einer am AVR, von den 40xx ganz zu 
schweigen, wäre echt Zufall wenn das so läuft

von Hubert G. (hubertg)


Lesenswert?

Derjenige der die Schaltung und Layout entworfen hat traut sich einiges.
Nur ein 1µ Kondensator zwischen VCC und GND in der ganzen Schaltung.
Mich würde es nicht wundern wenn da etwas ganz grauenhaft schwingt und 
du diese Schwingungen durch das Berühren unterdrückst.
Besorge dir ein paar SMD-Kondensatoren 0806 mit 100n. Die passen 
zwischen die Beine des Mega. An die VCC-Beine der 4094 sollten auch 
welche.

Wenn ich auf der Platine die herrlich dünnen VCC-Leitungen sehe, auch 
zum Display, da kommt richtig Freude auf.

von Nino K. (lnino)


Lesenswert?

Rene H. schrieb:
> Ein Oszi hast Du nicht?

Nö Oszi habe ich leider keinen. Aber ich gehe mal davon aus, dass der 
Quarz normal schwingt. Programm läuft normal und die Uhrzeit stimmt 
exakt.

Wenn der Quarz nicht schwingen würde, dann würde er mit Standard 8Mhz 
schwingen und dann würde das Demo Programm wesentlich langsamer laufen.

Wo bekomme ich denn ein günstiges Oszi her? Brauche es ja nur alle 
heiligen Zeiten. Vielleicht kennt jemand einen guten und günstigen 
Anbieter.

Vermutlich werde ich in dem Eagle Board File noch die fehlenden 
Kondensatoren ergänzen und nochmal neu ätzen lassen.

Ich könnte aber auch versuchen auf die Unterseite der Platine die 
fehlenden Kondensatoren einzulöten, was aber ziemlich unschön wäre.

Oder doch mit dem Workaround der Antenne leben. Solang es funktioniert. 
:-)
Zumindest weiß ich nun, dass es mit ziemlicher Sicherheit an den 
Kondensatoren liegen wird.

Danke an alle für die Hilfe.

von Nino K. (lnino)


Lesenswert?

Hubert G. schrieb:
> Derjenige der die Schaltung und Layout entworfen hat traut sich einiges.
> Nur ein 1µ Kondensator zwischen VCC und GND in der ganzen Schaltung.
> Mich würde es nicht wundern wenn da etwas ganz grauenhaft schwingt und
> du diese Schwingungen durch das Berühren unterdrückst.
> Besorge dir ein paar SMD-Kondensatoren 0806 mit 100n. Die passen
> zwischen die Beine des Mega. An die VCC-Beine der 4094 sollten auch
> welche.

Hat der Mega nicht schon einen Kondensator? Oder ist der zu weit weg?

Okay somit...

3 Kondensatoren an die 3 4094.
3 Kondensatoren an die 3 Driver.
1 Kondensator an den Mega.

Soll ich noch einen Kondensator setzen wo ich den Stromstecker anstecke?

von qwertzuiopü+ (Gast)


Lesenswert?

Nino K. schrieb:
> Soll ich noch einen Kondensator setzen wo ich den Stromstecker anstecke?

Hängt davon ab, wie lang die Leitung vom Netzteil ist. Bei der aber 
nicht ganz unwesentlichen Anzahl LEDs würd ich mal 1000µF o.ä. als 6,3V 
Standardelko vorsehen.

von Nino K. (lnino)


Lesenswert?

Habe mir mal die Datenblätter von dem 4094 und ULN2003 angeschaut.

Beim 4094 finde ich VCC und GND.
Somit ein leichtes dort den Kondensator einzulöten. Ein Bein an Plus, 
Ein Bein an Minus.

Beim ULN2003 finde ich aber nur GND.
Wie soll ich da einen Kondensator einlöten?

von Datenblattfinder (Gast)


Lesenswert?

Nino K. schrieb:
> Beim ULN2003 finde ich aber nur GND.
> Wie soll ich da einen Kondensator einlöten?

Es gibt z.B. noch den Pin 9, an dem normalerweise die positive 
Schaltspannung liegt.

von qwertzuiopü+ (Gast)


Lesenswert?

Beim ULN auch nicht nötig, das sind einfach 7 Transistoren in einem 
Gehäuse.

von Nino K. (lnino)


Lesenswert?

Datenblattfinder schrieb:
> Es gibt z.B. noch den Pin 9, an dem normalerweise die positive
> Schaltspannung liegt.

Oh, an diesem Pin hängt in dieser Schaltung rein gar nichts. :-)

von Nino K. (lnino)


Lesenswert?

qwertzuiopü+ schrieb:
> Beim ULN auch nicht nötig, das sind einfach 7 Transistoren in einem
> Gehäuse.

Okay, dann fasse ich mal zusammen:

+ 1 Kondensator an jeden 4094. (0,1µF)
+ 1 Kondensator an den Mega. (0,1µF)
+ 1 Kondensator zum Pin vom Stromstecker. (1000µF)

Dann sollte eigentlich alles schön schwingen.
Stimmt das so?

von Datenblattfinder (Gast)


Lesenswert?

Nino K. schrieb:
> Oh, an diesem Pin hängt in dieser Schaltung rein gar nichts. :-)

Normalerweise ist dieser Pin der gemeinsame Anschluß der eingebauten 
Freilaufdioden. Wenn Du keine Relais damit schaltest, ist der Pin nicht 
wichtig, dann braucht er auch keinen Kondensator.

von Harald (Gast)


Lesenswert?

Nino K. schrieb:
> Datenblattfinder schrieb:
>> Es gibt z.B. noch den Pin 9, an dem normalerweise die positive
>> Schaltspannung liegt.
>
> Oh, an diesem Pin hängt in dieser Schaltung rein gar nichts. :-)

Ist in dieser Anwendung nicht notwendig, also OK

von Harald (Gast)


Lesenswert?

Piepe mal die Leitung von PB1 von IC-Pin zu IC-Pin durch, vielleicht hat 
die Leiterbahn einen Haarriss?

von Tom (Gast)


Lesenswert?

Nino K. schrieb:
> int EnablePin = 9;
>
> 9 bedeutet PB1 - welcher die Verbindung zu den Shift Registern ist.
>
> Somit wird im Code darauf referenziert.

Nein. Es wird nur eine Variable mit 9 initialisiert. Die anderen 
Ausgänge sind alle als Ausgänge initialisiert
pinMode(LEDStrobePin, OUTPUT);
und werden im Code auch angesprochen:
digitalWrite(LEDStrobePin,HIGH);
Das sind die absoluten Arduino-Basics...

Ich wette, dass es funktioniert, wenn du in Init die Zeilen
1
pinMode(EnablePin, OUTPUT);
2
digitalWrite(EnablePin, HIGH);
ergänzt.

von Nino K. (lnino)


Angehängte Dateien:

Lesenswert?

Tom schrieb:
> Ich wette, dass es funktioniert, wenn du in Init die Zeilen
>
1
> pinMode(EnablePin, OUTPUT);
2
> digitalWrite(EnablePin, HIGH);
3
>
> ergänzt.

Danke Tom. Das war exakt das Problem.

Ich habe nun bei der Initialisierung folgendes drin stehen:
  // initialise the hardware
  // initialize the appropriate pins as outputs:
  pinMode(LEDClockPin, OUTPUT);
  pinMode(LEDDataPin, OUTPUT);
  pinMode(LEDStrobePin, OUTPUT);
  pinMode(FWDButtonPin, INPUT);
  pinMode(REVButtonPin, INPUT);
  pinMode(EnablePin, OUTPUT);
  digitalWrite(EnablePin, HIGH);

Und es läuft super.

Zuvor habe ich noch die 100N Kondensatoren reingelötet.
Dies hat aber leider nichts gebracht.

Erst als ich den Code wie Tom schrieb, angepasst hatte funktionierte 
alles.

von Joachim B. (jar)


Lesenswert?

Nino K. schrieb:
> Zuvor habe ich noch die 100N Kondensatoren reingelötet.
> Dies hat aber leider nichts gebracht.

doch auf jeden Fall mehr Betriebssicherheit!

von Hp M. (nachtmix)


Lesenswert?

Nino K. schrieb:
> Die LEDs leuchten nur dann wenn ich mit meinem Finger auf den ATMega328p
> oder darüber bin. Das Programm an sich läuft aber weiter.
> .....
> Was könnte ich hier falsch gemacht haben?

Weiss ich nicht, aber mit Sekundenkleber könntest du den Finger dort 
dauerhaft fest machen.

von Gerhard O. (gerhard_)


Lesenswert?

Der Sicherheit halber schlage ich vor die Einstell Inputs 
vorsehungsweise so zu deklarieren:

pinMode(FWDButtonPin, INPUT_PULLUP);

Sind in Deiner Schaltung wirklich Pullups eingebaut?(Kann am iPad die 
Schaltbild Datei nicht öffnen)

Dadurch wird sicher gestellt dass Deine Inputs nicht im "Äther" 
schweben...

von flip (Gast)


Lesenswert?

Flip B. schrieb:
> die oe leitung ist unterbrochen oder wird von der software nicht
> angesteuert.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.