Brushed: Motorausgang 5 & 6 per AUX schalten - Wie?

Status
Nicht offen für weitere Antworten.
#1
Hi,

Ich versuche verzweifelt die unbenutzten Motorausgänge 5 & 6 an meinem Naze32_Brush Board zu nutzen, aber leider finde ich in der Gui keine Möglichkeit. Wenn ich Servo-Tilt aktiviere, drehen alle Motoren, und sie drehen schneller wenn ich den entsprechenden AUX-Switch bzw Servo schalte...

Gibts da nochimmer keine Gui-Möglichkeit Ausgänge ohne nerviges CLItisieren zu nutzen?

Wenn nein, hat jemand schon eine Vorahnung welche Pins wohin gemappt werden müssen, damit Servo 0 & 1 auf Motor 5 & 6 liegen?

LG!
 
Zuletzt bearbeitet:
K

Kolbi5000

Gast
#2
Es scheint einfach keine Unterstützung dafür zu geben. Kann zwar mit Cli ein Servo auf Motor5 legen, aber die Servo-Pwm Ansteuerung nicht zu Brushed-PWM ändern. Heißt, der Motorausgang kriegt nur die kleinen Servopulse und steuert nie ganz durch...

Heißt also, ich muss die FW wieder mal hacken... kann mir dabei jemand helfen?

Am einfachsten scheint es mir, einen Relay-Pin zu definieren, und eine Option, damit die Funktion RX_Set (Beeper über Aux) bei aktivierter Relais-Option den Relay Pin schaltet.

Da dies kein einfaches Vorhaben ist, bin ich für jede Hilfe dankbar!

Lg!
 
#3
Hi,
Ich versuche verzweifelt die unbenutzten Motorausgänge 5 & 6 an meinem Naze32_Brush Board zu nutzen, aber leider finde ich in der Gui keine Möglichkeit. Wenn ich Servo-Tilt aktiviere, drehen alle Motoren, und sie drehen schneller wenn ich den entsprechenden AUX-Switch bzw Servo schalte...
Servo-Tilt auf dem Naze schiebt normalerweise die Motorausgänge 2 hoch, sprich Servos auf 1/2, Motoren auf 3-6. War halt damals beim Baseflight so und wurde meines Wissens immer übernommen. Dafür müsstest also umkabeln.
Schau mal ob wirklich alle Motoren hochdrehen oder nur die an 1/2.

Ummappen von Servo auf Motor und Umgekehrt geht meines Wissens ohne weiteres nicht.
 
#4
Wenn ich das richtig gesehen habe, haben alle Motoren gedreht, bin mir aber nicht sicher.

Ab Betaflight 3.1 kann ich mit CLI die Pins ummappen, und habe zB den Buzzer testhalber auf einen Motorausgang gelegt, und eine LED angeschlossen. Hat super funktioniert, aber wegen der Ausschaltpausen beim Buzzer nicht zum Schalten von FPV geeignet. Aber sobald ich Servo-Tilt aktiviere und das Signal an den Motortreiber mappe, kriegt dieser nur das Servo-Signal, und schaltet nie richtig ein oder aus.

Ich hab die FW bereits durchforstet, aber blicke leider nicht durch, um mir zusätzlich zum Beeper ein "Relais" zu programmieren. Mein Plan war, alle Beeper Dateien zu kopieren und Beeper zu Relais umzubenennen, aber die ganzen Pin-Definitionen und CLI Optionen sind scheinbar über zig Dateien verstreut, das dauert Jahre bis ich da ohne Hilfe was weiterbringe.

Hat hier jemand etwas mehr Durchblick, und könnte im einfachsten Fall einen Pin definieren, und den über RX_SET schalten? Evtl kann man die Funktionen IOtoggle oder IOwrite nutzen? Genial wäre auch eine PWM Funktion wie an den Brushed Motoren.

Dass so eine Funktion noch nicht implementiert wurde, verstehe ich wirklich nicht, denn ich bin sicher nicht der Einzige der LEDs oder FPV über den Sender schalten möchte. Denn gerade bei kleinen Quads merkt man den Stromverbrauch bzw Flugzeit deutlich, und wenn es Nacht ist, will ich FPV ausschalten und die LEDs ein. Weitere Möglichkeiten wären zB Räder oder Ketten an der Drohne, die über die überflüssigen Motorfets gesteuert werden könnten.

Brushed Boards sind wie gemacht dafür, da man ungenutzte Motorausgänge benutzen könnte, die im Durchschnitt 5-10A schalten können. Bei 1S Boards kann man FPV an die geregelten +5V löten, und die Masse über den Motortreiber schalten, anstatt die Akkuspannung mit Störungen vom Motor+ Anschluss abzugreifen.

LG!
 
#5
Ja, ist alles nicht so einfach, hatte mich aber auch nur kurz damit beschäftigt.
Habe auch den Plan ein Brushed Board mit custom mixer für was nicht-fliegendes zu nutzen - mehr infos wenn es soweit ist ;_)

Was mir gerade noch einfällt. Wenn ch 5 und 6 eh als brushed motor Channel definiert sind dann müsste man sie doch im mixtable auch von Aux auf Motorausgang mixen können. der macht zwar eigentlich PWM, aber bei 0 und 100% ja dann doch aus und Voll Auf.
 
Zuletzt bearbeitet:
#6
5 und 6 sind nicht via Aux schaltbar, es sei denn man mapt den Beeper dahin, oder aktiviert CamTilt, aber dann hat man nur ein Servosignal. Ich google jeden Tag und finde kein einziges Video in dem ein schaltbarer AUX Kanal gezeigt wird, außer natürlich Beeper und Servo was für die gewünschte Anwendung nicht taugt. Wenn es eine Möglichkeit gäbe, das CamTilt-Servo-Signal in ein Brushed-Signal bzw PWM mit 0-100% DutyCycle umzustellen, wär das die Lösung.
 
#8
Evtl kann man das Servo-Protokoll manipulieren, und die Min-Max-Pulsdauer anpassen:

https://github.com/cleanflight/cleanflight/blob/master/docs/Mixer.md


servo <min> <max> <middle> <angleMin> <angleMax> <rate> <forwardFromChannel>

<min>, <max> - limit servo travel, in uS

<middle> - mid value when not forwarding, value from servo mixer is added to this.

<angleMin>, <angleMax> - unused

<rate> - scale for value from servo mixer or gimbal input, -100% .. 100%

<forwardFromChannel> - use RC channel value as reference instead of <middle>. Servo will follow given RC channel, with possible correction from servo mixer. <min>, <max> are still honored.


Also zB servo <0> <20000> <middle? 0?> <0> <180> <100> <forwardFromChannel>

Werd mich da noch spielen und berichten.

Lg!
 
#9
Nö, funktioniert nicht, man kann bei MIN nicht unter 500, und bei MAX nicht über 2500 gehen, echt sch....

Irgendwo in der FW müsste also eine Überprüfung der Werte stattfinden, die in etwa so aussieht:

if(SERVO_MIN < 500) SERVO_MIN = 500;
if(SERVO_MAX > 2500) SERVO_MAX = 2500;

Falls jemand die betreffende Passage im Code findet, gebe er mir bitte Bescheid!

Lg
 
#10
Evtl hab ichs jetzt gefunden, bin mir aber nicht ganz sicher.

Betaflight 3.17

scr/main/fc/cli.c

Zeile 2054

Code:
        if (
            arguments[MIN] < PWM_PULSE_MIN || arguments[MIN] > PWM_PULSE_MAX ||
            arguments[MAX] < PWM_PULSE_MIN || arguments[MAX] > PWM_PULSE_MAX ||
            arguments[MIDDLE] < arguments[MIN] || arguments[MIDDLE] > arguments[MAX] ||
            arguments[MIN] > arguments[MAX] || arguments[MAX] < arguments[MIN] ||
            arguments[RATE] < -100 || arguments[RATE] > 100 ||
            arguments[FORWARD] >= MAX_SUPPORTED_RC_CHANNEL_COUNT ||
            arguments[ANGLE_AT_MIN] < 0 || arguments[ANGLE_AT_MIN] > 180 ||
            arguments[ANGLE_AT_MAX] < 0 || arguments[ANGLE_AT_MAX] > 180
        ) {
            cliShowParseError();
            return;
        }
Wenn das die Überprüfung der über CLI/GUI eingegebenen Werte ist, müsste es reichen, den Codeblock zu löschen, dann könnte man beliebige Werte für die Servo-Pulsdauer eingeben, und somit 0-100% DutyCycle einstellen, aber ob es funktioniert muss getestet werden.

Kann mir das bitte jemand für Naze kompilieren ums zu testen?

lg
 
#12
Danke Frickler, aber die Version 3.2 ist total besch..., Cli ressource funktioniert nicht, umgemapte Pins werden trotz save nicht übernommen! Kannst du mir bitte die V3.17 kompilieren?

Die Servo Werte 0-20000 lassen sich jetzt übernehmen, aber die Gui hat einen Fehler, kann den Servo-Reiter nicht öffnen, es steht nur "Servo requires FW >=1.1 and target support!

Edit: Obwohl die Werte übernommen werden, und Cli falsch anzeigt, kann ich über Servo Tilt Motorausgang 6 steuern. ABER: Die Werte werden trotzdem auf 500-2500us limitiert, scheint als wäre da nochmal eine Überprüfung im PWM-Code :mad:

Langsam geb ichs auf, evtl noch ein Versuch mit digitalWrite(B09, HIGH) über die RX_SET Funktion?

Lg
 
Zuletzt bearbeitet:
#13
OK, das wußte ich nicht.
Ich habe auch noch n bisschen reingeschaut. Da sind denke ich noch diverse Stellen im Code die das limitieren.

Ich denke ich werde die Tage mal versuchen die mixTable Funktion in der mixer.c so anzupassen das Aux3 und Aux4 fest auf Motor Out 5 und 6 mappen. Da alle Motoren als Brushed angesteuert werden sollte da ein PWM drauf liegen das dann entweder 0 oder 100% Durchsteuert. Das würde mir reichen für meinen Zweck (LEDs und was anderes Schalten).
Ach ja, die Motorausgänge haben bei meinem Board übrigens Common VCC und Masse geschaltet.
http://www.banggood.com/de/Eachine-...Naze32-for-DIY-Micro-FPV-Frame-p-1076529.html

Falls du doch noch probierne willst, hier deine Änderung in der 3.1.7
Anhang anzeigen betaflight_3.1.7_NAZE.zip
 
Zuletzt bearbeitet:
#14
Common VCC? Du meinst Plus wird auch über einen Fet geschaltet?? Dann könnts nämlich problematisch werden wenn da zB eine Strommessung gemacht wird, aber die einfacheren H-Brücken lassen sich normalerweise einzeln beschalten, also nur Plus oder Minus abzapfen.

Edit: Grad die Leiterbahnen verfolgt, Motor + geht direkt an den Akku, sollte also funktionieren dass man die geregelten +5V abgreift und über den Motorfet gegen Masse schaltet.

Bei V3.17 funktioniert der Servo-Reiter, lassen sich aber nur über CLI auf unter 500 bzw über 2500 stellen. Wird dann richtig angezeigt, aber die LEDs schalten leider wieder nicht so wie sie sollen, nochimmer Servo-PWM :(

Wenn du das hinkriegst dass es funktioniert knie ich vor dir nieder :)

lg
 
Zuletzt bearbeitet:
#16
Nö leider, jetzt tut sich gar nix mehr, die Motoren drehen nicht, und die Aux Switches tun auch nix. Schade, aber probier weiter, evtl ist nur eine Kleinigkeit umzuschreiben.

Was genau hast du gemacht?


Code:
void writeMotors(void)
{
    if (pwmAreMotorsEnabled()) {
        for (int i = 0; i < motorCount; i++) {
            pwmWriteMotor(i, motor[i]);
        }
    }

    pwmCompleteMotorUpdate(motorCount);
}

static void writeAllMotors(int16_t mc)
{
    // Sends commands to all motors
    for (int i = 0; i < motorCount; i++) {
        motor[i] = mc;
    }

    writeMotors();
}

void stopMotors(void)
{
    writeAllMotors(disarmMotorOutput);

    delay(50); // give the timers and ESCs a chance to react.
}
Mit der Funktion pwmWriteMotor(5, motor[5]) könnte man evtl arbeiten, diese könnte man evtl bei RX_SET einpflanzen.
 
#18
Und drehen die Motoren normal wenn gearmt? Evtl liegts daran dass ich keinen full Chip erase gemacht habe, werds später mal neu flashen und berichte.
 
#20
Das schöne ist, man kann den Aux Kanal am Sender auf einen Drehregler legen, und die Helligkeit der LEDs steuern, funktioniert sehr gut.

Leider sind die Motortreiber halb durchgeschaltet wenn der Sender aus ist, also auf 1500...das müsste man doch irgendwo in der Gui oder Cli einstellen können welchen Standardwert der Aux Kanal hat, oder?

Dann ist mir noch eingefallen: Am Motorfet sitzt ja noch die Freilaufdiode...das bedeutet, alles über Akkuspannung minus Diodenspannung fließen vom 5V Regler zurück in den Akku?! Blöder Denkfehler, oder problematisch?

Im Zweifelsfall morgen mal Kabel anlöten und messen, und evtl das Datenblatt vom FET durchgehen wenn ich die Nummer finde, bin schon gespannt.

EDIT:

Müsste dieser hier sein: http://aosmd.com/pdfs/datasheet/AON7700.pdf


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

Banggood

Oben Unten