MPU6050_I2C

MPU6050_I2C

لینک دانلود دیتاشیت رجیسترهای mpu-6050

.

مرورگر خود را تغییر دهید.

%Accelerometer Data Acquisition with MPU6050 and Arduino
function[] = MPU6050_i2c_Acc()

a = arduino();
pause(0.1);

finishup = onCleanup(@() exitprogram(a));

acc = i2cdev(a,'0x68'); % Create MPU6050 object
pause(0.1);

Power_ctrl = '6B'; % Power Management register

Data_Format ='1C';

XData0 = '3B'; % Accelerometer measurements
XData1 = '3C';

YData0 = '3D';
YData1 = '3E';

ZData0 = '3F';
ZData1 = '40';


% For Reading Device ID
ID = readRegister(acc,117); % Device ID register is 117 (0x75)
disp(ID);
pause(0.1);


writeRegister(acc,hex2dec(Power_ctrl),0); % For begin Measurement mode
pause(0.1);


while 1

X = read_data(acc,hex2dec(XData0));
XAcc = X/16384; % Scale factor for ±2g


Y = read_data(acc,hex2dec(YData0));
YAcc = Y/16384; % Scale factor for ±2g


Z = read_data(acc,hex2dec(ZData0));
ZAcc = Z/16384; % Scale factor for ±2g


disp(['X=',num2str(XAcc),' Y=',num2str(YAcc),' Z=',num2str(ZAcc)]);

pause(0.1);

end

end

function value = read_data(device,address)
write(device,address);
output = read(device, 2,'int16');
value = output(1,1);
end

function exitprogram(BoardName)
clc
clear;
close all
disp('program has exit');
end

.

*نکته: 

سنسور MPU6050 داده ها را در مقادیر 16 بیتی ذخیره می کند، به این معنی که داده ها در دو رجیستر 8 بیتی روی دستگاه پخش می شوند. برای مثال دو رجیستری که مشاهده می کنید، XData0 و XData1، به ترتیب بایت پر ارزش و بایت کم ارزش 16 بیتی را نشان می دهند.

برای همین یک تابع  به نام read_data  برای خواندن یک مقدار 16 بیتی تنظیم شده است (2 بایت را می خواند و آنها را به عنوان int16 تفسیر می کند). بنابراین وقتی   ;X = read_data(acc,hex2dec(XData0)) را فرا می‌خوانید، باید از XData0 و XData1 خوانده شود و نتایج را در یک مقدار 16 بیتی ترکیب کند.

.

.

%Gyroscope Data Acquisition with MPU6050 and Arduino
function[] = MPU6050_i2c_Gyro()

a = arduino();
pause(0.1);

finishup = onCleanup(@() exitprogram(a));

acc = i2cdev(a,'0x68'); % Create MPU6050 object
pause(0.1);

Power_ctrl = '6B'; % Power Management register

XGyroData0 = '43'; % Gyroscope measurements
XGyroData1 = '44';

YGyroData0 = '45';
YGyroData1 = '46';

ZGyroData0 = '47';
ZGyroData1 = '48';


% For Reading Device ID
ID = readRegister(acc,117); % Device ID register is 117 (0x75)
disp(ID);
pause(0.1);


writeRegister(acc,hex2dec(Power_ctrl),0); % For begin Measurement mode
pause(0.1);


while 1

XGyro = read_data(acc,hex2dec(XGyroData0))/131; % Scale factor for ±250°/s
YGyro = read_data(acc,hex2dec(YGyroData0))/131; % Scale factor for ±250°/s
ZGyro = read_data(acc,hex2dec(ZGyroData0))/131; % Scale factor for ±250°/s


disp(['XGyro=',num2str(XGyro),' YGyro=',num2str(YGyro),' ZGyro=',num2str(ZGyro)]);

pause(0.1);

end

end

function value = read_data(device,address)
write(device,address);
output = read(device, 2,'int16');
value = output(1,1);
end

function exitprogram(BoardName)
clc
clear;
close all
disp('program has exit');
end

.

.

.

%Temperature Measurement with MPU6050 and Arduino
function[] = MPU6050_i2c_Temp()

a = arduino();
pause(0.1);

finishup = onCleanup(@() exitprogram(a));

acc = i2cdev(a,'0x68'); % Create MPU6050 object
pause(0.1);

Power_ctrl = '6B'; % Power Management register


TempData0 = '41'; % Temperature measurements
TempData1 = '42';


% For Reading Device ID
ID = readRegister(acc,117); % Device ID register is 117 (0x75)
disp(ID);
pause(0.1);


writeRegister(acc,hex2dec(Power_ctrl),0); % For begin Measurement mode
pause(0.1);


while 1


Temp = read_data(acc,hex2dec(TempData0))/340 + 36.53; % Scale factor for temperature

disp(['Temp=',num2str(Temp)]);

pause(0.1);

end

end

function value = read_data(device,address)
write(device,address);
output = read(device, 2,'int16');
value = output(1,1);
end

function exitprogram(BoardName)
clc
clear;
close all
disp('program has exit');
end

.

۰ ۰ ۰ دیدگاه

دیدگاه‌ها

هیچ نظری هنوز ثبت نشده است.
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی

تبلیغات
Blog.ir بلاگ، رسانه متخصصین و اهل قلم، استفاده آسان از امکانات وبلاگ نویسی حرفه‌ای، در محیطی نوین، امن و پایدار
bayanbox.ir صندوق بیان - تجربه‌ای متفاوت در نشر و نگهداری فایل‌ها، ۳ گیگا بایت فضای پیشرفته رایگان
Bayan.ir - بیان، پیشرو در فناوری‌های فضای مجازی ایران