Curralt - kleiner, günstiger Stromsensor mit Vario

kalle123

User
Holger, danke für die Antwort, aber wine pack ich mir hier nicht auf mein BS drauf. ;)

Hab ein 'frisches' WIN 10 in dualboot bzw. WIN 7 und XP in vbox.

Bin ja schon froh, das ich weiss, wie ich ne hex Datei flashe.

Ist jetzt ein bisschen off topic, aber ich sag mal ...

- Brauche dazu die *.hex Datei des AVRootloaders (für nen ProMini 5V/16MHz)

- AVRootloader auf den Pro Mini packen.

- USB-Uart auf 1 wire an den Pro Mini

- Dann mit AVRootloader.exe die *.hex Datei von oXs auf den Pro Mini

So in etwa??

Grüße KH

PS. Fummel hier gerade am Servoeinbau an nen Nuri rum, bin nicht ganz bei der Sache .....
 

onki

User
Hallo,

Sorry wenn ich auch nochmal eingrätsche. Notfalls machen wir nen eigenen Bootloader Fred auf.

Mit dem BLHeli Bootloader ist hochladen direkt von der Arduino IDE dann gestorben - oder?
Die finde ich beim herumspielen ganz spannend weil alles nur ein Tastendruck ist (AVRDude).

Gruß
Onki
 
Vielen Dank Niko
Da werd ich mich am Wochenende mal draufstürzen.

Kallo, ja das passt soweit, für den ProMini kannst Du auchdie fertige bootloader datei nehmen, die ich oben Onki gepostet habe, in der Zip ist alles was man braucht.
 

onki

User
Hallo zusammen,

Ich konnte gestern noch kurz einen kleinen Flash-Adapter bauen, der aber noch verbesserungswürdig ist.
Damit konnte ich (über einen entsprechend modifizierten) Nano den Bootloader flashen.
Zu mehr bin ich leider noch nicht gekommen.
Vielleicht komm ich heute Abend dazu den XSensor mal auf das Board zu flashen.

Also geht der Upload "nur" über die I/Os. Dann müsste ich beim XSensor ein zusätzliches Kabel dran machen, weil der die Telemetrie über UART sendet. das ist so weil der auf der Library von Bernd basiert und hier auch EX-Bus mit 115kBaud möglich ist. Das ist mit SoftSerial wohl nicht zu bewerkstelligen.

Gruß
Onki
 
Moin Onki
Ob sich der Bootloader mit der Telemetrie ins Gehege kommt, liegt nicht an dem was nachher auf dem Arduino draufkommt, sondern an dem was der Empfänger während des Bootens in die Leitung brüllt. Oder hab ich das jetzt falsch verstanden ? Ist der am Hardware Uart drann ?

115200 ist halt eine ärgerliche Baudrate, die auch mit Hardware Uart mit 3,5% an 16MHz und 8,5% an 8MHz eine extrem hohe Fehlerquote hat, k.A. warum immernoch so viele diese 90er Jahre Telefonmodem-raten mögen, mit gradzahligen 100.000 und selbst 500.000 Baud ist die Fehlerquote fast Null.

@ Kalle, dann hast Du jetzt ein "HolgA" gut ;):D
 

kalle123

User
Holger (ich schlag nicht zurück!)

Welcher Pin am Pro mini hast du in deiner '328p_16Mhz_19200_PD4_ONKI.hex' für 1 wire vorgesehen?

cu KH
 

onki

User
Hallo Kalle,

Pin D4 ist dafür vorgesehen. Ist ja der Defaultpin für die TM-Übertragung bei OXS.

@Holger: Ja - die angesprochenen Projekte (bzw. die Library) nutzen den Hardware UART des ProMini (RX mit TX über Widerstand verbunden).

Sollten wir nicht einen separaten Bootloader Fred aufmachen? Ich möchte ungern Nikos Fred verwässern.

Gruß und ein schönes WE

Onki
 

kalle123

User
Sollten wir nicht einen separaten Bootloader Fred aufmachen? Ich möchte ungern Nikos Fred verwässern.

Sein nicht sooo kritisch, Onki.

Was ähnliches hatten wir beim MPX -> FrSky Konverter. Flashen von hex. Haben wir dort auch nicht separat gemacht.

Und schließlich hatten wir einen weiteren begeisterten user mehr!

http://www.rc-network.de/forum/show...NK-Konverter?p=4710205&viewfull=1#post4710205

Aber ich höre auf mit meinen blöden Fragen. ;)

Grüße KH
 
Von der Performance her ist der BMP280 (nicht zu verwechseln mit dem BMP180) aber gar nicht so viel schlechter als der MS5611.

Als reiner Höhenmesser ja. Als Vario kommt der BMP280 nicht mal annähernd an den MS5611 ran. Die Samplingzeiten und damit die Reaktionszeit ist beim BMP viel zu gross um vernünftig als Vario genutzt zu werden. Ohne gut angepasste Filterung taugt aber keiner von beiden. Ich benutzte ein lineare Regression auf 100 Höhensamples um daraus die Steigrate abzuleiten. Bereits beim MS5611 habe bei einer Samplingzeit von 13ms eine Ansprechzeit von 1.3s. Das geht grade noch so. Bei BMP wären es dann 4s bei geringerer Genauigkeit. Als Vario unbrauchbar.

Gruss Lukas
 

kalle123

User
So, noch ein blöder post von mir :)

Die Frage nach den Pin hätte ich mir schenken können, steht ja da

328p_16Mhz_19200_PD4_ONKI.hex

Bootloader ist drauf

6sr1gVYl.png


Beim 1 wire Adapter, was soll ich da nehmen? Hab gerade mal in diverse Kistchen geschaut und das gefunden

von links nach rechts

CZ1OlM7l.png


FrSky (FTDI), FrSky (CP2102 mit konv. Levelshifter), MPX (CP2102) und dann fand sich noch Jeti (FTDI)

cu KH
 
Als reiner Höhenmesser ja. Als Vario kommt der BMP280 nicht mal annähernd an den MS5611 ran. Die Samplingzeiten und damit die Reaktionszeit ist beim BMP viel zu gross um vernünftig als Vario genutzt zu werden. Ohne gut angepasste Filterung taugt aber keiner von beiden. Ich benutzte ein lineare Regression auf 100 Höhensamples um daraus die Steigrate abzuleiten. Bereits beim MS5611 habe bei einer Samplingzeit von 13ms eine Ansprechzeit von 1.3s. Das geht grade noch so. Bei BMP wären es dann 4s bei geringerer Genauigkeit. Als Vario unbrauchbar.

Gruss Lukas

Hi Lukas,

Der BMP280 ist etwas langsam, das stimmt.
100 Samples sind aber auch recht viel. Ich experimentiere momentan etwas mit digitalen Filtern und versuche so auf 3-5 Samples für eine Vario-Berechnung zu kommen. Durch die Filterverzögerung komme ich so auf ca. 700ms Verzögerung des Vario Signals (+ nochmal etwas für die Übertragung zur Fernbedienung)
Ich werde berichten wie gut/schlecht das funktioniert.

Grüße

Niko
 
So, noch ein blöder post von mir :)

Die Frage nach den Pin hätte ich mir schenken können, steht ja da

328p_16Mhz_19200_PD4_ONKI.hex

Bootloader ist drauf

6sr1gVYl.png


Beim 1 wire Adapter, was soll ich da nehmen? Hab gerade mal in diverse Kistchen geschaut und das gefunden

von links nach rechts

CZ1OlM7l.png


FrSky (FTDI), FrSky (CP2102 mit konv. Levelshifter), MPX (CP2102) und dann fand sich noch Jeti (FTDI)

cu KH

Einfach testen... ich nehme schon seit Jahren das Jeti Update kabel. Funktioniert mit fast allen onewire Adaptern

Gruß Ralf
 

kalle123

User
Danke Ralf.

Komm mit Holgers Setupdaten soweit ...

Unbenannt.JPG

Pro mini, bootloader '328p_16Mhz_19200_PD4_ONKI.hex' drauf.

Adapter FTDI (TX/RX nicht inv.) mit Diode zwischen TX und RX. Reset am Pro mini wurde gedrückt ...

Any idea?

Gruß KH
 
Hallo Kalle
Diode ? besser einen 2k7-4K5 dazwischen.

Hier ist allerlei Adapterzeug beschrieben: https://www.rctronix.de/wp/?p=208

So sieht mein "alter" aus:
IMG-20180101-WA0001.jpg






Ideal ist der BLHeli adapter auf Nano Basis, der funzt immer.

Entweder direkt in der BLHelisuite unter "make Interface" erstellen, oder in der Arduino IDE, der Code ist im Verzeichniss der Suite unter "Interfaces"

Dazu oben den Pin PD3 ) (=D3 am Nano) definieren:
Code:
  #define OW_PIND3     
//#define OW_PINB2
//#define OW_PINB3

D3 hat am Nano genau den Abstand zu GND das man direkt ein Servokabel draufstecken kann.


das dann in den Org-Code oben einfügen, und auf dem Nano spielen.

Code:
/*
    This file is part of the BlHeliSuite interface solutions for AVR
    Copyright (C) 2014  by 4712

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.

    File: Arduino1Wire.c
    Author: 4712
*/
/*
 * Arduino1Wire.c //Method I in C
 *
 * Rev 1: Initial realease
 * Rev 1.1: Set ow pull up at startup  
*/

#include <avr/io.h>

//1-Wire Pin:
//Arduino Nano only -> PD3=D3
//MEGA boards -> PB2=D51=MOSI 
//all other -> PB3=D11=MOSI

#if defined OW_PIND3
#define OW_DDR DDRD
#define OW_PORT PORTD
#define OW_PIN PIND
#define OW PIND3
#elif defined OW_PINB3
#define OW_DDR DDRB
#define OW_PORT PORTB
#define OW_PIN PINB
#define OW PINB3
#elif defined OW_PINB2
#define OW_DDR DDRB
#define OW_PORT PORTB
#define OW_PIN PINB
#define OW PINB2
#endif


#if (defined (__AVR_ATmega2560__) || defined (__AVR_ATmega1280__))
#define IN_DDR DDRE
#define IN_PORT PORTE
#define IN_PIN PINE

#define IN_RX PINE0
#define IN_TX PINE1
#else

#define IN_DDR DDRD
#define IN_PORT PORTD
#define IN_PIN PIND

#define IN_RX PIND0 
#define IN_TX PIND1
#endif 
 
#define SetOWout (OW_DDR|= (1<< OW))
#define SetOWin (OW_DDR &= ~(1<< OW))
#define SetOWlow (OW_PORT &= ~(1<< OW))
#define SetOWhigh (OW_PORT |= (1<< OW))
#define IsOWhigh (OW_PIN & (1<< OW))
#define IsOWlow (!(OW_PIN & (1<< OW)))

#define SetTXlow (IN_PORT &= ~(1<< IN_TX))
#define SetTXhigh (IN_PORT |= (1<< IN_TX))
#define IsRXhigh (IN_PIN & (1<< IN_RX))
#define IsRXlow (!(IN_PIN & (1<< IN_RX)))

int main(void)
{
   
  //Very important disable hardware UART
  UCSR0B =0;
  IN_DDR |=  (1<<IN_TX );
  IN_DDR &= ~(0<< IN_RX);
  IN_PORT|= (1<<IN_TX )|(1<< IN_RX); //pullup RX ;TX high
  //SetOWin;//Set OW as input / default
  SetOWhigh; //pull up on

  while(IsRXhigh); //wait for RX go Low = 1 Incoming data
  while(1)
  {
    //RX low = 1 -> set oneWire to output 
    SetOWout;
    SetOWlow; //Set oneWire low =1
    SetTXlow;  //Echo low to TX 
    
    //Wait RX go high = 0 again
    while(IsRXlow);
    
    // input // RX is high (or high again) = 0 end of bit or idle - so listen to data from TRX 
    SetOWhigh;  //Set OneWire High = 0 for sharper edge //can be skipped?
    //and Echo low to TX  
    SetOWin;
    SetOWhigh;  //Set OneWire pull up
    
    while (IsRXhigh) //while RX high (no incoming bytes)
    {
      if  (IsOWhigh) SetTXhigh; //Set TX High = 0
      else SetTXlow; //Set TX Low = 1 
    }   
  }    
}
[/QUOTE]
 

kalle123

User
Bis jetzt den Nachmittag damit verbraten :rolleyes:

Ich stell die Sache jetzt erst mal in die Ecke und warte ab, was Onki hier sagt und wie er zurecht kommt.

cu KH
 

kalle123

User
Vielleicht doch noch ein paar Bemerkungen und warum ich mich hier reinhänge ;)

Mit oXs beschäftige ich mich schon seit längerem. oXs mit Vario, GPS, Spannung und Strom. Unter FrSky und MPX. Hab da einige von.

Vario grundsätzlich mit GY 63 (MS5611). Beim aktuellen Preis ....

cEla5oEl.png


Quelle: aliexpress

Das Aufspielen der Firmware auf den Atmel ist natürlich auch mit dem HK Adapter direkt auf den Atmel möglich, aber jedesmal den oXs aus der 'Verpackung' raus nehmen?

Also interessiert mit die 1-wire Alternative.

Hab auch mal den Adapter hier versucht. Nix.

xFGsq8Yl.png


Hab mir noch mal das gepackte Paket 'AVRootloader onki.txt' angeschaut.

Die Konfiguration des loaders geschieht ja wohl über die Datei 'AVRootloader.asm'

Im Paket seh ich da in dieser Datei

Code:
.equ	RX_PORT				= PORTD		; Receive port and pin
.equ	RX					= PD4
.equ	TX_PORT				= PORTD		; Transmit port and pin
.equ	TX					= PD4

Also 1-wire über PB4. OK.

Aber am Anfang steht auch
Code:
.nolist
.include "m328Pdef.inc"				; ATtiny44A

Kann es vielleicht sein, das ich hier einen AVRootloader mit '328p_16Mhz_19200_PD4_ONKI.hex' für den ATiny auf den Atmel 328P aufgespielt habe??

Nix für ungut - Grüße KH
 
Hallo Zusammen,

leider ist der erste Flug ohne Daten vom Curralt verlaufen. Habe versehentlich einen falschen Softwarestand geflasht (nur Text-Modus aktiv). Ist mir aber erst auf dem Flugfeld aufgefallen :(
Am Boden funktioniert aber alles und die Anzeige des Stroms bzw. verbrauchte mAh passt halbwegs. Allerdings ist ja auch ohne Temperatureinfluss.

Anbei noch der Schaltplan. Nicht verwirren lassen, U3 ist ein 4x10k Widerstandsnetzwerk.

Grüße

Niko
 

Anhänge

  • Curralt v3.jpg
    Curralt v3.jpg
    250,2 KB · Aufrufe: 105
Ansicht hell / dunkel umschalten
Oben Unten