UART-Ausgang als Switch / PWM nutzen

    • UART-Ausgang als Switch / PWM nutzen

      Hi, ich habe folgendes Problem:
      Ich möchte mit meinem FC (SpeedyBee F4 V2.0) eine zusätzliche superhelle LED schalten / regeln.
      Es handelt sich um eine 10W LED, die direkt am Akku hängt und mit einem Transistor geschaltet wird.
      Ich benötige nun einen Ausgang, mit dem ich die Basis des Transistors ansteuern kann.
      Am liebsten per PWM, um die Helligkeit der LED über das Poti von der Taranis X7 zu steuern.
      Eine einfache An-Aus-Funktion würde mir aber im Notfall auch reichen.

      Ich habe es bereits geschafft den LED-Pin vom Board als Servo-Ausgang umzumappen.
      Leider bekomme ich darüber nicht die komplette duty cycle range abgedeckt.
      Von dem, was ich optisch abschätzen kann, würde ich sagen das nicht mehr als 30-70% Dutycycle geregeld werden.
      Ich habe bereits mit dem Servo-Mixer in Betaflight (Console) rumgespielt, aber bekomme den Bereich einfach nicht weiter gespreitzt.
      Für die volle Regelung komplett aus, bis komplett an, brauche ich aber 0-100% duty cycle auf dem Servo / PWM Ausgang.

      Mein zweites Problem ist, das dass bisher nur mit dem LED-Pin funktioniert. Nicht aber mit den eigentlichen UART (RX/TX) Ausgängen.
      Kann es sein, das der Basisstrom bei den UART-Ausgängen zu gering ist ? Ich habe erstmal einen recht großen 10k-Widerstand vor die Transistorbasis gesetzt, weil der mir bei dem LED-Pin sonst immer abraucht.
      Ich möchte eigentlich die WS2812-LEDs über den LED-Pin steuern. Der ist also schon vergeben und für diese Spielerei gar nicht mehr frei.

      Falls es keine Möglichkeit gibt, die PWM-Geschichte ans Laufen zu bekommen, gibt es noch irgendeine Möglichkeit die Basis des Transistors
      on-off-mäßig mit einem anderen Ausgang anzusteuern ?

      LG, Fabian
    • Kleines Update:
      Ich habe just 4 Fun mal anstelle eines Motors meine Transistorschaltung auf die Steuerleitung gelegt.
      Klar das dass mit einem Datenprotokoll wie DSHOT nicht funktionieren kann.



      Stelle ich die ESC-Regelung auf PWM, habe ich die Möglichkeit Max und Min Werte frei einzustellen.
      Und mit diesen Einstellungen habe ich dann auch die gewünschte Funktion.
      Ich kann die LED komplett stufenlos regeln.

      Ich habe jetzt einfach Motor 7 auf meinen TX1-Pad gemapped.
      Nur weiß ich nicht, wie ich jetzt NUR diesen "Motor" (Also meinen Transistor) mit den oben gezeigten Einstellungen definieren kann.
      Der Motor müsste quasi in einer separaten "Gruppe" definiert werden und dann per motormixer korrekt eingestellt werden.
      Außerdem müsste ich einen Aux-Channel auf den Motor durchreichen und er dürfte halt keinen Einfluss auf die eigentliche Steuerung haben.
      Nur wie mache ich das? Über die Oberfläche wird das kaum gehen.

      Warum habe ich bei den Servos nicht die Möglichkeit, den Min- und Maxwert auf Anschlag zu drehen ?

      Für Hilfe bin ich sehr dankbar, halte euch aber auf dem Laufenden.
    • Stefan73 schrieb:

      nimm einen kleinen Arduino
      In Richtung Microcontroller kann ich dir den Attiny45 oder 85 empfehlen. Der ist sehr klein, und reicht dafür locker aus.
      Das Programm dazu ist eigentlich auch ganz einfach. Einfach mit pulseIn den Wert des Fcs einlesen, dan richtig Mappen und dann als PWM Signal wieder ausgeben. Das Programm dann auf die draufzubekommen geht auch sehr einfach: Board (attiny85/45) herunterladen, ein Programm auf einen Arduino laden, Arduino mit Attiny verbinden, auf Burn Bootloader klicken, Programm hochladen.

      Theoretisch müsste das ganze auch mit einem PWM brushed Esc gehen.
    • Hast Du mal in der CLI mit "servo" gespielt? Es akzeptiert uS-Werte für min, kann sein dass da 0/1000 auch geht... github.com/betaflight/betaflight/blob/master/docs/Mixer.md
      Ansonsten ChannelForwarding und passend eine Konstante im Code (DEFAULT_SERVO_MAX ?) ändern und selbst compilieren?
      Auch wenn ich die Attiny-Lösung irgendwie doof finde (weil Betaflight ist ja anpassbare OpenSource-Software...) wäre es wahrscheinlich schneller fertig :) Einfach huckepack auflöten ;)
      Wie kommen die Signale in die FC? SBUS-Decoder parallel dazu mit einem Ausgang ist mit einem Attiny auch schnell gemacht, und auch recht stressfrei.
      Viel Erfolg!

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von NeverFinished ()

    • Hey Leute,
      vielleicht interessiert es ja den ein oder anderen hier.
      Erstmal vielen Dank für den Tipp mit dem AtTiny. Der war gold wert.
      Ich bin das Projekt mit meinem Kumpel zusammen angegangen, wir haben uns beide den identischen Quad aufgebaut.
      Er ist Programmierer und hat sich (oh Wunder) um die Programmierung gekümmert, ich mich um die Schaltung. Perfekte Arbeitsteilung :)

      Zu dem Aufbau:
      Wir haben mehrere 6,6W LEDs (550mA@12V), die wir wie oben beschrieben per PWM in der Helligkeit regeln möchten.
      Da die LEDs 12V benötigen und unser Quad mit einem 4S-Akku betrieben wird, war der erste Impuls, einen Vorwiderstand vor die LED zu bauen.
      Aber dann hätten wir Helligkeitsschwankungen zwischen vollem und leerem Akku gehabt.

      Um das zu umgehen, nutzen wir einen 12V Festspannungsregler, der uns immer die benötigten 12V liefert.
      Diese 12V werden von einem entsprechendem Transistor geschaltet, um die LED zu regeln.
      Die Basis des Transistors steuern wir dann mit unserem AtTiny85 per PWM.

      Wie oben bereits erwähnt, haben wir das Poti der Funke auf einen freien Aux-Kanal gelegt.
      Diesen Aux-Kanal haben wir im Betaflight dann einem Servo zugewiesen.
      Das Servo muss natürlich noch auf einen freien UART- oder LED-Pin gemapped werden, damit das Signal dort ankommt.

      Mein Kumpel hat ein Programm für den AtTiny geschrieben, welches das Servosignal ausliest und in ein reines PWM-Signal mit Duty Cycle 0-100% umwandelt.
      Dieses PWM-Signal stellt der AtTiny dann für uns bereit und damit können wir die Basis unseres Transistors ansteuern.

      Ich habe mal ein kleines Video gemacht. Die LED leuchtet dort nicht mit voller Leistung, da sie nach ein paar Sekunden sofort überhitzt.
      Zur Kühlung müssen wir uns also noch Gedanken machen. Aber so auf dem Schreibtisch funktioniert das ganz gut :)
      Sorry für die miese Qualität. Wenn alles richtig läuft, mache ich ein vernünftiges Video.

      Wenn Interesse an einer detaillierteren Beschreibung, oder am Programmcode besteht, dann stellen wir euch das gerne zur Verfügung :)

      LG, Fabian & Armin

      Video