- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 321 von 355 ErsteErste ... 221271311319320321322323331 ... LetzteLetzte
Ergebnis 3.201 bis 3.210 von 3542

Thema: Willas Shrediquette Tricopter / Quadrocopter / Hexacopter

  1. #3201
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    32
    Beiträge
    1.578
    Anzeige

    E-Bike
    Hi,

    ich meinte eigentlich, woran du CS und AD0 angelegt hast? CS ist bei mir 3V3 und AD0 liegt auf Masse. Solltest du AD0 auf 3V3 gelegt haben, ändert sich deine Adresse auf
    Code:
    Const Mpuaddw = &B11010010                                 
    Const Mpuaddr = &B11010011
    Es kann auch gut sein, dass sich unter dem Chip Brücken gebildet haben, war bei mir Anfangs so... Da hilft dann nur noch Auslöten mittels Heißluftfön o.ä.
    Mit welcher Methode hast du den denn MPU verlötet? So, wie du es Anfangs gepostet hattest?

    Gruß
    Chris

  2. #3202
    Erfahrener Benutzer Roboter-Spezialist Avatar von deHarry
    Registriert seit
    17.08.2010
    Beiträge
    597
    Hi Chris,

    ich habe - gewitzt durch die Probleme von euch Vorturnern, vielen Dank dafür! - einen quadratischen Klecks Papier unter den MPU geklebt, bevor ich den Chip aufgelötet habe. Das war das nächst Beste, das ich zur Hand hatte. Kapton-Band wäre besser gewesen, aber wer hat das schon zu Hause rum liegen?

    Das Papier ist natürlich recht dick (im Vergleich zu Kapton), weshalb ich so meine Probleme hatte, die Pads und die Pins des Chip gleichzeitig mit Lot zu benetzen, aber letztlich hat es geklappt, der MPU tut wie er soll und gibt schön seine Werte aus (dein Testproggie von zwei Seiten weiter vorne).

    Eins der unbenutzten Pads ist mir ebenfalls weg geflogen, die anderen freien Pads habe ich gar nicht erst versucht anzulöten, sondern mich auf die funktionalen Pads beschränkt.

    Vorverzinnen habe ich mir gespart, lediglich das eine Pad an der Ecke, wo ich losgelegt habe, hat vorher Zinn gesehen.

    Die Pads für die Stecker waren eine kleine Herausforderung, da meine Ständerbohrmaschine keine 0,6 mm Bohrer fasst. Da musste ich zum Akkuschrauber greifen, aber da die Löcher in den Pads den Bohrer super gut eingefangen haben, passen die Stecker trotzdem wunderbar. Und der Bohrer lebt auch noch

    Ich habe gestern auch noch ein bisschen dein Testprog aufgemotzt um ein Gefühl für die Timer in dem XMega zu bekommen, ich hoffe, über deinen Guide-Code bekomme ich da einen tieferen Einblick. Man muss intensiv in der Config-Datei lesen, um alle Parameter korrekt angeben zu können, da ist die Hilfe von Bascom nicht eben ausführlich (das gilt aber für die AtMegas gleichfalls).
    Gruß
    Harald
    __________________
    Modellbau&Elektronik
    www.harald-sattler.de

  3. #3203
    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/

  4. #3204
    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

  5. #3205
    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/

  6. #3206
    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.

  7. #3207
    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

  8. #3208
    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

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

    Gruß Hans

  10. #3210
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    32
    Beiträge
    1.578
    Hallo,

    Versteh mich nicht falsch, aber du kennst den Unterschied zwischen TCE_Per, TCE_CCX , TCE_CNT?
    In deinem Programm configurierst du Timer TCE0, schreibst dann aber TCD0_Per . Das ist aber denke ich ein Schreibfehler, da der Rest wieder stimmt.
    Der _Per Wert gibt die höchste Zählrate an, d.h. er zählt in deinem Bsp. von 0 bis 6550. Um das selbe Zählprinzip wie bei den Megas zu haben, muss man das Register TCE0_CNT verwenden
    Bei TCE0_CNT = 6550 zählt er dann von 6550 bis 65535.

    Gruß
    Chris

Seite 321 von 355 ErsteErste ... 221271311319320321322323331 ... LetzteLetzte

Stichworte

Berechtigungen

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

LiFePO4 Speicher Test