E-Leistungs-Limiter auf Arduino-Micro Basis

Hallo Hackers&Makers !

In einem anderen Subforum bei RC-Network ist dieser Limiter über den Weg gekommen :
https://neumotors.cartloom.com/storefront/product/24377/

Löste zwar Kontroverse Diskussionen aus, aber wer sich mal ernsthaft um eine Limitierung bei einer E-Rennklasse Gedanken machen musste...

Wie würde man so etwas nachbauen ?
  • Es sieht so aus, als ob das Motor/Stellersignal zur Regelung modifiziert wird.
  • Strommessung vermutlich über einen Shunt.
  • Spannung irgendwie über eine Spannungsteiler ? Wird das genau genug? Der Arduino hat ja keinen 10V Analogeingang. Bis 6s Akkus wäre schon schön, wenn man aber die 5V oder 3,3V nimmt, hat man ja schon recht hohe ungenauigkeiten.

Wäre ja schön, wenn man einen open Source Limiter zustandebekäme :D
Was meint Ihr, welche Genauigkeiten sind da möglich ?

Viele Grüße,
Sebastian
 
Hallo Sebastian
Für den Eigenbau zwei Ideen, ich weiß ja nicht welche Leistungen Du da durchschieben willst.

BLHeli32 Regler mit Stromsensor, der schießt serial die Daten all 13mS raus (Kiss Protokoll), die gibt es bis 6(8)s und 80A, dann brauchts keine externe Sensoren.
oder
APM Stromsensor (ca 5€) kann bis 90A hat auch gleich ein kleines SBEC mit drauf, als Messwandler ein INA 138/139 clone. Dort werden Strom uns Spannung analog 0-5V ausgegeben.ß

Brauchst Du BEC ? (F2x ?)
Ein kleines für die "Eigenversorgung" hat jeder Arduino drauf.

Die Genauigkeit liegt beim Erbauer, OpenSource ist immer manipulierbar, ohne eine Prüfmöglichkeit für Wettbewerbe ist das schwierig.
BL-Heli32 Regler mit Sensorik sind über die Einstellsoftware Kalibrierbar, was es besonders einfach macht.


EDIT,
Da es sich bei Dir vermutlich um den Fesselflieger handelt ;) ---wie schaltest Du da den Motor an ?
Mit der Lösung BLHeli32 Regler und Arduino wäre dann sowas als "Fernsteuerung" denkbar ?!?:
https://eckstein-shop.de/433Mhz-RF-...MIhral8J_v3wIVEYGyCh04XgZMEAQYASABEgLhcfD_BwE
 
Hallo Holger !

Danke für den Tipp mit dem APM Sensor, der sieht schon sehr gut aus. Weisst du, als was der die Daten rausgibt ?
An einen KISS regler hab ich auch schon gedacht. Da wäre man aber dann auch irgendwie an die Dinger gebunden.
Auf dem Wettbewerb kann man ja ein Wattmeter ranklemmen und mal testen. Man kann ja sagen, nicht ohne rechner Trimmbar und und dann werden die nach dem Test extra aufbewahrht, wenn jemand angst hat das geschummelt wird. Wenns nicht zu teuer ist, kann man ja 5 Stck als Wettbewerbsgeräte bauen. Die gehören dann einfach mit zum Equipment wie auch die Stoppuhren. ich würd erstmal zwei bis drei bauen wollen, damit man die Geschichte erstmal testen kann.
In der Phase würd ich da vertrauen über technische Kontrolle stellen, sonst wird man ja bescheuert und kommt nie zum fliegen :D
So als Leistungsbereich : Das muss ich auch noch ein bisschen probieren. es werden verm. so 500-750W werden. von 3-6s kanns schon gehen. Wenn einer 8s fliegen will müssen wir halt umbauen.

Zur Motorsteuerung : ein Pilot setzt so einen 433 MHz sender ein. Ich flieg aktuell gerne mit einer 2,4 GHz Pistolenfunke.
Oder halt mit Timer, da muss man aber immer zu zweit sein.

Aber schön, dass es nicht zu sehr in richtung Hardware und PCB entwicklung geht :D
Der Micro ist ja fast schon overkill. Wenn man die Pulsbreite/PWM für den Regler direkt anfasst und um die Werte zu verrechnen reicht ja eigentlich was ganz kleines. Der Micro(auch Nano) hat halt den Vorteil, dass das alles mit den Standardbibliotheken geht und man das ziemlich einfach zusammenstöpseln kann.

Viele Grüße,
Sebastian
 
Hallo Sebastian
Nicht Kiss-Regler, sondern BLheli32 Regler, das serial-protokoll ist das Kiss Protokoll. Nicht alle BLHeli32 haben den Stromsensor drauf, sondern meist nur die größeren.
Vom Regler zum Arduino minus Impuls und Serial.
Vom Arduino zum Empfänger Minus Plus und Impuls.
Den Arduino über den Akku direkt mit versorgen.
Das wars dann schon an Hardware, und die Software ist kein Ding.
Empfehlen würde ich dafür einen Pro-Micro mit 32u4 MCU, da der eine zweite Serielle Schnittstelle hat, die völlig unabhängig vom USB funzt.

Die APM Stromsensoren liefern Analog auf dem Ausgang, 0-5V bis zum Grenzwert (z.B. 90A).
 

rkopka

User
[*]Spannung irgendwie über eine Spannungsteiler ? Wird das genau genug? Der Arduino hat ja keinen 10V Analogeingang. Bis 6s Akkus wäre schon schön, wenn man aber die 5V oder 3,3V nimmt, hat man ja schon recht hohe ungenauigkeiten.
Das letzte verstehe ich nicht. Was hat die Versorgung mit der Spannungsmessung zu tun ? Die uC haben eigentlich alle (auch der Arduino) eine interne Referenz von z.B. 1,1V oder 2,56V. Eingang über spannungsteiler - 22V z.B. 1/10 mit Ref. 2,56V -> 25,6mV Auflösung, Genauigkeit eher um die 100-200mV. Das dürfte so schon recht brauchbar sein, der Rest halt über Kalibrierung und Mittelung. Sonst noch ein kleiner externer AD Wandler mit mehr bit.

RK
 
Das letzte verstehe ich nicht. Was hat die Versorgung mit der Spannungsmessung zu tun ? Die uC haben eigentlich alle (auch der Arduino) eine interne Referenz von z.B. 1,1V oder 2,56V. Eingang über spannungsteiler - 22V z.B. 1/10 mit Ref. 2,56V -> 25,6mV Auflösung, Genauigkeit eher um die 100-200mV. Das dürfte so schon recht brauchbar sein, der Rest halt über Kalibrierung und Mittelung. Sonst noch ein kleiner externer AD Wandler mit mehr bit.

RK

Genau, der Spannungspegel hat nichts mit der Genauigkeit zu tun. Entscheidend ist die Auflösung des AD-Wandlers (10bit beim Arduino) und die Qualität der Widerstände des Spannungsteilers. Beim Arduino kann man mittels Oversampling und/oder Tiefpassfilterung auch problemlos auf 12bit genau messen, solange ein bisschen Rauschen auf dem Signal ist. Allein schon mit 10 bit Aufösung kannst du die Spannung eines 6s LiPos locker auf 25mV genau messen. Das sollte ausreichen.

Gruss Lukas
 
Allein schon mit 10 bit Aufösung kannst du die Spannung eines 6s LiPos locker auf 25mV genau messen. Das sollte ausreichen.


Hallo,

das möchte ich mal sehen, locker eine Messgenauigkeit von 1 ‰ mit einer internen Referenz vom uC und einem Spannungsteiler bei
einem 10 bit ADC.

Als Beispiel die Genauigkeit (Param. No. D003) Min., Max. einer internen Referenzspannung eines PIC 12F1840.

FVR.jpg

Gruß
Micha
 
Hallo !

Danke für den vielen Input, ist ja super.
Ja, beim Spannungsteiler hatte ich eigentlich auch die geringsten sorgen, das geht ja ganz gut und zur not nimmt man hallt ein Trimmpoti als großen Widerstand.
Meine Sorge war tatsächlich auch der AD-Wandler, aber eher, weil ich aus irgendeinem Grund 8 Bit für den Arduino im Kopf hatte, nicht 10. Da gibt es dann zu geringe Auflösung. Selbst bei 10 Bit sinds ja auch noch bei 2,52 V in 1/10 auf die 25,2 V eines vollen 6S Packs gerechnet auch immer noch 0,25V Schritte -oder hab ich mich da vertan ? ( Grob gesagt verliere ich ja eine Null durch die Übersetzung am Spannungsteiler, für die Wattzahl brauche ich ja dann wieder die ganzen Volt)
Die "Wandlerungenauigkeit" hatte ich da noch gar nicht auf dem Schirm, danke auch da an Micha. Ist die Denn konstant oder schwimmt das generell in dem Bereich je nach Temperatur und Betriebsspannung.. ?
Ich würd mich freuen, wenn man so ca. +- 3 Watt, also 6 Watt Gesamtungenauigkeit hinbekommen würde. Das wären dann bei einem 500W Limiter ca. 1,2% abweichung.

Mal rechnen :

Das Ding soll also von 3-6s einsetzbar sein und (für jetzt) nehmen wir mal eine 1000W und 500W Version vom Limiter an.

Die 6s bestimmen da die übersetzung - ich nehme mal VORERST an, dass man die Toleranzen im Referenzspannungsteil hinterher im code wegrechnen kann.
Da sind wieder die ca. 0,25V Auflösung
500W bei 3s sind 39,683 A
1000W bei 3s sind 79,365 A

500W bei 6s 19,841
1000W bei 6s 39,683 A

Das heisst, wenn wir bei dem Stromwandler die 90A Version nehmen, sollte das gut passen. Der wirft ja die 5V raus, (kann man ja eigentlich Direkt an den Arrrduino mit)
also 90 /1023 = 0,088 A Auflösung
Nehme mal an, ich geh auch bei der Spannung auf die 5V vom Arduino -
Das wären dann ca. 6:1, da gehts dann bis 30v und ich hab ein ganzzahliges Verhältnis
Sind also bei 30V -> (5V / 1023)*6 = 0,0293 V

Das stimmt doch nicht :D

30V / 1023 = 0,0293 V pro 10 Bit stufe

Irgendwie doch..
Dann stimmts oben mit den 0,25V aber nicht (ah, um 10 vertan sind 0,025 wie schon angemerkt)
Passt das oder klassischer Holzweg ?

Würde ja dann wirklich erstmal ok genug aussehen fürs erste (von der Bit Auflösung)
Dann muss man nur noch den Widerstand am Teiler Treffen und die Interne Referenz hinhauen :D
(ebenfalls wie schon angemerkt)

Grüße !

P.S.: Holger, weisst du ob es irgendwo eine fertige Library für den Arduino für das BL-Heli32 Telemetrieserial gibt ? Da kann ich ja mal meinen PG30 Ranhängen und schauen, wie es tut ? So fertige Werte sind ja auch ganz nett :D
(datt Blau Weiss Rote Dingens)

P1020124.JPG
 
Hallo Sebastian
Das Protokoll Anhang anzeigen KISS_telemetry_protocol-1.pdf ist derart simpel, dafür brauchts keine Library, einfach mit Serial.event einlesen.
Können wir auch fix mal zusammen hier machen.
Der Vorteil wenn man es so macht, man kann fertige Platinen verwenden, ohne Bauteile zu löten, und muss sich nicht mit der Sensorik rumschlagen, für die die es nachbauen wollen, ist es damit immens einfacher.

Der Regler brüllt der alle 13mS auf die Serielle, wenn man es in der Suite anstellt:
One transmission will have 10 8-bit bytes sent with 115200 baud and 3.6V.
Byte 0: Temperature
Byte 1: Voltage high byte
Byte 2: Voltage low byte
Byte 3: Current high byte
Byte 4: Current low byte
Byte 5: Consumption high byte
Byte 6: Consumption low byte
Byte 7: Rpm high byte
Byte 8: Rpm low byte
Byte 9: 8-bit CRC


Dazwischen einfach einen freien Timer (oder den Watchdog) der nach ein paar mS überläuft, und den Bytezähler wieder auf Null stellt.

edit, hast du einen pro-mini Arduino mit 32u4 daheim? Hat der PG30 auch einen Stromsensor ?

edtedit bastel grad an etwas sehr ähnlichem herum, deshalb interessiert es mich grad auch, Für F5D Limiter, Energieeinteilung für die 10Runden durch Erkennung der Wenden über das Höhenruder und Zeitfilter, Leistungsabsenkung mit Rampe immer in den Wenden.
 
Hallo Sebastian,

mit einem 10bit ADC in einem PIC oder AVR erreicht man eine Messgenauigkeit im Bereich von 0.5 %. Die Messgenauigkeit hängt jetzt noch von der ADC Referenzspannung und der Toleranz der Widerstände vom Spannungsteiler ab. Üblicherweise verwende ich bei den PIC's die Versorgungsspannung als ADC Referenzspannung. Ein gescheiter Spannungsregler z. B. ein LP 2950-N hat eine Genauigkeit von 1%. Der Spannungsteiler hat bei einem Teilungsverhältnis von 10 im Worst Case einen Fehler von knappen 2%, Widerstände mit 1% Toleranz.

Mit einer Kalibrierung kann man die Messfehler durch die VADREF und Spannungsteiler weitgehen elemenieren.

Bei einer max. Messspannung von 25.2 Volt beträgt die Auflösung ca. 25 mV. Der Spannungsteiler muss dabei die Messspannung idealerweise im Verhältnis VADREF/UMess teilen. Durch Mittelwertbildung kann man das Ergebnis noch etwas verbessern. Zusätzlich würde ich dem Spannungsteiler noch 100nF zum Filtern spendieren.

Noch ein Link zum ADC oversampling: https://www.microchip.com/wwwAppNotes/AppNotes.aspx?appnote=en591540

Gruß
Micha
 
Hallo !

@Holger

Ja, der PG 30 hat laut spec. Strom und Spannungsmessung. Die Micros müssten noch den 328er haben, liegen schon ein bisschen. Ich schau mal heute noch.
Der ist aber bestimmt nicht so richtig genau. Jedoch, wenn man den gegenmisst, kann man ja offsets setzen, evtl sogar als Kurve.

@Micha

Vielen vielen Dank.
Da ist ja dann eigentlich alles für einen guten Spannungs-Sensor zusammen.
Strom würde ich ja auch noch messen für die Leistung. Da hatte Holger ja die Empfehlung mit den INA 138/139.
Was hältst du von denen ?

http://www.ti.com/lit/ds/symlink/ina138.pdf
http://www.ti.com/lit/ds/symlink/ina139.pdf

Viele Grüße,
Sebastian
 
Hallo !

Die ACS756 Boards müsste man ja auch auf höher 20A bekommen, wenn man zwischen IC und Shunt inputs noch Widerstände setzt, oder ?

Viele Grüße,
Sebastian
 
Die ACS756 Boards müsste man ja auch auf höher 20A bekommen, wenn man zwischen IC und Shunt inputs noch Widerstände setzt, oder ?

Hallo Sebastian,

die ACS756 sind Hall Sensoren (Prinzip Stromzange) welche je nach Typ bis zu 200 A können. Die ACS756 sind jedoch anscheinend schon eine weile abgekündigt. Nachfolger sind die ACS758. Die gibt es auch bis 200 A.

https://www.allegromicro.com/en/Pro...p-Integrated-Conductor-Sensor-ICs/ACS758.aspx

Gruß Micha
 
Da gibts ja auch schon wieder Nachfolger :D

https://www.allegromicro.com/en/Pro...p-Integrated-Conductor-Sensor-ICs/ACS772.aspx
https://www.allegromicro.com/en/Pro...p-Integrated-Conductor-Sensor-ICs/ACS770.aspx

Da ist der 772er mehr nach meinem geschmack, da Galvanisch getrennt.

Viele Grüße,
Sebastian

P.S.@Holger
Hab gerade geschaut - Atmega-328P. Ist für den PG30 ja ausreichend. Da bin ich gerade am schauen, da sollte eigentlich auch der Digispark mit attiny85 reichen. Hat ja 2 PWM Pins und ein paar Digitaleingänge für den Serial.
 
Moin

Mal von vorne, es geht um die Konstruktion eines einfachen Wettbewerbslimiters für die neue F2-Elektroklasse ?

Hallsensoren sind toll für Telemetrie, für diesen Zweck aber m.E. zu ungenau.
Alles was selbstgebaut ist, ist auch manipullierbar, die Sensoren müssen kalibriert werden. Es braucht, wie in den anderen Klassen mittlerweile auch, ein Prüfmittel für den Wettbewerbsleiter.

Arduino mit Serial; der Attiny85 könnte es nur mit Mühen und Not, da er keine serielle Schnittstelle hat, und mit den 115200 baud vom Regler an die Grenzen kommt. Man müsste den Attiny ohne Quarz über osscal kalibrieren, und könnte das USI (i2c Schnittstelle) dafür missbrauchen, indem man das i2c clocksignal per Timer clont. Nur ohne Quarz wird die Geschichte auch wetterfühlig, da Du ja über die Zeit misst.

Kommt es wirklich auf die 1-2g an ?

Der Mini mit dem 328p wird über die Serielle Schnittstelle programmiert, die Du für den Regler verwenden willst, auch das gibt gehuddel, man könnte auch einen one-wire bootloader auf irgeneinen Pin machen, um ihn zu proggen, aber m.E. alles unötig kompliziert, damit tust Du niemanden einen Gefallen.

Der Mini mit dem 32u4 MCU hat zwei serielle Schnittstellen, und ist exakt gleichgroß und gleichschwer, und kostet auch nur ca. 3€. Die eine Schnittstelle ist dann USB, darüber kann man jederzeit programmieren, auch wenn schon alles im Modell verbaut ist, auch könnt man ein hübsches Serialmenü zum Einstellen und Liveanzeige der Daten auf dem Schlepptop (Strom Spannung Drehzahl Verbrauch Temperatur....) basteln. An die andere Serielle kommt dann der Regler.
So bekommt das auch Jeder ohne Programmiererfahrung zusammengebastelt, weil ohne irgendwelches Adaptergedöhns über USB-Kabel, und nur Drähtchen löten von Pin zu Pin zwischen Regler und Arduino, gänzlich ohne Elektronikbauteile.
Für den 32u4 könnte man direkt aus meiner Solarsoft das allermeiste übernehmen, Empfänger lesen, 500Hz Regler schreiben, Bytes serial einlesen, alles kmpl. im Hintergrund,..

Wenn es um möglichst leicht geht, gibt es bessere Alternativen als den Attiny85.
BTW, google mal nach Strom2Hott, das ist zwar ein Hott Sensor, aber in der Grundlage mit dem APM Senosor und diversen ACS Sensoren dasselbe.
 
Hallo Holger !

na, die 1-2g sind nicht so tragisch. Ich hab halt noch ne Handvoll von dem ganzen gerödel da, wollte das erstmal aufbrauchen und da hätte ich gleich mal loslegen können. Aber du hast recht, der Micro 5V mit dem 32u4 ist schon ziemlich genial, da on board USB.

Es geht erstmal um 2-3 Handmuster, damit man mal auf einem Treffen probieren kann. Da reicht dann erstmal, ein Wattmeter ranzuhalten und vollgas zu geben. Richtig kalibrieren kann ich eh nicht, da mir das geeignete equipment fehlt. Das muss vermutlich sowieso auf einen bestimmten Regler für den Wettkampf gepairt werden, da die ja auch driften.


Grüße !
 
Hallo Holger !

Ich hab jetzt die Micro mit dem 32u4
Bringe jetzt die Tage mal die Blheli Suite zum Laufen. Hast du die in Wine ?
Ich hab noch keinen Prog-Adapter für den PG-30. Da bastel ich mir aber was..

Grüße !
 
Ansicht hell / dunkel umschalten
Oben Unten