Kapazitätmessen - komische Werte

Gast #1271075
Hallo,
ich will die Kapazität von einem kondensator so im Bereich 10pF - 100pF 
messen, und zwar indem ich die Zeit messe, die der Kondensator braucht 
um sich auf 63% der Ladespannung 5V aufzuladen. µc ist ein Atmega8 der 
mit 16Mhz läuft ohne Vorteiler.
Jetzt brauche ich für 55pF aber 691 Takte zum aufladen anstelle der 
errechneten 880, genauso für 102pF 1050 anstatt 1632. Der Ladewiderstand 
beträgt 1Mohm, und ich verwende den internen Komparator des ATmega8. 
Noch etwas Code:
1
SIGNAL(SIG_COMPARATOR)
2
{
3
  double result = 0;
4
  result = TCNT1;//*62/1000;
5
  //result = TCNT1;
6
  char test[10];
7
  dtostrf(result,3,1,test);
8
  send_string(test);
9
  send_string("pF---");
10
  ACSR &= ~(1<<ACIE);  //Interrupt disablen um prellen zu verhindern
11
  
12
}
13

14
void get_cap(void)
15
{
16
  
17
  TCNT1 = 0x00;    // Timerregister 0 setzen
18
  PORTD |= (1<<PD5);  // High setzen um Kondensator zu laden
19
  ACSR |= (1<<ACIE);    //Interrupt enablen
20
}
21

22
int main(void)
23
{
24
 sei();
25
 init_usart();
26
 DDRD |= (1<<PD5);
27
 DDRD &= ~(1<<PD7) | ~(1<<PD6);
28
 TCCR1B = (1 << CS10);  //Prescaler: keiner
29
 ACSR |= (1<<ACIE) | (1<<ACIS0) | (1<<ACIS1); //Interrupt enable rising edges
30

31
  while(1)
32
  {
33
    delay_ms(1000);
34
    PORTD &= ~(1<<PD5);  // Kondensator entladen
35
    delay_ms(1000);
36
    get_cap();
37
    
38
  }
39

40
}
Wäre super wenn einer von euch eine Idee hätte, ich habe keine :(
Gast
Wenn programmtechnisch alles stimmt, hilft vielleicht folgende Annahme:

102 pF / 55 pf = 1,85

1050 / 691 = 1,52

137 pF / 90 pF = 1,522

Eine zusätzliche Schaltungskapazität von 35 pF
würde also schon alles erklären.

Ansonsten: Was kommt denn bei C = 0 pF raus?

Da der zu messende Wert schon im Bereich der parasitären Kapazitäten
im Aufbau und im ATMega8 liegt, (temperaturabhängig!) muss dieser
Wert vor jeder Messung ermittelt werden!

Gruß Ralli

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.