ADC Masseproblem?

OP #4550278
Lesenswert?

Hallo zusammen,

ich hänge weiterhin an meinem Projekt
Beitrag "ATmega8 ADC-Durchschnittsberechnung"

Der Code wäre soweit eigentlich fertig. Ich bekomme aber den ADC einfach 
nicht vernünftig zum laufen. Es fällt mir schwer das Problem zu 
beschreiben.
Im Grunde kann man sagen mein ADC flackert im Normalbetrieb. Die Werte 
springen wild +/-10-15 Bitwerte herum.

Habe auch schon von meinem ursprünglichen ADC0 auf ADC7 gewechselt, weil 
ich befürchtete, dass mein Display das Signal beeinflusst. Keine 
Veränderung. Es fällt mir sogar auf, dass der ADC7 11 Bitwerte tiefer 
liegt als der ADC0 mit dem exakt selben Signal.

Wollte das Signal am ADC also nachmessen mit dem Oszi. Schließe ich die 
Masse an beruhigt sich das Signal und schwankt nur noch minimal um ein 
oder zwei ADC-Werte. Somit lässt sich auch die extreme Schwankung nicht 
mehr messen. Habe ich ein Masseproblem? Ist die Masse zu "klein"?

Ein Verdacht den ich habe, zu wenige Kondensatoren verbaut. Aber in den 
Datenblättern werden z.B. die Spannungsquellen eigentlich nicht mit 
Kondensatoren beschaltet. Außer die Beschaltung des ADCs im Datenblatt 
des Atmega. Die habe ich nachträglich hinzugefügt, bringt aber auch 
keine Verbesserung.

Ich hänge das Board, den Schaltplan und Programme die mit dem ADC zu tun 
haben mal an.
Angehängte Dateien:
Gast #4550286
Lesenswert?

10 bit werte, meinst du  jetzt 2^11 Werte oder wirklich 11 counts.

ich nehm mal an das ist ein 12bit ADC intern vom Atmel, dann sind 11 
counts Schwankung sicherlich sehr gut.
Also kein Problem.

falls viel mehr, immer testen an einer 1,4V Batterie und Kurzschliessen, 
dann sollten halbwegs stabile nicht schwankende Werte rauskommen.

Kannst du intern den Atmel debuggen, im Programmcode, also die RAW ADC 
Werte sehen, oder nur an deinem angeschlossenen Display? weil dann 
weisst du ja schonmal garnicht wirklich wo dein Fehler entsteht, falls 
es wirklich ein Fehler ist.
Gast #4550301
Lesenswert?

Hi

>ich nehm mal an das ist ein 12bit ADC intern vom Atmel, dann sind 11
>counts Schwankung sicherlich sehr gut.

AVRs haben 10-Bit-ADCs.

@ Christian M.

Was für ein Drucksensor ist das?

Mach mal 100n parallel zum ADC-Eingang.

MfG Spess
OP #4550375
Lesenswert?

> Was für ein Drucksensor ist das?
http://www.metallux.de/fileadmin/specs/Drucksensoren/CPS-1184-Z-Keramische-Drucksensoren-Metallux.pdf
Es handelt sich um die 250bar-Variante.

> Mach mal 100n parallel zum ADC-Eingang.
Das bringt eine minimale Veränderung aber eben nicht so viel wie mit der 
großen Masse.

kann ja jetzt schlecht immer das Oszi oder ähnliches mit dran hängen 
lassen :-)
OP #4550421
Lesenswert?

Carsten R. schrieb:
> Sehe ich das richtig? Hast du AREF mit der Versorgung verbunden? Oder
> habe ich die Bezeichnung nur mißverstanden?
An AREF geht meine +5V/ADC. Das ist eine gesonderte Spannung aus einem 
LT1021. Diese wird ausschließlich für den ADC bzw. den Drucksensor 
genommen.

M. K. schrieb:
> Wo ist denn der Puffer-/Siebkondensator für die Spannungsversorgung?
Da ist eben die Frage, wo ich mir unsicher bin. Die Datenblätter gaben 
nichts dazu an, dass ich eine Beschaltung davor machen soll. Verwundert 
hat es mich auch, habe mich aber entschieden dem Datenblatt zu 
vertrauen. Ich weiß auch, dass der TSR-1 nicht der sauberste 
Spannungsregler ist, aber er ist der einzige der mit der 
Leistungsaufnahme der drei Anzeigen zurecht kommt ohne zu heiß zu werden 
und sich per thermischer Sicherung abzuschalten. Aber deswegen habe ich 
ja noch auf anraten hier im Forum den LT1021 genommen.

Im TSR-1 Datenblatt steht zwar im Falle von EN 55022, Klasse A (also 
ESD) eine Beschaltung für den  Eingang dran aber ich hoffte, ich 
benötigte diese nicht.
Gast #4550433
Lesenswert?

du hast immer noch nicht gesagt wie deine Werte jetzt schwanken und wie 
du sie auslesen kannst, du kannst mir da ruhig vertrauen, in 90% der 
Fälle sitzt der Fehler 30cm vorm Gerät :)

Bis du anderes erzählst, gehe ich davon aus dass dein Gerät haargenau 
das macht zu was du es aufgebaut hast, also eigentlich "Fehler"frei 
arbeitet. Nur weil nicht das passiert was du erwartest heisst ja nicht 
dass dein Aufbau nicht funktioniert.
OP #4550445
Lesenswert?

test schrieb:
> du hast immer noch nicht gesagt wie deine Werte jetzt schwanken und wie
> du sie auslesen kannst, du kannst mir da ruhig vertrauen, in 90% der
> Fälle sitzt der Fehler 30cm vorm Gerät :)
>
> Bis du anderes erzählst, gehe ich davon aus dass dein Gerät haargenau
> das macht zu was du es aufgebaut hast, also eigentlich "Fehler"frei
> arbeitet. Nur weil nicht das passiert was du erwartest heisst ja nicht
> dass dein Aufbau nicht funktioniert.
Entschuldigung, habe ich überlesen.

>Kannst du intern den Atmel debuggen, im Programmcode, also die RAW ADC
>Werte sehen, oder nur an deinem angeschlossenen Display? weil dann
>weisst du ja schonmal garnicht wirklich wo dein Fehler entsteht, falls
>es wirklich ein Fehler ist.
Nein ich sehe das nur auf einem Display. Einen Debugger habe ich leider 
nicht. Ich gebe den Wert des ADCs direkt an diese Funktion.
1
void outValue(uint16_t wert)   {
2
  uint8_t hunderter, zehner, einer;
3

4
  hunderter = wert / 100;
5
  zehner = wert / 10 % 10;
6
  einer = wert % 10;
7
  
8
  //Übergabe an das Arrays zur Anzeige auf der Segementanzeige
9
  digit [0] = numbers [einer];
10
  digit [1] = numbers [zehner];
11
  digit [2] = numbers [hunderter];
12
}
Diese beschreibt dann das Display.
Die angezeigten Werte kommen schon hin. Nur das schwanken um den Wert 
herum stört. a)kann ich den Wert dann nicht so schön ablesen. Will die 
Aktualisierungsrate des Displays nicht verändern und b) mach ich 
außerdem noch eine Max-Wert Auswertung. und das Flackern beeinträchtigt 
meinen Max-Wert. Das ist der Hauptgrund.
#4550449
Lesenswert?

Christian M. schrieb:
> An AREF geht meine +5V/ADC. Das ist eine gesonderte Spannung aus einem
> LT1021. Diese wird ausschließlich für den ADC bzw. den Drucksensor
> genommen.

soweit ich das Datenblatt verstanden hatte darf die ext. AREF nicht 
größer werden als die VCC/AVCC bei 5V externer AREF ist das aber auf 
Kante wenn du nicht sicherstellen kannst das deine VCC oder AVCC immer 
passt.

Ich wähle dann lieber externe AREF von 2,5V +- o.ä.

Deine Analogwerte kannst du ja mit Spannungsteiler herab setzen um den 
Messbereich bis 5V zu erhalten.

auch 8-32 ADC Werte einzulesen und durch shift oder Teilung wieder auf 
den gemittelten ADC Wert zu kommen kann helfen.

Analog GND und Digital GND sollten extra ausgelegt werden und nur an 
einem Punkt zusammen geschaltet werden, oder alle GND Verbindungen 
einzeln sternförmig in einem Punkt zu Versorgung GND zusammenlaufen 
lassen
Gast #4550472
Lesenswert?

ok, also wie viel bit dein Wert schwankt ist mir immer noch unklar,
Aber wenn du eine normale Batterie dranhängst müsste eine sehr 
Rauschfreie Anzeige auftreten.
Dann weisst du schonmal dass dein Sensor zB das Rauschen verursacht.
Wenn dann auch noch Rauschen drauf ist, weisst du dass deine ADc 
Einstellungen oder Beschaltungen das Rauschen verursachen usw...
OP #4550513
Lesenswert?

test schrieb:
> ok, also wie viel bit dein Wert schwankt ist mir immer noch unklar,

Der Wert schwankt zwischen dem ADC-Wert (also der den ich auslese mit 
ADCW) in meinem Fall jetzt z.B. zwischen 97 und 109.
Klemme ich eine Masse an bewege ich mich zwischen 103 und 104, hin und 
wieder 105.

Ich werde morgen, dass mit der Batterie ausprobieren und die anderen 
Überlegungen mit der Masse weiter verfolgen.
Danke schon mal für die Überlegungen.
Gast #4550525
Lesenswert?

10bit bei 5V Referenz sind also pro bit 4,88 mV

Jetzt sagen wir 20counts Rauschen, das sind dann fast 100mV , das klingt 
schon ein wenig viel.

Aber wie gesgt erstmal ausschließen, dass es vom Sensor selber kommt, 
vielleicht sieht das Signal ja auch einfach so aus.

Du kannst ja auch mal testweise 500 Mittelungen einfügen und sehen ob es 
glatter wird usw
Gast #4550893
Lesenswert?

Hallo Christian,

https://www.mikrocontroller.net/attachment/291038/ADC_Read.c

Warte mal 1µs oder mehr nach setzen des Kanals.
1
void ADC_SetChannel(uint8_t channel) {
2
  ADMUX = (ADMUX & ~(0x1F)) | (channel & 0x1F);
3
 _delay_us(1);
4
}

Ich würde das Setzen eines Kanals als eigene Procedure 
ADC_SetChannel(uint8_t); implementieren.

So kannst Du dir dies hier sparen
1
sum += ADC_Read( channel );
 und schreiben:
1
uint16_t ADC_ReadValue()   {
2
  cli();
3
  ADCSRA |= (1<<ADSC);
4
  while (ADCSRA & (1<<ADSC)) { } 
5
  sei();
6
  return ADCW;
7
}
1
uint16_t ADC_Read_Avg( uint8_t channel, uint8_t nsamples )   
2
{
3
  uint32_t sum = 0;
4
  ADC_SetChannel(channel);
5

6
  for (uint8_t i = 0; i < nsamples; ++i )
7
  {
8
    sum += ADC_ReadValue();
9
  }
10
  return (uint16_t)( sum / nsamples );
11
}
OP #4551170
Lesenswert?

Karl M. schrieb:
> Hallo Christian,
>
> https://www.mikrocontroller.net/attachment/291038/ADC_Read.c
>
> Warte mal 1µs oder mehr nach setzen des Kanals.
>
1
void ADC_SetChannel(uint8_t channel) {
2
>   ADMUX = (ADMUX & ~(0x1F)) | (channel & 0x1F);
3
>  _delay_us(1);
4
> }

Was hat die Wartezeit dann für einen Sinn? Ich vermute mal, dass es eine 
Art Sicherheit ist, damit sich der ADC korrekt initialisiert.
Ich habe einfach mal 20µ genommen. Aber leider bewirkt das auch nichts.
#4551253
Lesenswert?

Für mich sieht das Layout ... na, ich würde mal vorsichtig sagen 
"suboptimal" aus.
Die Masse-Verbindung zwischen dem Controller und dem Sensor-Anschluss 
ist alles andere, als direkt. Eine Drahtbrücke zwischen der Analog-Masse 
am Controller und dem Masse-Anschlusspad vom Sensor dürfte bestimmt 
helfen.
OP #4551287
Lesenswert?

test schrieb:
> Aber wie gesgt erstmal ausschließen, dass es vom Sensor selber kommt,
> vielleicht sieht das Signal ja auch einfach so aus.

Also, habe zwei Batterien in Reihe angeschlossen und einen sauberen 
ADC-Wert von 683 auf dem Display (1 Digit flackert manchmal). Das passt. 
Ich bin mit 3 Digits daneben aber das ist ok.
Ziel ist es ja das flackern weg zu bekommen.

Es sieht für mich nach Sensor aus.
Bringt es etwas wenn ich Oszibilder vom Sensor liefere? Mal Drucklos und 
mal mit  einem Druck? Denn in der 100mV/div Einstellung knallen mir 
schon ein paar Peaks rein, die 100mV erreichen
Gast #4551369
Lesenswert?

ist immer die Frage wie real deine Oszimessung ist, wenn ich messe habe 
ich auch oft hochfrequente Peaks auf der MEssung, was aber real nicht 
vorhanden sein wird.

immer dran denken 5mV machen bie dir ein count aus, vlt schwankt dein 
Druck ja tatsöchlich so arg, vielleicht ist das einfachste du mittelst 
über 1000 Werte, dann nimmt dein Anzeigefehler logischerweise ab, so 
machen das selbst die ganz großen, weils die Bediener meistens auch 
nicht interessiert wie real sie wirklich am Ergebnis sind.
Gast #4551372
Lesenswert?

PS: deine 20 counts Schwankungen im Display passen sehr genau auf deine 
100mV peaks im Oszi, jetzt wäre noch zu klären wie breit die 100mV peaks 
sind und ob du die wirklich messen kannst, also ob das zeitlich passt, 
kann ja sein dass sie physisch vorhanden sind, deine ADC MEssung das 
aber niemals mitbekommt usw.
OP #4551439
Lesenswert?

test schrieb:
> PS: deine 20 counts Schwankungen im Display passen sehr genau auf deine
> 100mV peaks im Oszi, jetzt wäre noch zu klären wie breit die 100mV peaks
> sind und ob du die wirklich messen kannst, also ob das zeitlich passt,
> kann ja sein dass sie physisch vorhanden sind, deine ADC MEssung das
> aber niemals mitbekommt usw.

Habe jetzt mal ein Oszibild, welches ich vorhin, vor deiner Antwort 
einfach mal gemacht habe. Hierbei handelt es sich um das direkte Signal 
aus dem Druckaufnehmer, ohne das die Signalleitung in der Schaltung ist. 
Diese Peaks sind unterschiedlich intensiv und selbst mit nem Single-Shot 
nicht immer da.

Gibt es Werte wie lange ein Signal stabil anstehen muss, damit der ADC 
das Signal sauber erkennt?

> immer dran denken 5mV machen bie dir ein count aus, vlt schwankt dein
> Druck ja tatsöchlich so arg, vielleicht ist das einfachste du mittelst
> über 1000 Werte, dann nimmt dein Anzeigefehler logischerweise ab, so
> machen das selbst die ganz großen, weils die Bediener meistens auch
> nicht interessiert wie real sie wirklich am Ergebnis sind.
Aber das ganze hätte Auswirkungen auf meinen Max-Hold-Wert, muss ich 
dann aber sowieso noch einen Kompromiss mir suchen. Etwas geglättet 
hätte ich den Wert schon, aber davor wäre es schön wenn die extreme 
Schwankung raus wäre.
Angehängte Dateien:
OP #4551443
Lesenswert?

Thomas E. schrieb:
> Stell' Dir vor, Du wärest ein Elektron und müsstest einen Weg vom
> GND(Sensor) zum GND(Mikrocontroller) finden. Die GND-Plane ist keine
> Ground-Plane, sondern der reinste Irrgarten!

Ja das leuchtet mir ein, da werde ich das nächste Mal besser darauf 
achten. Habe jetzt vom Sensoranschluss zum ADC_GND eine direkte Leitung 
gezogen. Geholfen hat es nicht.
#4551444
Lesenswert?

Christian M. schrieb:
> Also, habe zwei Batterien in Reihe angeschlossen und einen sauberen
> ADC-Wert von 683 auf dem Display (1 Digit flackert manchmal). Das passt.
> Ich bin mit 3 Digits daneben aber das ist ok.
> Ziel ist es ja das flackern weg zu bekommen.
>
> Es sieht für mich nach Sensor aus.

das scheint doch widersprüchlich, saubere Versorgung sauberes Signal 
kann also nicht am Sensor liegen!
OP #4551463
Lesenswert?

Joachim B. schrieb:
> Christian M. schrieb:
>> Also, habe zwei Batterien in Reihe angeschlossen und einen sauberen
>> ADC-Wert von 683 auf dem Display (1 Digit flackert manchmal). Das passt.
>> Ich bin mit 3 Digits daneben aber das ist ok.
>> Ziel ist es ja das flackern weg zu bekommen.
>>
>> Es sieht für mich nach Sensor aus.
>
> das scheint doch widersprüchlich, saubere Versorgung sauberes Signal
> kann also nicht am Sensor liegen!

Wieso ein Widerspruch? Wenn ich eine Batterie als Ersatz für den Sensor 
anschließe, dann hab ich nen sauberen Wert im µC. Schließe ich den 
Sensor an nicht.
Klemme ich eine externe Masseverbindung, woher auch immer, zusätzlich an 
beruhigt sich das Signal auf 2-3 Digits. Lasse ich meine (nicht optimale 
Masse) so laufen, schwingt mein Wert mit ca 10 Digits.

Oder habe ich da was falsch verstanden?
Gast #4551465
Lesenswert?

er hat die Batterie vermessen und nicht einen Sensor, dene r mit zwei 
Batterien versorgt.

Also ADC stimmt, am Sensor liegt das Problem, bzw. kann ja auch sein 
dass der einfach schwankt, sind ja alles analoge Werte, kann also 
durchaus sein, wie lange ist denn das Kabel von Sensor zum ADC, kannst 
du den Sensor mal räumlich sauber so ca 1cm vom ADC anlöten, vlt ist es 
dann schon gelöst.
#4551496
Lesenswert?

1.)
Wo kommt denn die Versorgungsspannung 5V her?
Stecknetzteil mit langem Kabel?
100nF sind hier viel zu wenig. Löte mal einen 22-47uF Elko direkt an die 
5V Buchse.

2.)
Dein ADC hat keinen Tiefpass am Eingang.
Wie schnell ändert sich dein Sensorsignal?
Bei einem Drucksensor gehe ich jetzt einfach mal von max. 15 Hz aus.
Baue einen Tiefpass zwischen Sensor und ADC. Du hast ja eh schon 0R 
Serienwiderstände.
Den tauscht du gehen 10K, und schaltest auf der ADC Seite noch einen 1uF 
Kondensator zwischen ADC Input und GND.
Gast #4551508
Lesenswert?

Datenblatt schrieb:
> Ausgangslastwiderstand 1...5kOhm

Schalt mal +/-2.2k zwischen Signal nach Masse. Vermutlich kommt der 
Verstärker nicht damit klar eine so komplexe (rein induktive/kapazitive) 
"Last" zu treiben. Ausserdem mal 100nF nahe beim Sensor zwischen Vcc und 
Gnd.
#4551530
Lesenswert?

Zusätzlich zu Punkt 1 (Pufferung Stromversorgung) und 2 (Tiefpass):

3)
Du hast unterschiedliche LDOs für +5V/ADC und AVCC.
Warum?

- Verbinde AVCC statt mit +5V mit +5V/ADC


4) Dein LT1021 ist eine Spannungsreferenz basierend auf Zenerdioden.
Die kann max. 10mA liefern, und benötigt auch einen Mindeststrom.
Wie viel Strom benötigt dein Sensor?

Ich denke dein gesamtes Design benötigt ein wenig Überarbeitung.
OP #4551637
Lesenswert?

Ok, das sind jetzt viele Vorschläge. Ich werde diese heute und morgen 
mal der Reihe nach ausprobieren.

test schrieb:
> Also ADC stimmt, am Sensor liegt das Problem, bzw. kann ja auch sein
> dass der einfach schwankt, sind ja alles analoge Werte, kann also
> durchaus sein, wie lange ist denn das Kabel von Sensor zum ADC, kannst
> du den Sensor mal räumlich sauber so ca 1cm vom ADC anlöten, vlt ist es
> dann schon gelöst.

Meine Leitung ist ungefähr 15 bis 20 Zentimeter lang, ungeschirmt. Eher 
15. Baulich wird es wohl nicht kürzer werden. Ich kann nur den Weg auf 
der Platine verkürzen, indem ich direkt an den ADC gehe.

Habe jetzt den Sensor einen Zentimeter vom µC weg. Und der Wert ist um 
einiges stabiler.
Gast #4551656
Lesenswert?

ja analoge Schaltungen immer mit Fingern betatschen und bewegen, 
klopfen, drücken, alles machen und Werte beobachten, falls zu 
empfindlich gibts irgendwo Probleme, kann auch eine schwache Löststelle 
sein etc.

Crosstalk halt auch ein Thema bei hochohmigen langen Leitungen, dein 
100mV peak kann ja durch irgendwelche Schaltungen, zB auch 
Vorschaltgerät Beleuchtung herkommen, einfacher Test mla einen Lötkolben 
an und ausschalten und Werte beobachten, die Rauschen meistens in viele 
Leitungen rein, zumindest hier bei mir.
#4551694
Lesenswert?

M. K. schrieb:
> Joe F. schrieb:
>> - Verbinde AVCC statt mit +5V mit +5V/ADC
>
> Auf keinen Fall, das wäre ein grober Fehler.

Ah sorry, mein Fehler. Dachte die Referenzspannung wird hier genommen, 
liegt ja aber an AREF an.

Trotzdem sollte man mal gucken, ob der Strombedarf des Sensors mit der 
gewählten Spannungsreferenz überhaupt funktioniert.

Was für ein Sensor ist das denn genau?
OP #4552550
Lesenswert?

Vorab schon mal vielen Dank für die ganzen Tipps.

Habe jetzt mal meinen ursprünglichen Aufbau wieder hergestellt, d.h 
meine 15cm lange Leitung. Es ist wieder die reinste Achterbahn auf dem 
Display.

Carsten R. schrieb:
> Christian M. schrieb:
>> Meine Leitung ist ungefähr 15 bis 20 Zentimeter lang, ungeschirmt.
>
> Sind die 3 Leitungen miteinander verdrillt?
Jetzt ja :-), brachte aber keine nenneswerte Verbesserung, aber sinnvoll 
ist es trotzdem.

Joe F. schrieb:
> Trotzdem sollte man mal gucken, ob der Strombedarf des Sensors mit der
> gewählten Spannungsreferenz überhaupt funktioniert.
Also ich messe einen Strom von 0,85 mA. Die werden konstant gehalten. 
Laut Datenblatt ist der Strom unter 2,5 mA
> Was für ein Sensor ist das denn genau?
http://www.metallux.de/fileadmin/specs/Drucksensoren/CPS-1184-Z-Keramische-Drucksensoren-Metallux.pdf

Rasputin schrieb:
> Datenblatt schrieb:
>> Ausgangslastwiderstand 1...5kOhm
>
> Schalt mal +/-2.2k zwischen Signal nach Masse. Vermutlich kommt der
> Verstärker nicht damit klar eine so komplexe (rein induktive/kapazitive)
> "Last" zu treiben. Ausserdem mal 100nF nahe beim Sensor zwischen Vcc und
> Gnd.

Also ich habe das Gefühl, dass die ganzen Maßnahmen es langsam 
verbessern. Der Ausschlag ist jetzt nicht mehr so groß aber immer noch 
heftig am zittern. Die beste Lösung, bleibt die "Vergrößerung" der 
Masse. Kann das was mit dem Netzteil zu tun haben? Ich stelle ja eine 
parallele Verbindung über mein Oszi oder dem Programmer + Rechner zu 
Erde her.

Joe F. schrieb:
> 1.)
> Wo kommt denn die Versorgungsspannung 5V her?
> Stecknetzteil mit langem Kabel?
> 100nF sind hier viel zu wenig. Löte mal einen 22-47uF Elko direkt an die
> 5V Buchse.
Die Spannung kommt von einem +24V Netzteil mit langem Kabel und geht 
dann einmal auf den normalen V-Reg und einmal auf den LT2105.  Habe 
einen 47µ mal an die +24V gelegt.

> 2.)
> Dein ADC hat keinen Tiefpass am Eingang.
> Wie schnell ändert sich dein Sensorsignal?
> Bei einem Drucksensor gehe ich jetzt einfach mal von max. 15 Hz aus.
> Baue einen Tiefpass zwischen Sensor und ADC. Du hast ja eh schon 0R
> Serienwiderstände.
> Den tauscht du gehen 10K, und schaltest auf der ADC Seite noch einen 1uF
> Kondensator zwischen ADC Input und GND.
Habe was aufgebaut, allerdings bin ich etwas verwundert. Die Spannung 
ist zwischen ADC und R höher als das Signal zwischen Sensor und R. Und 
zwar das 2,5-fache. Iwas stimmt da noch nicht.
So wollte ich es Anschließen
         R = 10k
ADC--+--|==|----- Sensor
     |
     =  C = 0,88µ
     |
    GND

Noch eine andere Frage die mir gerade einfällt.
Wenn ich den ADC0 an PC0 nicht verwende. Wie muss ich den Port dann 
indern schalten? Als Ausgang? Eingang? Ich benutze für diese Versuche 
gerade die Pads mit und hoffe doch das der Controller sich durch die 
beiden parallelen Ports nicht selber beeinflusst.
OP #4552706
Lesenswert?

Und noch eine Frage, die eventuell mein ganzes Problem löst.

Was machen die beiden Metallkontakte auf der Keramik? Sie haben zu 
nichts weiter Kontakt nicht mal die beiden miteinander?

Schließe ich meine Masse der Platine, an meine (Alu-) Verschraubung für 
den Sensor an, beruhigt sich mein ADC. Die Verschraubung wird wohl 
Kontakt haben mit den Kontakten auf der Kermaik
Werde das morgen nochmal genauer Untersuchen.
Angehängte Dateien:
#4553487
Lesenswert?

Also dein interner ADC hat auf jedenfall einen Widerstand zu GND und 
dadurch baust du immer einen Spannungsteiler mit deinem Tiefpass auf, 
vor allem wenn deine Widerstände eben ungefähr gleich sind. Der interne 
Widerstand des ADCs ist irgendwo im Datenblatt genannt, ich stell mal 
40kOhm in den Raum, irgendwas grob in der Region +- 40kOhm wirds schon 
sein :)


Dein Sensor hat ein Leitendes Gehäuse, was mit Sicherheit ein wenig eine 
Antenne ist, ich hab meistens auf meinen ADc MEssungen ohne MAsse bei 
empfindlichen Eingängen eine 50Hz Netzschwebung drauf, das erklärt zwar 
nicht deine Störungspeaks, aber das Rauschen meiner Schaltungen :)


Du kannst mal versuchen einfach mit einer Klemme Schutzerde auf dein 
Sensorgehäuse zu verbinden, einfach drandrücken und kucken obs stabiler 
wird.

Wie schon gesagt, analoges Zeug muss man immer experimentieren,viel in 
die HAnd nehmen um ein Gefühl für das Rauschen und Störungen zu 
bekommen.

Masse GND Schutzerde, sind natürlich auch immer interessante Sachen, 
aber dafür braucht man Schaltplan und Hardware vor sich und muss genau 
wissen was wann wie wo angeschlossen ist und eben ein Oszi.
#4553517
Lesenswert?

spess53 schrieb:
> Hi
>
>>Also dein interner ADC hat auf jedenfall einen Widerstand zu GND...
>
> Wo?
>
> MfG Spess

ich glaube der gute Spess hat Recht, also ich dachte bei meinem MSP430 
hätte ich das mal im Datenblatt gelesen, aber das betrifft nur serielle 
Widerstände durch den MUX, den der Atmel wohl auch haben wird, also ist 
das erstmal Quatsch, allerdings gitb es eben durch den ADC SAR betrieb 
und die seriellen Impendanzen doch gewisse Zeiten die man minimum 
Einhalten sollte um stabile ADC Werte intern zu erhalten.

Das weiss ich jetzt nicht ob du das beachtet hast, das muss dann im 
Programmcode enthalten sein.
OP #4553618
Lesenswert?

Also so wie es aussieht, hat einfach die Verbindung auf das Gehäuse, wo 
der Sensor drin ist, gefehlt. Die Werte sind recht stabil, habe auch die 
Zusatzbeschaltungen entfernt und es funktioniert. Werde aber trotzdem 
ein paar Kondensatoren einbauen und, falls nochmal Platinen gemacht 
werden, die ADC-Masse etwas besser legen.

Es gibt aber weiterhin eine Differenz zwischen ADC0 und ADC7 von 10 
Digits. Das ist seltsam. Habe aber das Gefühl, dass der ADC7 der 
korrekte(re) Wert ist.

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