- fchao-Sinus-Wechselrichter AliExpress         
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
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    44
    Beiträge
    1.273
    @Chris: A0 ist auf GND und CS ist ja fest auf +3.3V gelegt. Ich habe die MPU grad in meinem Wok entlötet. Das ging sehr gut. Viele Pads unter der MPU sind lose. Das kann so wahrscheinlich nicht gehen. Und das große Pad unter der MPU hatte vielleicht auch zeitweise irgendwie Kontakt zu +3.3V und GND. Mir ist grad eh nicht ganz klar wie man das ohne Lötstopplack verhindern sollte. Chris, hast du noch ein oder zwei IMU Platinen? Die erste habe ich leider kaputt gemacht...
    Mit welcher Methode hast du den denn MPU verlötet? So, wie du es Anfangs gepostet hattest?
    Ja, so wie du es vorgeschlagen hattest. Jetzt habe ich mir aber noch einen feineren Lötkolben gekauft, mit dem kommt man besser an die Pads ran. Damit sollte der nächste Versuch klappen...
    Viele Grüße, William
    -> http://william.thielicke.org/

  2. #2
    Erfahrener Benutzer Roboter-Spezialist Avatar von deHarry
    Registriert seit
    17.08.2010
    Beiträge
    597
    Hi Willa,
    lege einfach ein ca. 4x4 mm großes Stück normales Kopiererpapier unter den MPU (ich habe meines mit einem winzigen Tröpfchen Plastikkleber auf dem Metallpad auf der UNterseite des MPU fixiert). Das klappt prima und verhindert zuverlässig Kurzschlüsse.

    Die Pads, die dir abgerissen sind, brauchst du wahrscheinlich nicht. Nur wenn eine Leiterbahn vom Pad weg führt muss das zugehörige Pad angelötet werden.
    Gruß
    Harald
    __________________
    Modellbau&Elektronik
    www.harald-sattler.de

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    44
    Beiträge
    1.273
    lege einfach ein ca. 4x4 mm großes Stück normales Kopiererpapier unter den MPU
    Super Idee. Und ich habe sogar eine Quelle für Kapton Band :-D
    Die Pads, die dir abgerissen sind, brauchst du wahrscheinlich nicht. Nur wenn eine Leiterbahn vom Pad weg führt muss das zugehörige Pad angelötet werden.
    Leider ist einer der abgerissenen Pads A0. Bzw. das Pad und die Leiterbahn sind noch da, hängen aber in der Luft...

    Ich habe aber auch eine gute Neuigkeit: Der Spektrum Satellit funktioniert hervorragend mit dem Xmega und 32MHz internem Takt. Eisspray auf dem Satelliten und/oder auf dem xmega machen da nichts aus, die Kommunikation klappt ohne Fehler bei 115200 baud. Und es ist herrlich komfortabel zu debuggen mit 2 HW Uarts ;-D

    Mit diesem Code erzeuge ich den 8ms Timer der zum Synchronisieren mit dem Empfänger genutzt wird. Ist das eine genehmigte Variante?
    Code:
    Config Tcc0 = Normal , Prescale = 1024       '32,000,000 / 1024 = 31250 Hz
    Tcc0_per = 250    '0.008 s * 31250 Hz  = 250
    Viele Grüße, William
    -> http://william.thielicke.org/

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.12.2011
    Ort
    Muggensturm
    Beiträge
    116
    Kapton-Band ist oft bei Lipo-Akkus verarbeitet.
    Was die Pads betrifft, ich habe ja ein neues Angebot gemacht, mit 2mm Pads.
    Ich habe mir diese Platine geätzt ( danke Chris für die Tipps ) und ich muss sagen, das ist gleich viel besser zu handhaben.
    Ich hatte auch erst einen Kurzschluß unter dem MPU, dann habe ich etwas Folie untergeklebt und dann ging es.
    Die Blink Software geht schon. Es wäre nett wenn ich da noch die Orginalsoftware haben könnte, um mal Bascom zu üben.
    Hat jemand Lust mir ein File schicken, mit dem ich den Sensor testen kann?
    Kann ich zum Test dann die Willa GUI nehmen, seriell angeschlossen?

    Gruß Bernd

    ich habe noch vergessen, ich benutze einen Jeti Empfänger mit Summensignal.

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

    Chris hat ein paar Seiten weiter vorne eine Demosoft eingestellt, mit der du deinen MPU auslesen und auf einem Terminal-Programm ausgeben kannst.

    Ich habe diesen Code noch ein bisschen verfeinert und ein paar Codeschnipsel für die LEDs eingestreut um mich an die Timer in dem XMega heran zu tasten.
    Das Geblinke klappt eher mühsam, aber immerhin

    Code:
    $regfile = "xm32a4def.dat"
    $crystal = 32000000
    $framesize = 100
    $hwstack = 100
    $swstack = 100
    
    $lib "xmega.lib"
    $external _xmegafix_clear
    $external _xmegafix_rol_r1014
    
    Config Osc = Disabled , 32mhzosc = Enabled
    Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1
    
    Declare Sub Init_mpu()
    Declare Sub Read_mpu()
    
    Config Tce0 = Timer , Prescale = 1                          ' 16bit Timer -> max 65535
    Tcd0_per = 6550
    Enable Tce0_ovf , Hi
    On Tce0_ovf Zaehler                                         'timer overflow
    
    
    Config Com2 = 38400 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8
    'Config Serialout1 = Buffered , Size = 200
    Open "COM2:" For Binary As #1
    
    Dim Twi_start As Byte
    Open "twie" For Binary As #2
    Config Twie = 400000
    
    Const Mpuaddw = &B11010000                                  'AD0 auf Masse
    Const Mpuaddr = &B11010001
    
    
    ' Motors (PWM)
    Config Portd.0 = Output                                     'Mot RH
    Config Portd.1 = Output                                     'Mot RV
    Config Portd.2 = Output                                     'Mot LH
    Config Portd.3 = Output                                     'Mot LV
    Config Portd.4 = Output                                     'Mot RM
    Config Portd.5 = Output                                     'Mot LM
    
    ' LEDs / Beeper
    Config Portc.4 = Output                                     'led 1 (Willa-LED) ROT
    Config Portc.5 = Output                                     'led 2 (Willa-LED) BLAU
    Config Portd.6 = Output                                     'led 3 (Willa-LED) GELB
    
    '--Alias's
    Led_rot Alias Portc.4
    Led_blau Alias Portc.5
    Led_gelb Alias Portd.6
    
    
    Dim Test As Byte
    Dim A As Word , B As Word , C As Word , D As Word
    
    
    
    Dim Gyrox As Integer
    Dim Gyroy As Integer
    Dim Gyroz As Integer
    Dim Tmp_gyrox(2) As Byte At Gyrox Overlay
    Dim Tmp_gyroy(2) As Byte At Gyroy Overlay
    Dim Tmp_gyroz(2) As Byte At Gyroz Overlay
    
    Dim Accx As Integer
    Dim Accy As Integer
    Dim Accz As Integer
    Dim Tmp_accx(2) As Byte At Accx Overlay
    Dim Tmp_accy(2) As Byte At Accy Overlay
    Dim Tmp_accz(2) As Byte At Accz Overlay
    
    I2cinit #2
    Call Init_mpu()
    
    Config Priority = Static , Vector = Application , Lo = Enabled , Med = Enabled , Hi = Enabled
    Enable Interrupts
    
    A = 0
    
    Do
    
       Call Read_mpu()
    
       Print #1 , Gyrox
    
    '   Waitms 100
    
       B = A Mod 20
       If B = 0 Then Toggle Led_rot
    
       C = A Mod 201
       If C = 0 Then Toggle Led_blau
    
       D = A Mod 302
       If D = 0 Then Toggle Led_gelb
    
    Loop
    
    End
    
    '===IRQ-Routine=================================
    Zaehler:
    
       Incr A
    '   Toggle Led_gelb
    
    Return
    '===IRQ-Routine=================================
    
    
    Sub Init_mpu()
    
       I2cstart #2                                              'start condition
       I2cwbyte Mpuaddw , #2                                    'write adress of MPU-6050
       I2cwbyte 117 , #2                                        'Register 117 "Who am I"
       I2crepstart #2                                           'repeated start
       I2cwbyte Mpuaddr , #2                                    'read adress of MPU-6050
       I2crbyte Test , Nack , #2                                'read byte WHO_AM_I (Reg 117)
       I2cstop #2                                               'stop condition
    
       Print #1 , Test
    
       I2cstart #2                                              'start condition
       I2cwbyte Mpuaddw , #2                                    'write adress of MPU-6050
       I2cwbyte 25 , #2                                         'Register 25 Sample Rate Divider (1..8 kHz)
       I2cwbyte &B00000000 , #2                                 'Divider set to 1   (soll)
       I2cstop #2                                               'stop condition
    
       I2cstart #2                                              'start condition
       I2cwbyte Mpuaddw , #2                                    'write adress of MPU-6050
       I2cwbyte 26 , #2                                         'Register 26 DLPF_CFG (digital lowpass filter) Configuration
       I2cwbyte &B00000000 , #2                                 'Bits 0..2 = 000 - ACC:260Hz, 0.0ms; Gyro:256Hz, 0.98ms   ( &B00000000 )
       I2cstop #2                                               'stop condition
    
       I2cstart #2                                              'start condition
       I2cwbyte Mpuaddw , #2                                    'write adress of MPU-6050
       I2cwbyte 27 , #2                                         'Register 27 Gyro Configuration
       I2cwbyte &B00000000 , #2                                 'Bits 3+4 = 00 - Full Scale Range: +/-250°/s
       I2cstop #2                                               'stop condition
    
       I2cstart #2                                              'start condition
       I2cwbyte Mpuaddw , #2                                    'write adress of MPU-6050
       I2cwbyte 28 , #2                                         'Register 28 ACC Configuration
       I2cwbyte &B00000000 , #2                                 'Bits 3+4 = 00 - Full Scale Range: +/-2g / No High Pass Filter
       I2cstop #2                                               'stop condition
    
       I2cstart #2                                              'start condition
       I2cwbyte Mpuaddw , #2                                    'write adress of MPU-6050
       I2cwbyte 107 , #2                                        'Register 107 Power Management 1
       I2cwbyte &B00001011 , #2                                 'No Reset / No Sleep / No Cycle / Temp_Sens: Dis / Clock Source: Z-Gyro
       I2cstop #2
    
    End Sub
    
    
    Sub Read_mpu()
    
       I2cstart #2                                              'X ACC
       I2cwbyte Mpuaddw , #2
       I2cwbyte 59 , #2
       I2crepstart #2
       I2cwbyte Mpuaddr , #2
       I2crbyte Tmp_accx(2) , Ack , #2
       I2crbyte Tmp_accx(1) , Ack , #2
    '   I2cstop #2
    
    '   I2cstart #2                                              'Y ACC
    '   I2cwbyte Mpuaddw , #2
    '   I2cwbyte 61 , #2
    '   I2crepstart #2
    '   I2cwbyte Mpuaddr , #2
       I2crbyte Tmp_accy(2) , Ack , #2
       I2crbyte Tmp_accy(1) , Nack , #2
       I2cstop #2
    
    '   I2cstart #2                                              'Z ACC
    '   I2cwbyte Mpuaddw , #2
    '   I2cwbyte 63 , #2
    '   I2crepstart #2
    '   I2cwbyte Mpuaddr , #2
    '   I2crbyte Tmp_accz(2) , Ack , #2
    '   I2crbyte Tmp_accz(1) , Nack , #2
    '   I2cstop #2
    
    
       I2cstart #2                                              'X GYRO
       I2cwbyte Mpuaddw , #2
       I2cwbyte 67 , #2
       I2crepstart #2
       I2cwbyte Mpuaddr , #2
       I2crbyte Tmp_gyrox(2) , Ack , #2
       I2crbyte Tmp_gyrox(1) , Ack , #2
    '   I2cstop #2
    
    '   I2cstart #2                                              'Y GYRO
    '   I2cwbyte Mpuaddw , #2
    '   I2cwbyte 69 , #2
    '   I2crepstart #2
    '   I2cwbyte Mpuaddr , #2
       I2crbyte Tmp_gyroy(2) , Ack , #2
       I2crbyte Tmp_gyroy(1) , Ack , #2
    '   I2cstop #2
    
    '   I2cstart #2                                              'Z GYRO
    '   I2cwbyte Mpuaddw , #2
    '   I2cwbyte 71 , #2
    '   I2crepstart #2
    '   I2cwbyte Mpuaddr , #2
       I2crbyte Tmp_gyroz(2) , Ack , #2
       I2crbyte Tmp_gyroz(1) , Nack , #2
       I2cstop #2
    
    End Sub
    Der COde ist im Wesentlichen der von Chris, ich habe nur überflüssige I²C-Schreib- und -Leseops aus der Read_MPU-Routine raus geschmissen (Laufzeit!) und eine Timer-IRQ-Routine eingebaut, die die LEDs mehr oder weniger zyklisch blinken lässt. Die Takte der LEDs sind sowas von daneben, dass ich denke, ich habe da was Grundsätzliches verpeilt. Vielleicht kann mir ja der eine oder andere Leser den entscheidenden Tipp geben

    Die 100 ms Pause in der Main Loop kann wieder rein, dann ist die Ausgabe im Terminal lesbarer.

    nota bene:
    Um die Kommunikation auf der Seriellen Schnitte mitzuschneiden (z.B. beim Programmieren über Willas GUI oder deren Kommunikation mit der GUIDE) verwende ich zusätzlich den "Free Serial Port Monitor".
    Gruß
    Harald
    __________________
    Modellbau&Elektronik
    www.harald-sattler.de

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.12.2011
    Ort
    Muggensturm
    Beiträge
    116
    Hat von euch jemand Lust, so etwas wie eine Anleitung zu verfassen, für den mechanischen und elektronischen Teil würde ich mich bereit erklären.
    Und zwar wirklich: Man nehme das und jenes, mache dann das und dann sollte es auch funktionieren.
    Ich finde es immer schade, wenn zweimal die gleichen Fehler gemacht werden.

    Gruß Bernd

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    26.03.2007
    Beiträge
    15
    Tcd0_per = 6550
    Muss das nicht TCE0 heissen?

    Gruß Hans

Stichworte

Berechtigungen

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

Labornetzteil AliExpress