Turnigy 5x - Arduino RcLib Hacking-Mainboard

Status
Nicht offen für weitere Antworten.

careyer

DröhnOpaRähta
Hi Christian,

ich habe eine Frage und hoffe du kannst mir helfen. ich würde gerne die beiden Schalten für Ch5 (2-Wege) und Ch6 (3-Wege) tauschen, da APM fix den Ch5 als Flightmode-Swith betrachtet. 2 Flightmodes sind da natürlich etwas wenig.
In deinem t5-Configurator kann man das ja schön einstellen.... Problem ist nur: Der "SAVE" Button hat keinen Effekt. Der Ardunio Nano blonkt zwar kurz rot wenn man auf "Save" drückt... aber passieren tut nix.

Weiterns ist mir aufgefallen, dass das Einlesen der Parameter (LOAD) nur vernünftig funktioniert, wenn man zusätzlich zum USB die Funke einschaltet und mit den Batterien versorgt. Auf dem USB ist aber genügend Power und ich habe auch schon alle Verbraucher einmal abgeklemmt. Bleibt aber dabei.

Hast du einen Tipp für mich, wie ich die Settings in die Funke reingeschrieben bekomme?
Lieben Dank im Voraus und beste Grüße
Thomas
 

OpaMichi

Erfahrener Benutzer
Hi Christian,
auch ich habe nach gut einem Jahr wieder ein Problem. Habe die Funke eigentlich nicht richtig ingebrauch gehabt, nur zum zeigen was man so alles mit dem Arduino bauen kann.
Jetzt habe ich mir aber so einen kleinen Q-Bot Flieger zugelegt und da kommt mir meine Arduino Funke gerade recht.
Bei meinen Flieger hatte ich folgende Steuerkanäle:
CH1 THR = A2 Reverse
CH2 ELE = A1 Normal
CH3 RE = A0 Normal
CH4 RUD = A3 Normal

Beim Q-Bot muss ich folgende Kanäle invertieren.
CH1 THR = A2 Normal
CH2 ELE = A1 Normal
CH3 RE = A0 Reverse
CH4 RUD = A3 Reverse

Nach dem ich auf APPLY drücke werden die Werte übernommen dann auf SAVE und alles ist OK
Alles auf Profilplatz 4
Nach neustart alles OK
Jetzt kommt der Fehler:
Starte ich mit Profilplatz 1 dann sind hier jetzt auch die Revrse Zuweisungen übernommen.
Also nur die Reverse Zuweisungen scheinen für alle Plätze gleich zu sein, nur Kanal und Schalterzuweisungen funktionieren unterschiedlich.
Ich habe es mehrfach probiert. die Revers Einstellungen werden auch in den anderen Profile übernommen.

Solange ich jetzt nur mit dem Q-Bot fliege geht es ja, aber wenn ich die kleine als Schülerfunke für meinen anderen benutzen wiel dann habe ich ein Problem.
 
Zuletzt bearbeitet:
Hallo OpaMichi!

Hast recht.
Ich hab anno dazumal das ChannelReverse global für den gesamten Sender definiert.

Sollte man für den Zweck dann wohl eher im Profil unterbingen.

Leider hab ich weder Zeit noch eine t5x zum Testen.
Mit ein wenig Programmierkenntnissen sollte das relativ leicht zu ändern sein.
Vielleicht findet sich ja jemand, das Ding von damals weiter zu pflegen.

Gruß aus Wien,
Christian
 

OpaMichi

Erfahrener Benutzer
@careyer,
vielleicht kann ich dir helfen.
drücke vor SAVE erst auf APPLY
Mit LOAD habe ich keine Erfahrung, schliesse den Configurator immer und starte ihn neu.
Bei meine frei aufgebauten Platine alles bestückt aber kein Frsky Modul dran, da ich nur den PPM Ausgang nutze, ich hatte mal ein Problem beim beschreiben. Dieses habe ich durch auslöten von R19 (1k) behoben. Hing wohl damit zusammen das ich kein Frsky Modul angeschlossen habe.

@Christian, danke für die Bestätigung, leider bin ich selbst nicht so fit im programmieren als das ich es ändern könnte.

Ganz toll wäre es wenn sich hier noch mal wer vielleicht mit dem Projekt beschäftigt und zb. ein Display über I2C einflegt.
 

careyer

DröhnOpaRähta
Danke Michi,

das mit APPLY und dann ersr SAVE oder LOAD habe ich schon ausprobiert. Ändert sich nix... er ließt auf's Verrecken nicht die Werte ein... habe auch schon den ArduinoNano mal vom Board runtergenommen und es dann probiert - ohne Erfolg
 

careyer

DröhnOpaRähta
Hallo Christian,
Hallo liebe Wissende...

ich bräuchte mal deine/eure geschätzte Hilfe! Das ConfigTool funktioniert bei mir ja leider nicht und so muss ich die Parameter über den Arduino-Sketch (in der TxDeviceProperties.h) einstellen und flashen. Hier habe ich etwas Probleme was die Alarme anbelangt.
Meine Funke piept am laufen Band und zwar geschätzt alle 10sec 3x schnell hintereinander (PIEP-PIEP-PIEP).

Ich dachte zunächst das sei die Akku Warnung und habe die Funke ans Labornetzgerät gehängt und von 6V (=4x AA Mignon) langsam runtergedreht.. bei unter 3,3V geht die Funke aus - aber ohne vorherigen Alarm (bis auf das ständige 3x PIEP im Abstand von 10sec.

Im Sketch steht folgendes:
Code:
#if defined(T5X_CONDITIONAL_INITIALIZE_EEPROM) || not defined(T5X_USE_EEPROM)
const t5x::T5xDeviceProperties_t gDefaultDeviceSettings=
{
  {                                   //    Calibration     ChannelReverse  Comment
    {{0 ,   512, 1023}, false},       //A0 {MIN, MID, MAX}, ChannelReverse  AIL
    {{0 ,   512, 1023}, false},       //A1 {MIN, MID, MAX}, ChannelReverse  ELE
    {{0 ,   512, 1023}, false},       //A2 {MIN, MID, MAX}, ChannelReverse  THR
    {{0 ,   512, 1023}, false},       //A3 {MIN, MID, MAX}, ChannelReverse  RUD
    {{0 ,   512, 1023}, true},        //A4 {MIN, MID, MAX}, ChannelReverse  reserved for I2C SDA, no need for calibration 
    {{0 ,   512, 1023}, true},        //A5 {MIN, MID, MAX}, ChannelReverse  reserved for I2C SCL, no need for calibration
    {{0 ,   512, 1023}, true},        //A6 {MIN, MID, MAX}, ChannelReverse  Potentiometer
    {{0 ,   512, 1023}, true}         //A7 {MIN, MID, MAX}, ChannelReverse  voltage sensor, no need for calibration  
  },
  {
    {false},                          // SW1  Reverse
    {false},                          // SW2  Reverse
    {false},                          // SW3  Reverse
  },
  {
    [color=red]{ 4,  12,     11},                // TX Voltage Monitoring: CellCount, Orange, Red Level[/color]
    {     40,     30},                // RSSI Percentage: Orange, Red Level
    10,                               // Telemetry Check Interval in seconds
  },
  20,                                 // Flight Timer Throttle threshold percentage
  { -256, -110, -40, 40, 110, 256},   // VFM Steps
  false,
  false
};
#endif
Ich deute das so: 4 Zellen.... Oranger Alarm bei 1,2V/Zelle (=4,8V)... Roter Alarm bei 1,1V/Zelle (=4,4V), korrekt?
Wie äußert sich der Alarm?
Wenn das 3x PIEP der Alarm ist - wieso kommt der schon bei 6V und 4x randvollen 1,5V Alkalizellen?

Der Telemetry-Check steht auf 10sec.... das korreliert ja mit dem Gepiepe.... Ist mit Telemetry-Check auch der TX-Akkucheck gemeint oder bezieht sich das nur auf den RSSI Pegel?

Woran könnet das liegen?

Vorab besten Dank!
LG
Thomas
 
Zuletzt bearbeitet:
Servus!

Ich hab leider schon ewig nichts mehr mit dem Code von damals gemacht.
aber beim durchsehen der paar Zeilen von anno dazumal finde ich keine Stelle, an der der Buzzer 3x piept, ausser zu Beginn um den gewählten Speicherplatz (z.B. 3x beim 3. Profil) zu signalisieren.

In allen anderen Fällen piept das Teil entweder 1x oder 2x.
Oder auch 10x oder 20x dann jedoch nur wenige ms lang um andere Tonfolgen zu simulieren.

du kannst ja einfach mal die Zeile https://github.com/ckonecny/t5x/blob/master/T5x/T5x.ino#L285 auskommentieren um zu sehen, ob es was ändert.

Ändert sich die Pause zwischen den 3er-Pieps, wenn Du den Telemetrie-Intervall von 10 auf z.B. 5 oder 20sek veränderst?

Gruß,
Christian
 

careyer

DröhnOpaRähta
Danke Christian für deine schnelle Antwort

Ja, das Piepen des Profils am Anfang stimmt schon (Profil 1)... =)
Danach hängt die häufigkeit des Piepens (3x => PIEP-PIEP-PIEP) vom Telemetry Intervall ab (ich habe das Interval mal auf 3sec verkürtzt)

Akkus sind voll... sollte also daran nicht liegen. Ich benutze einen FrSky D4R... der ist zwar aktuell nicht in der Nähe, aber egal ob der an ist oder nicht... das 3x piepen fliegt mir immer um die Ohren :-/
 
In dem fall würde ich dann mal die folgenden Zeilen paarweise
368/369
373/374
376/377
379/380

sowie Zeile 382 auskommentieren.

Dann sollte mal Ruhe sein.

und jetzt jeweils eins der obigen 4 Paare aktivieren.

sobald die Töne wieder kommen, kannst Du somit sagen, wodurch diese verursacht werden.
Sollte keines der Paare was verändern zuletzt noch Zeile 382 wieder aktivieren.

Teste mal und melde Dich wieder.

Gruß,
Christian
 

careyer

DröhnOpaRähta
Danke Christian,

ich bin dem Fehler auf die Spur gegangen. Ganz offenbar tut es mein FrSky Telemetry Link nicht und dann geht er in den rot markierten Code (das Beepen fängt bei 0 an zu zählen, deshalb 3 PIEPS):

Code:
if (g_OperatingMode==OperatingMode_Normal)
   {
        g_Frsky.update();    // read telemetry data from serial link and update the values

        if ((now - last_telemetry >= gTxDevice.m_Properties.TelemetrySettings.Check_Interval*1000)) 
        {
          last_telemetry = now;
          float voltageTX = analogRead(T5X_TX_VOLT_PIN)*0.0146627565982405; // 0-15V in 1023 steps or 0,0146V per step
          
          if (voltageTX < gTxDevice.m_Properties.TelemetrySettings.V_TX[T5X_CELLCOUNT]*gTxDevice.m_Properties.TelemetrySettings.V_TX[T5X_RED]/10.0){
            [color=blue]rc::g_Buzzer.beep(2,2,13);[/color]
            Serial.print("Voltage Alarm RED");
            Serial.println();
            Serial.print("voltageTX IST = ");
            Serial.print(voltageTX);
            Serial.println();
            Serial.print("voltageTX COMP = ");
            Serial.print(gTxDevice.m_Properties.TelemetrySettings.V_TX[T5X_CELLCOUNT]*gTxDevice.m_Properties.TelemetrySettings.V_TX[T5X_RED]/10.0);
            Serial.println();
            Serial.println();
          }
          else if (voltageTX < gTxDevice.m_Properties.TelemetrySettings.V_TX[T5X_CELLCOUNT]*gTxDevice.m_Properties.TelemetrySettings.V_TX[T5X_ORANGE]/10.0){
            [color=blue]rc::g_Buzzer.beep(2,2,6);[/color]
            Serial.print("Voltage Alarm ORANGE");
            Serial.println();
            Serial.print("voltageTX IST = ");
            Serial.print(voltageTX);
            Serial.println();
            Serial.print("voltageTX COMP = ");
            Serial.print(gTxDevice.m_Properties.TelemetrySettings.V_TX[T5X_CELLCOUNT]*gTxDevice.m_Properties.TelemetrySettings.V_TX[T5X_RED]/10.0);
            Serial.println();
            Serial.println();

          }

          if (g_Frsky.TelemetryLinkAlive())
          {
            if (g_Frsky.m_A1_Voltage*0.0517647058823529 < gProfile.m_Data.V_A1[T5X_CELLCOUNT]*gProfile.m_Data.V_A1[T5X_RED]/10.0) rc::g_Buzzer.beep(10,10,2);     //  0-13,2V in 255 steps or 0,052V per step
            else if (g_Frsky.m_A1_Voltage*0.0517647058823529 < gProfile.m_Data.V_A1[T5X_CELLCOUNT]*gProfile.m_Data.V_A1[T5X_ORANGE]/10.0) rc::g_Buzzer.beep(20);  //  0-13,2V in 255 steps or 0,052V per step

            if (g_Frsky.m_A2_Voltage*0.0129411764706*((gProfile.m_Data.V_A2[T5X_CELLCOUNT] & 0xF0) >> 4) < (gProfile.m_Data.V_A2[T5X_CELLCOUNT] & 0x0F)*gProfile.m_Data.V_A2[T5X_RED]/10.0) rc::g_Buzzer.beep(10,10,2);      //  0-3,3V in 255 steps or 0,013V per step, the real voltage range is actually defined by the voltage divider ratio 
            else if (g_Frsky.m_A2_Voltage*0.0129411764706*((gProfile.m_Data.V_A2[T5X_CELLCOUNT] & 0xF0) >> 4) < (gProfile.m_Data.V_A2[T5X_CELLCOUNT] & 0x0F)*gProfile.m_Data.V_A2[T5X_ORANGE]/10.0) rc::g_Buzzer.beep(20);   //  0-3,3V in 255 steps or 0.013V per step, the real voltage range is actually defined by the voltage divider ratio 

            if (g_Frsky.m_RSSI < gTxDevice.m_Properties.TelemetrySettings.RSSIPercent[T5X_RED]*255/100) rc::g_Buzzer.beep(10,10,2);
            else if (g_Frsky.m_RSSI < gTxDevice.m_Properties.TelemetrySettings.RSSIPercent[T5X_ORANGE]*255/100) rc::g_Buzzer.beep(20);
          }
          else{
            [color=green]delay(1000);[/color]
            [color=red]rc::g_Buzzer.beep(5,5,2);[/color]
          }
        }

   }
Das Problem weshalb die Akkuwarnungen (blauer Code) nicht kamen hängt auch unmittelbar damit zusammen. Die Pieps der Akkuwarnungen werden quasi durch den rot markierten Code direkt überschrieben und weggedrückt. Deshalb habe ich das grün markierte Delay eingefügt. Jetzt kommt die Akkuwarnung und darauf folgend der Hinweis auf den fehlenden Telemetry Link.

Soweit so gut! =)
Was jedoch weiterhibn komisch ist:

a.) Wieso funktioniertd er Telemetry Link nicht? Habe mit einem D4R-II gebunden und der Schalter am Sender steht auf 2-way.

b.) Ich kann den Arduino nicht in aufgestecktem Zustand auf dem Hacking Board flashen. Wenn ich die Funke AUS habe und via USB anstecke wird der Arduino erkannt. Flashen kann ich ihn in diesem Zustand jedoch nicht, es schaut so aus als würde er den Reset oder die Rückmeldung an den PC nicht schaffen.
Ist die Funke AN und ich stecke sie per USB an sagt mir der PC: "USB Gerät wurde nicht erkannt!". Ich denke hier liegen auch die Probleme begraben wieso ich nicht mit dem ConfigTool arbeiten kann.

Komisch :-|

Hast du da vielleicht eine Idee woran das liegen könnte?

LG
Thomas
 
Zuletzt bearbeitet:
für den fall, daß dein telemetrie-link noch nie funktioniert hat, gehe ich fast davon aus, daß du ein HW-problem hast.
vielleicht hast du ja den inverter (BC847) falsch herum eingelötet, oder auch den telemetrie rx und tx vertauscht. check auch die beiden widerstände (1k und 10k).

gruß,
christian
 

careyer

DröhnOpaRähta
Hallo Christian,

Danke! Ich habe das mal geprüft! RX/TX Verkabelung stimmt.
(Die Bezeichnung am Hacking-Mainboard ist etwas ungewöhnlich, da man vom DHT-TX Pin auf den Hacking-MB TX Pin geht -- müsste bei letzterem ja eigentlich RX heißen, oder? ;-)

Die Telemetrieübertragung scheint auch zu funktionieren, weil der RSSI schon mal funktioniert und die entsprechenden Alarme triggert. Erstaunlichweise bekomme ich für A1 und A2 aber immer nur 0,00V als Messwerte in der Software heraus.

Bei den Alarmen gab es ein grundsätzliches Problem im Code:
Für die Alarame wird die nonBlocking Funktion Buzzer.beep() genutzt. NonBlocking bedeutet hier, dass der Alarm (z.B. TX Low Battery Voltage) ausgelöst wird und die Funke ohne Verzögerung weiter Ihren Mainloop abarbeitet. Kommt es in der weiteren Verarbeitung zu einem weiteren Alarm (z.B. RSSI Low), dann unterbricht der zweite Alarm den ersten oder drückt ihn vollständig weg. Das ist natürlich ungünstig.
Meine weiter oben beschrieben Idee mit einem delay() zu arbeiten ist fatal, da dies die Abarbeitung des Mainloops unterbricht und in dieser Zeit keine Steuereingaben an das Modell gesendet werden - Das Modell ist damit für die Zeit des delays führerlos.

Ich habe deshalb den Code hinsichtlich der Alarme komplett überarbeitet und getestet. Das Funktioniert jetzt sauber. (Code kann ich dir gerne zur Verfügung stellen falls gewünscht).

Das Problem mit den 0,00V auf A1 und A2 bleibt jedoch.
LG
Thomas

P.S: um den BC847 verkehrt herum einzulöten muss man sich schon Mühe geben ;-) Der ist richtg rum... davor gibt es einen 103=10k Widerstand. Und uch der 1k auf der Rückseite der Platine ist an Ort und Stelle. =)

Update: Telemetrie FrSky-A2 tut jetzt auch ;-)
Hier war auch noch was im Code faul... über den RX-Port kamen die richtigen Werte rein, aber im Code wurden diese Werte dann noch mit einem bitweisen AND mit 0xF0 (&) bedacht und zusätzlich bitweise um 4 Stellen nach rechts geschiftet ( >> 4) ... wieso auch immer! Auf jeden Fall kam da dann immer 0.00 raus. ;-)
Lässt man den Zauber einfach weg, dann passt es!
 
Zuletzt bearbeitet:

OpaMichi

Erfahrener Benutzer
Hallo Freunde,
hat schon einer von Euch das ganze auf Win10 zum laufen bekommen.

Auch gib es seit dem ich es auf meinem kleinen Lappi mit Win7 zum laufen bekommen habe Update.
Ich kriege es unter Win10 einfach nicht mehr hin.:???:
Software für den Sender gibts hier: https://github.com/ckonecny/t5x
GUI-Software zum Konfigurieren des Senders: https://github.com/ckonecny/t5x_configurator

Nachtrag: Der Configurator startet jetzt nach vielen Versuchen und wirklich weis ich nicht warum, aber irgend wie findet er den Serial Port nicht.
 

Anhänge

Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.
FPV1

Banggood

Oben Unten