eigene Betriebspannung messen

#437164
Lesenswert?

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.

Gast #437171
Lesenswert?

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
}
Gast #437212
Lesenswert?

@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
Gast #437218
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren