Forum: Mikrocontroller und Digitale Elektronik [Atmega8] Überempfindliche störanfälle Schaltung


von JürgenK (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,



Also mein Projekt ist ein Atmega8, Display und Temperatursensor der pro 
Kelvin änderung 10 mV die Ausgangsspannung ändert und am ADC 
digitalisiert wird. Spannung und Temp wird auf UART und Display 
ausgeben. UART Ausgabe funktioniert auch (am Board, aber nicht auf der 
Platine implementiert). Wenn ich die Spannung von dem Sensor mit dem 
Multimeter nachmesse, stimmt sie innerhalb der +-5mV 
Digitalisierungsgenauigkeit mit dem angezeigten Wert aufm Display 
überein.

Als Indikator ob der Chip auch schön seine Aufgabene abarbeitet blinkt 
ein LED im Sekundentakt.

( also Led pin eingeschaltet -> ADC, LCD ausgabe, UART wird abgearbeitet 
-> Led pin ausgeschalten)

Also am Polling Evaluation Board alle Funktionen gestet und alles hat 
funktioniert.Der chip benutz 8mhz interner Takt. Also sollte unabhängig 
vom Board sein.


Nächstest Ziel ist das ganze auf eine Platine zu löten. So und da ist 
der Wurm drin...die meiste Zeit funktioniert ist, aber eben nur die 
meiste Zeit, bis auf ein paar Macken die ich mir nicht erklären 
kann...(muss auch sagen meine Elektronik Kentnisse sind eher bescheiden, 
nicht prügeln wenn ich einen ganz offensichtlichen Fehler gemacht 
habe)als Spannungsquelle für die Platine habe ich das Pollin Evaluation 
board angezapft (die stabilisierte Spannungsquelle implemntiere ich erst 
psäter selbst auf der Platine)

a) Wenn ich das Netzteil fürs Evaluation Board anstecke....Blickt das 
Indikator Licht im 2 Sekunden Takt...obwohl es in der Programmierung 1 
sek blinken soll, und auf dem Evaulation Board auch macht...erst nach 
ein paar mal Reset auf 0 ziehen wirds es normal...aber mal öfters mal 
weniger oft...scheint mir irgenwie Glückspiel zu sein und ich kann kein 
Muster dahinter erkennen. Jedenfalls anstecken -> chip läuft normal, 
funktioniert nicht. Wenn es dann einmal läuft, läuft es und der Chip 
macht seine aufgaben wie er soll...

b) Ich hab wie in so einigen Grundschaltungen zu finden ist, zwischen 
Vcc und Gnd direkt am controller statt dem 100nF zwei 50nF Keramik 
paraell gelötet (hatte leider keinen 100nF zur verfügung...ist das ein 
krtischer Fehler?)

Hier an dieser Stelle das nächste Verhalten...wenn ich mit dem Finger in 
nähe der beiden Stützkondensatoren komme...beginnt das Display zu 
flackern und das LED immer schneller zu blinken je näher ich den 
Kondensatoren komme)...daraus schließe ich der Chip wird immer öfterer 
Folge neu gestartet...aber warum? und wie verhindern? (ich muss für den 
Effekt den Kondensator nicht berühren in die nähe kommen reicht aus 
...ab nem halben cm ca.)

ich hab die Schlatung auf der Platine 1:1 versucht zu skiztieren (tut 
mir leid wenn ich nicht alle Konventionen weiß, ich hab noch nie zuvor 
einen Schaltplan gezeichnet)

Ich denke die C und H Files brauche ich ncit anhängen, da ja die 
Programmierung selbst problemlos Funktioniert und auf dem Evaluation 
Board getestet wurde...also vermute ich ein reines Hardware Problem.

von JürgenK (Gast)


Lesenswert?

sollte natürlich überempflindliche Schlatung heißen und Anfälle hat sie 
hoffentlich nicht :)

vlt hat jemand von euch Zeit mir damit etwas auf die Sprüng ezu 
helfen...Danke schon im vorraus.

von Michael A. (Gast)


Lesenswert?

Haben deine LEDs (am ATmega und für die LCD-Hintegrundbeleuchtung) beide 
einen Vorwiderstand oder bricht möglicherweise deine Spannungsversorgung 
zusammen, so dass der µC sich immer neu startet.

von Hubert G. (hubertg)


Lesenswert?

Als Referenzspannung wirst du VCC genommen haben, dann fehlt schon mal 
der 100n von AREF nach GND.
Sind die beiden Stützkondensatoren so nahe wie möglich an VCC und AVCC?
100n von Reset nach GND sollten auch noch sein.
Für eine einigermaßen genaue Messung sollte die Beschaltung von AVCC 
laut Datenblatt sein.
Die Led ist ohne Vorwiderstand angeschaltet?

von Paul Baumann (Gast)


Lesenswert?

1.Die LED scheint keinen Vorwiderstand zu haben.
2. Mache mal an den Pin AREF noch 100nF gegen Masse dran

MfG Paul

von holger (Gast)


Lesenswert?

>1.Die LED scheint keinen Vorwiderstand zu haben.

Das Backlight am LCD auch nicht.
Reset gehört nicht per Pulldown an GND.

von Jürgen K. (jurgenk)


Angehängte Dateien:

Lesenswert?

ok, die LEDs haben keinen Vorwiederstand...werd ich nachhohlen..auch 
wenn mir noch ncith ganz klar ist warum...aber ich seh grad auf dem 
pollin board haben sie auch einen...

die Stützkondensatoren sind direkt beim chip, näher geht nicht.

ok, ich werd mir schnell ein paar 100nF Kondensatoren besorgen...da werd 
ich alt mit den 50nF Dingern....

und den an AREF kommt auch nocht dran, das hatte ich übersehen, danke


danke für die schnellen Antworten, ich werde das mal umsetzen und wenn 
es nicht klappt mich nochmal melden.

der reset ist an Vcc, da hab ich mich nur verzeichnet, stelle den 
aktualisierten plan rein..ach wenn doch schlatung bauen nur so einfach 
wär wie programmieren ;)

von Peter D. (peda)


Lesenswert?

Die LEDs brauchen immer einen Vorwiderstand, d.h auch die LED des LCD!

Ob 47nF oder 100nF Kondis, ist egal.

Ein Kondi an UREF kann ran, muß aber nicht.
Man kriegt auch stabile AD-Wandlungen ohne ihn.
Bei den ATtiny gehts ja auch ohne.


Peter

von Andreas B. (andreasb)


Lesenswert?

Peter Dannegger schrieb:
> Die LEDs brauchen immer einen Vorwiderstand, d.h auch die LED des LCD!

Beim LCD kann es aber sein das bereits ein Vorwiderstand verbaut ist, 
meist nahe der LED.


mfg Andreas

von Peter D. (peda)


Lesenswert?

Andreas B. schrieb:
> Beim LCD kann es aber sein das bereits ein Vorwiderstand verbaut ist,
> meist nahe der LED.

Bei allen LCDs, die ich bisher benutzt habe, war das nicht der Fall.
Man sieht oft Pads für Widerstände, die sind aber nicht bestückt.


Peter

von Andreas B. (andreasb)


Angehängte Dateien:

Lesenswert?

Peter Dannegger schrieb:
> Andreas B. schrieb:
>> Beim LCD kann es aber sein das bereits ein Vorwiderstand verbaut ist,
>> meist nahe der LED.
>
> Bei allen LCDs, die ich bisher benutzt habe, war das nicht der Fall.
> Man sieht oft Pads für Widerstände, die sind aber nicht bestückt.

Im Anhang ein Bild eines 3€ China LCDs mit blauer 
Hintergrundbeleuchtung.

R8 ist der Vorwiderstand für die LED.

Erstaunlicherweise ist sogar noch ein 2. 0Ω Widerstand bestückt (R9)...




mfg Andreas

von Jürgen K. (jurgenk)


Lesenswert?

ich benutze ein 11 eur display von Gleichmann electronics...wenn ich mit 
multimeter über die beiden LED Anschlüsse messe und ein paar kOhm 
messe..kann ich wohl davon ausgehen, dass die Displayblechtung 
Vorwiderstände hat...oder nicht?

von Werner (Gast)


Lesenswert?

Jürgen Kratochwill schrieb:
> wenn ich mit multimeter über die beiden LED Anschlüsse messe und ein
> paar kOhm messe..kann ich wohl davon ausgehen, dass die Displayblechtung
> Vorwiderstände hat...oder nicht?

Nein, das sagt mehr über die Spannung an den Prüfspitzen des Multimeters 
aus. Der Widerstand liegt meist in der Größenordnung von 100Ω. Der Rest 
ist LED-Kennlinie.

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


Lesenswert?

Jürgen Kratochwill schrieb:
> wenn ich mit
> multimeter über die beiden LED Anschlüsse messe und ein paar kOhm
> messe..kann ich wohl davon ausgehen, dass die Displayblechtung
> Vorwiderstände hat...oder nicht?
Nein. Du kannst mit einem normalen Ohmmeter (ohne Erfahrung) keine 
Halbleiter messen...

Du kannst aber einfach mal die Anschlüsse des Backlights verfolgen. So 
ein Vorwiderstand kann sich nicht verstecken.

von Peter D. (peda)


Lesenswert?

Andreas B. schrieb:
> R8 ist der Vorwiderstand für die LED.
>
> Erstaunlicherweise ist sogar noch ein 2. 0Ω Widerstand bestückt (R9)...

Wenn die Widerstände bestückt sind, dann ist die LED mit an GND und VCC, 
daher sind 2 Widerstände nötig. Die Anschlüsse A, K bleiben dann frei.


Peter

von Thomas (kosmos)



Lesenswert?

hier mal eine Musterbeschaltung aus eien ATTiny26 Datenblatt ich 
verwende die gleiche Schaltung meist auch für VCC falls ein anderer 
Verbraucher die VCC verseucht. Und dann noch eine Application Note von 
Atmel, lese dir das mal durch Bild 4 und 5 erklärt dir etwas warum die 
Kerkos so nah wie möglich an den AVR sollen. Sie dir auch die empfohlene 
Resetbeschaltung an.

von Andreas B. (andreasb)


Lesenswert?

Peter Dannegger schrieb:
> Andreas B. schrieb:
>> R8 ist der Vorwiderstand für die LED.
>>
>> Erstaunlicherweise ist sogar noch ein 2. 0Ω Widerstand bestückt (R9)...
>
> Wenn die Widerstände bestückt sind, dann ist die LED mit an GND und VCC,
> daher sind 2 Widerstände nötig. Die Anschlüsse A, K bleiben dann frei.
>
>
> Peter

Nein, auch das ist nicht der Fall, die LED ist nur mit Pin 15 und Pin 16 
verbunden. (Frag mich nicht warum)

Jürgen Kratochwill schrieb:
> ich benutze ein 11 eur display von Gleichmann electronics...wenn ich mit
> multimeter über die beiden LED Anschlüsse messe und ein paar kOhm
> messe..kann ich wohl davon ausgehen, dass die Displayblechtung
> Vorwiderstände hat...oder nicht?

Die LED Pins sind warscheinlich sichtbar, dann misst du vom einen LED 
Pin zum Pin 16 / 15 und vom anderen LED Pin auch zu Pin 16 / 15.

Dann siehst du ob ein Widerstand eingebaut ist, > 1kΩ ist unrealistisch 
(dann misst du über die LED) < 10Ω ist kein Widerstand, Messtoleranz.

Misst du etwas dazwischen, z.B. 470Ω dann ist ein Widerstand drin, 
ansonsten brauchst du noch einer.



mfg Andreas

von Jürgen K. (jurgenk)


Lesenswert?

das hat funktioniert...also wenn ich das so mache messe ich <10Ohm -> 
also Display LED hat kein vorwiderstand....

hab jetzt einfach display LED und das blinke LED mal abgeklemmt und 
geschaut was passiert. Die Probleme nachen einstecken scheinen damit 
gelöst zu sein...

Chip läuft weitgehend stabil, jedoch Diplay Flackert und chip startet 
sich wohl ständig wenn ich mit den Fingern in 0.5 cm Radius zu dem 
Kondensator komme....damit kann ich leben...

die andern Vorschläge muss ich erst noch umsetzen (mit dem AREF Pin, und 
halt die LEDs mit Vorwiderstand neu einlöten)

von Christian F. (cmf) Benutzerseite


Lesenswert?

Jürgen Kratochwill schrieb:
> halt die LEDs mit Vorwiderstand neu einlöten)

Das würde ich mal schnellstmöglich machen! Die LEDs werden sonst 
zerstört!

von holger (Gast)


Lesenswert?

>Chip läuft weitgehend stabil, jedoch Diplay Flackert und chip startet
>sich wohl ständig wenn ich mit den Fingern in 0.5 cm Radius zu dem
>Kondensator komme....damit kann ich leben...

So ein Quatsch, da stimmt doch was nicht. Irgendwo hängt
eine wichtige Leitung in der Luft. Irgendwas ist nicht verbunden.
Mit sowas kann man nicht leben.

von Hackyber (Gast)


Lesenswert?

holger schrieb:
> So ein Quatsch, da stimmt doch was nicht

z.B. /Reset auf GND statt Vcc ???

von Jobst M. (jobstens-de)


Lesenswert?

Die 2x40 Displays, die wir einsetzen, haben 12Ω vorbestückt und sind mit 
der Versorgung des Kontrollers verbunden.


Gruß

Jobst

von B e r n d W. (smiley46)


Lesenswert?

Handempfindlich sieht nach offenem EIngang aus. Deshalb würde ich 
vorsichtshalber LCD Pin7, Pin8, Pin9 und Pin10 auf GND legen.

Oft haben die Displays keinen Blockkondensator on Board, deshalb 
zwischen Pin1 und Pin2 einen C mit 47 bzw. 100nF vorsehen.

Pin1 des Display möglichst kurz mit dem GND der CPU verbinden.

@Hackyber
> z.B. /Reset auf GND statt Vcc ???
Du hast hoffentlich schon das zweite Schaltbild gesehen?

von holger (Gast)


Lesenswert?

>Deshalb würde ich
>vorsichtshalber LCD Pin7, Pin8, Pin9 und Pin10 auf GND legen.

Klasse. Dann kommt einer auf die Idee den RW Pin auf lesen zu setzen
und schon hast du 4 Ausgänge auf GND liegen.

von Avr (Gast)


Lesenswert?

Ja, genau! Was macht der Spannungsteiler aus 10k Pulldown und internen 
40..60k Pullup aus den 5v Vcc? Und wie sind die Schwellwerte für Reset?
Nach DB bewegt sich Reset bei der Beschaltung genau da, wo es Zufall 
ist, ob Reset oder Run.
Mach den 10k weg!!

von B e r n d W. (smiley46)


Lesenswert?

>> Deshalb würde ich
>> vorsichtshalber LCD Pin7, Pin8, Pin9 und Pin10 auf GND legen.
> Klasse. Dann kommt einer auf die Idee den RW Pin auf lesen zu
> setzen und schon hast du 4 Ausgänge auf GND liegen.

Im Datenblatt des HD44780 steht nur:
These pins are not used during 4-bit operation
und
Pull-up MOS current DB0–DB7, RS, R/: Typ. 125µA

Es sollte also keine Probleme mit offenen Pins geben, denn sie werden 
auf high gezogen.

Deshalb vorsichtshalber LCD Pin7, Pin8, Pin9 und Pin10 doch nicht auf 
GND legen.

von Thomas (kosmos)


Lesenswert?

wieso soll das einen Spannungsteiler ergeben? Der externe Pullup wird 
parallel zum internen liegen.

5V/40kOhm=0,125 mA, so leicht kann das also beeinflusst werden.

Da ich mich bisher immer an die Empfehlung gehalten habe und noch nie 
Probleme damit hatte kann ich nichts dazu sagen ich würde mich aber 
keinesfalls aussperren und den Resetpin direkt auf VCC legen.

von Jürgen K. (jurgenk)


Lesenswert?

B e r n d W. schrieb:
> Handempfindlich sieht nach offenem EIngang aus.

dass kann einen Effekt haben?

mhmm ich glaube ich hab an einem Pin Interrupt aktiviert der wenn ich so 
recht überlege auf der Platine garnicht benutzt wird (hatte vorher auf 
dem Evaluation board ein Taster damit verbunden)

ich werde das bei Gelegnheit austesten (leider im mom etwas angebunden) 
aber danke an alle für die Vorschläge und Ideen.

von Jürgen K. (jurgenk)


Lesenswert?

das mit den eingeschaltenen Interrupts (wovon bei einem die Interrupt 
routine leer war) an den freien Pins scheint die Lösung für das "Chip 
macht komische Sachen wenn Finger in der nähe" Problem zu sein.

So jetzt noch die Beleuhctungen mit den Vorwiderständen passend 
bestücken, dann sollte vorerst alles laufen :)

von Thomas (kosmos)


Lesenswert?

ich schreibe den Resetvector eigentlich immer ins Programm uns gebe halt 
ein reti vor wenn ich den Interrupt nicht nutze, so das der Interrupt 
gleich wieder beendet wird, so kommt es nicht vor das ein 
eingeschalteter Interrupt "wilde" Programmsprünge ausführt.
1
.ORG  0x00
2
rjmp RESET            ; Reset handler
3
reti; rjmp EXT_INT0   ; IRQ0 handler
4
reti; rjmp PIN_CHANGE ; Pin change handler
5
reti; rjmp TIM1_CMP1A ; Timer1 compare match 1A
6
reti; rjmp TIM1_CMP1B ; Timer1 compare match 1B
7
reti; rjmp TIM1_OVF   ; Timer1 overflow handler
8
reti; rjmp TIM0_OVF   ; Timer0 overflow handler
9
reti; rjmp USI_STRT   ; USI Start handler
10
reti; rjmp USI_OVF    ; USI Overflow handler
11
reti; rjmp EE_RDY     ; EEPROM Ready handler
12
reti; rjmp ANA_COMP   ; Analog Comparator handler
13
reti; rjmp ADC        ; ADC Conversion Handler

von holger (Gast)


Lesenswert?

>ich schreibe den Resetvector eigentlich immer ins Programm uns gebe halt
>ein reti vor wenn ich den Interrupt nicht nutze, so das der Interrupt
>gleich wieder beendet wird, so kommt es nicht vor das ein
>eingeschalteter Interrupt "wilde" Programmsprünge ausführt.

Mach das mal mit z.B. dem UART Empfangsinterrupt.
Wenn UDR nicht gelesen wird feuert der Interrupt gleich
wieder und bremst das komplette Programm aus. Nützt also
nicht viel.

von Thomas (kosmos)


Lesenswert?

dieser Interrupt wird aber erst aktiviert werden müssen und wenn man das 
macht sollte man sich auch um die Interrupt Routine kümmern.

von holger (Gast)


Lesenswert?

>dieser Interrupt wird aber erst aktiviert werden müssen und wenn man das
>macht sollte man sich auch um die Interrupt Routine kümmern.

Genau das hat er ja gemacht, Interrupt freigeschaltet aber
vergessen einen Vector dafür zu definieren;)
Da führt beim AVR-GCC dann zum Reset.

von Jürgen K. (jurgenk)


Angehängte Dateien:

Lesenswert?

hallo, so hab nun alle (die meisten) Tipps umgesetzt, Vorwiderstände 
sind eingelötet, Diplay funzt, keine Störungen so weit.

Das nächste ist das Übertragen des UART vom Evaluation board auf meine 
Platine. Leider will am PC nicht so wirklich was ankommen...

Also zuerst, wenn ich Chip auf Pollin Board stecke, Serielles Kabel 
ansteck und mit HyperTerminal am PC auslese, funzt alles wunderbar, Chip 
macht was er soll.

Ich habe einen RS232N IC gekauft, und ihn mit dem auf dem Pollin board 
vertauscht, funzt trotzdem alles. Also gehe ich davon aus, das der den 
ich gekauft habe in der Funktion und Beschaltung gleich ist wie der auf 
dem Pollin board.

Ich hab die RS232 Schlatung vom Pollin board 1:1 (hoffentlich) auf dem 
Steckbrett nachgebaut und mit meiner Chip Platine verbunden. Ich hab 
dabei nur den Tx Anschluss vom Chip benutzt, weil Empfangen auf dem UART 
ist nichts geplant. Nur Temp. Messen und an PC übertragen.

(den Seriellen-Anschluss hab ich ein altes Kabel dafür zerlegt). Aber 
sobald Chip auf meiner Platine steckt und ich über RS232 am PC auslesen 
will kommt nix an, was Sinn machen würde.


Chip ist 8 Mhz, interner Oszi, BAUD 9600 ...die Konfiguration funzt ja 
auch und ist getestet auf dem Pollin-Board. Schaltplan im Anhang (also 
der untere Teil mit dem RS232 ist noch nichtauf der Platine sondern am 
Steckbrett ausgelagert). Hat vlt von euch jem eine Idee was ich dabei 
falsch mache?

von Hubert G. (hubertg)


Lesenswert?

Auf meinem Pollin Board musst ich die 10µ Elkos gegen 1µ Kondensatoren 
tauschen damit die Verbindung richtig funktionierte. Solltest du auch 
machen.
In deiner Zeichnung fehlt auch noch  ein Kondensator.

von Route_66 H. (route_66)


Lesenswert?

Hallo!
...und der MAX hat keine Betriebsspannung und Masseverbindung.
Ist das zerlegte serielle Kabel gekreutzt oder 1:1?

von Jürgen K. (jurgenk)


Lesenswert?

auf dem Pollin Board funktioniert alles einwandfrei...geht um den bau 
auf die Platine.

mhm was das für ein Kabel war bin ich nicht sicher....aber ich hab nur 
den Stecker davon rutnergebastelt und die Kabel direkt am Stecker 
angelötet...also keine überkreuzten Kabel oder sowas...

auweh stimmt, da sind ja noch 2 Ports oben und unten eingezichnet für 
Versorgung/GNd im Schaltplan die ich übersehen habe...danke, das könnte 
die Lösung sein

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.