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

標題: 個性HX711電子秤制作 附STM32單片機源碼帶濾波 [打印本頁]

作者: cuihaodianzi    時間: 2018-11-3 14:27
標題: 個性HX711電子秤制作 附STM32單片機源碼帶濾波
用飯缸蓋做的秤盤,程序里的數據做了濾波處理,反應速度有點慢,不喜歡的可以去掉濾波,程序以前用的串口1 ,為了方便測試,后來改到串口2,做這個純屬娛樂,學習,鍛煉動手能力

制作出來的實物圖如下:


熱熔膠直接打一個,有點丑


上秤盤(看看這是什么?沒錯,翻缸蓋)


固定傳感器



固定板子

stm32單片機源程序如下:
  1. /*文件名:main.c                                                                                            
  2. /*基本功能 :稱重數據處理*/
  3. /*先獲取一個當前重量,作為一個參考,再獲取第二次重量,兩次差值作為去皮清零        */
  4. /* 精度    24位   128增益*/
  5. /*  修正值與精度的關系  1mV *(2^24) * 128 = 2147483648  214.7483648                        */
  6. /*  校準后的修正值寫入 Flash */
  7. /*串口發送數據作為調節指令 1: 去皮  2: g kg ct 單位切換  3:秤臺校準  4:查看校準值                */
  8. #include "main.h"

  9. /************************* 主函數 **************************/
  10. int main(void)
  11. {
  12. /****************** 配置系統時鐘為 72M *********************/              
  13.         SystemInit();
  14. /**************  USART2 config 115200 8-N-1  **************/               
  15.         USART2_Config();
  16. /*********************  HX711端口配置 *********************/
  17.         GPIO_INIT();
  18. /*********************  秤臺數值清零  *********************/
  19.   GetRoughWeight();
  20. /********************* 讀取秤臺校準值 *********************/
  21.         GetFlashParameter();
  22.         if(Correction == 0xFFFFFFFF)
  23.                 {
  24.                         printf("/*** 秤臺未校準 ***/ \r\n");
  25.                         Correction = SensorAccuracy1mV;//缺省設置
  26.                         printf("校準值 Correction = %f \r\n",Correction);
  27.                 }
  28. /*********************  清零成功檢測  *********************/
  29.         printf("/**** STM32F103C8T6 HX711電子秤 ****/\r\n");
  30.         printf("/********* 請輸入串口指令  *********/\r\n");
  31.         printf("/********* 1 稱重         *********/\r\n");
  32.         printf("/********* 2 去皮         *********/\r\n");
  33.         printf("/********* 3 轉換單位     *********/\r\n");
  34.         printf("/********* 4 秤臺校準     *********/\r\n");
  35.         printf("/********* 5 查看校準值   *********/\r\n");
  36. /****************************************/        
  37.         while(1)
  38.                 {
  39.                         function = 0;
  40.                         if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)
  41.                           {
  42.                                  USART_ClearFlag(USART2, USART_FLAG_RXNE);
  43.                                  USART_ClearITPendingBit(USART2,USART_IT_RXNE);
  44.                                  function = USART_ReceiveData(USART2);
  45.                           }
  46.                         if(function)
  47.                          {
  48.                                 switch( function )
  49.                                  {
  50.                                         case 1 ://稱重
  51.                                                 Weighing();
  52.                                                 break;
  53.                                         case 2 ://去皮
  54.                                                 GetRoughWeight();
  55.                                           Weighing();
  56.                                                 break;
  57.                                         case 3 ://切換單位
  58.                                                 if(++unit >= 3)unit = 0;
  59.                                           Weighing();                                       
  60.                                                 break;
  61.                                         case 4 ://秤臺校準
  62.                                                 WeighingCorrection();
  63.                                                 break;
  64.                                         case 5 ://查看校準值
  65.                                                 printf("校準值 Correction = %f \r\n",Correction);
  66.                                                 break;
  67.                                         default:
  68.                                                 printf("***** 無效指令 *****\r\n");
  69.                                                 break;
  70.                                  }
  71.                          }
  72.                 }
  73. }
  74. /**************     獲取毛皮重量   **************/
  75. void GetRoughWeight(void)
  76. {
  77.         repeat:
  78.                 first_weight = FilterCount();
  79.                 delay_ms(1000);
  80.                 delay_ms(1000);/*  2S 后 數據穩定,說明傳感器基本穩定 實際靈敏度高了 一點都不穩定  */
  81.                 rough_weight = FilterCount();
  82.         if(first_weight/50 != rough_weight/50)
  83.         goto repeat;
  84. }
  85. /***************   獲取實際重量  *********************/
  86. void Weighing(void)
  87. {
  88.         actual_weight = FilterCount();
  89.         actual_weight = actual_weight - rough_weight;
  90. /*****************  單位為千克 kg         *****************/
  91.         if(unit == 0)
  92.                 {
  93.                         weight = ((float)actual_weight / Correction);
  94.                         if(weight > 10000)weight = 0;
  95.                         printf("當前重量 = %.2f kg\r\n",weight);
  96.                 }
  97. /*****************  單位為克  g          *****************/
  98.         if(unit == 1)
  99.                 {
  100.                         weight = ((float)actual_weight / Correction) *1000;
  101.                         if(weight > 10000)weight = 0;
  102.                         printf("當前重量 = %.2f g\r\n",weight);
  103.                 }
  104. /*****************  單位為克拉 ct         *****************/
  105.         if(unit == 2)
  106.                 {
  107.                         weight = ((float)actual_weight / Correction) * 5000;
  108.                         if(weight > 10000)weight = 0;
  109.                         printf("當前重量 = %.3f ct\r\n",weight);
  110.                 }        
  111. }
  112. /*********************** 秤臺校準 ***********************/
  113. void WeighingCorrection(void)
  114. {
  115.         printf("請移除秤臺上所有異物…… \r\n");
  116.         GetRoughWeight();//獲取皮重
  117.         actual_weight = FilterCount();        
  118.         actual_weight = actual_weight - rough_weight;//秤臺清零 獲取當前的 “0”
  119.         printf("請放置 1 kg 標準砝碼…… \r\n");
  120.         delay_ms(1000);
  121.         delay_ms(1000);
  122.         delay_ms(1000);
  123.         delay_ms(1000);
  124.         actual_weight = FilterCount();//獲取 1kg 時 hx711 的值
  125.         Correction        = (float)((actual_weight - rough_weight) / 1.000);//獲取修正值
  126.         Correction *= 1000;
  127.         SaveFlashParameter();//修正值寫入 Flash
  128.         GetFlashParameter(); //將修正值讀出,以作使用
  129.         Correction /= 1000;
  130.         printf("校準值 Correction  = %f \r\n",Correction);
  131. }
復制代碼

201811031410423.jpg (1.17 MB, 下載次數: 202)

好像有點歪

好像有點歪

201811031410422.jpg (1.07 MB, 下載次數: 333)

打個孔

打個孔

201811031410421.jpg (1.26 MB, 下載次數: 197)

沒錯,翻缸蓋

沒錯,翻缸蓋

20181103141042.jpg (1.9 MB, 下載次數: 196)

看看這是什么

看看這是什么

201811031410424.jpg (1.16 MB, 下載次數: 207)

就這樣吧

就這樣吧

201811031410425.jpg (1.22 MB, 下載次數: 198)

HX711 成品,淘寶很便宜的,沒必要自己做

HX711 成品,淘寶很便宜的,沒必要自己做

201811031410426.jpg (1.74 MB, 下載次數: 205)

紅 黑 白 綠

紅 黑 白 綠

201811031410427.jpg (1.37 MB, 下載次數: 202)

沒找到彎針

沒找到彎針

201811031410429.jpg (1.1 MB, 下載次數: 196)

這個不錯,結實

這個不錯,結實

2018110314104210.jpg (1.2 MB, 下載次數: 204)

其實用這個也挺好的,又絕緣

其實用這個也挺好的,又絕緣

2018110314104211.jpg (998.59 KB, 下載次數: 228)

還是當絕緣墊用吧

還是當絕緣墊用吧

2018110314104212.jpg (1.4 MB, 下載次數: 206)

固定一下

固定一下

2018110314104213.jpg (1.91 MB, 下載次數: 198)

還行,不算太丑

還行,不算太丑

0.png (19.12 KB, 下載次數: 195)

0.png

stm32-usart2-hx711-0919.rar

255.09 KB, 下載次數: 205, 下載積分: 黑幣 -5


作者: gm388    時間: 2019-1-24 13:46
謝謝分享,好資料,51黑有你更精彩!!!
作者: weidimay    時間: 2019-7-31 04:16
謝謝分享,樓主的飯碗厲害
作者: fgggd889    時間: 2019-8-28 10:04
有用,樓主動手能力真強




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 精品伦精品一区二区三区视频 | 国产精品欧美精品 | 欧美激情国产日韩精品一区18 | 欧美中文字幕一区 | 成年人在线视频 | 天天草天天干 | 成人免费观看男女羞羞视频 | 亚洲国产情侣自拍 | 干干天天| 国产精品揄拍一区二区久久国内亚洲精 | 亚洲久草视频 | 欧美一级久久 | 欧美日韩精品免费观看 | 中文字幕av在线 | 视频一区中文字幕 | 欧美激情五月 | 亚洲看片 | 99爱在线观看 | 欧美一级在线观看 | 色视频网站 | 麻豆国产一区二区三区四区 | 中文字幕高清av | 视频在线亚洲 | 国产成人精品高清久久 | 97国产一区二区精品久久呦 | 日日摸天天添天天添破 | 久久精品亚洲精品国产欧美 | 亚洲一级毛片 | 亚洲最大看片网站 | 日韩欧美国产精品一区 | 成人av资源在线 | 国产乱码精品一区二区三区中文 | 亚洲国产成人精品女人久久久 | 少妇一区二区三区 | 美女久久久 | 欧美一a | 成人一区二区视频 | 99re6在线视频 | 国产精品久久久久久久久免费樱桃 | 国产91视频一区二区 | 国产一区二区精品在线观看 |