Hallo, ich bin gerade dabei mit dem ADC12 des MSP430 zu arbeiten (genau ein MSP430F1611). Ich habe nun scheinbar ein Verständnissproblem bei der Referenzspannung. Ich habe ja die Möglichkeit bei der internen Referenzspannung zwischen 1,5V und 2,5V zu wählen. Wenn ich das im Userguide richtig verstehe muss die anliegende Spannung dabei jeweils zwischen der negativen Referenzspannung ( bei mir 0) und der positiven Referenzspannung liegen ( bei mir die interne Referenzspannung). Nun habe ich ein rumgespielt mit der interenen Referenzspannung und das Ergebnis hat sich dabei bei mir nicht verändert. Laut der Berechnung der Spannung im Userguide sollte das Ergebnis aber doch auch abhängig sein von der Referenzspannung NADC = 4096 x ((Vin – VR-) /( VR+ – VR- )) Bzw. auch wenn ich bei der positiven Referenzspannung liege gibt mir der ADC nicht 0FFFh so wie es doch laut Userguide sein sollte Kann mir jemand sagen wo dabei mein Denkfehler ist?
Björn Kaufmann schrieb: > Bzw. auch wenn ich bei der positiven Referenzspannung liege gibt mir der > ADC nicht 0FFFh so wie es doch laut Userguide sein sollte Und was "gibt" er Dir stattdessen?
Habe es mit der internen Spannung versucht 3,3V /2 --> 1,65 V Bei VR+ 1,5V 0x0A7C --> ca 2 V Vei VR+ 2,5V 0xA79 --> ca 3,3V Bei einer externen Spannung 24V /13 --> ca. 1.84 V Bei VR+ 1,5 V 0x0B79 --> ca 14 V Bei VR+ 2,5V 0x0B76 --> ca 23.3V Bei den Ergebnissen für die Spannungen habe ich dann das Ergbnis mal 2 bzw. mal 13 genommen.
Mit anderen Worten, die externe Spannungsmessung funktioniert, nur der interne Messkanal für Vcc zeigt zu viel!? Wie sieht dein Code aus?
Es wird mir sowohl bei der internen als auch bei der externen Messung das gleiche Ergebnis ausgebenen. Egal ob 1,5V oder 2,5V als interene Referenzspannung. Aus der Berechnungsformel ergibt sich dann für 1,5V ein falsches Ergebnis. Zum zweiten liegen dann die Werte ja über 1,5V und nach Userguide sollte dafür das Ergebnis 0FFFh lautet.
Keiner ein Ahnung? Ich habe jetzt mal AVcc als Referenzspannung versucht und damit funkioniert es wie es soll Nur bei der internen Referenzspannung bleibt das Ergebnis unbeeinflusst davon ob ich 2,5V oder 1,5V nehme. Muss ich dabei noch etwas anderes setzen ausser das 2,5V Bit und REFON?
Mein code sieht folgendermaßen aus. Zumindest die interessanten Teile Bei der positiven Referenzspannung von 1,5V habe ich dann REV2_5V negiert und in der Berechnung das Ergebnis mit 1,5 multipliziert statt 2,5 ADC12CTL0 = ADC12ON|!SHT00|SHT01|!SHT02|!SHT03|!ENC|REFON|REF2_5V; ADC12CTL1 = SHP; ADC12MCTL0 = INCH_11|SREF_1; int dezimalcounter = 0; int next_data_flag = 0; float result = 0; unsigned char cs_x = CS2; _EINT(); ADC12CTL0 |= ENC; ADC12CTL0 |= ADC12SC; while (1) { if(!busy_flag(cs_x) && !next_data_flag && displayqueuecounter !=0) { next_data_flag = 1; } else { if((displayqueuecounter == 0) && ((ADC12IFG & 0x0001) == 0x0001)) { result = 0; //get AD value in ADCresult int ADCresult =ADC12MEM0; result = ((ADCresult*2) * 2.5)/4095;
>NADC = 4096 x ((Vin – VR-) /( VR+ – VR- )) da steht in meinem Datenblatt NADC = 4095 x ((Vin – VR-) /( VR+ – VR- )) Verlängere mal SHT. > Ich habe jetzt mal AVcc als Referenzspannung versucht und damit > funkioniert es wie es soll AVCC als Referenzspannung zum Messen AVCC/2 ist aber ziemlich sinnlos. Beschaltung am PIN VREF+?
Der Fehler in der Formel ist ein Fehler beim Abschreiben. In meinem Code ist es ja richtig übernommen. SHT habe ich auch schon verlängert ohne Auswirkungen. Mit AVcc wollte ich nur testen ob sich das Ergebnis des AD-Wandlers verändert. Bei der Umstellung der internen Referenzspannung zwischen 1,5V und 2,5V geschieht ja nichts mit dem Ergebnis der Wandlung. Der Pin VREF+ ist bei mir not connected
Habe mal das Blockdiagramm angehängt vom ADC12. Bei VREF+ habe ich doch nur einen Ausgang. Ist ja auch die interne Referenzspannung.
Ich verstehe das Problem mit der Hardewarebeschaltung nicht. Ich nutze ja keine externen Quellen. Das einzige was ich habe ist, dass ich an AVcc 3,3V habe
Björn K. schrieb: > Ich verstehe das Problem mit der Hardewarebeschaltung nicht. Ich nutze > ja keine externen Quellen. Das ist wurscht, der Abblockkondensator für die interne Referenzspannungsquelle ist trotzdem nötig.
Hi >Das einzige was ich habe ist, dass ich an >AVcc 3,3V habe Nur an AVcc? MfG Spess
Probier doch einfach aus, was passiert, wenn Du den MSP430 korrekt mit allen erforderlichen Abblockkondensatoren ausstattest. Wie man das machen kann, zeigt z.B. Olimex hier: http://olimex.com/dev/images/MSP430/MSP430-449STK2-sch.gif oder hier: http://olimex.com/dev/images/MSP430-169LCD_RevB_schematic.png (der 'F169 ist das gleiche wie der 'F1611, er hat nur weniger Flash&RAM).
Hi >Probier doch einfach aus, was passiert, wenn Du den MSP430 korrekt mit >allen erforderlichen Abblockkondensatoren ausstattest. Hier http://www.ti.com/litv/pdf/slau049f steht doch auf S.17-17 wie es gemacht wird. MfG Spess
Es habdelt sich dabei um ein Experimentierboard welches hier vor längerem entwickelt wurde. Ich muss mir dann wohl mal den Schaltplan besorgen.
Also die Beschaltung des MSP ist richtig und alle Abblockkondensatoren sind vorhanden. Fehler bleibt
versuch mal vref+ zu messen -mit voltmeter -mit oszi -auf einen anderen ad-kanal gegen vref- = gnd, vref+=vcc stimmt die am voltmeter abgelesene spannung? stimmt der ad-wert von vref+ bist du dir sicher,dass du gegen vref+ misst, und nicht gegen veref+?
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.