Curralt - kleiner, günstiger Stromsensor mit Vario

Hallo Zusammen,

ich möchte hier kurz mein kleines Sensorprojekt Curralt (Kofferwort aus Current und Altitude) vorstellen.

Seit längerem habe ich den Wunsch nach einem kleinen und günstigen Strom- und Spannungssensor für meine Elektroflieger. Die alten Bekannten wie Unisense-E sind klasse (habe ich auch im Einsatz) sind mir aber zu teuer um alle meine Flieger damit auszustatten (habe kleine Schaumwaffeln, die weniger kosten, als der Unisense).
Die Lösung mit einem Arduino Pro + ACS754 + openXsensor ist mir bekannt, aber dabei gefallen mir zwei Sachen nicht:

  1. Die Größe: Für viele Flieger sicherlich kein Problem, in meinen Pylon-Racer passt das definitiv nicht rein. Für kleine Shockys auch ungeeignet.
  2. Das Reglerkabel muss durch den Sensor geschleift werden. Also wird das Kabel aufgetrennt und an den Sensor gelötet. Dabei ist das eine potentielle Schadstelle, die, wenn sie sich löst, den kompletten Flieger lahm legt.
Als Stromsensor habe ich mir daher den "klassischen" Weg über Shuntwiderstand und Operatationsverstärker (bzw. Current Sense Amplifier, kurz CSA) angeschaut. Mit diesem Prinzip messen (meines Wissens) nahezu alle kommerziell erhältlichen Telemetriemodule (inkl. Unisense, Graupner +T Regler, YGE Telemetrieregler, etc.). Aber auch hier muss man das Reglerkabel auftrennen und sogar noch den Shunt einlöten. Also eigentlich noch schlimmer als 2. Es sei denn....

... man nutzt das Reglerkabel selbst als Messwiderstand :D
Ich brauche also nur einen Abgriff der Spannung am Stecker und ein Abgriff direkt am Regler. Über die (zugegeben sehr kleine) Spannungsdifferenz lässt sich der Strom berechnen. Die kleine Differenzspannung ist kein Problem, dafür gibts ja CSA.
Der Widerstand des Reglerkabels ist natürlich erstmal unbekannt. Daher muss der Sensor kalibriert werden. Dies muss aber nur einmalig erfolgen und sollte daher kein Problem sein.

Long Story short:
Herausgekommen ist eine kleine Platine mit gerade einmal 12 x 16mm und 0,8g Gewicht (ohne Kabel). Größe und Gewicht ist damit super, und passt in meinen Pylon-Racer.
Als Controller kommt ein ATMega328PB zum Einsatz: Zusammen mit dem CSA (INA180) und einem Drucksensor (BMP280) habe ich so einen kleinen Sensor für Strom, Spannung, Vario und Höhe.

Front.jpg

Back.jpg

Als Software werde ich vorerst openXsensor nutzen. Evtl. Stricke ich mir aber auch meine eigene Software, damit ich die Werte für die korrekte Stromberechnung im Text-Menü der Fernbedienung (ich fliege Graupner) einstellen kann.

Ich werde auf jeden Fall bereichten, wie sich der Curralt im realen Betrieb schlägt.

Über Feedback/Anregungen würde ich mich sehr freuen.

Grüße

Niko
 
Sehr beeindruckend, super !

Sehr beeindruckend, super !

Genau das fehlt mir auch, nach Umstieg auf frsky.
Habe mich auch schon gefragt, was passiert, wenn der 40A frsky Stromsensor im Hochsommer leicht überlastet wird.
 

Aupi

User
Pefekt

Pefekt

Hallo Zusammen,

ich möchte hier kurz mein kleines Sensorprojekt Curralt (Kofferwort aus Current und Altitude) vorstellen.

Seit längerem habe ich den Wunsch nach einem kleinen und günstigen Strom- und Spannungssensor für meine Elektroflieger. Die alten Bekannten wie Unisense-E sind klasse (habe ich auch im Einsatz) sind mir aber zu teuer um alle meine Flieger damit auszustatten (habe kleine Schaumwaffeln, die weniger kosten, als der Unisense).
Die Lösung mit einem Arduino Pro + ACS754 + openXsensor ist mir bekannt, aber dabei gefallen mir zwei Sachen nicht:

  1. Die Größe: Für viele Flieger sicherlich kein Problem, in meinen Pylon-Racer passt das definitiv nicht rein. Für kleine Shockys auch ungeeignet.
  2. Das Reglerkabel muss durch den Sensor geschleift werden. Also wird das Kabel aufgetrennt und an den Sensor gelötet. Dabei ist das eine potentielle Schadstelle, die, wenn sie sich löst, den kompletten Flieger lahm legt.
Als Stromsensor habe ich mir daher den "klassischen" Weg über Shuntwiderstand und Operatationsverstärker (bzw. Current Sense Amplifier, kurz CSA) angeschaut. Mit diesem Prinzip messen (meines Wissens) nahezu alle kommerziell erhältlichen Telemetriemodule (inkl. Unisense, Graupner +T Regler, YGE Telemetrieregler, etc.). Aber auch hier muss man das Reglerkabel auftrennen und sogar noch den Shunt einlöten. Also eigentlich noch schlimmer als 2. Es sei denn....

... man nutzt das Reglerkabel selbst als Messwiderstand :D
Ich brauche also nur einen Abgriff der Spannung am Stecker und ein Abgriff direkt am Regler. Über die (zugegeben sehr kleine) Spannungsdifferenz lässt sich der Strom berechnen. Die kleine Differenzspannung ist kein Problem, dafür gibts ja CSA.
Der Widerstand des Reglerkabels ist natürlich erstmal unbekannt. Daher muss der Sensor kalibriert werden. Dies muss aber nur einmalig erfolgen und sollte daher kein Problem sein.

Long Story short:
Herausgekommen ist eine kleine Platine mit gerade einmal 12 x 16mm und 0,8g Gewicht (ohne Kabel). Größe und Gewicht ist damit super, und passt in meinen Pylon-Racer.
Als Controller kommt ein ATMega328PB zum Einsatz: Zusammen mit dem CSA (INA180) und einem Drucksensor (BMP280) habe ich so einen kleinen Sensor für Strom, Spannung, Vario und Höhe.

Anhang anzeigen 2107405

Anhang anzeigen 2107406

Als Software werde ich vorerst openXsensor nutzen. Evtl. Stricke ich mir aber auch meine eigene Software, damit ich die Werte für die korrekte Stromberechnung im Text-Menü der Fernbedienung (ich fliege Graupner) einstellen kann.

Ich werde auf jeden Fall bereichten, wie sich der Curralt im realen Betrieb schlägt.

Über Feedback/Anregungen würde ich mich sehr freuen.

Grüße

Niko



Servus Niko,

top Idee! Bitte unbedingt weiterberichten!

Lese aufmerksam mit.


Gruß
Toni
 
Moin Niko

Tolles Projekt - an der Hardware könnten auch die Solarflieger interessiert sein, klein leicht und alles drauf was man braucht :) (klar, kleiner geht immer, aber dann wirds friemelei)
Die Idee mit dem Kabel als Stromsensor wäre auch hier ne tolle leichtgewichtige Idee (wir müssen nur zwischen zwei Messungen vorher nachher vergleichen).

Beim Absolutwert mache ich mir aber etwas Sorgen um die Temperatur, Ri- Kupfer schwankt ca. 4% pro 10°Kelvin Differenz. Bei der Ausentemp sind das schon Sommer Winter über 10%, selbst wenn man nicht bei Frost fliegt. Man müsste vor jedem Start einmal irgendwie abgleichen bzw mit dem internen Tempsensor vom BMP abgleichen ?
 

kalle123

User
Interessant.

Also oXs mit einer Sonderlösung für die Strommessung.

Seh keinen Quarz für den Atmel. Nur die Komponentenbeschaffung und Löterei sind nicht so ohne.

Und die Anschlüsse für das Flashen fehlen da irgendwie ;)

Berichte bitte weiter - Gruß KH
 
Und die Anschlüsse für das Flashen fehlen da irgendwie
BLHeli Bootloader draufmachen, und per BLhelisuite (=AVRootloader) über das Servokabel flashen. Mache ich bei nahezu allen meiner AVR so, funzt perfekt.
Niko, wenn Du den Bootloader brauchst, sag mir den Pin und die Frequenz (8MHz?) dann schieb ich Dir den fix mal durch den Assembler.

Den Bootloader selbst schiebe ich immer mit dem Flash-Stempel von HK drauf https://hobbyking.com/de_de/atmel-atmega-socket-firmware-flashing-tool.html

edit, mit den Schiebern in der BLheli-Suite kannst du gleich auch die Kalibration machen, die speichern direkt ins EEprom, (alternativ den eeprom-editor in der AVRootloader GUI).

Edit2
Man könnte den Curralt auch am Balancerstecker stecken, da wäre schonmal ein Abgriff direkt am Akku. Das RC-Minus hätte dann gleiches Potential wie Minus am Regler. Aber dann wäre der Stecker in der Messleitung....
 
Wenn es das ganze mit einem MS5611 und noch weiteren Analogeingängen gäbe würde ich dir sofort 20 Stück abkaufen.
Funktioniert die Kommunikation mit dem Empfänger gut ohne Quarz?

Gruss Lukas
 

kalle123

User
BLHeli Bootloader draufmachen, und per BLhelisuite (=AVRootloader) über das Servokabel flashen. Mache ich bei nahezu allen meiner AVR so, funzt perfekt.
Niko, wenn Du den Bootloader brauchst, sag mir den Pin und die Frequenz (8MHz?) dann schieb ich Dir den fix mal durch den Assembler.

Den Bootloader selbst schiebe ich immer mit dem Flash-Stempel von HK drauf https://hobbyking.com/de_de/atmel-at...hing-tool.html

edit, mit den Schiebern in der BLheli-Suite kannst du gleich auch die Kalibration machen, die speichern direkt ins EEprom, (alternativ den eeprom-editor in der AVRootloader GUI).

Schon mal mit oXs gemacht?

cu KH
 

k_wimmer

User
Nein, das zuleitungskabel zum Regler muss nicht getrennt werden.
Der "Eingang" des Sensors wird mit dem + des Steckers, und der "Ausgang" wird mit dem + des Reglers verbunden.
Dadurch nutzt man das Zuleitungskabel des Reglers als Shunt.

Bei max. Strom ist das sicherlich ein gangbarer Weg, aber bei den niedrigeren Strömen wird es schwierig den Signalpegel sauber aus dem Rauschen zu bekommen.

zur Kommunikation ohne Quarz:
Bei einer normalen RS-232 Übertragung rechnet man üblicherweise mit 3% Toleranz auf dem BaudRate Generator.
Die heute üblichen internen Oszillatoren haben ca. 2% Toleranz über Temp. und Spannung, das sollte also funktionieren.
 
Schon mal mit oXs gemacht?

cu KH

Moin Kalle
Nein, da ich die Soft für meine Sensoren immer selber schreibe, so reichen mir die kleinen Attinys aus.
Aber warum sollte das nicht auch mit oXs, funzen ? Sie Software (oXs) kommt ja erst immer wenn der Bootoader durch ist.
Der AVRootloader (bzw BLhelibootloader) ist btw nur etwa ein Drittel so groß als der sonst meist verwendete Optiboot (Arduino).
 

onki

User
Hallo Kai,

ich hab das Prinzip schon verstanden (Zuleitung als Shunt) aber das Modell muss ja auch irgendwie abgeschaltet und der Akku geladen werden.
Daher meine Vorschläge mit dem XT60. Wird aber wohl um größere Ströme gehen.
Ich sehe die Problematik auch bei kleinen Strömen. Und die sind mir als Elektrosegler (mit Betonung auf Segler) nunmal wichtig.
Schlimm genug dass die gängigen Telemetrieregler nur die Motorströme in den Fokus bringen und den Rest geflissentlich ignorieren.

@ Holger: Ich find den Bootloader toll und diese Art und Weise würde auch meine Sensoren (ohne die 6 Postensteckerpins an der kurzen Seite der ProMini-Platine) signifikant verkleinern und sicherer machen (kein Schrumpfschlach mehr zur Abdeckung / Isolierung nötig). Leider ist der Programmieradapter gerade ausverkauft aber eine Wäscheklammer mit einer entsprechenden Steckerleiste sollte ähnlich nützliche Dienste leisten können.

Es gibt ja, zumindest im Jeti-Lager, derzeit drei gängige Sensorlösungen, die allesamt ihre Berechtigung haben und alle super funktionieren.

OXS nutzt i.d.R. Den D4 IO als Kommunikationspin für die Telemetrie. VarioGPS Sensor und der XSensor basieren auf der genialen Library von Bernd und nutzen den RX/TX Pin für die Telemetrie (weil auch EXBus mittelfristig genutzt wird). Geht der Bootloader bzw. der Upload damit auch?

Somit wären es 4 Varianten (Pin4 mit 3V3 bzw. 5V 328P und RX/TX Pin mit 3V3 bzw. 5V 328P).

Gruß
Onki
 
Moin Onki
Der AVRootloader benötigt einfach nur irgendeinen Pin.
Die CPU startet in den Bootloader, schaut auf dem Pin ob da entsprechendes gesendet wird, wenn ja, startet er die Kommunikation mit der GUI, wenn nein, dann startet er das Programm.

Probleme gab es bisher nur, wenn auf dem Pin serielles Zeug ankommt, das der Bootloader missverstehen könnte, meist hilft dann noch eine andere Baudrate für den Bootloader.
Z.B benutze ich Hott, der Empfänger sendet in 19200bps auf dem Anschluss, wenn der Bootloader in Autobaud oder mit 19200bps konfiguriert war, ist er am Empfänger hängengeblieben, mit einer anderen Baudrate hat es dann aber doch geklappt. Die BLHeli-Oberfläche aber verlangt 19200bps, so das damit nicht funzt.

Die Oberfläche
Bildschirmfoto zu 2019-03-21 09-54-52.png

Das was ich mag, ist der EEprom Editor, man kann hier sein zeug einfach im Klartext reinschreiben (Kalibrierung u.s.w.)
Bildschirmfoto zu 2019-03-21 09-58-15.png


Ich mach Dir heut abend mal eine Bootloader hex für Pin D4 328p 16MHz (?) fertig zum rumtesten.


EDIT, habs eben schon fertig gemacht, im Anhang bootloader onki.txt in zip umbenennen, da ist alles drinn. Sign ist ONKI, 19200baud, und D4 am Nano&Co (PD4, beim Uno ist es anders).
Assmebler ist komplett mit in der Zip, einfach das Verzeichnis öffnen und
Code:
avrasm2.exe -fI -o 328p_16Mhz_19200_PD4_ONKI.hex AVRootloader.asm
eintippen, (bei linux einfach nur "wine " davor tippen.
Anpassen in der AVRootloader.asm
Adapter die üblichen One-Wire oder ein Nano den man in der BLhelisuite unter make Adapter per Mausklick zum Adapter macht.
 

Anhänge

  • AVRootloader onki.txt
    759,2 KB · Aufrufe: 285
Hallo Zusammen,

vielen Dank für das Feedback.

Ich versuche mal die wichtigsten Punkte zu beantworten:

Genau das fehlt mir auch, nach Umstieg auf frsky.
Habe mich auch schon gefragt, was passiert, wenn der 40A frsky Stromsensor im Hochsommer leicht überlastet wird.

oXs unterstützt auch das FrSky protocol, sollte also funktionieren

...
Beim Absolutwert mache ich mir aber etwas Sorgen um die Temperatur, Ri- Kupfer schwankt ca. 4% pro 10°Kelvin Differenz. Bei der Ausentemp sind das schon Sommer Winter über 10%, selbst wenn man nicht bei Frost fliegt. Man müsste vor jedem Start einmal irgendwie abgleichen bzw mit dem internen Tempsensor vom BMP abgleichen ?

Das ist in der Tat ein bisschen der Knackpunkt. Die Temperatur des Reglerkabels hängt ja zudem auch von der Verlustwärme im Kabel selbst ab. Bei den Testflügen werde ich dann mal vergleichen, wie groß die Abweichung wirklich ist. Mir ist zwar bewusst, dass Curralt kein Hochpräzisionsmessgerät ist, aber halbwegs sollte der Strom und vor allem die daraus berechnete Kapazität schon sein.

...
Nur die Komponentenbeschaffung und Löterei sind nicht so ohne.

Komponentenbeschaffung ist kein Problem, alles bei den bekannten Elektronikhändlern verfügbar. Löterei ist natürlich recht anspruchsvoll. Widerstände und Kondensatoren sind in 0603, das geht zur Not von Hand. Auch die SOT-23 des INA180 und des Spannungsreglers sind machbar. Der BMP280 ist hingegen mit einem normalen Lötkolben nicht mehr lötbar. Aber dafür gibt es ja das Bügeleisen (kein Witz!):D

000008.jpg

...
Und die Anschlüsse für das Flashen fehlen da irgendwie ;)

Ist doch alles da: +, - und Signal ;)
Bootloader wurde vor dem verlöten mit einem Programmieradapter auf den 328PB geflasht. Dabei nutze ich den AVRootloader in einer sehr schlanken Konfiguration. Das sind dann nur 386 Bytes, also reicht die kleinste Bootloader-Option (256 Words = 512 Bytes) des 328PB. Somit habe ich über 31KB für den eigentlichen Programmcode übrig. Reicht bisher dicke.

....
zur Kommunikation ohne Quarz:
Bei einer normalen RS-232 Übertragung rechnet man üblicherweise mit 3% Toleranz auf dem BaudRate Generator.
Die heute üblichen internen Oszillatoren haben ca. 2% Toleranz über Temp. und Spannung, das sollte also funktionieren.

So isses. Kommunikation funktioniert sowohl mit dem AVRootloader als auch mit dem GR-12L Problemlos. Dabei nutze ich sowohl Text- als auch Binärmodus, bisher keine (merkbaren) Aussetzter oder Verzögerung.

...
Ich sehe die Problematik auch bei kleinen Strömen. Und die sind mir als Elektrosegler (mit Betonung auf Segler) nunmal wichtig.
Schlimm genug dass die gängigen Telemetrieregler nur die Motorströme in den Fokus bringen und den Rest geflissentlich ignorieren.

Das sollte prinzipiell funktionieren. Den INA180 gibt es mit verschiedenen Verstärkungsfaktoren. Wählt man diesen (und/oder den Abstand des Spannungsabgriffs am Reglerkabel) entsprechend aus, habe ich theoretisch den Max. Strom / 1000 als minimal messbare Größe. Bei 100A Maximalstrom also 0,1A.
Das Rauschen ist dabei nicht allzu problematisch. Zum einen habe ich einen Hardware-Tiefpass (RC-Filter), zum anderen kann ich auch Softwaremäßig filtern.
Ich will den Curralt auch in Seglern einsetzten (wozu sonst der BMP280? ;) ), daher ist mir eine Messung der duch BEC verbrauchten Kapazität schon wichtig.

Nächster Schritt wird nun eine Messreihe in verschiedenen Modellen / Strömen sein.

Grüße

Niko
 
Hi Niko
Bootloader wurde vor dem verlöten mit einem Programmieradapter auf den 328PB geflasht. Dabei nutze ich den AVRootloader in einer sehr schlanken Konfiguration. Das sind dann nur 386 Bytes, also reicht die kleinste Bootloader-Option (256 Words = 512 Bytes) des 328PB. Somit habe ich über 31KB für den eigentlichen Programmcode übrig. Reicht bisher dicke.
Das klingt sehr interessant:cool::), magst Du ein bissl was verraten ? (oder gar die asm teilen ?)

Mir hat der für den 328p eben grad 462Byte abgeknöpft ..


@ Onki, hab dir oben im Beitrag was zusammengestellt.
 

kalle123

User
Moin Kalle
Nein, da ich die Soft für meine Sensoren immer selber schreibe, so reichen mir die kleinen Attinys aus.
Aber warum sollte das nicht auch mit oXs, funzen ? Sie Software (oXs) kommt ja erst immer wenn der Bootoader durch ist.
Der AVRootloader (bzw BLhelibootloader) ist btw nur etwa ein Drittel so groß als der sonst meist verwendete Optiboot (Arduino).

Holger, werde mir das mal anschauen.

Hab immer noch bei oXs die Pins an den Pro Minis dran um umzuflashen bzw. abzugleichen. Da könnte man ja drauf verzichten ;)

Gruß KH
 

onki

User
Hallo Holger,

vielen Dank für deine Mühe - super.
Ich weiß nicht ob ich am Abend dazu komme aber ich bleibe da dran. Zum erstmaligen flashen des Bootloaders auf einen gewöhnlichen ProMini benötige ich natürlich einen ISP-Programmer. Dazu werde ich einen darauf umgerüsteten Nano verwenden und mir einen Initial-Programmierer basteln mit Wäscheklammer und Pfostensteckerreihe. Die notwendigen Pins (MOSI, MISO, SCK, Reset, Vcc und GND) sind ja geschickterweise auf einer Seite vorhanden.

Wegen der Strommessung (Kabel als Shunt) sehe ich eigentlich auch signifikante Temperaturprobleme. Daher nutze ich die gezeigte Shuntlösung oder die ACS-Sensoren.

Gruß
Onki
 
Wenn es das ganze mit einem MS5611 und noch weiteren Analogeingängen gäbe würde ich dir sofort 20 Stück abkaufen.
Funktioniert die Kommunikation mit dem Empfänger gut ohne Quarz?

Gruss Lukas

Ich habe mich bewusst gegen den MS5611 und für den BMP280 entschieden. Ausschlaggebend war zum einen der Preis (der MS5611 kostet ca. das 5-fache vom BMP280) aber besonders die Größe (4,7x3mm beim MS5611 vs. 2,5x2mm beim BMP280). Von der Performance her ist der BMP280 (nicht zu verwechseln mit dem BMP180) aber gar nicht so viel schlechter als der MS5611.

Mehr Analog-Eingänge sind natürlich möglich. Aktuell nutze ich nur 2 der 6 ADC-Eingänge (ADC4 und ADC5 sind für I²C belegt), es wären also noch 4 frei. Aber auch hier war die Größe entscheidend. Zumal ja noch evtl. Spannunsgteiler hinzukommen. Für was benötigst du denn mehr Analog-Eingänge? Einzelzellenüberwachung?

Hi Niko

Das klingt sehr interessant:cool::), magst Du ein bissl was verraten ? (oder gar die asm teilen ?)

Klar, kann ich machen sobald ich wieder Zugriff auf meine Dateien habe ;)

Grüße

Niko
 

kalle123

User
Hallo Onki,

wäre schön, du würdest dann mal berichten.

Ich würde mit nem USBasp flashen. Nur AVR Studio :rolleyes:

Ich nehm hier normalerweise avrdude unter Linux, nur AVR Studio unter Win, da seh ich hier ne ziemliche Bildungslücke/Baustelle bei mir.

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