Giroszkóp

 

Bosh RET-től: https://www.ret.hu/media/product/28693/485352/BST-BMI160-DS000-07.pdf  

Általános dokumentáció: MPU 6000 (6050) Datasheet.pdf
Regiszterek dokumentásiója: MPU 6000 (6050) Register Map.pdf 
 

Konfigurálás: https://de.coredump.biz/questions/51879700/how-to-calculate-forward-speed-using-mpu6050  

https://www.aliexpress.com/af/MPU-6000-.html?d=y&origin=n&SearchText=MPU+6000+&catId=0&initiative_id=SB_20191209123424 
Panel: https://www.aliexpress.com/item/32402312087.html?spm=a2g0o.productlist.0.0.20f71ea305r7Yq&algo_pvid=79263aeb-450c-457c-8565-cc47e0aff5c4&algo_expid=79263aeb-450c-457c-8565-cc47e0aff5c4-2&btsid=6cef8a16-ebde-4444-b08f-3e3276b36d86&ws_ab_test=searchweb0_0,searchweb201602_10,searchweb201603_55 
 


MPU-6000/MPU-6050 és a mikrokontrollel kapcsolódása SPI interfészen

  Bekötés SPI üzemmódban: mit mivel kell összekötni
  Mikrokontroller Modul (panel) MPU 6050 IC
1. Értelemszerűen a tápfeszültség pozitív feszültsége, ami 3,3V és összeköthető az MPU pozitív tápfeszültség bemenetével. Megj.: a MPU panelos változatánál a panelon van egy 3,3 V-ra leszabályozó feszültségstabilizátor IC. VCC VDD (13) -
2. Értelemszerűen a tápfeszültség negatív (föld=0V) feszültsége, ami összekötendő az MPU negatív (föld=0V) tápfeszültség bemenetével. GND GND (18) - 
3. SCK(out) - Mikrokontroller által szolgáltatott szinkronjel az MPU számára. SCL SCLK (23) - 
4. SDO - Mikrokontroller soros (SPI)adatkimenete.
A panelnál nyitott kollektorral kell vezérelni, mert a panelon van felhúzó ellenállás. Ezt ellenőrizni kellene!
SDA - SDI (24) -
5.   XDA - Opcionálisan   AUX_DA (6) - 
6.   XSL - Opcionálisan AUX_CL (7) - 
7. SDI - Mikrokontroller soros (SPI)adatbemenete.
A panelnál nyitott kollektorral kell vezérelni, mert a panelon van felhúzó ellenállás. Ezt ellenőrizni kellene!
AD0 - SDO (9) -
8. Be kell kötni és vezérlést kell kiadni   (!CS) (8)
[VLOGIC] (8) - 
 
9. Az MPU 6050 IC jelzi az MCU-nak, hogy készen vannak az adatok, INT INT (12) - 
10.     SFYNC (11) - 
11.     CPOUT (20) - 
12.     REGOUT (10) - 
13.     CLKIN (1) - 
14     CLKOUT (22) - 
15     (10) - 100 nF kondenzátort kell a 10-es láb és a GND (föld) közé.

 

7.14 MPU-6000 az SPI interfész használatával
Az alábbi ábrán a rendszerprocesszor az MPU-6000 SPI mestere. A 8., 9., 23. és 24. érintkezők támogatják az  !CS, SDO, SCLK és SDI jeleket az SPI kommunikációhoz. Mivel ezeket az SPI-érintkezőket megosztják az I2C slave tűkkel (9, 23 és 24), a rendszerprocesszor nem fér hozzá az I2C kiegészítő buszhoz az interfész bypass multiplexer útján, amely az I2C processzor interfész csapjait az érzékelő I2C interfész csapjaihoz köti. Mivel az MPU-6000 korlátozott képességekkel rendelkezik, mint I2C mester, és attól függ, hogy a rendszerprocesszor kezeli-e a kiegészítő érzékelők kezdeti konfigurációját, egy másik módszert kell alkalmazni az érzékelők programozására az I2C kiegészítő érzékelő 6. és 7. érintkezőjén (AUX_DA) és AUX_CL). Az SPU kommunikáció használatakor az MPU-6000 és a rendszerprocesszor között az eszközök konfigurálása a kiegészítő I2C érzékelő buszon úgy érhető el, hogy az I2C 0-4 szolga segítségével bármilyen eszközön olvasási és írási tranzakciókat hajthat végre, és regisztrálhatja a kiegészítő I2C buszon. Az I2C Slave 4 interfész csak egybájtos olvasási és írási tranzakciók végrehajtására használható. A külső érzékelők konfigurálása után az MPU-6000 egy vagy több bájtos leolvasást végezhet az I2C érzékelő busz segítségével. A Slave 0-3 vezérlők által olvasott eredményeket be lehet írni a FIFO pufferbe, valamint a külső érzékelő regiszterekbe. Az MPU-60X0 kiegészítő I2C interfészének vezérléséről az MPU-6000 / MPU-6050 regisztereinek ismertetője és a regiszereinek leírása című dokumentumban olvashatunk.
7.14 MPU-6000 Using SPI Interface
In the figure below, the system processor is an SPI master to the MPU-6000. Pins 8, 9, 23, and 24 are used to support the /CS, SDO, SCLK, and SDI signals for SPI communications. Because these SPI pins are shared with the I2C slave pins (9, 23 and 24), the system processor cannot access the auxiliary I2C bus through the interface bypass multiplexer, which connects the processor I2C interface pins to the sensor I2C interface pins. Since the MPU-6000 has limited capabilities as an I2C Master, and depends on the system processor to manage the initial configuration of any auxiliary sensors, another method must be used for programming the sensors on the auxiliary sensor I2C bus pins 6 and 7 (AUX_DA and AUX_CL). When using SPI communications between the MPU-6000 and the system processor, configuration of devices on the auxiliary I2C sensor bus can be achieved by using I2C Slaves 0-4 to perform read and write transactions on any device and register on the auxiliary I2C bus. The I2C Slave 4 interface can be used to perform only single byte read and write transactions. Once the external sensors have been configured, the MPU-6000 can perform single or multi-byte reads using the sensor I2C bus. The read results from the Slave 0-3 controllers can be written to the FIFO buffer as well as to the external sensor registers. For further information regarding the control of the MPU-60X0’s auxiliary I2C interface, please refer to the MPU-6000/MPU-6050 Register Map and Register Descriptions document.

 

7.15 Belső óragenerálás
Az MPU-60X0 rugalmas órajelrendszerrel rendelkezik, amely lehetővé teszi különféle belső vagy külső óraforrások felhasználását a belső szinkron áramkörökhöz. Ez a szinkron áramkör tartalmazza a jelkondicionálót és az ADC-ket, a DMP-t, valamint a különféle vezérlőáramköreket és regisztereket. A beépített PLL rugalmasságot biztosít az óra generálásához szükséges bemenetekben.

A belső óra előállításához megengedett belső források a következők:
  • Belső relaxációs oszcillátor
  • X, Y vagy Z giroszkópok közül bármelyik (MEMS oszcillátorok ± 1% -os hőmérsékleti változással)
Megengedett külső órajelforrások:
  • 32,768kHz négyzethullám,
  • 19,2MHz négyzet wave
A belső szinkron óra előállításához használt forrás kiválasztása a külső források rendelkezésre állásától, valamint az energiafogyasztás és az óra pontosságának követelményeitől függ. Ezek a követelmények valószínűleg működési módtól függően változnak. Például egy üzemmódban, ahol a legnagyobb aggodalom az energiafogyasztásról van szó, a felhasználó az MPU-60X0 digitális mozgás-processzort kívánja működtetni a gyorsulásmérő adatainak feldolgozása érdekében, miközben a giroszkópok ki vannak kapcsolva. Ebben az esetben a belső relaxációs oszcillátor jó óraválasztás. Ugyanakkor egy másik módban, ahol a giroszkópok aktívak, a giroszkópok óraforrásként történő kiválasztása pontosabb óraforrást biztosít.
Az óra pontossága fontos, mivel az időzítési hibák közvetlenül befolyásolják a digitális mozgás-processzor (és kiterjesztéssel bármely processzor) által elvégzett távolság és szög számításokat.
Vannak olyan indítási feltételek is, amelyeket figyelembe kell venni. Amikor az MPU-60X0 először elindul, a készülék addig használja a belső óráját, amíg be nem programozzák, hogy egy másik forrásból működjön. Ez lehetővé teszi például a felhasználónak, hogy megvárja, amíg a MEMS oszcillátorok stabilizálódnak, mielőtt az óraforrásként megválasztják őket.
7.15 Internal Clock Generation
The MPU-60X0 has a flexible clocking scheme, allowing a variety of internal or external clock sources to be used for the internal synchronous circuitry. This synchronous circuitry includes the signal conditioning and ADCs, the DMP, and various control circuits and registers. An on-chip PLL provides flexibility in the allowable inputs for generating this clock.

Allowable internal sources for generating the internal clock are:  
  • An internal relaxation oscillator  
  • Any of the X, Y, or Z gyros (MEMS oscillators with a variation of ±1% over temperature)
Allowable external clocking sources are:
  • 32.768kHz square wave
  • 19.2MHz square wave
Selection of the source for generating the internal synchronous clock depends on the availability of external sources and the requirements for power consumption and clock accuracy. These requirements will most likely vary by mode of operation. For example, in one mode, where the biggest concern is power consumption, the user may wish to operate the Digital Motion Processor of the MPU-60X0 to process accelerometer data, while keeping the gyros off. In this case, the internal relaxation oscillator is a good clock choice. However, in another mode, where the gyros are active, selecting the gyros as the clock source provides for a more accurate clock source.
Clock accuracy is important, since timing errors directly affect the distance and angle calculations performed by the Digital Motion Processor (and by extension, by any processor).
There are also start-up conditions to consider. When the MPU-60X0 first starts up, the device uses its internal clock until programmed to operate from another source. This allows the user, for example, to wait for the MEMS oscillators to stabilize before they are selected as the clock source.

 

7.16 Érzékelő-adatnyilvántartások Az érzékelő-nyilvántartások tartalmazzák a legfrissebb giroszkóp, gyorsulásmérő, segédérzékelő és hőmérsékleti mérési adatokat. Ezek csak olvasható nyilvántartások, és a soros interfészen keresztül érhetők el. Az ezekből a nyilvántartásokból származó adatok bármikor olvashatók. A megszakító funkció azonban felhasználható annak meghatározására, hogy új adatok állnak-e rendelkezésre. A megszakított források táblázata a 8. szakaszban található. 7.16 Sensor Data Registers The sensor data registers contain the latest gyro, accelerometer, auxiliary sensor, and temperature measurement data. They are read-only registers, and are accessed via the serial interface. Data from these registers may be read anytime. However, the interrupt function may be used to determine when new data is available. For a table of interrupt sources please refer to Section 8.

 

 

7.17 FIFO
Az MPU-60X0 tartalmaz 1024 bájtos FIFO nyilvántartást, amely a soros interfészen keresztül érhető el. A FIFO konfigurációs regiszter határozza meg, hogy mely adatokat írják be a FIFO-ba. A választható lehetőségek között szerepel a giroszkóp, a gyorsulásmérő, a hőmérséklet, a kiegészítő érzékelő és az FSYNC bemenet. A FIFO számláló nyomon követi, hogy hány bájt érvényes adat van a FIFO-ban. A FIFO regiszter támogatja a soros olvasásokat. A megszakítás funkció felhasználható annak meghatározására, mikor állnak rendelkezésre új adatok.
A FIFO-val kapcsolatos további információk az MPU-6000 / MPU-6050 regisztrációs térkép és a regisztrációs leírások dokumentumban találhatók.
7.17 FIFO
The MPU-60X0 contains a 1024-byte FIFO register that is accessible via the Serial Interface. The FIFO configuration register determines which data is written into the FIFO. Possible choices include gyro data, accelerometer data, temperature readings, auxiliary sensor readings, and FSYNC input. A FIFO counter keeps track of how many bytes of valid data are contained in the FIFO. The FIFO register supports burst reads. The interrupt function may be used to determine when new data is available.
For further information regarding the FIFO, please refer to the MPU-6000/MPU-6050 Register Map and Register Descriptions document.

 

7.18 Megszakítás
A Megszakítás funkciót a Megszakítás konfigurációs regiszter segítségével konfigurálhatjuk. A konfigurálható elemek közé tartozik az INT pin konfiguráció, a megszakítás reteszelési és törlési módszere, valamint a megszakítás indítói. A megszakítást kiváltó elemek a következők: (1) az óragenerátor az új referencia oszcillátorhoz van rögzítve (az óraforrások váltásakor használható); (2) új adatok olvashatók (a FIFO-ból és az adatregiszterekből); (3) gyorsulásmérő esemény megszakad; és (4) az MPU-60X0 nem kapott nyugtát a kiegészítő érzékelőtől a másodlagos I2C buszon. A megszakítás állapota az Interrupt Status regiszterből olvasható ki.
A megszakításokkal kapcsolatos további információk az MPU-60X0 regisztrációs térkép és a regisztráció leírása dokumentumban találhatók.
Az MPU-60X0 gyorsulásmérő eseményének megszakításaival kapcsolatban lásd a 8. részt.
7.18 Interrupts
Interrupt functionality is configured via the Interrupt Configuration register. Items that are configurable include the INT pin configuration, the interrupt latching and clearing method, and triggers for the interrupt. Items that can trigger an interrupt are (1) Clock generator locked to new reference oscillator (used when switching clock sources); (2) new data is available to be read (from the FIFO and Data registers); (3) accelerometer event interrupts; and (4) the MPU-60X0 did not receive an acknowledge from an auxiliary sensor on the secondary I2C bus. The interrupt status can be read from the Interrupt Status register.
For further information regarding interrupts, please refer to the MPU-60X0 Register Map and Register Descriptions document.
For information regarding the MPU-60X0’s accelerometer event interrupts, please refer to Section 8.

 

7.19 Digitális kimeneti hőmérséklet-érzékelő
Az MPU-60X0 szerszámhőmérséklet mérésére beépített hőmérsékleti érzékelőt és ADC-t használnak. Az ADC adatai a FIFO-ból vagy a Sensor Data regiszterekből olvashatók.
7.19 Digital-Output Temperature Sensor
An on-chip temperature sensor and ADC are used to measure the MPU-60X0 die temperature. The readings from the ADC can be read from the FIFO or the Sensor Data registers.

 

7.20 torzítás és LDO
Az elfogultság és az LDO szakasz generálja az MPU-60X0 által előírt belső tápfeszültséget és referencia feszültségeket és áramokat. Két bemenete: szabályozatlan VDD 2,355-3,46 V és VLOGIC logikai referencia tápfeszültség 1,71 V - VDD (csak MPU-6050). Az LDO kimenetet a REGOUT kondenzátor megkerüli. A kondenzátorral kapcsolatos további részleteket lásd a Külső alkatrészek anyagjegyzékében (7.3 szakasz).
7.20 Bias and LDO 
The bias and LDO section generates the internal supply and the reference voltages and currents required by the MPU-60X0. Its two inputs are an unregulated VDD of 2.375 to 3.46V and a VLOGIC logic reference supply voltage of 1.71V to VDD (MPU-6050 only). The LDO output is bypassed by a capacitor at REGOUT. For further details on the capacitor, please refer to the Bill of Materials for External Components (Section 7.3).

 

7.21 Töltőszivattyú
A fedélzeti töltőszivattyú generálja a MEMS oszcillátorokhoz szükséges magas feszültséget. Kimenetét a CPOUT kondenzátora megkerüli. A kondenzátorral kapcsolatos további részleteket lásd a Külső alkatrészek anyagjegyzékében (7.3 szakasz).
7.21 Charge Pump 
An on-board charge pump generates the high voltage required for the MEMS oscillators. Its output is bypassed by a capacitor at CPOUT. For further details on the capacitor, please refer to the Bill of Materials for External Components (Section 7.3).

 

8 programozható megszakítás
Az MPU-60X0 programozható megszakító rendszerrel rendelkezik, amely megszakítási jelet generálhat az INT tűn. Az állapotjelzők jelzik a megszakítás forrását.
 
8 Programmable Interrupts 
The MPU-60X0 has a programmable interrupt system which can generate an interrupt signal on the INT pin. Status flags indicate the source of an interrupt. Interrupt sources may be enabled and disabled individually.
 
   
   
   
   
   
Interrupt Name Module
FIFO Overflow FIFO
Data Ready Sensor Registers
I2C Master errors: Lost Arbitration, NACKs I2C Master
I2C Slave 4 I2C Master
A megszakított források külön-külön engedélyezhetők és letilthatók. A megszakítási engedélyezési / letiltási regiszterekkel és a jelzőregiszterekkel kapcsolatos információkat lásd az MPU6000 / MPU-6050 regisztrációs térkép és a regisztrációs leírások dokumentumban. Néhány megszakító forrást az alábbiakban ismertetünk. For information regarding the interrupt enable/disable registers and flag registers, please refer to the MPU6000/MPU-6050 Register Map and Register Descriptions document. Some interrupt sources are explained below.

 

 

 

 

 

  1.  
  2.   
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9. Az MPU 6050 IC jelzi az MCU-nak, hogy készen vannak az adatok,  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  

 

 

 

 

 

SPI-ben történő alkalmazás esetén:
SCL - SPI szinkron (órajel) jel  SCK kimenet a minrokontrolletnél
SDA- SPI adatbemenet, így a mikrokontroller SDO 

 

 

 

Magyar: https://shop.tavir.hu/product_info.php/szenzor-irany-seb-magas-521-mpu6050-gyroszkop-gyorsulas-szenzor-p-175  

Link: https://www.aliexpress.com/item/GY-521-MPU-6050-MPU6050-Module-3-Axis-analog-gyro-sensors-3-Axis-Accelerometer-Module-Three/32895940698.html?spm=a2g0s.9042311.0.0.215e4c4dNxgCGi  

Jó leírás a modulról: https://components101.com/sensors/mpu6050-module  

Adatlap (ha van újabb, akkor lecserélni. Ez: Revision 3.4,  Date: 08/19/2013  ) :  https://www.invensense.com/wp-content/uploads/2015/02/MPU-6000-Datasheet1.pdf 

Regiszter mappa: https://www.invensense.com/wp-content/uploads/2015/02/MPU-6000-Register-Map1.pdf 

Programozáshoz:  https://playground.arduino.cc/Main/MPU-6050/ 

Programozáshoz: https://playground.arduino.cc/Main/MPU-6050/  
https://playground.arduino.cc/Main/MPU-6050/  
https://github.com/jrowberg/i2cdevlib/tree/master/PIC18/MPU6050
magyar:  https://shop.tavir.hu/product_info.php/szenzor-irany-seb-magas-521-mpu6050-gyroszkop-gyorsulas-szenzor-p-175 

Más nagyon hasonló típus: http://www.farnell.com/datasheets/2632676.pdf?_ga=2.12941623.1492168416.1575758157-956081480.1538725542&_gac=1.217907618.1575758157.EAIaIQobChMImt-cur6k5gIVF6qaCh0_4QhdEAMYASAAEgIV8fD_BwE  

 

Giroszkópokról általában:  http://www.kjit.bme.hu/images/stories/targyak/automatikus_fedelzeti/SA_1_EA.pdf  

 

Másik típus (ICM-20608-G Motion Tracking Device):  https://components101.com/sensors/icm-20608-g  

Magnetometer is (újabb típus szerintem) (BNO080, BNO085, stb.) :  
  https://www.ceva-dsp.com/wp-content/uploads/2019/09/BNO080-BNO085-Migration-Guide.pdf 
   https://www.digikey.com/en/product-highlight/h/hillcrest-labs/bno080-imu   
  https://www.davidpilling.com/wiki/index.php/BNO055 
  https://cdn-shop.adafruit.com/datasheets/BST_BNO055_DS000_12.pdf 

 

Bemutató és ismertető MPU 6050 :  http://digitelektro.hu/gyorsulas-mero-es-giroszkop-kombo-mpu6050-ic-vel/   

Professzionális gyroscope oldala :  http://www.tuoluoyi.com/en/show.asp?id=86 

 

Szakdoga róla: https://tdk.bme.hu/VIK/DownloadPaper/Precizios-oraszinkronizacio-es-alkalmazasa   

Komolyabb magyar link: http://digitelektro.hu/gyorsulas-mero-es-giroszkop-kombo-mpu6050-ic-vel/   


  1. '===CHIP SETTINGS===

  2. $regfile = "m128def.dat"

  3. $framesize = 320

  4. $swstack = 160

  5. $hwstack = 160

  6. $crystal = 16000000

  7. $baud1 = 38400

  8.  

  9. Config Scl = Portd.0

  10. Config Sda = Portd.1

  11.  

  12. Open "COM2:" For Binary As #1

  13. Const Mpuaddw = &B11010000                                  'AD0 auf Masse

  14. Const Mpuaddr = &B11010001

  15. '--MPU6000--

  16. Dim Test As Byte

  17. Dim Gyrox As Integer

  18. Dim Gyroy As Integer

  19. Dim Gyroz As Integer

  20. Dim Tmp_gyrox(2) As Byte At Gyrox Overlay                   'nick

  21. Dim Tmp_gyroy(2) As Byte At Gyroy Overlay                   'roll

  22. Dim Tmp_gyroz(2) As Byte At Gyroz Overlay                   'yaw

  23. Dim Xacc_pre As Integer

  24. Dim Yacc_pre As Integer

  25. Dim Zacc_pre As Integer

  26. Dim Tmp_accx(2) As Byte At Xacc_pre Overlay

  27. Dim Tmp_accy(2) As Byte At Yacc_pre Overlay

  28. Dim Tmp_accz(2) As Byte At Zacc_pre Overlay

  29. Dim Meas_nick As Single

  30. Dim Meas_roll As Single

  31. Dim Yaw_gyro As Single

  32. Dim Xacc As Single

  33. Dim Yacc As Single

  34. Dim Zacc As Single

  35.  

  36. Declare Sub Read_mpu

  37. Declare Sub Init_mpu

  38.  

  39. I2cinit

  40.  

  41.  

  42.  

  43. Waitms 100

  44. Init_mpu

  45. Print #1 , "OK";

  46.  

  47.  

  48.  

  49.  

  50. Do

  51. Read_mpu

  52.  

  53. Waitms 250

  54.  

  55. Print #1 , "$" ; Meas_nick;

  56. Loop

  57.  

  58. End

  59.  

  60. Sub Init_mpu

  61.    I2cstart                                                 'start condition

  62.    I2cwbyte Mpuaddw                                         'write adress of MPU-6050

  63.    I2cwbyte 117                                             'Register 117 "Who am I"

  64.    I2crepstart                                              'repeated start

  65.    I2cwbyte Mpuaddr                                         'read adress of MPU-6050

  66.    I2crbyte Test , Nack                                     'read byte WHO_AM_I (Reg 117)

  67.    I2cstop                                                  'stop condition

  68.    I2cstart                                                 'start condition

  69.    I2cwbyte Mpuaddw                                         'write adress of MPU-6050

  70.    I2cwbyte 25                                              'Register 25 Sample Rate Divider (1..8 kHz)

  71. 'mal spielen...

  72. '&B00000001 wäre 500 Hz

  73.    I2cwbyte &B00000000                                      'Divider set to 1   (soll)

  74.    I2cstop                                                  'stop condition

  75.    'Low pass filter

  76.    '0=256Hz &B00000000

  77.    '1 = 188hz &B00000001

  78.    '2 = 98hz &B00000010

  79.    '3 = 42hz &B00000011

  80.    '4 = 20hz  &B00000100

  81.    '5 = 10hz  &B00000101

  82.    '6 = 5hz   &B00000110

  83.    I2cstart                                                 'start condition

  84.    I2cwbyte Mpuaddw                                         'write adress of MPU-6050

  85.    I2cwbyte 26                                              'Register 26 DLPF_CFG (digital lowpass filter) Configuration

  86.    I2cwbyte &B00000011                                      'Bits 0..2 = 000 - ACC:260Hz, 0.0ms; Gyro:256Hz, 0.98ms   ( &B00000000 )

  87.    I2cstop                                                  'stop condition

  88. '42hz scheint gut

  89.    'gyro full range

  90.    '250°/s  &B00000000

  91.    '500°/s  &B00001000

  92.    '1000°/s  &B00010000

  93.    '2000°/s  &B00011000

  94.  

  95.    I2cstart                                                 'start condition

  96.    I2cwbyte Mpuaddw                                         'write adress of MPU-6050

  97.    I2cwbyte 27                                              'Register 27 Gyro Configuration

  98.    I2cwbyte &B00011000                                      'Bits 3+4 = 00 - Full Scale Range: +/-250°/s

  99.    I2cstop                                                  'stop condition

  100.    'ACC full range

  101.    '+-2g &B00000000

  102.    '+-4g &B00001000

  103.    I2cstart                                                 'start condition

  104.    I2cwbyte Mpuaddw                                         'write adress of MPU-6050

  105.    I2cwbyte 28                                              'Register 28 ACC Configuration

  106. 'set to +-8g?

  107.    '&B00000000 = 2g

  108.    '&B00001000 = 4g

  109.    '&B00010000 = 8g

  110.    '&B00011000 = 16g

  111.    I2cwbyte &B00000000                                      'Bits 3+4 = 00 - Full Scale Range: +/-2g / No High Pass Filter

  112.    I2cstop                                                  'stop condition

  113.    I2cstart                                                 'start condition

  114.    I2cwbyte Mpuaddw                                         'write adress of MPU-6050

  115.    I2cwbyte 107                                             'Register 107 Power Management 1

  116.    'temp enabled: &B00000011

  117.    'temp disabled: &B00001011

  118.    I2cwbyte &B00000011                                      'No Reset / No Sleep / No Cycle / Temp_Sens: Dis / Clock Source: Z-Gyro

  119.    I2cstop

  120. End Sub

  121.  

  122. Sub Read_mpu

  123.    I2cstart                                                 'X ACC

  124.    I2cwbyte Mpuaddw

  125.    I2cwbyte 59

  126.    I2crepstart

  127.    I2cwbyte Mpuaddr

  128.    I2crbyte Tmp_accx(2) , Ack

  129.    I2crbyte Tmp_accx(1) , Ack

  130.    I2crbyte Tmp_accy(2) , Ack

  131.    I2crbyte Tmp_accy(1) , Ack

  132.    I2crbyte Tmp_accz(2) , Ack

  133.    I2crbyte Tmp_accz(1) , Nack

  134.    I2cstop

  135.    I2cstart                                                 'X GYRO

  136.    I2cwbyte Mpuaddw

  137.    I2cwbyte 67

  138.    I2crepstart

  139.    I2cwbyte Mpuaddr

  140.    I2crbyte Tmp_gyrox(2) , Ack

  141.    I2crbyte Tmp_gyrox(1) , Ack

  142.    I2crbyte Tmp_gyroy(2) , Ack

  143.    I2crbyte Tmp_gyroy(1) , Ack

  144.    I2crbyte Tmp_gyroz(2) , Ack

  145.    I2crbyte Tmp_gyroz(1) , Nack

  146.    I2cstop

  147. '  Shift xAcc , Right , 5 , Signed                          '+-1024 bei 2g

  148. '  Shift yAcc , Right , 5 , Signed

  149. '  Shift zAcc , Right , 5 , Signed

  150. '  Shift Meas_nick , Right , 5 , Signed                         '+-1024 bei 250°/s

  151. '  Shift Meas_roll , Right , 5 , Signed

  152. '  Shift Yaw_gyro , Right , 5 , Signed

  153.    'Meas_nick = Gyrox / 76.8                                 '65536/1024/(300/250) MPU gyro scaling equals adxrs300 scaling

  154.    'Meas_roll = Gyroy / 76.8

  155.    'Yaw_gyro = Gyroz / 76.8

  156. '   Meas_nick = Gyrox / 38.4                                 'bei 500°/s

  157. '   Meas_roll = Gyroy / 38.4

  158. '   Yaw_gyro = Gyroz / 38.4

  159.    Meas_nick = Gyrox / 8.7                                  'bei 2000°/s

  160.    Meas_roll = Gyroy / 8.7

  161.    Yaw_gyro = Gyroz / -8.7

  162.  

  163.    Xacc = Xacc_pre                                          '65536/1024 MPU acc scaling equals ADXL322 scaling

  164.    Yacc = Yacc_pre

  165.    Zacc = Zacc_pre

  166.  

  167.  

  168.    End Sub