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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4794|回復(fù): 5
打印 上一主題 下一主題
收起左側(cè)

求助STM32+HX711壓力傳感器程序問題 蜂鳴器一直響

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:356695 發(fā)表于 2018-11-22 22:16 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
用STM32 HX711實現(xiàn)了讀取壓力傳感器數(shù)據(jù),現(xiàn)在數(shù)據(jù)已經(jīng)能讀到了,但是傳一次數(shù)據(jù)蜂鳴器就會響一聲,很頻繁刺耳,代碼在壓縮文件里面。

單片機(jī)源程序如下:
  1. #include "sys.h"
  2. #include "delay.h"
  3. #include "lcd.h"
  4. #include "w25qxx.h"
  5. #include "text.h"

  6. #include "HX711.h"
  7. #include "usart.h"
  8. #include "filter.h"
  9. #include "key.h"
  10. /******************************************************************
  11. 校準(zhǔn)參數(shù):
  12. 因為不同的傳感器特性曲線不是很一致,因此,每一個傳感器需要矯正這里
  13. 這個參數(shù)才能使測量值很準(zhǔn)確。當(dāng)發(fā)現(xiàn)測試出來的重量偏大時,增加該數(shù)值;
  14. 如果測試出來的重量偏小時,減小改數(shù)值。該值可以為小數(shù)。
  15. ******************************************************************/

  16. void GPIO_Config(void){

  17.           //io引腳初始化
  18.     GPIO_InitTypeDef GPIO_InitStructure;
  19.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

  20.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;          //端口配置
  21.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   //推挽輸出
  22.           GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  //IO口速度為50MHz
  23.     GPIO_Init(GPIOA, &GPIO_InitStructure);             //根據(jù)設(shè)定?
  24.     GPIO_ResetBits(GPIOA,GPIO_Pin_8);

  25. }       
  26. int main(void)
  27. {
  28.     //ADCon_InitVal:HX711的AD采樣初始值
  29.     //ADCon_CurrentVal:加載后的HX711的AD當(dāng)前采樣值
  30.     u32 ADCon_InitVal, ADCon_CurrentVal;
  31.     float Weight, GapValue,Adjust = 0;
  32.     float Weight_Array[10];
  33.     u8 i = 0,KeyIn = 5;
  34.     delay_init();                  //延時函數(shù)初始化
  35.     KEY_Init();
  36.           GPIO_Config();         
  37.        
  38.     //LCD初始化
  39.     LCD_Init();                //初始化LCD
  40.     W25QXX_Init();             //初始化W25Q128
  41.     font_init();               //字庫信息初始化
  42.     LCD_Clear(BLACK);          //顯示屏底色
  43.     BACK_COLOR = BLACK;
  44.     POINT_COLOR=GREEN;         //顯示顏色
  45.     LCD_Display_Dir(0);        //默認(rèn)為豎屏


  46.     /***********************************************************
  47.      本次實驗使用USART1通信口,該通信口使用USART1接收完成中斷,
  48.      傳輸波特率為115200
  49.     ***********************************************************/
  50.     //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級,2位響應(yīng)優(yōu)先級
  51.     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  52.     uart_init(115200);             //串口初始化為115200
  53.     Init_HX711pin();               //HX711初始化

  54.     /***********************************************************
  55.      讀取壓力傳感器經(jīng)HX711轉(zhuǎn)換后得到的AD轉(zhuǎn)換初始值A(chǔ)DCon_InitVal
  56.      進(jìn)入稱重前清0,即使ADCon_InitVal = ADCon_CurrentVal, 將十
  57.      進(jìn)制AD采樣值的最后3位清0,主要是因為這低三位在重量不變時仍
  58.      然不斷波動
  59.     ***********************************************************/
  60.     ADCon_InitVal = (HX711_Read() / 1000) * 1000;
  61.     ADCon_CurrentVal = (HX711_Read() / 1000) * 1000;
  62.     while (ADCon_InitVal != ADCon_CurrentVal) {
  63.         ADCon_InitVal = (HX711_Read() / 1000) * 1000;
  64.         ADCon_CurrentVal = (HX711_Read() / 1000) * 1000;
  65.     }


  66.     /***********************************************************
  67.      因為不同的傳感器特性曲線不一樣,因此,每一個傳感器需要矯正
  68.      這里的GapValue這個除數(shù)。當(dāng)發(fā)現(xiàn)測試出來的重量偏大時,增加該
  69.      數(shù)值。如果測試出來的重量偏小時,減小該數(shù)值。該數(shù)值受電阻應(yīng)
  70.      變片的應(yīng)變的影響,與應(yīng)變基本呈線性關(guān)系,而且當(dāng)加載的重量不
  71.      同時,電阻應(yīng)變片的應(yīng)變會有所不同,所以,可以將量程劃分區(qū)間,
  72.      各區(qū)間的GapValue值不同,以獲得比較精確的測量值
  73.     ***********************************************************/
  74.     GapValue = 520;               //該值根據(jù)測量值進(jìn)行調(diào)整,
  75.     while (1)
  76.     {
  77.         //讀取壓力傳感器經(jīng)HX711轉(zhuǎn)換后得到的AD轉(zhuǎn)換當(dāng)前值A(chǔ)DCon_CurrentVal
  78.         ADCon_CurrentVal = (HX711_Read() / 1000) * 1000;

  79.         if (ADCon_CurrentVal <= ADCon_InitVal)
  80.         {
  81.             //獲取實物的AD采樣數(shù)值。由于在沒有任何重量的情況下,
  82.             //轉(zhuǎn)換值最后三位為非0,所以將轉(zhuǎn)換值的最后3位忽略不計
  83.             ADCon_CurrentVal = ADCon_InitVal-ADCon_CurrentVal  ;

  84.             //計算實物的實際重量,根據(jù)實際情況可以改變GapValue的
  85.             //值,或?qū)eight再加或減補(bǔ)償一個小數(shù)
  86.             Weight_Array[i] = (float)ADCon_CurrentVal / GapValue;
  87.             i++;
  88.             //參數(shù)分段擬合
  89.             if(Weight_Array[i]<15)
  90.               GapValue = 502;
  91.             else if(Weight_Array[i]<30)
  92.               GapValue = 501;
  93.             else if(Weight_Array[i]<45)
  94.               GapValue = 501;
  95.             else if(Weight_Array[i]<60)
  96.               GapValue = 515;
  97.             else if(Weight_Array[i]<75)
  98.               GapValue = 516;
  99.             else if(Weight_Array[i]<90)
  100.               GapValue = 516;
  101.             else
  102.               GapValue = 520;

  103.         }

  104.         if(i>9)
  105.         {
  106.             i = 0;
  107.             Weight = Filter(Weight_Array,10);
  108.                                           
  109.             //電腦通過串口調(diào)試助手顯示ADCon_CurrentVal
  110.            // printf("ADCon_CurrentVal = %d \r\n", ADCon_CurrentVal);
  111.             //電腦通過串口調(diào)試助手顯示得到的重量值,單位為g
  112.             printf("Weight = %.3f g \r\n", Weight - Adjust-417.3);
  113.             //Weight = (float)Weight*0.9745+0.6432; //回歸后的線性方程
  114.             Weight = (float)Weight - Adjust; //回歸后的線性方程
  115.             //電腦通過串口調(diào)試助手顯示得到的調(diào)整重量值,單位為g
  116.             printf("Adjust_Weight = %.3f g \r\n", Weight-417.3);
  117. /*           POINT_COLOR = RED;
  118.             LCD_ShowString(30,100,300,16,24,"Pressure sensor experiment");
  119.             POINT_COLOR = GREEN;
  120.             LCD_ShowString(30,150,100,16,24, "Weight:");
  121.             LCD_ShowString(74+84+65,150,12,16,24,"g");
  122.             LCD_ShowNum(30+84,150,(int)Weight,3,24);
  123.             LCD_ShowString(66+84,150,16,16,24,".");
  124.             LCD_ShowNum(74+84,150,(Weight-(int)Weight)*100000,5,24);
  125.             LCD_ShowString(250,300,200,16,24,"Sw Young");
  126.             LCD_ShowString(30,180,200,16,24,"Weighing peeled:");
  127.             LCD_ShowNum(30+12*16,180,Adjust*1000,5,24);
  128.             LCD_ShowString(30+12*21,180,200,16,24,"mg");  */

  129.         }
  130.                                
  131.                                                         if( Weight >800){
  132.                                                 GPIO_SetBits(GPIOA,GPIO_Pin_8);
  133.                         }
  134.                                
  135.         KeyIn = KEY_Scan(1);
  136.         if(KeyIn==WKUP_PRES)
  137.          Adjust+=0.1;
  138.         if(KeyIn==KEY1_PRES&&Adjust>0)
  139.          Adjust-=0.1;        
  140.         delay_ms(80);
  141.     }
  142. }
復(fù)制代碼

所有資料51hei提供下載:
Pressure-transducer-Based-on-STM32-HX711-master.rar (362.09 KB, 下載次數(shù): 29)



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:396960 發(fā)表于 2018-11-23 09:21 | 只看該作者
看你的注釋,沒有蜂鳴器相關(guān),應(yīng)該是這里吧?“ if( Weight >800){GPIO_SetBits(GPIOA,GPIO_Pin_8); ”
那問題就是“Weight”了,看看是不是讀取、輸出一次的重量后需要清零??若有清零試試讓“Weight”低過比較值試試。。
回復(fù)

使用道具 舉報

板凳
ID:94031 發(fā)表于 2018-11-23 11:15 | 只看該作者
需要硬件原理圖,蜂鳴器接在哪里。
回復(fù)

使用道具 舉報

地板
ID:328683 發(fā)表于 2018-11-23 13:47 | 只看該作者
上傳原理圖,要不然靠猜呀
回復(fù)

使用道具 舉報

5#
ID:356695 發(fā)表于 2018-11-23 20:22 | 只看該作者
xuyaqi 發(fā)表于 2018-11-23 11:15
需要硬件原理圖,蜂鳴器接在哪里。

沒有原理圖,就是直接通過HX711把傳感器接在板子上。  我試了一下,只要把P01口不接,蜂鳴器就不響,接了就響,P01口是傳感器輸入口。
回復(fù)

使用道具 舉報

6#
ID:356695 發(fā)表于 2018-11-23 20:23 | 只看該作者
phang 發(fā)表于 2018-11-23 09:21
看你的注釋,沒有蜂鳴器相關(guān),應(yīng)該是這里吧?“ if( Weight >800){GPIO_SetBits(GPIOA,GPIO_Pin_8); ”
那 ...

PA8是控制電機(jī)的,跟這個蜂鳴器應(yīng)該無關(guān),我發(fā)現(xiàn)P01口就是傳感器輸入那個口,拔掉蜂鳴器就不響了,接了就響
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日日操视频| 看av片网站| 夏同学福利网 | 丝袜美腿一区二区三区 | 国产精品久久777777 | 久久久久国产一区二区三区 | 亚洲精品av在线 | 中文字幕二区 | 99久久久久久 | 精品国产免费人成在线观看 | 日韩快播电影网 | 一区二区在线观看免费视频 | 另类 综合 日韩 欧美 亚洲 | 新疆少妇videos高潮 | 国产中文原创 | 伊人网91 | 成人av网页 | 亚洲一视频 | 成人免费精品视频 | 欧美极品在线观看 | 国精日本亚洲欧州国产中文久久 | 欧美bondage紧缚视频 | 日本精品久久久久久久 | 国产一区二区高清在线 | 日本久久久影视 | 国产精品99一区二区 | 亚洲一区中文字幕在线观看 | 久久国产视频播放 | 看av片网站| 91视频久久 | 伊人色综合久久天天五月婷 | 91久久国产精品 | 欧美精品综合 | 精品日韩一区二区 | 国产精品视频一 | 91国在线高清视频 | 国产激情精品一区二区三区 | 久久久夜色精品亚洲 | 国产免费视频 | 精品久久久久一区二区国产 | 成年人视频免费在线观看 |