MPU6050 Arduino Uno Simulink

조회 수: 179 (최근 30일)
Alexandros
Alexandros 2018년 7월 23일
댓글: Donny WARINT 2023년 9월 30일
I have a code to get the MPU6050 working using Matlab, but now I would like to run it on Simulink, but I keep hitting dead ends. Here is my Matlab code if anyone out there can help me:
%%setup
a=arduino;
mpu=i2cdev(a,'0x68');
writeRegister(mpu, hex2dec('B6'), hex2dec('00'), 'int16'); %reset
data=zeros(10000,14,'int8'); %prelocating
j=1;
%%loop
while(true)
x=1;
for i=59:72 % 14 Data Registers for Accel,Temp,Gyro
data(j,x)= readRegister(mpu, i, 'int8');
x=x+1;
end
y=swapbytes(typecast(data(j,:), 'int16'));
acc_x(j)=double(y(1));
acc_y(j)=double(y(2));
acc_z(j)=double(y(3));
j=j+1;
end
How can I write this in SIMULINK? The loop is the easy part, I can just put it into a Matlab function block (except for readRegister)... I just can't figure out the setup part in Simulink at all. I have tryed using the I2C Read block, but to no avail. Please help. And before you ask, I do have both the Arduino packages installed (for Matlab, and Simulink).
Again Please HELP!!!
  댓글 수: 3
Jose Hernandez
Jose Hernandez 2020년 12월 12일
편집: Jose Hernandez 2020년 12월 12일
@fatima zohra soussi Install and use Matlab 2020b, then install Arduino support package,then go to Simulink and go to Arduino blocks, go to sensors blocks and check which sensors are available ;)
Donny WARINT
Donny WARINT 2023년 9월 30일

댓글을 달려면 로그인하십시오.

답변 (3개)

Gayatri Menon
Gayatri Menon 2022년 1월 4일
Hi
You could use MPU6050 block in simulink to read data from MPU6050 sensor connected to Arduino. To use MATLAB function block to read data from sensors, please refer to the link here.
Hope this helps
Thanks
Gayatri
  댓글 수: 1
Ana Luz Gómez Plata
Ana Luz Gómez Plata 2022년 6월 6일
Sorry, do you know how to do it, I need help:(

댓글을 달려면 로그인하십시오.


Nathan Hardenberg
Nathan Hardenberg 2023년 2월 2일
편집: Nathan Hardenberg 2023년 2월 2일
  1. You need the "Simulink Support Package for Arduino Hardware" (Can be installed as Add-On)
  2. Use the "MPU6050 IMU Sensor"-Block from the Simulink library (or other sensorblock)
  3. Build a model like the one below. Here it just shows the values.
  4. Set the Model- and Hardware-Settings: Solver > Type > Fixed-step and Hardware Implementation > Hardware board > {choose_the_board_you_are_using}
  5. Wire your Ardunio (or other hardwareboard) correctly: Sensor connected to the I2C-Bus and VCC and GND to the Sensor
  6. Connect your Arduino to your PC with a USB-Cable
  7. Now Klick Monitor & Tune in Simulink
The code will be generated and deployed on the hardware. Since this is in monitoring mode you can see the Simulink-model showing the sensor values. This allows easy debugging.
You can download an example model from here (this is also where the picture above is from).
!WARNING!
The "MPU6050 IMU Sensor"-Block seems to have an issue at the moment (see here). It reports the error status 32, even though the sensor works. Hopefully this will be fixed in a future update. Another IMU sensor that works is the MPU9250. But the given method is the same with this and other sensors as well.
  댓글 수: 6
Thale
Thale 2023년 6월 26일
Heyy!
How do you connect the MPU6050 to the arduino uno though? I get Status=32 when I monitor and tune the program. Have I connected it wrong to the ardouino maybe?
Thank you :)
Nathan Hardenberg
Nathan Hardenberg 2023년 6월 26일
@Thale Eliassen Fink I think you did not read my answer fully! Check out the "!WARNING!" I wrote. This problem has no fix to my knowlege. It seems to work for @Gurram though. @Gurram are you using the MPU6050 Hardware Sensor? If so, this may be an issue with some hardware-boards/chips.
You could try to read out the data using the "I2C Read"-Block. But you have to check the datasheet for the right registers and convert the bytes to a double accordingly

댓글을 달려면 로그인하십시오.


Gurram
Gurram 2023년 6월 26일
I have used the hardware sensor and got the output .
The output picture is available in thr above comment.
and these are the connections , i have done.
  댓글 수: 1
Thale
Thale 2023년 6월 27일
Hi! Thank you for the answers. Yes, I now connected the way Gurram showed, and tried making my own function block for reading from the IMU (To solve the Status=32 issue Nathan was talking about), by changing the IMU-type in the existing matlab function block https://de.mathworks.com/matlabcentral/answers/1461574-sensor_init_error-mpu6050-imu-sensor-for-arduino-mega-2560-in-simulink.
When having made the function block though, I got a new error, similar to this post; https://se.mathworks.com/matlabcentral/answers/837698-mpu6050-pitch-and-roll-simulink-example-not-working-mpu6050-arduino-simulink-interface The solution was to download the add-on in matlab "MATLAB Support for MinGW-w64 C/C++ Compiler". After this it worked, and I was able to read the angles from the IMU.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Modeling에 대해 자세히 알아보기

제품


릴리스

R2016a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by