- LiFePO4 Speicher Test         
Seite 37 von 136 ErsteErste ... 2735363738394787 ... LetzteLetzte
Ergebnis 361 bis 370 von 3542

Thema: Willas Shrediquette Tricopter / Quadrocopter / Hexacopter

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    45
    Beiträge
    1.273
    Hi,
    das GPS hat eine dicke Metallplatte an der Unterseite. das wird wohl so eine Art Abschirmung sein. Ob der Kompass das bracuht weiss ich noch nicht. Andererseits darf der ja eh nicht sonderlich empfindlich sein, sonst kann man das mit 3-4 Motoren in der Nähe sowieso vergessen... Nach meinen ersten Tests mit dem kompass weiss ich nun, dass der Kompass wirklich stark auf eine Neigung reagiert. Evtl. muss der am Ende eh gegen einen Neigungskompensierten ausgetauscht werden.... Wäre sehr ärgerlich, da die ca. 5mal so teuer sind...
    Viele Grüße, William
    -> http://william.thielicke.org/

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    23.04.2007
    Ort
    stuttgart
    Beiträge
    1.127
    die neigungskompensierten sind wirklich sehr teuer... kann man das nicht softwaretehcnisch lösen? beispielsweise, dass er sich immer seine ausrichtung holt wenn es gerade messbar ist und dann bis zur nächsten messung das yaw-gyro dazuintegriert oder so ähnlich... naja muss man mal schaun.. denke fürs erste wird es auch so gehen, ausserdem steht er ja wenn er im navimode ist eher wagrecht und fliegt keine fiesen manöver..
    meine projekte: robotik.dyyyh

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    45
    Beiträge
    1.273
    ausserdem steht er ja wenn er im navimode ist eher wagrecht und fliegt keine fiesen manöver..
    Genau, deswegen wird das für Position-hold bei wenig bis keinem Wind erstmal funktionieren.
    kann man das nicht softwaretehcnisch lösen? beispielsweise, dass er sich immer seine ausrichtung holt wenn es gerade messbar ist und dann bis zur nächsten messung das yaw-gyro dazuintegriert oder so ähnlich...
    Ja, das geht wohl. Man kann auf der Naviplatine einfach die gleichen Berechnungen ausführen wie auf der Tricopterplatine und den errechneten Winkel dazu benutzen den Kompass zu kompensieren. Dazu müsste man den IMU-cube abzweigen und bräuchte 4 AD Kanäle. Aber die hast du ja eh schon nach außen geführt.
    Aber erstmal Position-hold, das ist auch schon eine Art "Meilenstein"... :-D
    Viele Grüße, William
    -> http://william.thielicke.org/

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    45
    Beiträge
    1.273
    Der Drucksensor läuft jetzt auch. Ich frage den EOC pin ab und errechne die Höhe so schnell wie der Sensor kann. Da das Signal ziemlich stark verrauscht ist bilde ich danach den Mittelwert aus 8 Messungen. Dann ist es immer noch verrauscht, aber vielleicht reicht es ja.

    Also laufen eigentlich alle Sensoren, ich werde bald mal die einzelnen Code-Stückchen zusammenfügen. Dann kann ich bald auch mit der Programmierung der Regelung anfangen.
    Code vom Drucksensor (modifiziert nach kh-gps.de):
    Code:
    '===CHIP SETTINGS===
    $regfile = "m328pdef.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 32
    $crystal = 8000000
    $baud = 38400
    
    Config Pind.2 = Input                   'eoc
    
    Dim Ac1 As Single
    Dim Ac2 As Single
    Dim Ac3 As Single
    Dim Ac4 As Long
    Dim Ac5 As Long
    Dim Ac6 As Long
    
    Dim B1 As Single
    Dim B2 As Single
    Dim B3 As Long
    Dim B4 As Long
    Dim B4a As Single
    Dim B5 As Single
    Dim B6 As Single
    Dim B7 As Long
    
    Dim Mb As Single
    Dim Mc As Single
    Dim Md As Single
    
    Dim Ut As Long
    Dim Up As Long
    
    Dim X1 As Single
    Dim X2 As Single
    Dim X3 As Single
    
    Dim Zwr1 As Single
    Dim Zwr2 As Single
    Dim Zwr3 As Single
    Dim Zwr4 As Single
    
    Dim T As Single
    Dim T_str As String * 4
    Dim P As Single
    Dim P2 As Single
    
    Dim Po As Single
    Dim A As Single
    Dim A2(8) As Word
    Dim Mittelwert As Word
    Dim Averaging As Byte
    Dim I As Byte
    
    Dim Adres As Byte
    Dim Value As Byte
    Dim Result As Integer
    
    Dim Hi As Long
    Dim Lo As Long
    Dim Xlo As Long
    
    
    $lib "i2c_twi.lbx"                      ' we do not use software emulated I2C but the TWI
    Config Scl = Portc.5                    ' we need to provide the SCL pin name
    Config Sda = Portc.4                    ' we need to provide the SDA pin name
    I2cinit
    
    
    Declare Sub Write_bmp(byval Adres As Byte , Byval Value As Byte)
    Declare Sub Read_bmp(byval Adres As Byte , Value As Byte)
    Declare Sub Read_reg
    
    Const Addressw = &B11101110             'slave write address
    Const Addressr = &B11101111             'slave read address
    
    
    'hole Kalibrierungsdaten
    '-------------------------------------------------------------------------------
    Adres = &HAA                            'Startadresse calibration data
    
    Call Read_reg
    Ac1 = Result
    Call Read_reg
    Ac2 = Result
    Call Read_reg
    Ac3 = Result
    Call Read_reg
    Ac4 = Result
    Call Read_reg
    Ac5 = Result
    Call Read_reg
    Ac6 = Result
    Call Read_reg
    B1 = Result
    Call Read_reg
    B2 = Result
    Call Read_reg
    Mb = Result
    Call Read_reg
    Mc = Result
    Call Read_reg
    Md = Result
    
    Averaging = 1
    
    Do
    'hole Rohdaten Temperatur
    '-------------------------------------------------------------------------------
    If Averaging = 1 Then                   'datasheet: would be enough to get temp every second
      Call Write_bmp(&Hf4 , &H2E)
      While Pind.2 < 1                        'wait until  EOC is 1 ca. 5ms
      Waitms 1
      Wend
    
      Call Read_bmp(&Hf6 , Value)             'read it back
      Hi = Value * 256
      Call Read_bmp(&Hf7 , Value)             'read it back
      Ut = Hi + Value
    End If
    'hole Rohdaten Luftdruck
    '-------------------------------------------------------------------------------
    'Call Write_bmp(&Hf4 , &HF4)             'ultra-high precision mode
    'Call Write_bmp(&Hf4 , &H34)             'normal mode
    Call Write_bmp(&Hf4 , &HB4)             'high precision mode
    While Pind.2 < 1                        ''wait until  EOC is 1 ca. 26 ms in ultra high precision mode
    Waitms 1
    Wend
    Call Read_bmp(&Hf6 , Value)             'read it back
    Hi = Value * 256
    Call Read_bmp(&Hf7 , Value)             'read it back
    Up = Hi + Value
    
    'kalkuliere tatsaechliche Temperatur
    '-------------------------------------------------------------------------------
    Zwr1 = Ut - Ac6
    Zwr2 = 2 ^ 15
    Zwr2 = Ac5 / Zwr2
    X1 = Zwr1 * Zwr2
    
    Zwr1 = 2 ^ 11
    Zwr2 = Mc * Zwr1
    Zwr3 = X1 + Md
    X2 = Zwr2 / Zwr3
    
    B5 = X1 + X2
    
    T = B5 + 8
    Zwr3 = 2 ^ 4
    T = T / Zwr3
    T = T / 10
    T_str = Str(t)
    T_str = Left(t_str , 4)
    'Print "T=   " ; T_str ; " C"
    
    'kalkuliere tatsaechlichen Luftdruck
    '-------------------------------------------------------------------------------
    B6 = B5 - 4000
    
    Zwr1 = 2 ^ 11
    Zwr2 = 2 ^ 12
    Zwr3 = B6 / Zwr2
    Zwr3 = B6 * Zwr3
    Zwr4 = B2 * Zwr3
    X1 = Zwr4 / Zwr1
    
    Zwr1 = 2 ^ 11
    Zwr2 = B6 / Zwr1
    X2 = Ac2 * Zwr2
    
    X3 = X1 + X2
    
    Zwr1 = Ac1 * 4
    Zwr1 = Zwr1 + X3
    Zwr1 = Zwr1 + 2
    B3 = Zwr1 / 4                           '1010(orig)
    
    Zwr1 = 2 ^ 13
    Zwr2 = B6 / Zwr1
    X1 = Ac3 * Zwr2
    
    Zwr1 = 2 ^ 12
    Zwr2 = 2 ^ 16
    Zwr3 = B6 / Zwr1
    Zwr3 = B6 * Zwr3
    Zwr4 = B1 * Zwr3
    X2 = Zwr4 / Zwr2
    
    X3 = X1 + X2
    X3 = X3 + 2
    X3 = X3 / 4
    
    Zwr1 = X3 + 32768
    Zwr2 = 2 ^ 15
    Zwr3 = Zwr1 / Zwr2
    
    B4a = Ac4 * Zwr3
    B4 = Abs(b4a)
    
    B7 = Up - B3
    Dim B7a As Long
    B7a = B7 * 50000
    
    Zwr1 = B7a * 2
    Zwr1 = Zwr1 / B4
    Zwr2 = B7a / B4
    Zwr2 = Zwr2 * 2
    If B7a < &H8000000 Then P = Zwr1 Else P = Zwr2
    
    Zwr1 = 2 ^ 8
    Zwr2 = P / Zwr1
    X1 = Zwr2 * Zwr2
    
    Zwr1 = 2 ^ 16
    X1 = X1 * 3028
    X1 = X1 / Zwr1
    X1 = Abs(x1)
    
    Zwr1 = -7357 * P
    Zwr2 = 2 ^ 16
    X2 = Zwr1 / Zwr2
    
    Zwr1 = X1 + X2
    Zwr1 = Zwr1 + 3791
    Zwr2 = 2 ^ 4
    Zwr1 = Zwr1 / Zwr2
    P = P + Zwr1
    P = P / 100
    
    'kalkuliere Hoehenwerte
    '-------------------------------------------------------------------------------
    'Po = 1013.25                            'Pressure auf Seepegel
    Po = 1020.3
    Zwr1 = 1 / 5.255
    Zwr2 = P / Po
    Zwr3 = Zwr2 ^ Zwr1
    Zwr4 = 1 - Zwr3
    A = 44330 * Zwr4
    A = A * 100                             'höhe in zentimetern
    If Averaging <= 8 Then
      A2(averaging) = Int(a)
      Averaging = Averaging + 1
    End If
    If Averaging = 9 Then
      Mittelwert = 0
      For I = 1 To 8
        Mittelwert = Mittelwert + A2(i)
      Next
      Mittelwert = Mittelwert / 8
      Print Mittelwert                      'ausgabe der höhe in zentimetern
      Averaging = 1
    End If
    Loop
    End
    
    '------------------------------------------------------------
    Sub Read_reg
    Call Read_bmp(adres , Value)
    Hi = Value * 256
    Adres = Adres + 1
    Call Read_bmp(adres , Value)
    Result = Hi + Value
    Adres = Adres + 1
    End Sub
    
    '----------------------------------------------------------
    Sub Write_bmp(byval Adres As Byte , Byval Value As Byte)
    I2cstart                                'start condition
    I2cwbyte Addressw                       'slave address
    I2cwbyte Adres                          'address of register
    I2cwbyte Value                          'value to write
    I2cstop                                 'stop condition
    End Sub
    
    '----------------------------------------------------------
    Sub Read_bmp(byval Adres As Byte , Value As Byte)
    I2cstart                                'generate start
    I2cwbyte Addressw                       'slave address
    I2cwbyte Adres                          'address of register
    I2cstart                                'repeated start
    I2cwbyte Addressr                       'slave address (read)
    I2crbyte Value , Nack                   'read byte
    I2cstop                                 'generate stop
    End Sub
    Viele Grüße, William
    -> http://william.thielicke.org/

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von Bammel
    Registriert seit
    11.12.2004
    Ort
    Bremen
    Alter
    38
    Beiträge
    1.400
    kannst da nicht auch eine tiefpass einbauen?

    mein bestand erhöht sich auch zunehmen. habe mir jetzt einen empfänger den Graupner R700 und den sender graupner mc-10 bei Ebay ersteigert. beide fast neuwertig. und meine motoren plus regler sollten in den nächsten 40tagen eintrudeln.

  6. #6
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    45
    Beiträge
    1.273
    kannst da nicht auch eine tiefpass einbauen?
    Ein Mittelwert aus 8 Messungen ist ja schon eine Art Tiefpass. Ich habe jetzt aber noch einen zusätzlichen Tiefpass eingebaut (siehe Code) und die Werte sehen ganz ok aus (das Modul war im Wechsel auf 0m und auf 2.5m):

    Bild hier  

    Damit lässt sich die vertikale Position bestimmt einigermaßen regeln. Ich glaube eine Regelung auf 2m genau ist möglich (die Verwirbelungen am echten Tricopter machen die Messwerte vielleicht noch etwas schlechter).

    Sehr wenig erfreut bin ich allerdings von den Messungen meines 10Hz GPS Moduls...:


    Hier stand das GPS mitten auf einer Wiese unter freiem, blauen Himmel still (ca. 1 minute lang):
    Bild hier  

    Hier fahre ich mit meinem Auto eher auf der Straße als quer durch die Kleingartensiedlung:
    Bild hier  

    Tja, wie mache ich jetzt mit dem GPS-Modul weiter...? So wie die Messungen im Moment aussehen kann ich mir keine vernünftige Regelung vorstellen. Leider habe ich vorher noch nie mit GPS gearbeitet, daher kann ich die Ergebnisse nicht einschätzen. Ein Freund hat aber ein schönes µBlox GPS (4Hz), ich werde mal versuchen einen Vergleich zu erstellen.

    Code:
    'der Tiefpass code für den Drucksensor:
    Hoehe = Hoehe * 0.95
    A = A * 0.05
    Hoehe = Hoehe + A
    'mittelwert = hoehe
    'Print Mittelwert
    
    ''(
    If Averaging <= 8 Then
      A2(averaging) = Int(hoehe)
      Averaging = Averaging + 1
    End If
    If Averaging = 9 Then
      Mittelwert = 0
      For I = 1 To 8
        Mittelwert = Mittelwert + A2(i)
      Next
      Mittelwert = Mittelwert / 8
      Print Mittelwert                      'ausgabe der höhe in zentimetern
      Averaging = 1
    End If
    Viele Grüße, William
    -> http://william.thielicke.org/

  7. #7
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    24.05.2007
    Ort
    Im hohen Norden
    Beiträge
    227
    Guten morgen Willa,
    versuche Deine Mittelwertbildung über einen gleitenden Mittelwert zu bilden und Du bekommst bessere Werte.

    Peter
    _________________________________________________
    [-X Quis custodiet ipsos custodes
    Ground-Effect-Stability-Robot www.peter-holzknecht.de

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    16.11.2003
    Beiträge
    355
    Hm, die Frage ist kann man Abweichungen zu Kartendaten wirklich so gelten lassen? Unsere Straße geht z.b. quer durch Häuser wenn man die Karte+Satellitenbilder anzeigen lässt.
    was man aber ganz gut sieht ist dass deine Position bei der Autofahrt durch z.b. die Bäume stark springt, derartiges sollte sich doch durch Kompass o.ä. etwas kompensieren lassen oder?
    Kann dein Modul mit DGPS oder wie das heist umgehen? also den zusätzlichen Korrekturdaten.

    Ich frage mich ja immer wie das im professionellen Bereich mit GPS gemacht wird. die positionieren auf einige cm genau und das zuverlässig.

  9. #9
    Erfahrener Benutzer Roboter Genie Avatar von Bammel
    Registriert seit
    11.12.2004
    Ort
    Bremen
    Alter
    38
    Beiträge
    1.400
    Guten morgen,

    die professionellen GPS geräte sind aber bestimmt auchnoch ein wenig teuerer als die geräte die hier verwendet werden.

    aber ich muss da mrniemand zustimmen mir ist auhc schon des öfteren aufgefallen das die straßeneinzeichnungen bei google-maps völlig daneben liegen und das liegt in dem bereich den du dort ungefähr gemessen hast.

    was ich nur komisch finde ist halt an dem bild wo das gps modus auf der wiese liegt und einen angeblichen weg von ca 10meter zurücklegt. ich meine das entspricht eigentlich den spezifikationen vom zivilen gps. aber könnte man dorgt ich was mit den beschleunigungssensoren kompensieren? eine meine die dürften ja wenn die position gehalten werden soll nicht wirklich viel ausschlagen.

    zum drucksensor wenn man nun noch einen beschleunigungssensor in der z-achse mit einbezieht meinst du nihct es wäre dann möglich durch integrieren oder derartigen, die höhe besser bestimmen zu können? oder zumindestens das schwanken von evtl vorkommenden +/- 1meter zu kompensieren? zumindestens im position hold modus.

    gruß, bammel

  10. #10
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    45
    Beiträge
    1.273
    versuche Deine Mittelwertbildung über einen gleitenden Mittelwert zu bilden und Du bekommst bessere Werte.
    Hi Peter, ich mache im Moment immer Mitelwert von einem Block von 8 Werten. Das passt ganz gut, weil ich viel schneller abtaste als ich am Ende Werte herausschicke. Bei einem gleitenden Mittelwert wird "die Anzahl der Messwerte pro Zeit" nicht verringert, oder? Aber das ist es ja was ich will.

    Hm, die Frage ist kann man Abweichungen zu Kartendaten wirklich so gelten lassen? Unsere Straße geht z.b. quer durch Häuser wenn man die Karte+Satellitenbilder anzeigen lässt.
    Ich kann mir vorstellen, dass das Kartenmaterial evtl. insgesamt etwas verschoben ist, aber ich glaube nicht dass die Karte in sich verzogen ist. D.h. wäre der aufgezeichnete Pfad die ganze Zeit konstant neben der Straße, würde ich es aufs Kartenmaterial schieben, aber das ist ja nicht so.
    Kann dein Modul mit DGPS oder wie das heist umgehen? also den zusätzlichen Korrekturdaten.
    DGPS ist mir dafür erstmal zu aufwendig, obwohl damit Positionierungen im cm Bereich möglich wären.
    was ich nur komisch finde ist halt an dem bild wo das gps modus auf der wiese liegt und einen angeblichen weg von ca 10meter zurücklegt. ich meine das entspricht eigentlich den spezifikationen vom zivilen gps.
    Ein Kumpel hat ein µBlox modul (das verwenden wohl nicht ohne Grund alle UAVs...) und er meinte, seine Werte sind alle in einem Radius von 2.5m. Das wäre schon mal besser. Ich werde mir wohl auch so eins besorgen müssen.
    aber könnte man dorgt ich was mit den beschleunigungssensoren kompensieren?
    Ich glaube, wenn der Copter langsam aus seiner Position driftet werden die ACCs as nicht mitbekommen. Die Beschleunigungen sind zu klein. Außerdem wird hauptsächlich die Erdbeschleunigung gemessen.
    beschleunigungssensor in der z-achse mit einbezieht
    Ja, das kann man bestimmt machen. Aber ich glaube es müsste auch ohne gehen...
    Viele Grüße, William
    -> http://william.thielicke.org/

Seite 37 von 136 ErsteErste ... 2735363738394787 ... LetzteLetzte

Stichworte

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress