Hallo, Ich habe einen Atmega8 und würde gerne das Integral einer Kondensatorkurve bestimmten (Strom). Dafür bietet sich das Riemann-Integral-Verfahren an. Weiß einer von euch den Algorithmus, um dies durchzuführen? Gruß, Eric
Was genau möchtest du eigentlich bestimmen? Die Kapazität des Kondensators?
Na, ja einfach Rechteckflächen aufsummieren. du hast immer 2 Messpunkte nebeneinander. Für die Untersumme berechnest du die Rechteckfläche von der Achse ausgehend bis zum kleineren der beiden Y-Werte. Für die Obersumme bis zum größeren der beiden Y-Werte. Die Breite des Rechtecks ist der Abstand der beiden Messwerte auf der X-Achse. Einfach mal grafisch aufmalen, dann ist alles sonnenklar. Der Begriff 'Algorithmus' ist dafür schon fast ein wenig zu hoch gegriffen.
Ja, genau. Abbruchkriterium habe ich auch schon definiert, bis wie lange Werte aufgenommen werden sollen.
Beim Messen von großen Kapazitäten hat man doch normalerweise eine Spannungsquelle mit einer bekannten Spannung und einen bekannten Widerstad, über den geladen wird. Der Spannungsverlauf am Kondensator ist eine e-Funktion. Dann misst man nur noch die Zeit, bis die Spannung am Kondensator einen bestimmten Wert übersteigt. Daraus kann man dann ziemlich einfach ohne integrieren die Kapazität berechnen. Gehst du bei deiner Messung davon aus, dass der Innenwiderstand des Kondensators einen entscheidenden Einfluß hat und du deshalb den Ladestrom bestimmen willst oder sowas?
Zum einen der Innenwiderstand, dann ist es schwierig, einen Widerstand exakt auszumessen und der induktive Anteil wird auch nicht berücksichtigt. Ich wollte auch einfach mal was anderes als diese Standardmethode testen. Wie das Ober-und Untersummen Verfahren ungefähr geht ist mir schon klar, allerdings hatte ich gehofft, dass jemand vllt. schon einen fertigen Algorithmus zur Hand hat und ich so nicht das Rad erneut erfinden muss :-)
Eric schrieb: > Wie das Ober-und Untersummen Verfahren ungefähr geht ist mir schon klar, > allerdings hatte ich gehofft, dass jemand vllt. schon einen fertigen > Algorithmus zur Hand hat und ich so nicht das Rad erneut erfinden muss > :-)
1 | untersumme = 0; |
2 | obersumme = 0; |
3 | |
4 | for( i = 0; i < Anzahl_Messwerte - 1; ++i ) { |
5 | untersumme = untersumme + min( Messwert[i], Messwert[i+1] ) * Delta_X; |
6 | obersumme = obersumme + max( Messwert[i], Messwert[i+1] ) * Delta_X; |
7 | }
|
8 | |
9 | integral = ( untersumme + obersumme ) / 2; |
was'n da jetzt problematisch daran (ausser dem Schritt, wie man aus Obersumme und Untersumme einen einzigen Wert herausextrahiert und ich in Ermangelung anderer Verfahren einfach den Mittelwert nehme.
Du verschiebst das Problem des exakten Widerstands dann aber nur auf das Problem der exakten Strommessung, die auch wieder über einen Widerstand erfolgt. Der induktive Anteil ist doch frequenzabhängig. Ich weiß nicht ob das Sinn macht den so messen zu wollen. Aber egal. Kannst du nicht einfach das explizite Eulerverfahren nehmen? Das ist nun wirklich trivial und die Genauigkeit vermutlich mehr als ausreichend.
Danke für den Quelltext :) Mir war vorher nicht ganz klar, dass man immer bei der US den niedrigeren und bei der OS den höheren Wert braucht. Ich habe immer nur stetig fallende bzw. stetig steigende Funktionen betrachtet. In dem Fall vereinfacht sich das Riemann-Integral nämlich, weil dann die US nur um eine Stelle der OS verschoben ist. Als ich dann gesehen hab, dass man bei Funktionen, die sowohl steigen als auch fallen noch eine Fallunterscheidung benötigt, bin ich etwas verwirrt gewesen.
Euler-Verfahren? Ich habe mir gerade mal bei Wikipedia dies angeschaut...das ist mir als Nicht-Mathematiker glaub ich zu kompliziert. Ich bin mir auch noch nicht sicher, was als Ergebnis dabei herauskommt, aber ich bin mal gespannt :)
Drum sag ich ja: selber aufmalen und darüber nachdenken, was man da eigentlich tut. Ein Verfahren hat man erst dann wirklich begriffen, wenn man es selber mit der Hand mit Papier und Bleistift anwenden kann. Bilder ansehen ist zuwenig.
Eric schrieb: > Mir war vorher nicht ganz klar, dass man immer bei der US den > niedrigeren und bei der OS den höheren Wert braucht. Wie soll das Rechteck sonst immer unter- bzw. oberhalb der Kurve bleiben? Das gilt allerdings nur, solange die Kurve innerhalb der Intervall monoton ist.
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.