MPU-6050 MEMS 6-Achs-Sensor

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Versuch mal dieses Programm,funktioniert bei mir.nur 2-Leds erforderlich.

      BASCOM-Quellcode

      1. 'Demo MEMS-Sensor MPU-6050 Beschleunigung auslesen
      2. 'Created with Bascom-AVR 2079 Michael Kinz 01/2017
      3. $regfile = "m328pdef.dat"
      4. $crystal = 16000000
      5. $hwstack = 32
      6. $swstack = 32
      7. $framesize = 24
      8. '-------- Init I2C --------
      9. $lib "I2C_TWI.LBX" 'Hardware I2C
      10. 'Config I2cdelay = 1
      11. Config Scl = Portc.5
      12. Config Sda = Portc.4
      13. I2cinit
      14. Const W_addr = &HD0 'I2C Adresse MPU-6050
      15. Const R_addr = &HD1
      16. '-------- Init I/O ---------
      17. Config Portb.3 = Output
      18. Config Portb.4 = Output 'Ausgang für Bandanzeige
      19. '--------- Init Variablen ------------
      20. Dim Register_adresse As Byte
      21. Dim Register(6) As Byte
      22. Dim Acc_x As Integer At Register(1) Overlay
      23. Dim Acc_y As Integer At Register(3) Overlay
      24. Dim Acc_z As Integer At Register(5) Overlay
      25. Dim Z As Byte 'Hilfsvariable für Forschleife
      26. Dim Temp As Integer 'Hilfsvariable zum Rechnen
      27. '---------- Init Sensor ---------
      28. Register_adresse = &H68 'Signalpath Reset
      29. I2cstart
      30. I2cwbyte W_addr
      31. I2cwbyte Register_adresse
      32. I2cwbyte &H07 'Reset Gyro + Acc + Temp
      33. I2cstop
      34. Waitms 10
      35. Register_adresse = &H6B 'Power Management Register
      36. I2cstart
      37. I2cwbyte W_addr
      38. I2cwbyte Register_adresse
      39. I2cwbyte &H01 'Sleep = 0, Clocksource X-Gyro
      40. I2cstop
      41. Waitms 10
      42. Do
      43. I2cstart
      44. I2cwbyte W_addr 'Adresse I2C schreiben
      45. Register_adresse = &H3B 'Registerbeginn Acceleration Daten
      46. I2cwbyte Register_adresse
      47. I2cstart
      48. I2cwbyte R_addr 'Adresse I2C lesen
      49. For Z = 1 To 6
      50. I2crbyte Register(z) , Ack
      51. Next
      52. I2crbyte Register(6) , Nack
      53. I2cstop
      54. Swap Acc_x 'die Register sind MSB first, AVR aber LSB first
      55. Swap Acc_y
      56. Swap Acc_z
      57. Temp = Acc_y / 1024 'Reduzieren der Auflösung
      58. If Temp > -3 Then
      59. Portb.3 = 1
      60. Else
      61. Portb.3 = 0
      62. End If
      63. If Temp < 3 Then
      64. Portb.4 = 1
      65. Else
      66. Portb.4 = 0
      67. End If
      68. Loop
      69. End
      Alles anzeigen
    • @ftelektro:
      du liest 6 Register aus, danach das 7. und schreibst es aber an Stelle 6.
      Acc_Z erhält dadurch daten vom Gyro.

      Wenn Quek-75 nur Hex 3B liest, dann liegt wohl ein anderes Problem vor.
      Da Hex 3B der Adresse des ersten angewählten Registers entspricht, wäre es interessant, welches Ergebnis bei Anfrage des Registers 3D (Acc_y) raus kommt. (das müssten dann ja 15677 sein ;))
    • Hallo,

      Das neue Modul ist heute gekommen, ich gleich ausgepackt und angeschlossen.
      Lange Rede kurzer Sinn... funktioniert genauso wenig die das alte Modul.

      Dann hab ich mal noch den Code von "ftelektro" ausprobiert, und er funktioniert !

      Aber, jetzt wird es merkwürdig !

      Das Modul funktioniert nur mit dem Code von "ftelektro" wenn es über den USBASP vom Notebook versorgt wird.
      Trenne ich die Verbindung und versorge den Aufbau mit dem Labornetzgerät oder aus dem Akku geht wieder nichts mehr.

      Also dazu fällt mir jetzt nichts mehr ein.


      Jörg
    • Hab ich natürlich alles gemacht....

      Vom Notebook kommen 5,08 V... Netztei (habe zwei probiert) habe ich auch auf 5 V eingestellt...
      Mit 3,3 V geht auch nichts....


      Michael schrieb:

      Du könntest auch noch ausprobieren, worum ich in Beitrag 25 gefragt hatte.
      Also soll ich... Register_adresse = &H3B durch.... Register_adresse = &H3D tauschen ?
      und dann ?
    • QEK-75 schrieb:

      Das Modul funktioniert nur mit dem Code von "ftelektro" wenn es über den USBASP vom Notebook versorgt wird.
      Trenne ich die Verbindung und versorge den Aufbau mit dem Labornetzgerät oder aus dem Akku geht wieder nichts mehr.
      Einmal über den ISP-Stecker (USBASP), einmal über einen anderen Einspeispunkt (Netzteil)? Mal die Verbindungen geprüft, ob beide + und beiden Gnd auch zusammen querverbunden sind und auch zu allen Verbrauchern und pullups gehen?
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Gute Nachricht, das Problem ist gelöst!


      Es hat sich herausgestellt das es an den Pullup Widerständen lag die ich in meiner Schaltung verbaut hatte.
      Scheinbar hat das Modul eigene Pullup Widerstände.

      Jedenfalls nach Entfernen meiner lief alles super.


      Vielen Dank für die Unterstützung.


      Jörg