Forum: Mikrocontroller und Digitale Elektronik Schaltung mit AVR funktioniert unter bestimmten Bedingungen nicht


von Marcel S. (thason)


Lesenswert?

Hi @all,

ich habe mir über die Feiertage meinen eigenen RGB-Stripe Controller auf 
Basis eines Atmega328P-PU aufgebaut.

Die Funktionen im groben: manuelle Steuerung der einzelnen RGB-Kanäle 
mitteils Potentiometer, sowie können unterschiedliche Programme 
(Wechsellicht, Fading etc.) anhand eines Tasters angewählt werden.

Zusätzlich kann der Strip aber auch mit der Bluetoothverbindung des 
Smartphones angesteuert werden. In der Schaltung verwende ich hierfür 
das Bluetoothmodul HC-05. Die hierfür verwendete Android-App habe ich 
mir mit Eclipse selber geschrieben.

Problem: stelle ich das Breadboard, auf dem die Schaltung mit dem 
Atmega328P-PU und dem Bluetoothmodul aufgebaut ist in der Nähe meines 
LED-Fernsehers und meines Audioverstärkers (Kenwood), funktioniert weder 
die Bluetoothfunktion noch die manuelle Steuerung.

Ich kann mich zwar mit meinen Smartphone und dem Modul verbinden, jedoch 
werden die programmierten Funktionen nicht an den AVR weitergegeben und 
verarbeitet. Gehe ich auf manuelle Steuerung "stürzt" der AVR häufig ab, 
führt also einen selbstständigen Reset durch.

Das mysteriöse: Entferne ich die Schaltung ca. 2-3m von meinem 
Verstärker bzw. Fernsehgerät funktioniert alles super ohne Probleme. 
Auch nach 12h und mehr "stürzt" der AVR nicht ab.

Vielleicht kann mir ja jemand von Euch verraten, woran das bewchriebene 
Problem liegt und wie ich es am besten abstellen kann. Strahlt der 
Verstärker oder Fernseher irgendwelche Störsignale aus und wenn ja, kann 
ich diese irgendwie mittels Filter umgehen?

Viele Grüße, Thason

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Marcel Stach schrieb:
> das Breadboard, auf dem die Schaltung ... aufgebaut ist
Wie sieht das Ding aus? Hast du Blockkondensatoren? Wie wird es 
versorgt?

von Marcel S. (thason)


Angehängte Dateien:

Lesenswert?

Danke für Deine schnelle Antwort. Versorgt wird das ganze mit enem 12V / 
5A Netzteil. Was sind Blockkondensatoren?

Habe mal den Schaltplan als GIF an die Nachricht gehängt.

Viele Grüße, Thason

von Karl H. (kbuchegg)


Lesenswert?

Marcel Stach schrieb:
>  Was sind Blockkondensatoren?

Die, die du nicht verbaut hast, und die wir hier im Forum bei 9 von 10 
präsentierten Schaltungen anmahnen.

100nF keramische Kondensatoren an JEDEM Vcc/GND Pärchen des Prozessors 
(eigentlich an jedem Digital-IC) und so nahe wie möglich an die 
Prozessorpins heran.

von isidor (Gast)


Lesenswert?

Marcel Stach schrieb:
> Was sind Blockkondensatoren?

Kann man das essen?

Das ist das was in deiner Schaltung fehlt.

Abblock-Kondensatoren, die es dem Prozessor erst ermöglichen
eine stabile (störarme) Versorgungsspannung zu bekommen.

In vielen Application Notes nachzulesen.

von c-hater (Gast)


Lesenswert?

Marcel Stach schrieb:

> Was sind Blockkondensatoren?

C1,C2,C6,C7 aus dem geposteten Schaltplan z.B. sind klassische 
Blockkondensatoren.

> Habe mal den Schaltplan als GIF an die Nachricht gehängt.

Tja, leider fehlen da die Blockkondensatoren für die ICs, sowohl für den 
µC als auch für das Schieberegister. 100n für den µC und 10n für das 
Schieberegister, jeweils so dicht wie möglich zwischen den Vcc- und 
GND-Anschlüssen des jeweiligen IC positioniert, könnten schon genügen.

von qwertzuiopü+ (Gast)


Lesenswert?

Marcel Stach schrieb:
> Was sind Blockkondensatoren?

Damit wäre das Problem ja schon gefunden... Das sind die KerKos im 
Bereich um die 100nF, die du zwischen GND und VCC jedes ICs schalten 
solltest. Und so dicht wie möglich an den IC.

von qwertzuiopü+ (Gast)


Lesenswert?

lol, 4 Posts, die alle das gleiche sagen

von isidor (Gast)


Lesenswert?

Weitere Macken:

- Das dicke C7 ist äusserst ungünstig, es macht die Regeleigenschaften
des 7805 schlecht.

- die Tasten sind nicht entprellt (naja, vielleicht per Software)

von Bülent C. (mirki)


Lesenswert?

c-hater schrieb:
> 100n für den µC und 10n

Nur aus Interesse, warum ein 10n für den Schieberegister?

von isidor (Gast)


Lesenswert?

Bülent C. schrieb:
> Nur aus Interesse, warum ein 10n für den Schieberegister?

Ich sehe keine Notwendigkeit da an den NanoFarads zu sparen.

von Marcel S. (thason)


Lesenswert?

1000 - Dank für Eure Tipps und werde dies auch gleich nachholen. Ich 
selber betreibe das ganze nur aus Interesse, also als Hobby. Habe auch 
schon viel Literatur hierzu gelesen. Frage mich nur, warum man da nie 
etwas von solchen Kondensatoren erwähnt.

Eine Frage noch am Rande, könnt Ihr mir eine Literatur empfehlen bei der 
ich das Programmieren eines Microcontrollers in Maschinensprache lernen 
kann. Aktuell beschäftige ich mich nur mit der Entwicklungsumgebung von 
Arduino. Würde aber sehr gerne viel tiefer in die Thematik einsteigen.

Achso, die Taster sind Softwareseitig entprellt.

Viele Grüße, Thason

von isidor (Gast)


Lesenswert?

Marcel Stach schrieb:
> Frage mich nur, warum man da nie
> etwas von solchen Kondensatoren erwähnt.

Schau dir irgendeine funktionierende Schaltung (z.B. Arduinos)
an und du wirst überall diese Abblock-Kondensatoren finden.

In vielen Application Notes der Prozessorhersteller wird immer
wieder (gähn) darauf hingewiesen, daher ist dies eigentlich eine
Selbstverständlichkeit.
Nur dann nicht wenn man sie übersieht / vergisst.

von Max B. (theeye)


Lesenswert?

Schau mal hier AVR Checkliste.

Gruß Max

von c-hater (Gast)


Lesenswert?

Bülent C. schrieb:

> Nur aus Interesse, warum ein 10n für den Schieberegister?

Weil das dafür schlicht völlig ausreicht. Es schadet allerdings 
normalerweise auch nicht weiter, wenn du auch dafür ein 100nF-Teil 
verwendest.

Wenn man allerdings z.B. ein Backblech mit 100 solcher Schieberegister 
darauf hat, könnten 100nF pro Schieberegister u.U. schon wieder ziemlich 
kontraproduktiv wirksam werden.

"Viel hilft viel" ist nicht immer der cleverste Ansatz. Genau genommen 
eigentlich fast nie...

von c-hater (Gast)


Lesenswert?

Marcel Stach schrieb:

> Eine Frage noch am Rande, könnt Ihr mir eine Literatur empfehlen bei der
> ich das Programmieren eines Microcontrollers in Maschinensprache lernen
> kann. Aktuell beschäftige ich mich nur mit der Entwicklungsumgebung von
> Arduino. Würde aber sehr gerne viel tiefer in die Thematik einsteigen.

Du brauchst mindestens das A und O jeglicher sinnvoller 
Programmiertätigkeit:

-Bool'sche Logik
-Zahlensysteme (insbesondere natürlich das binäre)
-brauchbare allgemeine Mathe-Kenntnisse

Dazu noch:

-Eine gute Beschreibung des µC-Kerns des Zielsystems bezüglich bezüglich
 des Speicher-, Interrupt- und ggf. DMA-Layouts
-Eine gute Beschreibung der Peripheriebaugruppen
-Eine umfassende Referenz des Befehlssatzes des Zielsystems

Das meiste Zeug davon braucht man als guter Programmierer übrigens ganz 
unabhängig von der verwendeten Sprache, nur die Befehlssatzreferenz muß 
natürlich bei Programmierung in was anderem als Assembler durch die 
Sprachreferenz der verwendeten Sprache ersetzt bzw. ergänzt werden.

Bei Programierung in einer "OS-Umgebung" (Arduino ist auch schon ein 
sehr primitives OS) werden analog dazu die Details der Hardware weniger 
wichtig und müssen dann durch Kenntnisse der OS-APIs ersetzt bzw. 
ergänzt werden.

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.