Dude Geschrieben 21. April 2015 Geschrieben 21. April 2015 Nehme an, Du möchtest die Differenz der beiden Kurven approximieren? Bei Polyomen höherer Ordnung bekommst Du vermutlich Schwingungen mit rein. Ich könnte mir vorstellen, dass ein Spline da ganz gut passen - kannst Du bitte mal ein Bild der Kurve schicken, die Du annähern möchtest? So rein vom Draufstehen sieht das aus, als ob die hochgerechnete und die tatsächliche Kurve sich mit einem Offset und einer Drehung ganz gut ineinander überführen lassen. Kannst ja mal ein Excel mit den Werten schicken? Wenn's nicht ganz so eilt finde ich bestimmt eine Matlab Lizenz mit Curve-Fitting Toolbox. Zitieren
barney Geschrieben 22. April 2015 Autor Geschrieben 22. April 2015 (bearbeitet) Nehme an, Du möchtest die Differenz der beiden Kurven approximieren? Bei Polyomen höherer Ordnung bekommst Du vermutlich Schwingungen mit rein. Ich könnte mir vorstellen, dass ein Spline da ganz gut passen - kannst Du bitte mal ein Bild der Kurve schicken, die Du annähern möchtest? So rein vom Draufstehen sieht das aus, als ob die hochgerechnete und die tatsächliche Kurve sich mit einem Offset und einer Drehung ganz gut ineinander überführen lassen. Kannst ja mal ein Excel mit den Werten schicken? Wenn's nicht ganz so eilt finde ich bestimmt eine Matlab Lizenz mit Curve-Fitting Toolbox. Ich habe auch was über die Linearisierung mittels Splines gelesen. In der angehängten Excel Tabelle habe ich mit Offset und Drehung gearbeitet. Die Werte zwischen 25V bis 31V sind akzeptabel. In Scilab findet man auch Kurve Fitting Tools, ich benötige aber die Koeffizienten für die Abbildung im Teensy. Vielen Dank Barney Edit: Externe Links nur für Mitglieder sichtbar teensy.zip bearbeitet 22. April 2015 von barney Zitieren
barney Geschrieben 22. April 2015 Autor Geschrieben 22. April 2015 Ich stehe noch begrifflich auf dem Schlauch. Ich will ja nicht nur ein Spline durchlegen, sondern auch die Werte Mappen. Ich komme nicht auf die richtigen Begriffe für Matlab und Scilab. Das ist doch Messtechnischer Standard ..... Zitieren
Dude Geschrieben 22. April 2015 Geschrieben 22. April 2015 Ich hab das Vorgehen so verstanden: Du hast die tatsächlichen Werte (="angelegt") und die Werte, die der Teensy zunächst misst (="Teensy"). Von den beiden Kurven wird die Differenz gebildet. Die "Differenzkurve" (x-Achse: "Teensy-Spannungen", y-Achse: Korrekturwerte) möchtest Du durch ein Polynom o.ä. annähern um dann im Betrieb die "Teensy" Werte zu korrigieren? Zitieren
barney Geschrieben 22. April 2015 Autor Geschrieben 22. April 2015 Ich hab das Vorgehen so verstanden: Du hast die tatsächlichen Werte (="angelegt") und die Werte, die der Teensy zunächst misst (="Teensy"). Von den beiden Kurven wird die Differenz gebildet. Die "Differenzkurve" (x-Achse: "Teensy-Spannungen", y-Achse: Korrekturwerte) möchtest Du durch ein Polynom o.ä. annähern um dann im Betrieb die "Teensy" Werte zu korrigieren? Da können mehrere Ansätze gefahren werden. 1. Mapping der Werte durch mehrere Stützstellen und lineare Interpolation. 2. Polynom durch die Teensy Messkurve legen und Korrekturdifferenz berechnen. Zitieren
Dude Geschrieben 22. April 2015 Geschrieben 22. April 2015 Ich hab mir die Differenzwerte angesehen ... und die könnte man (auf den ersten Blick) durch einen Spline approximieren (die Grafik bekomme ich aber nicht in meinen Post eingebunden, da wir eine andere, die nicht von mir stammt, angezeigt). Zitieren
barney Geschrieben 22. April 2015 Autor Geschrieben 22. April 2015 (bearbeitet) Ich hab mir die Differenzwerte angesehen ... und die könnte man (auf den ersten Blick) durch einen Spline approximieren: Mann muss nicht immer in die Ferne schweifen.... Mit Libre Office oder Excel (nur bis zur 3 Ordnung) kann man die Polynome bestimmen. Leider Rundet Excel zu früh, so das Polynome > 3 Ordnung nur Schrott sind. Es war zu trivial: Die beiden Achsen angelegt und Teensy in ein XY-Diagagram anzeigen lassen. Die Teensy-Werte sind die X-Achse. Dann eine Trendlinie in den Graphen einzeichnen lassen. Hier Linear oder Poly auswählen. Die Formel dazu anzeigen lassen und in die Tabelle kopieren. x durch *B2^ ersetzen und das wars. Bis auf +- 10mV genau. Teensy Linearität 22.04.2015.zip bearbeitet 22. April 2015 von barney Zitieren
barney Geschrieben 22. April 2015 Autor Geschrieben 22. April 2015 Für Scilab Nutzer: function p = polyfit(x, y, n) if length(x) ~= length(y) error('x and y vectors must be the same size') end x = x( : ); y = y( : ); V = ones(length(x), n+1); for j = n : -1 : 1 V(:, j) = x .* V (:, j+1); end [Q, R] = qr(V); QTy = Q' * y; p = R(1 : n+1, 1 : n+1) \ QTy(1 : n+1); p = p.'; endfunction Polynom dritter Ordnung: y auf x Normieren p=polyfit2(y,x,3) --> x = 20. 23. 25. 27. 29. 31. --> y = 20.77 23.38 25.14 26.93 28.53 30.15 --> p=polyfit2(y,x,3) p = 0.0015586 - 0.1118917 3.8060089 - 24.744834 --> 0.0015586*20.77**3 - 0.1118917*20.77**2 + 3.8060089*20.77**1 - 24.744834 ans = 20.001789 Damit kann man fahren. Edit: --> 0.0015586*y**3 - 0.1118917*y**2 + 3.8060089*y**1 - 24.744834 ans = 20.00 22.99 24.98 27.04 28.95 31.01 --> x = 20. 23. 25. 27. 29. 31. Zitieren
Dude Geschrieben 22. April 2015 Geschrieben 22. April 2015 Ich hab die Differenzenwerte gerade auch durch Excel approximiert ... wie Du sagst, ab 3.Ordnung sieht es auf dem Diagramm sehr gut aus, die ausgegebenen Koeffizienten sind aber nur Schrott. Achtung: bei den Polynomen hoher Ordnung ist wichtig, dass Du die Korrekturwerte über den maximalen Wertebereich ermittelst ... außerhalb hauen dir die sonst so was von weg !!! P.S.: Verdammte Axt, wie schaff ich es, dass die angehängte Datei richtig angezeigt wird?????? Zitieren
barney Geschrieben 22. April 2015 Autor Geschrieben 22. April 2015 Ich hab die Differenzenwerte gerade auch durch Excel approximiert ... wie Du sagst, ab 3.Ordnung sieht es auf dem Diagramm sehr gut aus, die ausgegebenen Koeffizienten sind aber nur Schrott. Achtung: bei den Polynomen hoher Ordnung ist wichtig, dass Du die Korrekturwerte über den maximalen Wertebereich ermittelst ... außerhalb hauen dir die sonst so was von weg !!! P.S.: Verdammte Axt, wie schaff ich es, dass die angehängte Datei richtig angezeigt wird?????? Kann ich dir nicht sagen, was da los ist. Ich habe jetzt Polynome bis zur 5 Ordnung mit den Werten verglichen. Die Grafen sind mehr die Freude eines Einzelnen. Grün = so sollte der Verlauf sein Schwarz = Poly 3 Ordnung Rot = Poly 6 Ordnung Blau = so misst der Teensy Ergo Lineare Interpolation oder das Polynom dritten Grades fittet am besten. :peace: Zitieren
Dude Geschrieben 22. April 2015 Geschrieben 22. April 2015 Dann eben mit zip Anhang. Teensy Linearität 22.04.2015.xls.zip 1 Zitieren
barney Geschrieben 22. April 2015 Autor Geschrieben 22. April 2015 Dann eben mit zip Anhang. OK! Welche Erkenntnis ziehen wir daraus? Lassen wir die Widerstände so wie sie sind und benutzen ein Polynom 3 Ordnung? 10 Werte messen und in einer Tabelle eintragen sollte nicht die Schwierigkeit sein. Mit Libre Office oder Scilab kann man das Polynom bestimmen und die Werte in das Programm eintragen. Die Rechenzeit sollte sich in Grenzen halten. Jetzt ist nur noch die Formel in die Software als Funktion einbringen! Mehr machts? Die Schweizer? VG Barney Edit: Und nächste Woche gibt es wieder eine Folge "Spaß mit Scilab" Zitieren
Dude Geschrieben 22. April 2015 Geschrieben 22. April 2015 Klassischerweise macht man in diesem Fall eine Open-Point-List im Wiki Beitrag auf. Dann gerät's schon nicht in Vergessenheit ... :thumbsup: Die spannende Frage ist, ob die Korrekturfunktion bei allen Akkuspannungen bzw. zugehörigen Spannungsteilern die gleiche ist? Kannst Du das beurteilen? Zitieren
barney Geschrieben 22. April 2015 Autor Geschrieben 22. April 2015 Klassischerweise macht man in diesem Fall eine Open-Point-List im Wiki Beitrag auf. Dann gerät's schon nicht in Vergessenheit ... :thumbsup: Die spannende Frage ist, ob die Korrekturfunktion bei allen Akkuspannungen bzw. zugehörigen Spannungsteilern die gleiche ist? Kannst Du das beurteilen? Plopp -> geistige Implosion! Zitieren
barney Geschrieben 22. April 2015 Autor Geschrieben 22. April 2015 Klassischerweise macht man in diesem Fall eine Open-Point-List im Wiki Beitrag auf. Dann gerät's schon nicht in Vergessenheit ... :thumbsup: Die spannende Frage ist, ob die Korrekturfunktion bei allen Akkuspannungen bzw. zugehörigen Spannungsteilern die gleiche ist? Kannst Du das beurteilen? Ich vermute schon, das die Abweichungen bei uns allen gleich sind. Eine Kombination aus Austausch der Widerstände und Einführung des Polynoms wird der Ansatz sein. Ich werde einfach eine Excel Tabelle für 10 Messwerte zur Verfügung stellen und jeder kann sich dann das Polynom 3 Grades generieren und Koeffizienten abschreiben. Das sollte kein Drama sein. Wer das nicht möchte, kann mit meinen default Werten leben. Der BamBam Controller ist auch kein Messinstrument. Der Controller soll nicht völlig daneben liegen, aber 20mV sind hinnehmbar. Wiki Eintrag mache ich in den nächsten Tagen. VG Barney Zitieren
barney Geschrieben 23. April 2015 Autor Geschrieben 23. April 2015 Schande, ich bin gestern von zwei angehenden Programmieren zu der Polynom Thematik ausgelacht worden. Das wären wohl die Anforderungen im Grundstudium Informatik und zum Lösen eines Polynoms 3 Ordnung benötigt man nur ein Blatt Papier und ein Bleistift oder 10 Zeilen C-Code. :mad: Heul Und dann kam noch so was despektierliches wie "Wenn der Hardware Entwickler (wieder mal) Mist gebaut hat, muss der Programmierer den Pfusch ausgleichen." Zitieren
Chrizz Geschrieben 27. April 2015 Geschrieben 27. April 2015 Braucht noch wer solch eine Empfängerplatine für die Wii Steuerung? Bestellmenge ist wohl 6 und ich nehm erstmal 2 also wer noch ein Longboard oder Trampa baut, das wäre die Gelegenheit! Zitieren
barney Geschrieben 12. Mai 2015 Autor Geschrieben 12. Mai 2015 Braucht noch wer solch eine Empfängerplatine für die Wii Steuerung?Bestellmenge ist wohl 6 und ich nehm erstmal 2 also wer noch ein Longboard oder Trampa baut, das wäre die Gelegenheit! Am 11.05.2015 7 Stück bestellt. 2 Chrizz 1 Barney Rest - frei! Zitieren
barney Geschrieben 15. Mai 2015 Autor Geschrieben 15. Mai 2015 Polynom ist jetzt im Grundsatz erledigt und wird im Code eingearbeitet. // Die Spanungsmessung ist nicht linear daher Polynom dritter Ordnung #define PolynomX0 (float) 24.744834 // Polynom 3 Grades für die Korrektur der Messverzerung Spannung #define PolynomX1 (float) 3.8060089 // Polynom 3 Grades für die Korrektur der Messverzerung Spannung #define PolynomX2 (float) 0.1118917 // Polynom 3 Grades für die Korrektur der Messverzerung Spannung #define PolynomX3 (float) 0.0015586 // Polynom 3 Grades für die Korrektur der Messverzerung Spannung #define UBatPoly (float) ( PolynomX3 * pow(Ubatt,3) - PolynomX2 * pow(Ubatt,2) + PolynomX1 * Ubatt - PolynomX0 ) void setup() { Serial.begin(9600); } void loop() { float Ubatt = 20.77 ;// Serial.println(Ubatt); Serial.println(UBatPoly); delay (1000); } Zitieren
barney Geschrieben 18. Mai 2015 Autor Geschrieben 18. Mai 2015 Die Messwertkorrektur ist einarbeitet und verbesserte die Messergebnisse, die eine Abweichung von bis zu 1V hatten, auf 50mV. Das Fenster bei mir ist von 18V bis 32V, mit dieser Genauigkeit. Als nächstes ist der Stromsensor dran Zitieren
barney Geschrieben 18. Mai 2015 Autor Geschrieben 18. Mai 2015 Da habe ich keine Hoffnung, diesen besonders genau zu bekommen. Im Datenblatt ist zu finden, dass durch die Remanenz des magnetischen Materials im ACS756, der Fehlerstrom bis zu 230mA betragen kann, wenn der Stromsensor für 50A mit 100A gesättigt wurde. Edit: Weiter ist der ACS756 für 5.0V getrimmt worden und nicht für 3.3V, wie ich ihn einsetze. Da kommen weitere Fehler hinzu. Vom 200A Typ gibt es eine 3.3V Variante. Bei 100A bin ich mir momentan nicht sicher. Ansonsten werde ich die selbe Methode wie bei der Spannungsmessung testen, ob man nicht noch mehr Genauigkeit rausholen kann. Zitieren
Beatbuzzer Geschrieben 18. Mai 2015 Geschrieben 18. Mai 2015 Gibt da noch einen Zusatz in den Notes: Customers that plan to operate the device from a 3.3 V regulated supply should contact their local Allegro sales representative regardingexpected device accuracy levels under these bias conditions. Ich verwende die ACS758-100B. Die sind mit 100 mA Fehler nach 50 A Belastung angegeben. Besonders genau sind diese Sensoren allgemein nicht, besonders bei niedrigen Strömen. Daher ist es auch nicht von Vorteil einen 200A Sensor einzubauen, wenn die meiste Zeit eh nur < 5 A fließen. Die höchste Genauigkeit sollte bei dem Strom liegen, der am häufigsten fließt. Sind bei meinem Board um 10 A, darauf habe ich auch abgeglichen. Passt auch ganz gut, obwohl ich mit 10 bit nur eine Auflösung von 0,25 A generieren konnte. Bei 3,3V Versorgung läuft Dir der Sensor aber früher in die Begrenzung, da ja nicht soviel Spannungshub zur Verfügung steht. Da musst Du wahrscheinlich schon den 200 A nehmen und mit der geringeren Sensitivität leben... Zitieren
barney Geschrieben 18. Mai 2015 Autor Geschrieben 18. Mai 2015 Gibt da noch einen Zusatz in den Notes: Ich verwende die ACS758-100B. Die sind mit 100 mA Fehler nach 50 A Belastung angegeben. Besonders genau sind diese Sensoren allgemein nicht, besonders bei niedrigen Strömen. Daher ist es auch nicht von Vorteil einen 200A Sensor einzubauen, wenn die meiste Zeit eh nur < 5 A fließen. Die höchste Genauigkeit sollte bei dem Strom liegen, der am häufigsten fließt. Sind bei meinem Board um 10 A, darauf habe ich auch abgeglichen. Passt auch ganz gut, obwohl ich mit 10 bit nur eine Auflösung von 0,25 A generieren konnte. Bei 3,3V Versorgung läuft Dir der Sensor aber früher in die Begrenzung, da ja nicht soviel Spannungshub zur Verfügung steht. Da musst Du wahrscheinlich schon den 200 A nehmen und mit der geringeren Sensitivität leben... Bei der geringen Stückzahl, die ich benötige, brauch ich keinen Versuch bei dem Hersteller zu starten. Da mein System (Skateboard) nicht groß über 50A gehen kann, habe ich den ACS756-050 im Einsatz. Leider hat mit 3.3V und nicht 5V. Da eine Ruhestrommessung nicht sinnig ist, stimme ich dir zu, versuche ich den Sensor auf 10-15A abzugleichen. Üblicher weise benutze ich Halogenlampen als ohmsche Last für den Abgleich. Hätte ich nicht die Potentialfreiheit benötigt, wäre der klassische Shunt Mittel der Wahl. Ja, es gibt Schaltungen mit OPs, dass wollte ich aber keinen antun. Was mich nur nachdenklich stimmt, dass viele ESC-Schaltungen diese Stromsensoren einsetzen. Für den Toshiba ESC bin ich kurz vor der Entscheidung, einfache Shunts zu benutzen. Meine Tests basierten bisher auf ACS756-050 und funktionierten so, wie ich es erwartet habe. VG Barney Zitieren
barney Geschrieben 18. Mai 2015 Autor Geschrieben 18. Mai 2015 Gibt da noch einen Zusatz in den Notes: Ich verwende die ACS758-100B. Die sind mit 100 mA Fehler nach 50 A Belastung angegeben. Besonders genau sind diese Sensoren allgemein nicht, besonders bei niedrigen Strömen. Daher ist es auch nicht von Vorteil einen 200A Sensor einzubauen, wenn die meiste Zeit eh nur < 5 A fließen. Die höchste Genauigkeit sollte bei dem Strom liegen, der am häufigsten fließt. Sind bei meinem Board um 10 A, darauf habe ich auch abgeglichen. Passt auch ganz gut, obwohl ich mit 10 bit nur eine Auflösung von 0,25 A generieren konnte. (Nur zum Verständnis für die anderen Leser!) 2^10 = 1024, 200A/2^10 ~ 200mA/bit, vielleicht erwarte ich zu viel Genauigkeit. +-50mV für die Spannungsmessung sollte auch reichen. Wenn ich die Koeffizienten noch mal neu bestimme, bekomme ich sicherlich auch +-25mV hin. Das 12S Batteriemesssystem soll nachher auf +-180mV und +-10mV pro Zelle an Genauigkeit erreichen. Zitieren
Beatfreaktico Geschrieben 22. Mai 2015 Geschrieben 22. Mai 2015 Hallo zusammen Ich find die Steuerung mit dem nunchuck is ne feine Sache! Habe eins zuhause rumliegen und würde mir gern einbauen... Problem ich hab kein Plan von was ihr hier redet hab etliche Seiten hier durchgelesen und bin auch nicht schlauer geworden! Kann mir jemand helfen was ich dazu brauch oder gleich so ein Teil bauen damit ich es einfach einstecken kann und loslegen kann falls es möglich ist! Hab mal ein Teil gefunden auf diyelektroskateboard aber was das programmieren angeht da Blick ich so garnicht durch Zitieren
Empfohlene Beiträge
Tritt dem Gespräch bei
Du kannst jetzt posten und dich später registrieren. Wenn du bereits einen Account hast kannst du dich hier anmelden.