Sonarsensor am CC3D

Flyup

Neuer Benutzer
#1
Hallo Gemeinde

Ich möchte eine Landehilfe basteln. Dazu nehme ich einen Nano mit einem Sonarsensor, funktioniert bis ca. 5 m recht genau.

Hat jemand eine Idee wie ich dem CC3D (billig version) die Höheninfo anbieten könnte.

Lösungsansatz:

Am liebsten wäre mir nur das setzen von einem Bit , wodurch der Kopter solange mehr "Gas" gibt bis das Bit vom Sonar wieder off ist.

Somit könnte ich einfach mit verstellen eines AUX - Reglers am Transmitter die Höhenberechnung am Nano verändern ....und wenn der Kopter nur solange sinkt bis das "Low-Altitude-Bit" auf "Hi" springt würde er jede belibig einstellbare Höhe genau halten.

Frage:
Wie könnte man dem CC3D das Bit verarbeiten lassen?
Hab nur etwas im GPS interface gefunden was mit den Variablen der Altitudezu tun hat.

Einfach formuliert , wie gebe ich mit einem Bit etwas "Gas" dazu , bis das Bit wieder Null steht, dann kann das "Gas" wieder zurückfallen bis das Bit wieder auf eins steht?

Nochbesser wäre es wenn ich die Höhe vom Sonar Seriell übergeben könnte oder als PWM Signal.

Geht das überhaupt am CC3D (Normalversion)?
 

donvido

Erfahrener Benutzer
#2
Wenn ich das richtig verstehe, willst du mit dem Nano einen 2-Punkt-Regler umsetzen, dessen Sollwert du mit dem Aux-Kanal vorgibst?

Das wird zum einen nicht klappen, weil das CC3D (die teure Version heißt einfach nur Revolution) kein Barometer an Board hat, und du ihm nur schwer ein GPS vorgaukeln kannst. Und zum anderen weil ein 2-Punkt-Regler (selbst mit Hysterese) nichts für so ein schnelles System ist.

Du könntest aber sowas [video=youtube;DfLQUxtGD40]https://www.youtube.com/watch?v=DfLQUxtGD40[/video] versuchen, oder du flasht dein Board auf Cleanflight und schließt dein Sonar direkt an.
 

Flyup

Neuer Benutzer
#3
Hallo Donvido,

ja du hast das alles richtig erfasst!!

...Der Nano macht mir die Distance-Aufbereitung so das ich seriell oder PWM oder mit einfachem Bit setzen die Alt-Info anbieten kann.
Nur fand ich nix am FC wo ich das dann übernehmen könnte.
GPS String emulieren ist zu komplex ....sehe ich auch so.
Scheint eine Sackgasse zu werden mit dem einfachn cc3d :-(



Den Sonar hab ich als extra "Kiste" mit zusätzlicher LED Anzeige der Höhe zur Anfagskontrolle aufgebaut.
https://youtu.be/2XmYF9GSSf4


ich dachte, das ich ihn an einen Flexport hänge eventuell auch mit Protokoll.

Kennst du das..?
(Anhang)
Bei den Systemeinstellungen ...
Sonar_cc3d.JPG

Nachtrag:
Es wäre nur eine "Einpunktregelung"...
Die Hysterese würde sich aus der voreingestellten "Gasstellung" zum steigen ergeben... den abfall bewirkt die schwerkraft...also gehe ich von einem "alt-pendeln" aus .

Dein Vorschlag. Umflashen....geht wohl aber nicht mehr zurück....
Hab noch nicht "rumgeflasht" aber wenn das der einzige Weg ist ...muss ich wohl durch...
Gern höre ich weiteres...
LG
 
Zuletzt bearbeitet:

donvido

Erfahrener Benutzer
#4
ich dachte, das ich ihn an einen Flexport hänge eventuell auch mit Protokoll.
Ich kann dir leider nicht sagen, ob eine Höhenregelung mit Sonar überhaupt im Code für den CC3D umgesetzt wurde. Das Ding an den Flexport zu hängen, würde voraussetzen, dass du exakt weißt, was das Programm hören will. Dann mach das lieber wie in dem Video, das ich verlinkt habe.
Wenn du jeden Kanal separat hast, dann schick einfach den Gas- und evtl einen Aux-Kanal an den Nano, entwerfe dort einen PID-Regler für die Höhe und gebe als Stellgröße die Gasstellung weiter an die FC. Wenn du PPM verwendest, musst du alle Kanäle am Nano auswerten und weiterreichen.

Nachtrag:
Es wäre nur eine "Einpunktregelung"...
Die Hysterese würde sich aus der voreingestellten "Gasstellung" zum steigen ergeben... den abfall bewirkt die schwerkraft...also gehe ich von einem "alt-pendeln" aus .
Ein Zweipunktregler wäre es wenn du an einem festen Punkt (Höhe) sagst, alles darüber ist Motor aus, alles darunter ist Vollgas.
Mit Hysterese ist, wenn Motor AN erst bei Erreichen eines Minimums zum Sollwert und Motor AUS bei Erreichen eines Maximums relativ zum Sollwert geschieht.
Schwingen wird wohl beides.

Dein Vorschlag. Umflashen....geht wohl aber nicht mehr zurück....
Hab noch nicht "rumgeflasht" aber wenn das der einzige Weg ist ...muss ich wohl durch...
Gern höre ich weiteres...
Sollte kein Problem sein, ist reversibel und dürfte die einfachste Variante sein. Jedoch hab ich keine Ahnung, wie gut das in Cleanflight umgesetzt ist.
 
Zuletzt bearbeitet:

Flyup

Neuer Benutzer
#5
.... dann schick einfach den Gas- und evtl einen Aux-Kanal an den Nano, entwerfe dort einen PID-Regler für die Höhe und gebe als Stellgröße die Gasstellung weiter an die FC.
...hey die idee ist ja so gut , das sie von mir sein KÖNNTE !
danke.

ist aber etwas riskant den "knüppel" an den nano zu übergeben....quasi "duchzuschleifen"

Hängt der Nano ...fällt der Kopter....oder verschwindet in den Wolken.

Aber die Idee ist gut...werde morgen mal was zusammensketchen....ich halte dich auf dem Laufenden...

LG
 

Flyup

Neuer Benutzer
#6
...so hab mal alles aufgebaut und probe geflogen.

Er hält die Höhe mit leichtem "auspendeln" aber brauchbar um einer Person oder einem Auto schnell nach oben auszuweichen.

Aber da ergab sich nun folgendes Problem:

Es werden vom US Modul zu viele Fehler "0" ausgegeben weil es wohl zum Doppler-Efekt kommt wenn der Sensor sich zu schnell entfernt....

aber die Ide funktioniert perfekt in geringer Höhe(1-2m) ich erhöhe das Schubmoment einfach um den Betrag der Unterschreitung der Mindesthöhe. Voraussetzung es besteht genug schubvorgabe zum "normal schweben" vom Gasknüpel.... sonst sackt er zu weit durch weil die Regelung zu wenig "Grundgas" nachregelt......

Oberhalb der vom Auxkanal vorgegeben Mindesthöhe hab ich Gas vom Knüppel 1:1

:D
 

rubberduck

Erfahrener Benutzer
#7
Wenn ich das richtig verstehe, willst du mit dem Nano einen 2-Punkt-Regler umsetzen, dessen Sollwert du mit dem Aux-Kanal vorgibst?

Das wird zum einen nicht klappen, weil das CC3D (die teure Version heißt einfach nur Revolution) kein Barometer an Board hat, und du ihm nur schwer ein GPS vorgaukeln kannst. Und zum anderen weil ein 2-Punkt-Regler (selbst mit Hysterese) nichts für so ein schnelles System ist.
Upps, sorry aber das Revo hat ein Barometer.

aus dem Manual - Punkt Altitude hold

Locating the barometer

The barometer is the small silver-coloured component (indicated with the red circle) that has two small holes in the top suface. It is mounted on the Revo board adjacent to the header pins.
Covering the Barometer ..usw

Jürgen
 
Zuletzt bearbeitet:

donvido

Erfahrener Benutzer
#8
Upps, sorry aber das Revo hat ein Barometer.
'Türlich hat das ein Barometer, darum ging es aber nicht.
Wenn du mal die Klammer aus dem Satz streichst, kommt folgendes bei heraus:

"Das wird zum einen nicht klappen, weil das CC3D kein Barometer an Board hat."

Und weil es nun mal nur ein CC3D gibt und kein CC3D Revo (Erfindung der chinesischen Kopierer) habe ich darauf nochmal hingewiesen ;)

Hat jemand eine Idee wie ich dem CC3D (billig version) die Höheninfo anbieten könnte.
[...]
Geht das überhaupt am CC3D (Normalversion)?
 

carbo

Erfahrener Benutzer
#9
Was ich nicht verstehe ist, warum jemand mit den entsprechenden Fähigkeiten so eine irre Bastellösung mit der Uralthardware CC3D angeht, statt sich das minimal teurere Revo zu nehmen und die Sonarunterstützung in eins der Projekte Librepilot, Taulabs oder dRonin einbringt. Das Revo hat schließlich schon einen für Sonar vorgesehenen Analogeingang.
 

rubberduck

Erfahrener Benutzer
#11
Ich habe mir einen BMP180 Pressure Sensor besorgt und diesen an den I2C Eingang des Flexport als Barometer angeschlossen.
Anscheinend fehlt das Modul in der Firmware, um via I2C das Baro abzufragen.
Am Bord liegt es nicht, Cleanflight macht es.
 
Zuletzt bearbeitet:

Flyup

Neuer Benutzer
#13
.... so eine irre Bastellösung mit der Uralthardware CC3D angeht,
.......Das Revo hat schließlich schon einen für Sonar vorgesehenen Analogeingang.

...weil sich meine Lösung an alle "Dinge" anschließen lassen welche einen Gashebel haben unabhängig von der in der Firmware vorgegebenen Protokolle...


.....stimmt das Revo. benutzt den gleichen US Geber wie ich aber etwas andere Protokolle (da ist nix analog) als bei Arduino.
Jedoch ist mir nichts über Genauigkeit bekannt.

Das technische Problem dabei ist:

Das, das einfache Protokoll des alten Ping Befehles zu ungenau ist und der "new_Ping" Befehl zwar einen Durchschnitt zulässt aber bei Werten auserhalb eines Bereiches unplausible Abstandangaben enthält ("0").

Ich möche aber nicht zu viele Werte auf "Plausibilität" prüfen müssen...das kostet Rechenzeit.
darum versuche ich erst mal rauszufinden warum sooooooo viele Mess-Fehler im Flug aber nicht im Labor auftauchen.

Die einzige Erklärung wäre das es zu einem zu starken Dopplerefekt kommt wenn der Kopter mit mehr als 270cm/sec fällt.

Dazu muss ich aber erst mal die Telemetrie an den Sonarblock anlöten, sonst kann ich nicht in real- & runtime sehen woher manchmal (!!!) die Anhäufung von Fehlmessungen kommt.


....danke für die Geduld beim lesen.....
 
FPV1

Banggood

Oben Unten