- SF800 Solar Speicher Tutorial         
Ergebnis 1 bis 10 von 3542

Thema: Willas Shrediquette Tricopter / Quadrocopter / Hexacopter

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier Avatar von ssellere
    Registriert seit
    15.05.2008
    Ort
    Westerrönfeld
    Alter
    46
    Beiträge
    26
    @ Scotch:

    dann hab ich das irgendwie falsch verstanden, werd mir deinen Link noch mal ganz genau anschauen.

    Ja ich benutze den QuadroPPM12-Umsetzer von qc-copter.de, um aus den einzelnen Kanälen meines 2,4GHz Empfängers das Summensignal zu generieren.
    Wo ist denn der Unterschied zwischen deinem Bild und meinem Bild. Ich sehe bei dir auch nen Impuls mit ca. 0,4ms und dann ein Low-Signal von 0,6 bis 1,6ms.
    In Summe wären das dann die 1-2ms pro Kanal. Es müssen ja nicht 0,4ms zu Beginn eines Kanals sein. Nur die Summe sollte halt stimmen.
    Wo kommt denn dein Summensignal her? Auch mit nem Umsetzer für 2,4GHz erzeugt, direkt vom 40MHz Empfänger oder ...?

    Ich hab gestern abend ausgiebig getestet und das zucken ist weg. Dabei ist mir dann noch eingefallen, dass ich gar keinen Extra-Kanal für Failsafe brauche. Es würde ja reichen zu überprüfen, ob der letzte Kanal (Ch8 bei mir)
    eingelesen wurde, wenn nicht werden die neuen Werte nicht verwendet.

    MfG Sven
    ...der aus Westerrönfeld

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    45
    Beiträge
    1.273
    @SvenSellere: Du sagst du hast 8 Kanäle, jeweils mit 0.4ms high davor und einem low-signal von 1-2 ms. Wie lang ist bei dir die Pause nach dem Summensignal? Der Timer braucht eine Pause von mindestens 3.984ms (d.h. keine steigende Flanke in dieser Zeit) damit er überläuft und bei Kanal 1 wieder richtig einsteigt. Kann es sein, dass die Pause bei dir evtl. zu kurz ist?
    Wenn das der Fall wäre, könnte man bei Kanälen > 5 einfach die Überlaufzeit des Timers verkürzen. Dann würden auch kürzere Pausen detektiert werden. Wäre schön wenn du mal den Code testen könntest (Propeller besser abmontieren, das war jetzt auf die Schnelle geschrieben), vielleicht hilft das ja schon?

    Code:
    '===READ RX=====================================================================
    Getreceiver:    
    If Channel > 0 And Channel < 6 Then                         'fill empf(1-5)
      Empf(channel) = Timer0
      Timer0 = 6                                                  'preload for 3.984ms
    else                                                             'Channel > 5
      Timer0 = 150                                               'preload for 1.68ms
    End If
    
    If Channel = 5 Then                                         'when all relevant channels were read, enable the servo interrupt
      Enable Timer1
    End If
    Incr Channel                                                'if no falling edge was detected for a longer period, channel will increase above 11
    
    Return
    Alternativ könnte man auch statt "Timer0 = 6" ein "Timer0 = 100" für alle Kanäle versuchen (dann aber muss der Offset von "Sempf" angepasst werden). Damit würde der Timer nach 2.48ms überlaufen, das würde in deinem Fall reichen um die Kanäle auszulesen (0.4ms + 1 bis 2ms). Aber ob das für andere Empfänger auch funktioniert bleibt unklar. Und ich bin an einer Lösung interessiert die für die ca. 100000 möglichen Sender/Empfänger/Summensignalerzeuger Kombinationen funktioniert.
    Viele Grüße, William
    -> http://william.thielicke.org/

  3. #3
    Neuer Benutzer Öfters hier Avatar von ssellere
    Registriert seit
    15.05.2008
    Ort
    Westerrönfeld
    Alter
    46
    Beiträge
    26
    @ Willa:

    An den 4ms, die Timer0 braucht zum Überlaufen kann es nicht liegen. Ich hatte vorher nen 6Kanal-Empfänger angeschlossen. Der Summensignalerzeuger gibt dann auch nur 6 Kanäle raus. Das Summensignal eines Kanals setzt sich aus 0,4ms High und 0,6 bis 1,6ms Low-Signal zusammen = 1-2ms. In Summe bei 6Kanälen sind das dann bei maximalen Ausschlägen 6x2ms und am Ende noch mal 0,4ms High = 12,4ms. Nach 20ms startet das neue Summensignal. Also genug Zeit zum Überlaufen.
    Bei dem 8 Kanal-Empfänger passt es auch noch, da Kanal8 fest auf 1,5ms eingestellt ist (bei mir): 7x2ms + 1,5ms + 0,4ms = 15,9ms. Wobei das schon knapp ist. Werde deine Idee mal aufgreifen und die Vorlaufzeit von Timer0 verkürzen, sobald alle 8 Kanäle gelesen wurden.
    Wahrscheinlich gibt es keine Generallösung für sämtliche Kombinationen, aber ich halte es für sinnvoll abzufragen, ob auch wirklich soviele Kanäle gelesen wurden, wie auch gesendet werden. Wenn nicht, dürfen die neuen Receiverwerte nicht übernommen werden. So hab ich jetzt eingebaut und werde mal fleißig testen und berichten, ob noch Zuckungen auftreten.

    MfG Sven

    PS: wie werden eigentlich die Summensignale bei anderen Projekten eingelesen und ausgewertet, z.B. bei MikroKopter? Hat da jemand Erfahrung. Hatte bisher beim Googlen exakt die Umsetzung von Willa gefunden
    ...der aus Westerrönfeld

  4. #4
    Erfahrener Benutzer Roboter-Spezialist Avatar von deHarry
    Registriert seit
    17.08.2010
    Beiträge
    597
    Hallo Zusammen!

    Getrieben durch die Fragen von Sven? (ssellere) habe ich gestern abend meinen Tri auf den Schreibtisch platziert um ein paar Oszillogramme meines Empfängerausgangs anzufertigen.

    Hat auch anfangs ganz gut geklappt, bis ich anfing, die einzelnen Impulse und deren Auslenkung zu untersuchen. Zu diesem Behufe habe ich die Knüppel ein paar mal durchgerührt und dann, um abschließend den Kanal 5 zu checken, den Kippschalter betätigt... WUUSCHHH und autsch (ich war schnell!! und habe den mit Vollgas startenden Tri noch auf dem Tisch in den Schwitzkasten genommen).
    Er hat um sich gebissen, wir sind fest umklammert unter den Schreibtisch gerutscht, wo ich (ganz) kurz überlegt habe, ob ich den qualmenden Motor loslassen soll um den Akku zu trennen, oder lieber doch den Motor festhalte. Ich habe mich für ein paar weitere Kratzer entschieden und den Stecker auseinander gerissen. Zum Glück hat der letzte laufende Motor nur noch müde hin und her gezuckt, die beiden anderen Propeller wurden wohl vom Fußboden gestoppt.
    Auf dem Schreibtisch sah es aus wie bei Hempels unterm Sofa. Lauter zerfetzte Kabel (Programmieradapter für den Atmel, Serielle Schnitte für TriGUI, ein Testboard für kleine I²C-Wandler, ein paar USB-Kabel für Kamera usw.), alles im Zimmer verteilt, ebenso die Papiere mit Notizen, die sich im Laufe der Zeit angesammelt hatten.
    Ein Kabel Suche ich immer noch...

    Dann bin ich ganz schnell ins Bad und habe mich verarztet. Drei mittelgroße Pflaster haben für die tieferen Schnitte genügt, die restlichen Kratzer und blaue Flecken konnten unbehandelt bleiben.

    In meinem speziellen Fall kam noch erschwerend hinzu, dass meine Propeller abgeschnitten und somit scharfkantig sind.

    Insgesamt habe ich echt Glück gehabt, dass mir die Kiste nicht ins Gesicht gesprungen ist, alle Löcher sind an den Unterarmen, den Händen und am Bauch (durch T-Shirt und Unterhemd hindurch).

    Lerne: Tricopter unter Spannung am Schreibtisch IMMER ohne Propeller!!! (Wie Willa mehrfach an allen möglichen Stellen ausgeführt hat)

    Und nein, ich habe nicht alles sofort wieder heile gemacht, sondern ihn erst mal mit Verachtung gestraft und mich weiter um meinen Rechner gekümmert
    Geändert von deHarry (22.03.2011 um 18:11 Uhr)
    Gruß
    Harald
    __________________
    Modellbau&Elektronik
    www.harald-sattler.de

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    21.10.2008
    Beiträge
    39
    Hallo

    @deHarry mein Zeigefinger hat auch mal was bekommen und zu Hause immer Props weg und draußen I2C Stecker raus wenn ich was schnell reparieren muss.

    @deHarry während des Fluges würde ich nicht versuchen Werte in eeprom zu speichern da Interrups abgeschaltet werden... also besser auf dem Boden.

    Code Variante nur zum einstellen der Offsetwerte benutzen da Ch6 und Ch7 nicht gefiltert werden und ist es nicht unmöglich dass sich mal ein Impuls 'einschleicht'. Bislang hat es geklappt und mir sind keine ungewünschte Impulse registriert worden.

    Offset wird korrigiert wenn in Hover modus (von hinten/Heck betrachtet):
    kippt nach links (roll Yacc) muss Offset dekrementiert werden
    kippt nach vorne (nick Xacc) muss Offset dekrementiert werden

    Ich hoffe dass ich keine Modifikation falsch gemacht habe (und Willa nichts dagegen hat):

    Tricopter_m328p_11_Offsets.bas

    Zur Zeit ist meine Bauform etwas 'spartanisch' (und traue mich noch nicht es vorzustellen) aber wie Javermeister werde ich warten und umbauen bzw. erleichtern wenn ich etwas mehr als nur schweben schaffe.

    Gruß
    Hans

  6. #6
    Erfahrener Benutzer Roboter-Spezialist Avatar von deHarry
    Registriert seit
    17.08.2010
    Beiträge
    597
    Hi Hans,

    danke für die Bereitstellung des Code.
    Zitat Zitat von 3003henk Beitrag anzeigen
    @deHarry während des Fluges würde ich nicht versuchen Werte in eeprom zu speichern da Interrups abgeschaltet werden... also besser auf dem Boden.
    Ich denke, du beziehst dich auf meinen Vorschlag, die Werte "per Knopfdruck" zu speichern.
    Ich meinte nicht, sofort ins EEPROM zu speichern, sondern nur "merken" (irgendwo in Variablen) und dann wie du es momentan mit deiner Version machst, erst nach der Landung ins EEPROM.
    Erst dann kann man ja auch ungestört die Trimmung wieder auf Null stellen und die neuen Parameter in der TriGUIDE verwenden, die per Reset übernommen werden.

    Zitat Zitat von 3003henk Beitrag anzeigen
    Code Variante nur zum einstellen der Offsetwerte benutzen da Ch6 und Ch7 nicht gefiltert werden und ist es nicht unmöglich dass sich mal ein Impuls 'einschleicht'. Bislang hat es geklappt und mir sind keine ungewünschte Impulse registriert worden.
    Klingt vernünftig.
    Gruß
    Harald
    __________________
    Modellbau&Elektronik
    www.harald-sattler.de

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    21.10.2008
    Beiträge
    39
    Hallo

    @deHarry
    Ich meinte nicht, sofort ins EEPROM zu speichern, sondern nur "merken" (irgendwo in Variablen) und dann wie du es momentan mit deiner Version machst, erst nach der Landung ins EEPROM.
    So wird es ja gemacht. Ich benutze direkt die Variable die am Anfang aus der EEPROM gelesen wurde und inkrementiere bzw. dekrementiere mittels CH6 und Ch7 um diese später wieder ins EEROM zu speichern.


    Gruß
    Hans

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen