Eigenbau Tracker mit Downlink über den Audiokanal

cesco1

Erfahrener Benutzer
#41
Noch ein update, ein testproggy für den EMPFAENGER.

Ich hab ein kleines proggy das daten direkt vom AD des arduino liest und auf dem PC darstellt.
Zuerst DisplayAD.ino auf den arduino flashen, und dann mit DisplayAD_PC.exe anschauen.
Serieller port muss der zweite in der liste sein, sonst den DisplayAD_PC.pde sketch entsprechend abändern.

Das FSK signal sollte symmetrich um die schwarze linie, etwa bis zu den beiden grauen linien gehen. Bei mir ist das signal zu schwach, aber schön symmetrisch.

Und ja, das ist ein kleiner KO.
 

Anhänge

QuadMax

Erfahrener Benutzer
#42
Danke für das Testprogramm.

Das Programm öffnet sich bei mir leider nicht. Mit jedem Doppelklick öffnet sich nur ein neuer javaw.exe Prozess.
Mein Betriebsystem ist Windows 7 (64bit). habe das Programm sowohl mit java 32 als auch java 64bit probiert, hat aber mit keinem funktioniert. Die javaw.exe liegt in C:\Program Files\Java\jre7\bin
 

cesco1

Erfahrener Benutzer
#43
Lad dir einfach processing 1.5.1 runter und editier das .pde file, das ist die source.
Wenn du nur 1 seriellen hast, editier das
myPort = new Serial(this, Serial.list()[1], 115200);
auf
myPort = new Serial(this, Serial.list()[0], 115200);
 
Zuletzt bearbeitet:

QuadMax

Erfahrener Benutzer
#44
Danke für die schnelle Hilfe.
Es hat geholfen. ;)
Hier mein input:
Bild1.png

Die Mitte ist verschoben, vielleicht wäre hier eine Art Kalibrierung gut?
Ich schau gleich nochmal,vielleicht finde ich noch zwei Widerstände, die "mehr gleich" sind.
Das die Amplitude der gestauchten Sinuskurven kleiner sind, liegt glaube ich am RC -Glied, da hatte ich nur ein 33kohm.
Im Prinzip sollte es doch ein 22kohm auch tun, oder? Zumindest messe ich mit dem Oszi keine "schlechtere" Kurve, die beiden Kurven haben nur eine Amplitude mit wesentlich weniger Differenz.
Der TX hat noch den alten Code ohne Sinus Absenkung.
Den zweiten Kondensator habe ich bis jetzt weggelassen, da er kein glatteres Signal gebracht sondern nur die Amplitude abgesenkt hat. (Mit dem zweiten Kondensator meine ich den rechten in deiner Zeichnung).
Oder braucht man den unbedingt?

Wenn ich deinem Plotter eine Zeit lang zugucke, fallen mir Phasen auf, bei denen keine gestauchten Sinuskurven vorkommen.
Ich habe die Zeit mal gemessen und komme auf 12 Sekunden. Gps war bei den Tests nicht angeschlossen.
Woran könnte das liegen?
 

cesco1

Erfahrener Benutzer
#45
Wenn nix gesendet wird hast du nur die tiefe frequenz. Wenn die plotter anzeige genau ins "nicht senden" fällt siehst du auch nix. Du kannst im .pde die "frameRate(4);" auf 10 oder 20 raufschrauben, dann siehst du schnellere bilder.

Bei deinem signal wird der empfänger mühe haben. Der offset ist VIEL zu gross. Das signal ist auch zu schwach.
Wenn du VREF = 1.1V verwenden kannst, mach es (arduino uno ist $9). Dann stimmt die signalstärke etwa.

Die sache mit den C und den R ... wenn du was gutes findest bitte mitteilen. d.h. 64khz gut unterdrückt und beide frequenzen etwa gleich gross. Ich hab da verwendet "was gerade da war" und das ist sicher nicht optimal.

Bezüglich testdaten, was willst du? Flug rund um den tracker ?

BTW kennst du "navisim" ? Ja, damit kannst du ein sich bewegendes GPS simulieren :)
Eifach navisim output zum com-port des senders leiten ...

Oder mein "gpssim". Wackelt weniger als navisim. Processing skript, comport anpassen wie oben. Dann mit der maus clicken, und dorthin fliegt dann dein gps. Und der tracker "sollte" dann folgen.
 

Anhänge

Zuletzt bearbeitet:

QuadMax

Erfahrener Benutzer
#46
Danke für das gpssim. Das Programm ist echt genial.
Es sollte genug Testdaten liefern ;).
Baue heute Abend mal einen Uno ein und teste damit.

Gibt es eine Begrenzung, wie groß die Amlitude maximal sein darf bei VREF = 1.1V? Oder stört das nicht, wenn ich ein Signal von 2-3 Vpp habe?

Als R und C am Sender benutze ich im Moment einen 22kOhm und einen 1nf.


Habe den Code aktualisiert und wieder auf die git hochgeladen.
 

QuadMax

Erfahrener Benutzer
#47
Habe alle Komponenten jetzt getestet.
Senden und Empfang klappt super :cool:.

Sobald ich jedoch meinen Code auf den Arduino draufspiele, empfängt er nichts mehr.
Suche schon die ganze Zeit nach der Ursache des Problems, finde aber nichts.

Wenn jemand mal über meinen Code gucken könnte, wäre ich ihm sehr dankbar.
Meinen aktuellen Code habe ich unten angehängt.

Ich vermute, es liegt an einem Timer der sich mit einem der libaries in die Quere kommt.
Aber das ist nur eine Vermutung von jemandem, der auf dem Gebiet noch blutiger Anfänger ist...
 

Anhänge

cesco1

Erfahrener Benutzer
#48
Ich hab kein lcd und auch keinen mag dran. MAG hab ich deshalb auskommentiert.

EDIT: vergiss diesen teil. Schau beispielproggi unten.

Ausserdem .. achte besser auf das einrücken des codes, das ist ENTSCHEIDEND für die leserlichkeit. Wenn das einrücken nicht stimmt versteht man den fluss des codes nicht.

Warum das lcd den empfang stört weiss ich nicht genau. Ich vermute aber dass "wire.h" nicht realtime tauglich ist, d.h. es sperrt die interrupts -> AD wandlung geht manchmal nicht -> kein empfang. Dashalb verwendet MultiWii auch nicht wire.h sondern die eigene MWii variante von I2C routinen.

Beim MAG dürfte das genau gleich problem auftreten. Wie man eine mag liest ohne gleich den ganzen arduino lahmzulegen kanns du bei MWii nachschauen (sensor.cpp).

Aber wofür ist denn der mag? Kannst du dir kiste anfangs nicht nach nord ausrichten und dir den mag sparen? Ein solcher nicht tilt kompensierter mag ist nur beschränkt brauchbar. Das MAG feld zeigt nämlich nicht nach norden. Das feld zeigt nach unten, etwas schräg nach norden.

Wenn du ein MWii board mit mag hast, richte das board so dass mag Z maximal, X und Y null sind. Stell dir ne senkrechte zur platine vor, dort zeigt das mag feld hin. Je höher im norden du bist je schlimmer wird das.

Du weisst dass der empfänger einen seriellen 115kbaud 3 byte status sendet? Der status ist:
"empfangene pakete" - "nichts empfangen" - "CR"
 
Zuletzt bearbeitet:

QuadMax

Erfahrener Benutzer
#49
Danke für die Tipps.
Ich setzte mich gleich mal dran und versuche alles umzusetzen.

Du weisst dass der empfänger einen seriellen 115kbaud 3 byte status sendet? Der status ist:
"empfangene pakete" - "nichts empfangen" - "CR"
Hatte bisher nur immer darauf geschaut, ob die Led leutet oder nicht.


Aber wofür ist denn der mag? Kannst du dir kiste anfangs nicht nach nord ausrichten und dir den mag sparen? Ein solcher nicht tilt kompensierter mag ist nur beschränkt brauchbar. Das MAG feld zeigt nämlich nicht nach norden. Das feld zeigt nach unten, etwas schräg nach norden.
Der mag ist da, weil ich den Traum habe, das Ding anzumachen und es funktioniert :). Und für ~1.50€ habe ich dem einen Versuch gegeben. Das der mag Sensor nicht nach Norden zeigt ist mir bewusst, deshalb kann man in der configuration.h ganz oben seine Fehlerkorrektur eingeben.
 

cesco1

Erfahrener Benutzer
#50
Der mag ist da, weil ich den Traum habe, das Ding anzumachen und es funktioniert :)
Dann musst du den mag nur zu anfang mal lesen um nord zu bestimmen?

Ich denke wenn man das geschikt macht kommt man auch mit wire.h klar. Das heisst die LCD routinen laufen nur alle 500ms ein mal nachdem gerade ein packet empfangen wurde, sonst nicht. Dann hat nämlich das audio 200ms funkstille. Wenn keine msg kommen dann läuft der LCD mit dem packet-timeout alle 550ms.

Anbei der code für mein uralt 9600 baud serialles mwii LCD. Dieses system des aufrufs mit "do_lcd" sollte auch mit dem I2C lcd klappen. Bei dir "if(do_lcd) { do_lcd = false; menu(); }".
Angezeigt werden oben "good packets" unf "missed packets", unten AZ-servo wert und EL servo wert. Wenn du da mit gpssim rumfährst sollte AZ servo entsprechend bewegen.

Ich mach später noch eine höhe in gpssim rein, damit man EL-servo auch bewegen kann.


Später soll noch eine optionale DC offset messung reinkommen, und eine audio pegelmessung, natürlich mit LCD anzeige der werte :).

Edit:
video, simulierter kreisflug vor dem tracker. GPSsim mit höhe & kreisflug, promini sender, uno empfänger.
https://www.youtube.com/watch?v=xxoawzEFNgQ&feature=youtu.be
 

Anhänge

Zuletzt bearbeitet:

QuadMax

Erfahrener Benutzer
#51
Einmal den mag einzulesen hätte auch gereicht :D.
Ich baue den Code weiter um.

Die Flugzeit können wir auch gerne weglassen, die ist ja nicht wirklich nötig.

cesco1 hat gesagt.:
Später soll noch eine optionale DC offset messung reinkommen, und eine audio pegelmessung, natürlich mit LCD anzeige der werte .
Was würdest du davon halten?:
menu.png


Wenn du meine calculation.ino nimmst und deine zwei Servos um 90 grad in x oder y Achse drehst, klappt das tracken immer noch so gut?

Danke für die Datei, ich versuche mich mal dran.
 

cesco1

Erfahrener Benutzer
#52
Ich würd eine splash screen machen, der 3 sek angezeigt wird. Dann startseite mit sats und akku, und HOME set.

Die servo koeffizienten musste ich massiv erhöhen da ein servo 180 grad, das andere but 90 grad.
#define az_fact 5.6 //2.8
#define el_fact 11.2 //2.8

ich hab mit fixed gain kalman extrapolator experimentiert um das schütteln wegzubekommen. Die schnellen bewegungen sehen gut aus, bei den langsamen denk ich ist die servoauflösung nicht gut genug.

https://www.youtube.com/watch?v=LT0KA-fSjVc&feature=youtu.be
 
Zuletzt bearbeitet:

QuadMax

Erfahrener Benutzer
#53
Update

Processing hat es mir jetzt irgendwie angetan. :D
Um die Genauigkeit vom Tracker zu erhöhen bin ich gerade am folgendem Programm dran:
Bild1.png
(anklicken für große Ansicht)

Wenn es fertig ist lade ich natürlich auch den Code hoch.
Ich wollte mich jetzt nur mal schnell melden, das Projekt ist keinesfalls gescheitert.
In letzter Zeit hatte ich nur viel Privat zu tun und Hobby kommt halt erst danach wieder dran.


cecso1 hat gesagt.:
Ich würd eine splash screen machen, der 3 sek angezeigt wird. Dann startseite mit sats und akku, und HOME set.
Dann machen wir es so ;). Ich wäre noch für einen Screen, der mir anzeigt, in welchem Baum mein Flugzeug hängt^^.

Aktuell hat die Box ein 20x4 Display und zwei Buttons. Sollte man das beibehalten oder ändern?

Gruß QuadMax
 

QuadMax

Erfahrener Benutzer
#55
Danke :D

Ich bin noch nicht ganz fertig aber im Anhang ist schonmal eine Vorfassung.
Bild1.png
(anklicken für große Ansicht)


Vom Programmierstil ist es wahrscheinlich nicht so sauber, aber dieses mal habe ich mir echt Mühe mit der Vormatierung gegeben :). Zusätzich habe ich noch die ControlP5 library benutzt.


Sollte alles bis auf das Übertragen zum Arduino fehlerfrei funktionieren.


Damit kann der Tracker dann seine Ausrichtung um ca +-9Grad korrigieren. Für alles darüber muss man dann selbst nochmal Hand anlegen.

Gruß QuadMax
 

Anhänge

QuadMax

Erfahrener Benutzer
#56
Update

Bin jetzt fertig mit der Kalibrierung.
Kann es allerdings leider im Moment nicht Testen mit Servos.

Wichtig ist, erst den Port auszuwählen und dann zu connecten.

Es gibt noch einen bug, er zeigt nämlich bei den Schiebereglern nicht 0 an sondern -3.81, warum auch immer.
Hier bin ich total ratlos, vielleicht weiß ja hier einer mehr :).

Angehägt ist die Processing & Arduino Datei. Damit es funktioniert, wird aber noch die library controlP5 benötigt.

Muss man jetzt allerdings noch in den Hauptcode integrieren. Wer kanns? Da scheitere ich im Moment noch dran :(.

Gruß QuadMax
 

Anhänge

QuadMax

Erfahrener Benutzer
#57
Update

[video=youtube;E-r6VJvB_dA]Tracker Kalibrierung[/video]

Neue Version im Anhang.
Arduino Board Led blinkt jetzt 4 sec lang wenn er die Daten gespeichert hat.
Da man in den EEPROM ja nur 100.000 Zyklen gehen ist das speichern noch auskommentiert. - als Sicherheit.
 

Anhänge

QuadMax

Erfahrener Benutzer
#58
Weiter geht`s...

War wieder viel los mit Abi und so... . Jetzt aber erstmal Weihnachtsferien und Zeit fürs Hobby ;).

Bin heute Abend zum Testen auf nem Aldi Parklatz gekommen.
Endlich! Er funktioniert.
Leider ohne LCD und ohne mag Sensor, aber das ist zu verschmerzen.

Nachdem ich ein paar Runden um den Tracker gerannt bin muss ich sagen, das er sehr präzise ist.
Wenn ich dicht am Tracker vorbeigerannt bin (so 2m), hat man aber die Latenz von ~500ms gemerkt.
Sollte aber im normalen Flugbtrieb nicht störend sein.

Denkbar wäre auch eine Art "Mini-Tracker".
tracker.jpg

Im Anhang den Code, den ich für meinen Test benutzt hatte. Nur die >>void calcangles()<< habe ich modifiziert.


Nach den Feiertagen kommt der Videobeweis, bis dahin wünsche ich euch allen ein Frohes Fest.

Gruß,
QuadMax
 

Anhänge

QuadMax

Erfahrener Benutzer
#59
Wie versprochen ein kleines Video.

[video=youtube;f-j8IpEHOYw]https://www.youtube.com/watch?v=f-j8IpEHOYw&feature=youtu.be[/video]

Beim Einbinden vom Kompass, bin ich immer noch nicht weitergekommen. Ich habe lange den Multiwii Code studiert, werde aber daraus nicht schlau. Wenn mir jemand helfen könnte den Kompass so auszulesen, dass sich nicht gleich das ganze Modem aufhängt, wäre das super.

@Cesco1: Auf deiner Git hat sich ja noch einiges getan. Ist der Code, den du in Post #39 gepostet hattest noch aktuell, oder gibt es mittlerweile eine neue Version?

Gruß,
QuadMax
 

cesco1

Erfahrener Benutzer
#60
Toll, gutes video. Mich wundert dass das bei der geringen distanz geht. Das gps muss recht gut sein.

Ich hab meine tracker hardware noch nicht fertig ....

3d teile (ghettostation) aus dem drucker gemacht aber nicht montiert (kein grosses servo).

Dann hab ich mir noch nen 20W lasercutter für sperrholz / acryl bestellt ($700).
Der kommt vielleicht irgendwann ... oder auch nicht ... die chinesen sind komische leute.

Ich mach so viel dass nie was fertig wird ;(((

@Quadmax
Das git zeugs hab ich stark vereinfacht. Modem / tracker muss man trennen denk ich, deshalb ist der tracker teil nicht mehr dort.
 
Zuletzt bearbeitet:
RCLogger

FPV1

Banggood

Banggood

Oben