久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 11487|回復: 23
收起左側

stm32+hmc5883電子羅盤數據采集+磁偏角校正代碼,小白一個,不懂請見諒

  [復制鏈接]
ID:198530 發表于 2018-4-22 22:51 | 顯示全部樓層 |閱讀模式
捕獲.PNG 0.jpg

stm32的hmc5883校正代碼分享:

  1. void calibrateMag(int * offsetX,int * offsetY,int * offsetZ,float * y_gain)  
  2. {  
  3.   short int x,y,z,i; //三軸數據
  4.   int xMax, xMin, yMax, yMin, zMax, zMin;  
  5.   //初始化  
  6.         Get_mag_ADC(&x,&y,&z);   
  7.   xMax=xMin=x;  
  8.   yMax=yMin=y;  
  9.   zMax=zMin=z;  
  10.   * offsetX =0;
  11.         * offsetY =0;
  12.         * offsetZ =0;  
  13.      
  14.   for( i=0;i<250;i++)  
  15.   {  
  16.          Get_mag_ADC(&x,&y,&z);
  17.     // 計算最大值與最小值  
  18.     // 計算傳感器繞X,Y,Z軸旋轉時的磁場強度最大值和最小值  
  19.     if (x > xMax)  
  20.       xMax = x;  
  21.     if (x < xMin )  
  22.       xMin = x;  
  23.     if(y > yMax )  
  24.       yMax = y;  
  25.     if(y < yMin )  
  26.       yMin = y;  
  27.     if(z > zMax )  
  28.       zMax = z;  
  29.     if(z < zMin )  
  30.       zMin = z;  
  31.    
  32.     delay_ms(100);  
  33.    
  34.     if(i%20 == 0)  
  35.     {  
  36.       printf("\n xMax = %d ",xMax);  
  37.                         printf("xMin = %d --",xMin);
  38.       printf(" yMax = %d ",yMax);  
  39.                         printf("yMin = %d \n",yMin);                        
  40.     }  
  41.   }
復制代碼
主函數:
  1. int main(void)
  2. {         
  3.         //double angle;
  4.         delay_init();                     //延時函數初始化         
  5.   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置中斷優先級分組為組2:2位搶占優先級,2位響應優先級
  6.         uart_init(115200);                 //串口初始化為115200
  7.          IIC_Init();
  8.         Init_HMC5883();
  9.         delay_ms(500);
  10.         calibrateMag(& offsetX,& offsetY,& offsetZ,& Y_Gain);
  11. //        usmart_init(72);
  12.         while(1)
  13.         {
  14. ///////////////////////////////////////////////////////////////////////////////

  15. //        a++;//a 溢出 : 32766,32767,-32768,-32767,-32766....
  16. //        a--;//a : 2,1,0,-1,-2,....
  17. //        short int :-32768<a<32767 占內存16位
  18. //        int : 占內存32位

  19. ///////////////////////////輸出方式0////////////////////////////////////
  20.                 Get_mag_ADC(&x,&y,&z);
  21.                 angle=atan2((double)(y-offsetY)*Y_Gain,(double)(x-offsetX))*(180 / 3.14159265)+180;               
  22.                         //磁偏角矯正
  23.                         angle = angle - MagnetcDeclination + 180;
  24.                   if(angle < 0) angle += 360;
  25.                         else if(angle >360) angle -= 360;
  26.                                 
  27.                 printf("\n x  = %d y  = %d z  = %d   ",x,y,z);
  28.                 printf("水平角度= %.2f 增益 = %f.3\n",angle,Y_Gain);
  29.                 delay_ms(300);
  30. /////////////////////輸出方式一/////////////////////////
  31. //                angle=  Get_Compass_Angle();
  32. //                delay_ms(300);
  33. //                x = BUF[0] << 8 | BUF[1];
  34. //                y = BUF[2] << 8 | BUF[3];
  35. //                z = BUF[4] << 8 | BUF[5];         
  36. //                        printf("\n x  = %d y  = %d z  = %d ",x,y,z);        
  37. //                        printf("角度1= %f \n",angle);        
  38. ////////////////////輸出方式二/////////////////////////
  39. //                HMC5883_ReadXYZ(&x,&y,&z);
  40. //                angle=atan2((double)y,(double)x)*(180 / 3.14159265)+180;
  41. //                delay_ms(300);
  42. //                printf("\n x1 = %d y1 = %d z1 = %d ",x,y,z);                                       
  43. //                printf("角度2= %f \n",angle);
  44. //
  45. ///////////////////////////////////////////////////////
  46.         }
  47. }
復制代碼

全部資料51hei下載地址:
HMC5883數據羅盤矯正.rar (363.06 KB, 下載次數: 256)


評分

參與人數 4黑幣 +70 收起 理由
132456798 + 5
Sherlock007 + 5 贊一個!
的花朵 + 10 贊一個!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:248705 發表于 2018-4-26 15:11 | 顯示全部樓層
幫了大忙
回復

使用道具 舉報

ID:319398 發表于 2018-4-30 15:31 | 顯示全部樓層
贊啊,正好需要
回復

使用道具 舉報

ID:451633 發表于 2018-12-30 12:57 | 顯示全部樓層
為什么打印出來的值沒有變化呢,還有其他小細節要注意的嗎?
回復

使用道具 舉報

ID:356713 發表于 2019-1-19 20:19 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

ID:198530 發表于 2019-3-8 11:34 | 顯示全部樓層
wind@ 發表于 2018-12-30 12:57
為什么打印出來的值沒有變化呢,還有其他小細節要注意的嗎?

上電后,傳感器水平旋轉360°采集數據,如果傳感器不懂得話數據也不會有變化,就不能校正
回復

使用道具 舉報

ID:364366 發表于 2019-4-7 16:56 | 顯示全部樓層
為什么我打印出來的是亂碼
回復

使用道具 舉報

ID:198530 發表于 2019-4-11 09:59 | 顯示全部樓層
呆瓜喲 發表于 2019-4-7 16:56
為什么我打印出來的是亂碼

波特率115200看你設對沒
回復

使用道具 舉報

ID:364366 發表于 2019-4-24 20:48 | 顯示全部樓層
king_zxt 發表于 2019-4-11 09:59
波特率115200看你設對沒

可以了,老哥有沒有用過集成6軸三維電子羅盤模塊?
回復

使用道具 舉報

ID:198530 發表于 2019-5-5 19:51 | 顯示全部樓層
呆瓜喲 發表于 2019-4-24 20:48
可以了,老哥有沒有用過集成6軸三維電子羅盤模塊?

就是陀螺儀加電子羅盤咯,接觸過,但是沒用過,有些自帶姿態結算庫的,直接調用就可以得到角度和加速度了
回復

使用道具 舉報

ID:182535 發表于 2019-5-5 23:53 | 顯示全部樓層
學習學習
回復

使用道具 舉報

ID:549841 發表于 2019-5-29 07:54 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

ID:455076 發表于 2019-6-17 19:05 | 顯示全部樓層
串口是哪兩個角
回復

使用道具 舉報

ID:198530 發表于 2019-6-20 16:52 | 顯示全部樓層

PA9,PA10
回復

使用道具 舉報

ID:86777 發表于 2019-7-15 13:10 | 顯示全部樓層
下載看看嘛
回復

使用道具 舉報

ID:692114 發表于 2020-2-13 17:12 | 顯示全部樓層
啊我輸出的都是-1,角度是45度是咋回事啊哥
回復

使用道具 舉報

ID:683358 發表于 2020-4-5 15:21 | 顯示全部樓層

x  = -1 y  = -1 z  = -1   水平角度= nan 增益 = nan.3

x  = -1 y  = -1 z  = -1   水平角度= nan 增益 = nan.3

x  = -1 y  = -1 z  = -1   水平角度= nan 增益 = nan.3

x  = -1 y  = -1 z  = -1   水平角度= nan 增益 = nan.3

x  = -1 y  = -1 z  = -1   水平角度= nan 增益 = nan.3
請問這是什么情況?
回復

使用道具 舉報

ID:700604 發表于 2020-4-7 16:08 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

ID:700604 發表于 2020-4-7 16:08 | 顯示全部樓層
謝謝分享正需要。
回復

使用道具 舉報

ID:102688 發表于 2020-4-9 20:47 | 顯示全部樓層
感謝分享,學習后、測試一下
回復

使用道具 舉報

ID:366134 發表于 2020-4-27 21:44 | 顯示全部樓層
綻放中的青春 發表于 2020-4-5 15:21
x  = -1 y  = -1 z  = -1   水平角度= nan 增益 = nan.3

x  = -1 y  = -1 z  = -1   水平角度= nan  ...

我也是這種情況,請問你解決了么?
回復

使用道具 舉報

ID:198530 發表于 2021-5-8 16:36 | 顯示全部樓層
liudechuan 發表于 2020-2-13 17:12
啊我輸出的都是-1,角度是45度是咋回事啊哥

代碼下載進去基本就能用,輸出這個說明傳感器數據沒有正確讀取,可能是你的接線或者傳感器問題,仔細查找一下
回復

使用道具 舉報

ID:198530 發表于 2021-5-8 16:37 | 顯示全部樓層
綻放中的青春 發表于 2020-4-5 15:21
x  = -1 y  = -1 z  = -1   水平角度= nan 增益 = nan.3

x  = -1 y  = -1 z  = -1   水平角度= nan  ...

代碼下載進去基本就能用,輸出這個說明傳感器數據沒有正確讀取,可能是你的接線或者傳感器問題,仔細查找一下
回復

使用道具 舉報

ID:198530 發表于 2021-5-8 16:38 | 顯示全部樓層
pwlpwlpwl 發表于 2020-4-27 21:44
我也是這種情況,請問你解決了么?

代碼下載進去基本就能用,輸出這個說明傳感器數據沒有正確讀取,可能是你的接線或者傳感器問題,仔細查找一下
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美三区 | 日本一道本视频 | 国产精品综合久久 | 久久亚洲美女 | 国产美女黄色片 | 99久久精品免费 | 国产96在线 | 欧美午夜精品理论片a级按摩 | 成人小视频在线观看 | 久久精品一级 | 一区二区三区网站 | 亚洲情视频| 91av在线免费 | jlzzjlzz欧美大全 | 久久久久国产精品免费免费搜索 | 99热激情| 最新中文字幕在线 | 亚洲一区中文字幕在线观看 | 影音先锋中文字幕在线观看 | 国产超碰人人爽人人做人人爱 | 国产一区二区三区 | 日韩成人一区 | 久久免费精品 | 欧美日韩不卡合集视频 | 欧美一级电影免费观看 | 一区在线播放 | 日本一区二区视频 | 久久亚洲欧美日韩精品专区 | 国产精品一区在线观看 | 国内自拍偷拍 | 久久久久国产一区二区三区 | 成人18亚洲xxoo | 久久久久久久久久久久久久久久久久久久 | 伊人久久综合影院 | 精精国产xxxx视频在线播放 | 国产美女一区 | 国产综合精品一区二区三区 | 精品视频一区二区 | 欧美精品中文字幕久久二区 | www.日本国产 | 日韩和的一区二在线 |