Hallo. ich schaffe es nicht das beim ATmega16 mein interner A/Dwandler 0LSB anzeigt wenn ich den Eingang mit Masse verbinde. Ich benutze externe Referenz die ich noch abgleiche ( 0,0 - 5,0V sollen 0-1000LSB werden). Lege ich an den Eingang Masse habe ich etwa 28 -34 LSB. Das Ergebnis ist von Kanal zu Kanal etwas unterschiedlich. Es handelt sich soweit ich das sagen kann nicht um Rauschen, denn die Werte stehen bei dem jeweiligen Kanal absolut staibl, allerdings mittle ich auch kräftig (65x) Ich prüf morgen mal wie das aussieht wenn ich nicht mittle. Welche Ursachen kann das haben? eine die mir einfallen würde wäre eine Potentialdifferenz innerhalb der GND- Strecke, derartiges konnte ich aber nicht messen.
Entweder hast du eine gewaltige Potentialdifferenz (30 entspricht etwa 150mV) aufgrund eines Kurzschlusses (z.B. Port auf Ausgang und High, und mit Masse verbunden), oder du misst eine Differentielle Spannung mit hoher Verstärkung.
Was macht die Referenzspannungsquelle? Wie sieht die Beschaltung von AREF aus? > In either case, the external AREF pin is directly connected > to the ADC, and the reference voltage can be made more immune > to noise by connecting a capacitor between the AREF pin and ground. (aus Mega16 user's manual)
@Sirko Pöhlmann >Lege ich an den Eingang Masse habe ich etwa 28 -34 LSB. Das Ergebnis ist >von Kanal zu Kanal etwas unterschiedlich. Das ist viel zu viel. Da is was faul. >Werte stehen bei dem jeweiligen Kanal absolut staibl, allerdings mittle >ich auch kräftig (65x) Warum 65x?? 64 ist wesentlich sinnvoller, da sie Division zur Schiebeoperation vereinfacht wird. Vielleicht liegt dort der Fehler? Schmuggelt sich dort irgendwo ein Wert rein? MfG Falk
Was soll die REF schon machen ? :-) ist eine trimmbare Präzisionsreferenzspannungsquelle 5,0V. Ist entsprechend Datenblatt angeschlossen. Die Referenzspannung steuert ja den "oberen" auflösungspunkt, da ist alles ok, kein Rauschen oder so, er arbeitet sauber bis 5,11V = 1023LSB ( 5,00=1000LSB). Das Problem besteht nur an der unteren Grenze. Die riesige Potentialdifferenz konnte ich bisher nicht finden, kontrolliere morgen aber nochmal die Software nach den Ports. Die meisten sind aber gar nicht benutzt, außer 4 A/D Eingängen und Uart ist praktisch nix angeschlossen. Trotzdem klingt das im Moment am vielversprechendsten! Nein, ich messe keine differentielle Spannung mit Verstärkung.
Falk wrote: > @Sirko Pöhlmann > >>Lege ich an den Eingang Masse habe ich etwa 28 -34 LSB. Das Ergebnis ist >>von Kanal zu Kanal etwas unterschiedlich. > > Das ist viel zu viel. Da is was faul. > sag ich ja :-) >>Werte stehen bei dem jeweiligen Kanal absolut staibl, allerdings mittle >>ich auch kräftig (65x) > > Warum 65x?? 64 ist wesentlich sinnvoller, da sie Division zur > Schiebeoperation vereinfacht wird. Vielleicht liegt dort der Fehler? > Schmuggelt sich dort irgendwo ein Wert rein? ähhh, sorry, natürlich mittle ich mit 64x wegen der Schiebeoperationen, verschrieben... > > MfG > Falk
Die ADC Wandler in µC sind in der Regel so aufgebaut das ein Eingangsmultiplexer vor die Klemmschlatung geschaltet ist , und nach der Klemmschaltung dann der eigentliche AD Wandler kommt. Wird jetzt von Eingang X auf Eingang Y geschaltet muss die Klemmschaltung umgeladen werden. Das benötigt Zeit. Prüf mal noch ob du diese Zeit lang genug eingestellt hast. Wenn diese Zeit zu kurz ist, hat das zur Folge das du an Eingang Y eine Spannung erkennst die irgendwo zwischen dem Wert an X und dem Wert an Y liegt.
Ralph wrote: > Die ADC Wandler in µC sind in der Regel so aufgebaut das ein > Eingangsmultiplexer vor die Klemmschlatung geschaltet ist , und nach der > Klemmschaltung dann der eigentliche AD Wandler kommt. ja , ich weiß > Wird jetzt von Eingang X auf Eingang Y geschaltet muss die > Klemmschaltung umgeladen werden. Das benötigt Zeit. aha,da hab ich ja noch gar nix von gehört. hm. wieviel Zeit?.... mal sehen ob ich das im Datenblatt finde... > > Prüf mal noch ob du diese Zeit lang genug eingestellt hast. Ich hab da sicher gar nix eingestellt, es liegen zwar eine Menge Schritte dazwischen aber nicht explizit ein längeres Warteintervall. > > Wenn diese Zeit zu kurz ist, hat das zur Folge das du an Eingang Y eine > Spannung erkennst die irgendwo zwischen dem Wert an X und dem Wert an Y > liegt. Kann ich nachvollziehen, allerdings sollte dann der Fehler am ersten abgefragten Eingang nicht auftreten, denn zwischen der Abfrage des letzten Kanals und des ersten Kanals liegt eine deutliche Pause ( Datenaufbereitung, UART senden ) Oder? @ Rolf: na das will ich eigentlich hoffen, ist auf eigener Platine gelötet, aber ich mess nochmal nach. Das Problem tritt aber auf allen 4 benutzten Kanälen auf, ich würde daher ausschließen das es ein Fehler in der jeweiligen Kanalaufbereitung ist. Ich hatte den Verdacht das A/D-GND keine Verbindung hat, konnte aber zwischen A/D-GND und GND keine Differenz messen. Morgen Früh klapper ich mal alle anderen GNDs noch ab :-)
Also ich bin jetzt mit meinem Latein am Ende. Ich kann nirgends auf der Platine eine Potentialdifferenz in der GND Strecke finden. Ic habe den Controller mal mit anderen getauscht ( Atmega 16 und Atmega 323), das Problem bleibt bestehen, der gemessene GND "Offset" ändert sich ( zB 60 statt 28 LSB), aber ist trotzdem immer da, Die Eingänge liegen wie gesagt direkt an Masse. Ich habe 1,5ms Wartezeit zwischen die Kanalumschaltung vor dem Wandler gesetzt - bringt gar nix. Ich habe die Mittelungen raus genommen - bringt gar nix. Der Wert rauscht nur die typ +/-1LSB, ansonsten stabil bei ca 30 LSB. Sobald ich mit meiner am A/D angelegten Spannung über den Wert komme der den 30 LSB entspricht (150mV) funktioniert die Spannungsmessung des Wandlers wie gewünscht. Es muß irgendwo einen Fehler geben - bloß wo. Wen ich ihn nicht finde bleibt mir nur den A/DGND mit einem Spannungsteiler von -15V aus auf etwa -150mV zu ziehen und zu sehen ob es dann funktioniert. Wäre aber nur rumdoktern an Symptomen...
Da ich noch nichts dazu gelesen habe: Wo hast du welche Kondensatoren wie eingebaut? Genug Abblockkondensatoren an der Versorgungsspannung und an AREF?
ich versorge den Controller direkt aus der USB Buchse auf der Platine. Die ist in der Realität aber etwas unter 5V, etwa 4,91V. An der USB-Buchse sitzten 10nF zwischen GND und 5V Der Controller hängt dann über 10µH an 5V und 100nF an GND VCC --10uH----100nF--GND | | 5V Ansonsten gibts noch die Resetbeschaltung mit 47k ->5V und 47pF->GND Und d aus den 5V der USB Schiene mach ich noch +/-15V die ich für OPVs und anderes brauche.
Sirko Pöhlmann wrote: > ich versorge den Controller direkt aus der USB Buchse auf der Platine. > Die ist in der Realität aber etwas unter 5V, etwa 4,91V. An der > USB-Buchse sitzten 10nF zwischen GND und 5V Mit was versorgst du denn deine Spannungsreferenz ? Dir ist klar das der ARef Eingang nie nicht höheres potential haben darf als VCC.. Gruß Björn
die Referenz versorg ich über +15V, die aus dem dcdc kommen ( 5V rein +/-15V raus)
hallo, ich hatte mal ein ähnliches problem mit einem pic, nach langer suche war es dann ein dummer programmierfehler(überlauf) der die internen pullups am AD port für einen takt zwischen den messungen aktivierte. vielleicht hast du ja auch das "glück" :)
@helferlein >der die internen pullups am AD port für einen takt zwischen den >messungen aktivierte. Ei Pll-up wird aber wohl kaum die Masse nennenswert hochziehen können wenn der Eingang hart auf Masse liegt). MFG Falk
Sirko Pöhlmann wrote: > die Referenz versorg ich über +15V, die aus dem dcdc kommen ( 5V rein > +/-15V raus) Wenn ich das jetzt richtig verstanden habe bekommt dein AREF Pin 5.11V und AVCC 4.9-5V oder ? Das kann nicht gehen, Siehe Datenblatt. Gruß Björn
Öhm - 15V an der Referenz? Kann ich mir nicht vorstellen. Leg doch mal die Referenz an VCC (interne Referenz abschalten!).
Programmierfehler kann ich ausschließen, wenn ich direkt nach dem Wandeln eine 0 ins Register schreibe kommt zum Schluß auch eine 0 raus :-) nein -15V kommen natürlich nicht an die Ref, das ist ein Missverständnis... "Wenn ich das jetzt richtig verstanden habe bekommt dein AREF Pin 5.11V und AVCC 4.9-5V oder ? Das kann nicht gehen, Siehe Datenblatt." Ja, da steckt das Problem wohl. Ich hatte im Hinterkopf das +/-0,3V Abweichung ok sind , das betrifft aber nur Avcc , nicht die Ref. Wenn ich mit der Ref etwas unter AVcc gehe verschwindet das Problem! Nur komme ich dann mit meinem Auflösungs und Dynamikbereich nicht mehr hin. Ich brauch zwingend 5,00V = 1000LSB Ich müßte also am besten nur für die Versorgung des Atmega die knapp 5V aus dem USB etwas anheben, auf 5,3- 5,5V zB. Wie macht man das am besten?
Sirko Pöhlmann wrote: > Nur komme ich dann mit meinem Auflösungs und Dynamikbereich nicht mehr > hin. Ich brauch zwingend 5,00V = 1000LSB Was misst Du denn eigentlich für ein Signal das es auf 0.00488 V Auflösung ankommt ? Du kannst ja in Software umrechnen. Gruß Björn
> Nur komme ich dann mit meinem Auflösungs und Dynamikbereich nicht mehr > hin. Ich brauch zwingend 5,00V = 1000LSB Das mag ich ungern glauben. Wenn Du vor dem ADC des AVRs sowiso einen Operationsverstärker zur Aufbereitung Deines Eingangssignals hast, so kannst Du durch Verstellen dessen Verstärkung auf Deine gewünschte Auflösung kalibrieren. Ich vermute stark, dass der Fehler im Analogteil (OPV) liegt. Hast Du mal den ADC direkt (ohne OPV davor) mit einem Poti zwischen GND und Vcc getestet? ...
Der Aufbau ist so: Messgerät Messbereich 0 - 1000ppm Ausgang: 4-20mA mein Umsetzer: Eingang 4-20mA -> spezieller Schnittstellen-Umsetzer-IC-> 0-5V -> 0-1000LSB digitalisiert als Asci Ziffernfolge via USB an PC -> am PC ist dann Messbereich 0-1000ppm am Messgerät = LSB Wert 0-1000 ok? sobald ich da an der 0-5V Geschichte fummel komm ich in Schwierigkeiten bzw es bietet sich dermaßen elegant an das genau SO zu machen da man überhaupt kein weitere Rechnerei mehr braucht. Wann hat man es schonmal das der gesendete LSB wert exakt dem Messwert entspricht.
@Sirko Pöhlmann >Der Aufbau ist so: >Messgerät Messbereich 0 - 1000ppm >Ausgang: 4-20mA >mein Umsetzer: >Eingang 4-20mA -> spezieller Umsetzer-IC-> 0-5V -> 0-1000LSB Die meisten Leute nehmen statt eines (teuern) Umsetzer ICs einfach einen 240 Ohm Widerstand. Stromschnittstelle Beitrag "Hall-Sensor Mikrocontroller" >digitalisiert als Asci Ziffernfolge via USB an PC -> am PC ist dann >Messbereich 0-1000 = LSB Wert 0-1000 >ok? Wenns eh schon ASCII ist, dann rechnet niemand in LSB sondern sionnvollerweise in Einheiten V, A, wasauchimmer. IN deinem Fall ppm Un ob du nun 0-1000 ppm auf 0-5V oder 0-2,5 oder 0-3,3 oder 0-4,096V abbildest ist praktisch egal. >sobald ich da an der 0-5V Geschichte fummel komm ich in Schwierigkeiten Nö, du musst nur deinen Umsetzer-IC mit einem geringeren Verstärkunksfaktor einstellen (oder einfach einen kleineren Widerstand nehemen). Wenn dann dein 0-1000ppm in 0...4,096 V umgewandelt werden, gehts wunderbar mit 5V AVR Betriebsspannung. MfG Falk
Sirko Pöhlmann wrote: > Der Aufbau ist so: > > Messgerät Messbereich 0 - 1000ppm > Ausgang: 4-20mA > > mein Umsetzer: > Eingang 4-20mA -> spezieller Schnittstellen-Umsetzer-IC-> 0-5V -> > 0-1000LSB digitalisiert als Asci Ziffernfolge via USB an PC -> am PC ist > dann > > Messbereich 0-1000ppm am Messgerät = LSB Wert 0-1000 AD-Wert durch 1,023 teilen und runden... Musst Du nur noch in Software giessen.
@Björn Wieck >> Messbereich 0-1000ppm am Messgerät = LSB Wert 0-1000 >AD-Wert durch 1,023 teilen und runden... >Musst Du nur noch in Software giessen. Von hinten durch die Brust ins Auge! Aua. Besser nochmal die Grundlagen der Messtechnik durcharbeiten, mit Fokus aus Kalibrierung und Messwertumformung. MFG Falk
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.