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.
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.
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
> 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 :-)
Sehe ich das richtig? Hast du AREF mit der Versorgung verbunden? Oder habe ich die Bezeichnung nur mißverstanden?
Carsten R. schrieb: > Sehe ich das richtig? Hast du AREF mit der Versorgung verbunden? > Oder > habe ich die Bezeichnung nur mißverstanden? Stimmt, das ist auch noch falsch...
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.
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.
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.
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
:
Bearbeitet durch User
Joachim B. schrieb: > 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. Das wird viel zu wenig beachtet. Wenn du eine hohe REF willst, nimm doch 4,096Volt.
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...
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.
Christian M. schrieb: > Klemme ich eine Masse an bewege ich mich zwischen 103 und 104, hin und > wieder 105. Hö, wo schließt du eine Masse an?
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
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 | }
|
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.
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.
Hast du schon einmal einen einfachen Spannungsteiler ganz nahe des Boards anstelle des Sensors angeschlossen?
:
Bearbeitet durch User
Oh, ich sehe gerade daß der Sensor mit von der Referenz versorgt wird. Schau mal in die Datenblätter von Sensor und der Spannungsreferenz nach dem Strom.
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!
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
:
Bearbeitet durch User
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.
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.
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.
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.
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!
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?
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.
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.
:
Bearbeitet durch User
Christian M. schrieb: > Wieso ein Widerspruch? weil es genausogut heissen konnte du versorgst den Sensor mit Batterie, deswegen sind Schaltbilder die Worte des Technikers, aus wortreicher Prosa wird doch keiner schlau und was du meinstest sieht man nicht.
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.
Christian M. schrieb: > Also, habe zwei Batterien in Reihe angeschlossen und einen sauberen > ADC-Wert von 683 auf dem Display ich dachte du meinst die Sensorversorgung, das ist es ja mit solch präzisen Angaben.
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.
:
Bearbeitet durch User
Joe F. schrieb: > Du hast unterschiedliche LDOs für +5V/ADC und AVCC. > Warum? Weil 5 V für den ADC andere Anforderungen hat als 5 V für AVCC Joe F. schrieb: > - Verbinde AVCC statt mit +5V mit +5V/ADC Auf keinen Fall, das wäre ein grober Fehler.
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.
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.
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?
Christian M. schrieb: > Meine Leitung ist ungefähr 15 bis 20 Zentimeter lang, ungeschirmt. Sind die 3 Leitungen miteinander verdrillt?
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.
:
Bearbeitet durch User
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.
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.
Hi
>Also dein interner ADC hat auf jedenfall einen Widerstand zu GND...
Wo?
MfG Spess
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.
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.
:
Bearbeitet durch User
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.