Hallo, ich benutze eine Batterie 3,6 Volt als Versorgungspannung für eine MSP430F149. kann ich mit Hilfe des ADC-Wandler der MSP430149 ihre eigene Betriebsspannung (die Spannung ihre Batterie praktisch) messen? Grüße.
Hallo unsichtbarer WM-Rahul, kannst du mir den Messaufbau und einen Software dafür vorschlagen? Ich habe gerade angefangen mit MSP430F149 zu arbeiten, deshalb habe noch nicht viel im Kopf. Grüße.
Du brauchst dazu eine Referenzspannung, die nicht von der Versorgungsspannung abhängig ist. Ich kenn jetzt den MSP nicht, kann dir also nicht sagen, ob der Chip etwas eingebaut hat, was man als Referenzspannung verwenden könnte. Wenn ja: Dann wird die Versorgungsspannung mittels ADC mit dieser Referenzspannung verglichen. Die Referenzspannung ist dann jene Spannung bei der der ADC seinen Maximalwert ausgibt. Bei sinkender Versorgungsspannung sinkt auch der Wert vom ADC Wenn nein: Kannst du dem ADC eine externe Referenzspannung vorgeben? Wenn ja, dann funktioniert es wieder so wie im vorhergehenden Fall Wenn nein: In dem Fall benutzt der ADC ja dann wohl die Versorgungs- spannung als Maximalspannung für den ADC. Daher legst du die Referenzspannung an den ADC und misst diese. Mit sinkender Versorgungsspannung steigt daher der ADC Wert an.
hallo, soviel ich weiss, der MSP430 hat einen internen referenzspannung schau einfach in www.ti.com da sind bsp für ADC in verbingung mit LEDs. ciao
so ein bsp:
1 | #include <msp430x14x.h> |
2 | |
3 | void main(void) |
4 | {
|
5 | WDTCTL = WDTPW + WDTHOLD; // Stop WDT |
6 | ADC12CTL0 = SHT0_2 + ADC12ON; // Set sampling time, turn on ADC12 |
7 | ADC12CTL1 = SHP; // Use sampling timer |
8 | ADC12IE = 0x01; // Enable interrupt |
9 | ADC12CTL0 |= ENC; // Conversion enabled |
10 | P6SEL |= 0x01; // P6.0 ADC option select |
11 | P1DIR |= 0x01; // P1.0 output |
12 | |
13 | for (;;) |
14 | {
|
15 | ADC12CTL0 |= ADC12SC; // Sampling open |
16 | _BIS_SR(CPUOFF + GIE); // LPM0, ADC12_ISR will force exit |
17 | }
|
18 | }
|
19 | |
20 | // ADC12 interrupt service routine
|
21 | __interrupt void ADC_ISR (void); |
22 | ADC12_ISR(ADC_ISR) |
23 | __interrupt void ADC_ISR (void) |
24 | {
|
25 | if (ADC12MEM0 < 0x7FF) |
26 | P1OUT &= ~0x01; // Clear P1.0 LED off |
27 | else
|
28 | P1OUT |= 0x01; // Set P1.0 LED on |
29 | _BIC_SR_IRQ(CPUOFF); // Clear CPUOFF bit from 0(SR) |
30 | }
|
Bitte Code-Tags (C und /C in eckigen Klammern [] für C-Code) verwenden, dann werden auch die Zeilen mit Überlänge nicht umgebrochen und man kann den Code ordentlich lesen.
@led ... der msp hat eine interne ref.spannung von 2.5v (wenn ich mich nicht täusche). du kannst einfach deine betriebsspannung durch einen vorteiler (da deine spannung größer als die ref. spannung ist) teilen (verhältnis 1:2 oder 1:3) und dann messen. noch mit 2 oder 3 multiplizieren (je nach vorteiler) und du hast deine betriebsspannung ... gruß rene
warum nicht die ref-spannung per lumpiger (aber genauen) z-diode erzeugen? man muss halt nur sicher gehen dass die spannung nicht unter einen kritschen wert fällt sodass der z-strom nicht zu klein wird. is halt nur kritisch wegen batteriebetrib...aber idr haben die AD wandler schon eine ref-quelle intern. pumpkin
Bei den AVRs kann man auch die eigene Band-Gap-Referenz messen und die VCC als Referenz auswählen. Dann braucht man keinen Pin und keine externen Komponenten. Man muß nur ein kleines bissel rechnen (Wert ist reziprok zu VCC). Peter
Der MSP hat da WIMRE auch eine "eingebaute Einrichtung" für und es sollte dafür auch Beispiele von TI geben...
Der F149 hat eine interne, zw. 1.5V und 2.5V umschaltbare Referenzspannung eingebaut. Beschaltung 10uF und 100nF zw. VRef+ und AVss. Für die Messung der Betriebsspannung gibt es eigene Voreinstellungen in den ADC12MEMCTLx (INCHx) Registern. http://focus.ti.com/lit/ug/slau049f/slau049f.pdf
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.