日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

电子称DIY(贴应变片+写代码)

發(fā)布時(shí)間:2024/3/12 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 电子称DIY(贴应变片+写代码) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

第一步、應(yīng)變片介紹

?

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

第二部分:應(yīng)變片如何測(cè)量應(yīng)變力的(對(duì)應(yīng)的R1\R2\R3\R4實(shí)際上的貼片方法):

?

?

電橋的四個(gè)臂上接工作應(yīng)變片,都參與機(jī)械變形,同處一個(gè)溫度
場(chǎng),溫度影響相互抵消,電壓輸出靈敏度高。當(dāng) 4 個(gè)應(yīng)變片的材料、
阻值都想同時(shí),可推導(dǎo)出以下公式:

?

?

?

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

第三部分、原理圖(帶器件參數(shù)):

?

?部分圖片來自網(wǎng)絡(luò)

?(注:以上原理圖中的R1\R2\R3\R4均為圖二對(duì)應(yīng)的電阻。應(yīng)和圖二所示一致。)

?

第四部分、程序代碼:

51代碼采集部分:

1 /*============================================= 2 AD24位數(shù)值提取函數(shù) 3 一般提取6、7、8位數(shù)據(jù) 4 =============================================*/ 5 unsigned long ReadCount(void) 6 { 7 // unsigned long Count; 8 unsigned char i; 9 ADSK=0; 10 Count=0; 11 while(ADDO); 12 for (i=0;i<24;i++) 13 { 14 ADSK=1; 15 Count=Count<<1; 16 ADSK=0; 17 if(ADDO) Count++; 18 } 19 ADSK=1; 20 Count=Count^0x800000;//抑或 21 ADSK=0; 22 return(Count); 23 }

?

STM32代碼:

?

1 /*============================================= 2 AD24位數(shù)值提取函數(shù) 3 一般提取6、7、8位數(shù)據(jù) 4 =============================================*/ 5 //#define ADD0_R GPIO_ResetBits(GPIOA,GPIO_Pin_1) 6 //#define ADD0_S GPIO_SetBits(GPIOA,GPIO_Pin_1) 7 //#define ADSK_R GPIO_ResetBits(GPIOA,GPIO_Pin_2) 8 //#define ADSK_S GPIO_SetBits(GPIOA,GPIO_Pin_2) 9 10 unsigned long ADC_ReadCount(void) 11 { 12 unsigned char i; 13 unsigned long Count; 14 Count=0; 15 GPIO_ResetBits(GPIOC,GPIO_Pin_5);//ADSK=0; 16 delay_us(20); 17 while(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_4)==1)// while(ADDO); 18 delay_us(20); 19 for (i=0;i<24;i++) 20 { 21 GPIO_SetBits(GPIOC,GPIO_Pin_5);//ADSK=1; 22 delay_us(20); 23 Count=Count<<1; 24 GPIO_ResetBits(GPIOC,GPIO_Pin_5);//ADSK=0; 25 delay_us(20); 26 if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_4)==1) Count++; 27 delay_us(20); 28 } 29 GPIO_SetBits(GPIOC,GPIO_Pin_5);//ADSK=1; 30 delay_us(20); 31 Count=Count^0x800000;//抑或 32 GPIO_ResetBits(GPIOC,GPIO_Pin_5);//ADSK=0; 33 delay_us(20); 34 return(Count); 35 }

?

?完整測(cè)試代碼:

51帶串口收發(fā)采集書籍的完整代碼:

1 #include<reg52.h> 2 #include <math.h> 3 #define uint unsigned int 4 #define uchar unsigned char 5 uchar flag ,a ,i; 6 uchar code table[]="I Get "; 7 /// 8 sbit ADDO = P1^5; 9 sbit ADSK = P1^0; 10 unsigned long Count; 11 void delay_50ms(uint t); 12 /*============================================= 13 AD24位數(shù)值提取函數(shù) 14 一般提取6、7、8位數(shù)據(jù) 15 =============================================*/ 16 unsigned long ReadCount(void) 17 { 18 // unsigned long Count; 19 unsigned char i; 20 ADSK=0; 21 Count=0; 22 while(ADDO); 23 for (i=0;i<24;i++) 24 { 25 ADSK=1; 26 Count=Count<<1; 27 ADSK=0; 28 if(ADDO) Count++; 29 } 30 ADSK=1; 31 Count=Count^0x800000;//抑或 32 ADSK=0; 33 return(Count); 34 } 35 /*============================================ 36 求平均值函數(shù) 37 ===============================================*/ 38 long averageValue(uchar times) 39 { 40 uchar i; 41 long sum = 0; 42 for (i = 0; i < times; i++) 43 { 44 sum += ReadCount(); 45 } 46 47 return sum / times; 48 } 49 /*=============================================== 50 串口初始化函數(shù) 51 ===============================================*/ 52 void init() 53 { 54 TMOD=0x20; 55 TH1=0xfd; 56 TL1=0xfd; 57 TR1=1;REN=1;SM0=0;SM1=1;EA=1;ES=0; 58 59 } 60 void delay_50ms(uint t) 61 { 62 uint j; 63 for( ;t>0;t--) 64 for(j=6245;j>0;j--); 65 66 } 67 68 void main() 69 { 70 71 unsigned long num; 72 uchar s[9]; 73 init(); 74 while(1) 75 { 76 /************************************/ 77 num=averageValue(20); 78 num=num-8650000; 79 num=num*416; 80 for(i=8;i>0;i--) 81 { 82 s[i-1]=(uchar)num%10+0x30; 83 if(num<1) 84 s[i-1]=0x30; 85 num=num /10; 86 } 87 s[8]='G'; 88 /************************************/ 89 /*================================================== 90 long val = (averageValue() - _offset);//_offset 91 return (float) val / _scale;//再.H函數(shù)中設(shè)置scale = 416.f 92 93 =====================================================*/ 94 95 96 97 ES=0;//關(guān)閉串口中斷 98 for(i=0;i<9;i++) 99 { 100 SBUF=s[i];//通過串口發(fā)送數(shù)據(jù) 101 while(!TI);//檢查是否發(fā)送數(shù)據(jù)發(fā)送完畢 102 TI=0; 103 } 104 delay_50ms(4); 105 } 106 107 } 108 109 void set() interrupt 4 110 { 111 RI=0; 112 a=SBUF; 113 flag=1; 114 115 } View Code

?

?STM32完整代碼:

c代碼.c 文件

1 #include<reg52.h> 2 #include <math.h> 3 #include <stdio.h> 4 #define uint unsigned int 5 #define uchar unsigned char 6 uchar flag ,a ,i; 7 uchar code table[]="I Get "; 8 /// 9 sbit ADDO = P1^5; 10 sbit ADSK = P1^0; 11 unsigned long Count; 12 void delay_50ms(uint t); 13 /*============================================= 14 AD24位數(shù)值提取函數(shù) 15 一般提取6、7、8位數(shù)據(jù) 16 =============================================*/ 17 unsigned long ReadCount(void) 18 { 19 // unsigned long Count; 20 unsigned char i; 21 ADSK=0; 22 Count=0; 23 while(ADDO); 24 for (i=0;i<24;i++) 25 { 26 ADSK=1; 27 Count=Count<<1; 28 ADSK=0; 29 if(ADDO) Count++; 30 } 31 ADSK=1; 32 Count=Count^0x800000;//抑或 33 ADSK=0; 34 return(Count); 35 } 36 /*============================================ 37 求平均值函數(shù) 38 ===============================================*/ 39 long averageValue(uchar times) 40 { 41 uchar i; 42 long sum = 0; 43 for (i = 0; i < times; i++) 44 { 45 sum += ReadCount(); 46 } 47 48 return sum / times; 49 } 50 /*=============================================== 51 串口初始化函數(shù) 52 ===============================================*/ 53 void init() 54 { 55 TMOD=0x20; 56 TH1=0xfd; 57 TL1=0xfd; 58 TR1=1;REN=1;SM0=0;SM1=1;EA=1;ES=0; 59 60 } 61 void delay_50ms(uint t) 62 { 63 uint j; 64 for( ;t>0;t--) 65 for(j=6245;j>0;j--); 66 67 } 68 69 void main() 70 { 71 72 unsigned long num; 73 uchar s[25]; 74 init(); 75 while(1) 76 { 77 /************************************/ 78 num=averageValue(20); 79 num=num-8650000; 80 num=num*416; 81 sprintf(s,"稱得重量:%f g",num); 82 83 /************************************/ 84 /*================================================== 85 long val = (averageValue() - _offset);//_offset 86 return (float) val / _scale;//再.H函數(shù)中設(shè)置scale = 416.f 87 88 =====================================================*/ 89 90 91 92 ES=0;//關(guān)閉串口中斷 93 for(i=0;i<25;i++) 94 { 95 SBUF=s[i];//通過串口發(fā)送數(shù)據(jù) 96 while(!TI);//檢查是否發(fā)送數(shù)據(jù)發(fā)送完畢 97 TI=0; 98 } 99 delay_50ms(4); 100 } 101 102 } 103 104 void set() interrupt 4 105 { 106 RI=0; 107 a=SBUF; 108 flag=1; 109 110 } View Code

?

?.h文件:

1 #ifndef __AD24_H 2 #define __AD24_H 3 #include "stm32f10x.h" 4 #include "delay.h" 5 void ADC24_Configtion(void); 6 long averageValue(unsigned char times); 7 8 #endif View Code

?

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

附錄:(此處R1\R2\R3\R4不一定和第二部分的圖2中的R1\R2\R3\R4對(duì)應(yīng)

?

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

?

-----------------------------------------------------------------------貼應(yīng)變片-------------------------------------------------------------------------------------------------

?

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

?

貼應(yīng)變片:

用銼刀和粗砂紙等工具將試件在鋼板上的貼片位置的油污、漆層、銹跡、電鍍層除去,再用細(xì)砂紙打磨成 45°交叉紋,之后用鑷子鑷起丙酮棉球?qū)①N片處擦洗干凈,至棉球潔白為止。

?

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------應(yīng)變片的其他貼法:-----------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

應(yīng)變片的其他貼法:

?

溫度補(bǔ)償:

?

轉(zhuǎn)載于:https://www.cnblogs.com/pertor/p/6516638.html

總結(jié)

以上是生活随笔為你收集整理的电子称DIY(贴应变片+写代码)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。