Schaltung mit AVR funktioniert unter bestimmten Bedingungen nicht

#3951395
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
Gast #3951613
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.
#3951680
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
Gast #3951690
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.
Gast #3951721
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...
Gast #3951746
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren