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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.