adc ist sehr empfindlich (codevision)

OP #213188
Lesenswert?

halo leute bin neu hier habe gleich ne frage
ich habe mit codevision den wizard benutzt um ein adc_messer
zuschreiben und den wert über den portb(8_leds) auslessen und es geht
aber er ist sehr empfindlich die leds blinkeln zuschnell  entwider ist
er sehr empfindlich oder ich lesse nur die zahlen die hinter den
(komma) sind 0,01234 (und das will ich nicht) oder was meint ihr was
soll ich jetzt machen wäre super wenn einer mir eine code gibt die
nicht so empfindlich ist oder sagt mit wie ich das machen soll (ach ja
und ich möchteihn nicht langsam machen)
ich hoffe ihr habt mich verstanden


danke imvorraus
Angehängte Dateien:
#213196
Lesenswert?

Eigentlich ist da was du beschreibst normal, es gelangen bestimmt
störungen an den ADC-Eingang und deshalb binkt das ganze.
Und das in deinem Progarmm keine Bremse gibt, wird der Wert so schnell
geändert wie es MCU schafft.
_Bilnken die Dioden auch wenn du den ADC-Pin mit der Masse kurzschließt
?_
Wenn ja dann gibt es eine andere Ursache. Nimm doch ein Stück Kabel und
schliesse den entsprechenden Pin an die Masse.Ist doch einfach, oder ?



>testboard stk200
Es tut mir leid ich habe es,weiss also noch wie vor nicht wie die
Schaltung aussieht, das wäre aber sehr hilfreich.


Und da ich auch ein Noob bin gebe ich die einen Rat, fange erst an im
ASM zu programieren, das ist viel einfacher und man lernt auch etwas
über Hardware-Hintergrunde und ist nicht so hilflos ausgeliefert wenn
etwas nicht läuft.
Und bloss keine  "wizards" benutzen, damit vergeudet man wirklich nur
seine Zeit.
Gast #213199
Lesenswert?

na durch divisionen mit 2
10 bit zahlen muss man 2 mal durch 2 dividieren ( oder einmal durch 4 )
um 8 bit werte zu erhalten den rest bekommt man durch casten ( siehe asm
grunlagen )
mfg moogqai
Gast #213201
Lesenswert?

"thnx aber ich glaube das ist nicht mit codevision sondern mit gcc
oder?"


Ja, aber das tut doch nichts zur Sache.

Der einzige Unterschied ist die Deklaration eines Interrupt-Handlers,
und wenn Du schon mal in Codevision einen Interrupt benutzt hast,
sollte nichts daran schwierig sein.

Und der Rest ist pures ANSI-C, d.h. 100% portabel.


Peter
Gast #213202
Lesenswert?

Prinzipiell hast du schon mal +/- 1bit, also das LSB kann schwanken.
Dazu kommen dann Störungen auf dem Signal, der Referenzspannung und dem
Massepotential. Kann durch das Signal selbst (Rauschen, induzierte
Störungen, Versorgung der Signalquelle)oder durch den MC  (arbeitet ja
immerhin mit ein paar MHz) eingekoppelt werden.
Ein paar einfache Regeln:
-ordentliches Layout
-Entkopplung Vcc, AVcc, Gnd, AGnd, Vref
-eine Kapazität am Analogeingang (bei 200ms Abtastzyklus kannst du da
locker 100nF ranpacken)
Man kann mit dem AVR wirklich erstaunlich genau messen, dazu muss aber
das Umfeld stimmen. Kommt es auf das letzte Bit an, den MC schlafen
legen, siehe Atmel-Appnotes.

Dann gibts noch die Software-Hilfsmittel: mehrfach messen, Mittelwert
bilden, in deinem Fall beispielsweise alle 20ms messen, die 10
Messwerte in ein Array packen (neuer Wert schmeisst ältesten raus),
alle addieren und durch 10 teilen. Sollte recht ruhig sein. Gibt noch
deutlich intelligentere Verfahren, das sollte aber erstmal reichen, um
8bit ruhig zu stellen :-)

In 1.Linie aber das Übel an der Wurzel packen, siehe oben.

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