Hallo Leute, ich möchte mit einem Atmega644 eine Gleichspannung 0V bis 30V messen. Ich würde dies mit einem entsprechenden Spannungsteiler realisieren. Als Schutz für den analogen Eingang hätte ich eine Z-Diode mit Vorwiderstand vorgesehen. Meint ihr dass reicht als Schutz ober gibt es hier bessere Möglichkeiten? Gruss, Schorschi.
Das kommt auf die Leistung drauf an, wenn du Dir sicher bist, das die ZDiode die volle Leistungauch bei einem defekt absichern kann, ist diese i.O. ich würde Dir auf jedenfall noch einen VDR empfehlen, um auch wirklich sicher zu gehen. Gruß
@Schorschi (Gast) >Als Schutz für den analogen Eingang hätte ich eine Z-Diode mit >Vorwiderstand vorgesehen. Braucht man nicht. Mach den Spannungsteiler hochohmig, dann begrenzt der allein die kritische Spannugn am AVR. Die Schutzdioden im AVR leiten den Strom dann ab, siehe Pegelwandler. Also 1M + 150k sollten in etwa passen. MFG Falk
Hallo Schorschi, Eine Z-Diode beginnt nicht schlagartig zu leiten. Sehr weit unterhalb der Zenerspannung fließt bereits ein Strom, der deinen Spannungsteiler beeinflusst und die Messung ungenau machen wird. Deshalb macht man das gerne so: Man klemmt eine Diode nach VCC. Du würdest für 30V also zb einen 25K Widerstand und einen 5K Widerstand als Spannungsteiler nehmen. (oder ähnliche). Und eine Diode nach VCC. Steigt die Spannung am ADC Eingang über 5V + 0.7V der Diode, so fließt der Strom nach VCC. Der ADC Eingang sieht maximal 5.7V. Aber auch das ist schon zu viel. Man sollte nie über 5.0V gehen. Auch bei internen Klemmdioden würden benachbarte ADC Kanäle dann falsch messen. Baue deshalb den Spannungsteiler so auf: Anstatt dem 5K Widerstand nochmals einen Spannungsteiler 1K und 4K. Und damit gehst Du auf den ADC. Bei 5.7V sieht der ADC dann nur noch 4.56V
> "Also 1M + 150k sollten in etwa passen."
Ist für einen ADC aber zu hochohmig.
Atmel empfiehlt < 10k zu bleiben.
"The ADC is optimized for analog signals with an output impedance of
approximately 10 kΩ or
less. If such a source is used, the sampling time will be negligible. If
a source with higher impedance
is used, the sampling time will depend on how long time the source needs
to charge the
S/H capacitor, with can vary widely. The user is recommended to only use
low impedant sources
with slowly varying signals, since this minimizes the required charge
transfer to the S/H
capacitor."
@ adfix (Gast) >> "Also 1M + 150k sollten in etwa passen." >Ist für einen ADC aber zu hochohmig. >Atmel empfiehlt < 10k zu bleiben. Nöö, nicht wenn man weiss wie ;-) Ein kleiner Kondensator von ca. 2,2nF löst das Problem. Der liefert genug Ladung, um den Sample- und Hold Kondensator zu laden, ohne nennenswert an Spannung zu verliefern. Der Trick klappt allerdings nur dann, wenn man nicht zu oft misst. Also nur mit ein paar Dutzend Hz Abtastrate. MFG Falk
>Ein kleiner Kondensator von ca. 2,2nF löst das Problem.
Also ich rechne mal: die 14 pF des internen S/H (ent)laden den 2,2nF um
bis zu 0,3% gegen VCC/2. (0.5 * 14 / 2200). Sind also 4 Digits
zusätzlicher Fehler nahe 0V und nahe 5V.
-> um den Fehler auf < 0.5 Digits zu drücken würde ich >= 22nF nehmen
Tau ist dann 3,3ms bei 150k Quellimpedanz.
Für 0,5 Digits Einschwingfehler brauchts dann mehr als 8*3,3ms = 25ms
Mindestabstand zwischen den Messungen.
Allerdings ist dann immer noch der Leckstrom vernachlässigt. Bei hohen
Temperaturen ist der Fehler hierdurch bis zu: 1uA * 150k = 150 mV.
Gruß Anja
Nabend Leute, na das sind mal hilfreiche Antworten. An dieser Stelle reicht mir eine Genauigkeit von 100mV volkommen aus. Ich werde am Wochenende mal den hochomigen Spannungsteiler mit C austeseten. Mal was anderes. Ich hab hier aufm Schreibtisch mal eine Testschaltung auf nem Steckbrett aufgebaut. Ich gehe direkt ohne jegliche Bauteile dazwischen auf den 1. Analogeingang. Wenn ich jetzt 30mV anlege dann merkt der ADC dass überhaupt nicht. Ich lese immer einen Wert 0 aus dem Register. Erst ab 60mV kann ich einen Wert am ADC messen. Allerdings fehlen dann die 60mV natürlich. Kann sich dass jemand erklären? Gruss, Georg.
Hallo, hat denn keiner ein ähnliches Problem gehabt? Laut Datenblatt ist ein Offset von 1Bit möglich. Wenn ich jetzt von 2 Bit ausgehe wären dass grade mal 15mV bei 5V Referenz. Bei mir scheint der Offset über 50mV zu haben. Kann sich jemand erklären wie dass kommt? Gruss, Schorschi.
@ Georg X. (schorsch666) >Mal was anderes. Ich hab hier aufm Schreibtisch mal eine Testschaltung >auf nem Steckbrett aufgebaut. Steckbrett klingt nicht gut. Hast du auch AGND und AVCC richtig angeschlossen? Wie legst du die 30mV an? Aus welcher Quelle kommen die? Wie misst du die? MfG Falk
Hallo, dass das Steckbrett nicht das Ideale ist, dass ist mir schon klar. Dann würde ich Rauschen, messbarer Offset o.ä. verstehen. Aber dass diese Spannungen nicht erkannt werden ist sehr seltsam. AVCC liegt an 5V = Versorgungspannung. AGND und GND sind auch miteinander verbunden. AREF ist über einen 100nF auf GND gelegt. Ich habe am ADC einen AD8210 als Messverstärker hängen. Dahinter ein Shunt zur Strommessung. Der AD8210 bringt bei 0V am Shunt 30mV am Ausgang. Gemessen ist alle mit einem Oszi. Gruss, Georg.
Nabend Leute, ich habe jetzt noch ein paar Tests mit einem KTY81 gemacht. Selbst hier habe ich diese Probleme. Was mir auffält ist, dass wenn ich den µC längere Zeit laufen lasse so über 60min dann sinkt der Offset immer weiter. Ich verstehe dass nicht. Kann mir da jemand weiter helfen? Gruss, Georg.
Also wenn AREF nach GND liegt, dann kann doch auch keine 5V Referenz entstehen?! Intern hat auch der Mega644 nur 2,56V. Vll solltest du mal deine Referenzeinstellungen überprüfen? PS: Ich habe es selbst noch nie gemacht.. Nur mal ein bisschen gelesen ;) Gruß Jannik
Hallo, dass AREF über nen 100nF auf GND liegt ist richtig. Ist doch so im Datenblatt beschrieben. Siehe Kapitel 21.9.1 ADMUX – ADC Multiplexer Selection Register im Datenblatt. Was mir einfach nicht in den Kopf geht warum der ADC den Spannungsbereich 0V bis 50mV einfach nicht erkennt bzw. messen kann. Erst wenn ich drüber bin wird die Spannung erkannt. Als ob das Potential nicht bei 0V sondern bei 50mV liegt. Ist aber nicht so. Hab ich schon geprüft. Gruss, Georg.
Hallo Jungs, langsam weiss ich nicht weiter. Mein ADC vom Atmega644 misst auf jedem der analogen Eingänge erst ab 68mV. Alles was drunter ist wird mit 0 Digits angezeigt. Egal ob ich die interne oder die ext. verwende es ist immer das selbe. Weiss denn keiner Rat? Kann es sein dass mein ADC hinüber ist? Gruss, Georg.
Hi
>langsam weiss ich nicht weiter.
Was ist mit der Software?
MfG Spess
Hi, wenn du die FW meinst dann weiss ich nicht wo der Fehler sein soll wenn ich nur bei beendeter Messung das Datenregister des ADCs auslese. Natürlich schon alles mit dem JTAG gedebugged. Aber es ist wie ich es schon geschrieben habe. Der Messbereich fängt bei 68mV an. Georg.
Hi Dann behalte es es für dich. MfG Spess
So sieht meine Initialisierung aus: void adc_init(void) { ADMUX=0x40; // Voltage reference AVCC wit ext. capacitor an AREF ADCSRA=0xC5; // ADCenable, ADCstartconversion, ADC_IRQEnable.. ADCSRB=0x00; // free running mode ADCH=0x00; // dataregister ADCL=0x00; // dataregister DIDR0=0x01; // ADC0 logical pin disabled } und so die Abfrage: // ADC Sequence in Fast mode if((ADCSRA & 0x40)!= 0x40) { ui_ADC_Result[0]=ADCL; ui_ADC_Result[0]|=(int)ADCH << 8; ADCSRA |= 0x40; //start new conversion } mehr mach ich grad nicht.
Hallo Leute, jetzt habe ich ein paar andere µC getestet. Darunter war ein ATMEGA16 und ein ATMEGA32. Bei allen ist es das selbe. Das ist doch nicht normal?? Gruss, Georg.
@Georg X. (schorsch666) >Darunter war ein ATMEGA16 und ein ATMEGA32. Bei allen ist es das selbe. >Das ist doch nicht normal?? Dann leigt es wohl an deinem AUfbau oder deinen Messmethoden. Ein Oszi ist denkbar ungeeignet, um Spannung im mV Bereich GENAU zu messen. Vielleicht hast du aber auch eine Masseverschiebung durch grösere Ströme oder hohe Kontaktwiderstände auf deinem Steckbrett. Würde mich nicht wundern. MfG Falk
Hmmm.... Na dann werde ich mal alles auf ne Lochraster bringen. Mal schauen wie das danach aussieht. Gruss und Danke. Georg.
> Ein kleiner Kondensator von ca. 2,2nF löst das Problem. > Also ich rechne mal: die 14 pF des internen S/H (ent)laden den 2,2nF um > bis zu 0,3% gegen VCC/2. (0.5 * 14 / 2200). Sind also 4 Digits > zusätzlicher Fehler nahe 0V und nahe 5V. > -> um den Fehler auf < 0.5 Digits zu drücken würde ich >= 22nF nehmen > Tau ist dann 3,3ms bei 150k Quellimpedanz. > Für 0,5 Digits Einschwingfehler brauchts dann mehr als 8*3,3ms = 25ms > Mindestabstand zwischen den Messungen. > Allerdings ist dann immer noch der Leckstrom vernachlässigt. Bei hohen > Temperaturen ist der Fehler hierdurch bis zu: 1uA * 150k = 150 mV. > Gruß Anja Hallo! Mich würde nur interessieren wie Anja auf die 25ms Mindestabstand zwischen den Messungen kommt. Warum rechnet Sie für 0,5LSB gerade 8*Tau und nicht mehr oder weniger, wie ist da der Zusammenhang? Danke Tobi
Kann den niemand einem Neuling hierbei helfen??? Finde im Internet keine passende Erklärung... Grüße Tobi
Tobi92 schrieb: > Mich würde nur interessieren wie Anja auf die 25ms Mindestabstand > zwischen den Messungen kommt. Warum rechnet Sie für 0,5LSB gerade 8*Tau > und nicht mehr oder weniger, wie ist da der Zusammenhang? soo wir rechnen mal e hoch 8 = ? 2 hoch 10 (Bit) / 0.5LSB = ? Die "8" ist natürlich gerundet. Gruß Anja
Falk Brunner schrieb: > Ein kleiner Kondensator von ca. 2,2nF löst das Problem. Der liefert > genug Ladung, um den Sample- und Hold Kondensator zu laden, ohne > nennenswert an Spannung zu verliefern. Der Trick klappt allerdings nur > dann, wenn man nicht zu oft misst. Also nur mit ein paar Dutzend Hz > Abtastrate. Der sorgt auch dafür das der AVR durch latchup kaputt geht.
Anja schrieb: > Tobi92 schrieb: >> Mich würde nur interessieren wie Anja auf die 25ms Mindestabstand >> zwischen den Messungen kommt. Warum rechnet Sie für 0,5LSB gerade 8*Tau >> und nicht mehr oder weniger, wie ist da der Zusammenhang? > > soo wir rechnen mal e hoch 8 = ? > 2 hoch 10 (Bit) / 0.5LSB = ? > > Die "8" ist natürlich gerundet. > > Gruß Anja Vielen Dank! Entschuldigung für diese "einfache" Frage, aber mir ist einfach nicht eingefallen. Tobi
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.