第一步、应变片介绍

 

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

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

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

第二部分:应变片如何测量应变力的(对应的R1\R2\R3\R4实际上的贴片方法):

电桥的四个臂上接工作应变片,都参与机械变形,同处一个温度
场,温度影响相互抵消,电压输出灵敏度高。当 4 个应变片的材料、
阻值都想同时,可推导出以下公式:

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

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

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

第三部分、原理图(带器件参数):

部分图片来自网络

(注:以上原理图中的R1\R2\R3\R4均为图二对应的电阻。应和图二所示一致。)

第四部分、程序代码:

51代码采集部分:

 /*=============================================
AD24位数值提取函数
一般提取6、7、8位数据
=============================================*/
unsigned long ReadCount(void)
{
// unsigned long Count;
unsigned char i;
ADSK=;
Count=;
while(ADDO);
for (i=;i<;i++)
{
ADSK=;
Count=Count<<;
ADSK=;
if(ADDO) Count++;
}
ADSK=;
Count=Count^0x800000;//抑或
ADSK=;
return(Count);
}

STM32代码:

 /*=============================================
AD24位数值提取函数
一般提取6、7、8位数据
=============================================*/
//#define ADD0_R GPIO_ResetBits(GPIOA,GPIO_Pin_1)
//#define ADD0_S GPIO_SetBits(GPIOA,GPIO_Pin_1)
//#define ADSK_R GPIO_ResetBits(GPIOA,GPIO_Pin_2)
//#define ADSK_S GPIO_SetBits(GPIOA,GPIO_Pin_2) unsigned long ADC_ReadCount(void)
{
unsigned char i;
unsigned long Count;
Count=;
GPIO_ResetBits(GPIOC,GPIO_Pin_5);//ADSK=0;
delay_us();
while(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_4)==)// while(ADDO);
delay_us();
for (i=;i<;i++)
{
GPIO_SetBits(GPIOC,GPIO_Pin_5);//ADSK=1;
delay_us();
Count=Count<<;
GPIO_ResetBits(GPIOC,GPIO_Pin_5);//ADSK=0;
delay_us();
if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_4)==) Count++;
delay_us();
}
GPIO_SetBits(GPIOC,GPIO_Pin_5);//ADSK=1;
delay_us();
Count=Count^0x800000;//抑或
GPIO_ResetBits(GPIOC,GPIO_Pin_5);//ADSK=0;
delay_us();
return(Count);
}

 完整测试代码:

51带串口收发采集书籍的完整代码:

 #include<reg52.h>
#include <math.h>
#define uint unsigned int
#define uchar unsigned char
uchar flag ,a ,i;
uchar code table[]="I Get ";
///////////////////////////////////////
sbit ADDO = P1^;
sbit ADSK = P1^;
unsigned long Count;
void delay_50ms(uint t);
/*=============================================
AD24位数值提取函数
一般提取6、7、8位数据
=============================================*/
unsigned long ReadCount(void)
{
// unsigned long Count;
unsigned char i;
ADSK=;
Count=;
while(ADDO);
for (i=;i<;i++)
{
ADSK=;
Count=Count<<;
ADSK=;
if(ADDO) Count++;
}
ADSK=;
Count=Count^0x800000;//抑或
ADSK=;
return(Count);
}
/*============================================
求平均值函数
===============================================*/
long averageValue(uchar times)
{
uchar i;
long sum = ;
for (i = ; i < times; i++)
{
sum += ReadCount();
} return sum / times;
}
/*===============================================
串口初始化函数
===============================================*/
void init()
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=;REN=;SM0=;SM1=;EA=;ES=; }
void delay_50ms(uint t)
{
uint j;
for( ;t>;t--)
for(j=;j>;j--); } void main()
{ unsigned long num;
uchar s[];
init();
while()
{
/************************************/
num=averageValue();
num=num-;
num=num*;
for(i=;i>;i--)
{
s[i-]=(uchar)num%+0x30;
if(num<)
s[i-]=0x30;
num=num /;
}
s[]='G';
/************************************/
/*==================================================
long val = (averageValue() - _offset);//_offset
return (float) val / _scale;//再.H函数中设置scale = 416.f =====================================================*/ ES=;//关闭串口中断
for(i=;i<;i++)
{
SBUF=s[i];//通过串口发送数据
while(!TI);//检查是否发送数据发送完毕
TI=;
}
delay_50ms();
} } void set() interrupt
{
RI=;
a=SBUF;
flag=; }

STM32完整代码:

c代码.c 文件

 #include<reg52.h>
#include <math.h>
#include <stdio.h>
#define uint unsigned int
#define uchar unsigned char
uchar flag ,a ,i;
uchar code table[]="I Get ";
///////////////////////////////////////
sbit ADDO = P1^;
sbit ADSK = P1^;
unsigned long Count;
void delay_50ms(uint t);
/*=============================================
AD24位数值提取函数
一般提取6、7、8位数据
=============================================*/
unsigned long ReadCount(void)
{
// unsigned long Count;
unsigned char i;
ADSK=;
Count=;
while(ADDO);
for (i=;i<;i++)
{
ADSK=;
Count=Count<<;
ADSK=;
if(ADDO) Count++;
}
ADSK=;
Count=Count^0x800000;//抑或
ADSK=;
return(Count);
}
/*============================================
求平均值函数
===============================================*/
long averageValue(uchar times)
{
uchar i;
long sum = ;
for (i = ; i < times; i++)
{
sum += ReadCount();
} return sum / times;
}
/*===============================================
串口初始化函数
===============================================*/
void init()
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=;REN=;SM0=;SM1=;EA=;ES=; }
void delay_50ms(uint t)
{
uint j;
for( ;t>;t--)
for(j=;j>;j--); } void main()
{ unsigned long num;
uchar s[];
init();
while()
{
/************************************/
num=averageValue();
num=num-;
num=num*;
sprintf(s,"称得重量:%f g",num); /************************************/
/*==================================================
long val = (averageValue() - _offset);//_offset
return (float) val / _scale;//再.H函数中设置scale = 416.f =====================================================*/ ES=;//关闭串口中断
for(i=;i<;i++)
{
SBUF=s[i];//通过串口发送数据
while(!TI);//检查是否发送数据发送完毕
TI=;
}
delay_50ms();
} } void set() interrupt
{
RI=;
a=SBUF;
flag=; }

.h文件:

 #ifndef __AD24_H
#define __AD24_H
#include "stm32f10x.h"
#include "delay.h"
void ADC24_Configtion(void);
long averageValue(unsigned char times); #endif

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

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

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

附录:(此处R1\R2\R3\R4不一定和第二部分的图2中的R1\R2\R3\R4对应

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

-----------------------------------------------------------------------贴应变片-------------------------------------------------------------------------------------------------

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

 

贴应变片:

用锉刀和粗砂纸等工具将试件在钢板上的贴片位置的油污、漆层、锈迹、电镀层除去,再用细砂纸打磨成 45°交叉纹,之后用镊子镊起丙酮棉球将贴片处擦洗干净,至棉球洁白为止。

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

-------------------------------------------------------------------应变片的其他贴法:-----------------------------------------------------------------------------------------

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

应变片的其他贴法:

温度补偿:

电子称DIY(贴应变片+写代码)的更多相关文章

  1. 使用 .NET WinForm 开发所见即所得的 IDE 开发环境,实现不写代码直接生成应用程序

    直接切入正题,这是我09年到11年左右业余时间编写的项目,最初的想法很简单,做一个能拖拖拽拽就直接生成应用程序的工具,不用写代码,把能想到的业务操作全部封装起来,通过配置的方式把这些业务操作组织起来运 ...

  2. ClownFish:比手写代码还快的通用数据访问层

    http://www.cnblogs.com/fish-li/archive/2012/07/17/ClownFish.html 阅读目录 开始 ClownFish是什么? 比手写代码还快的执行速度 ...

  3. Markdown: 用写代码的思维写文档

    作者:吴香伟 发表于 2014/08/07 版权声明:可以任意转载,转载时务必以超链接形式标明文章原始出处和作者信息以及版权声明 本文不讲解Markdown的语法规则,只关注它带来的好处以及我使用的方 ...

  4. 【腾讯Bugly干货分享】深入理解 ButterKnife,让你的程序学会写代码

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/578753c0c9da73584b025875 0.引子 话说我们做程序员的,都 ...

  5. 不需要写代码,文件夹右键cmd定位指定目录

    引子 这篇文章其实本来不是这样的,因为我用C#的代码实现了一个程序,后面才突然发现,我太傻太天真了,明明不需要写程序和写代码的,结果自己把自己二住了. 我们来看看效果图. 由于,我自己的原因,这个功能 ...

  6. [No000008]发工资不仅仅是让你写代码的

    这是我对团队每个新进员工说的第一件事情.这句话的意思是,我并不关心你是如何快速完成任务的,哪怕代码很差,只要它像救生艇通气门一样管用就行.这句话也是我最喜欢的座右铭之一. 这个说法其实很合理:我们的工 ...

  7. 手写代码自动实现自动布局,即Auto Layout的使用

    手写代码自动实现自动布局,即Auto Layout的使用,有需要的朋友可以参考下. 这里要注意几点: 对子视图的约束,若是基于父视图,要通过父视图去添加约束. 对子视图进行自动布局调整,首先对UIVi ...

  8. jQuery 之父:每天写代码

    去年秋天我的支线代码项目 遇到了一些问题,项目进展不足,而且我没法找到一个完成更多代码的方法(在不影响我在Khan Academy方面的工作的前提下). 我主要在周末进行我的支线,当然有时候也在晚上进 ...

  9. 如果选择构建ui界面方式,手写代码,xib和StoryBoard间的博弈

    代码手写UI这种方法经常被学院派的极客或者依赖多人合作的大型项目大规模使用. 大型多人合作项目使用代码构建UI,主要是看中纯代码在版本管理时的优势,检查追踪改动以及进行代码合并相对容易一些. 另外,代 ...

随机推荐

  1. C# Redis实战(二)

    二.Redis服务  在C# Redis实战(一)中我将所有文件拷贝到了D盘redis文件夹下,其中redis-server.exe即为其服务端程序,双击即开始运行,如图             可以 ...

  2. asp.net core 五 SignalR 负载均衡

           SignalR : Web中的实时功能实现,所谓实时功能,就是所连接的客户端变的可用时,服务端能实时的推送内容到客户端,而不是被动的等待客户端的请求.Asp.net SignalR 源码 ...

  3. 20165230 2017-2018-2 《Java程序设计》第3周学习总结

    20165230 2017-2018-2 <Java程序设计>第3周学习总结 教材学习内容总结 本周主要学习了类与对象. 包括创建对象与构造方法. 了解了程序是由若干个类所构成:类分为类名 ...

  4. jsp的两种跳转方式和区别

    1.forward跳转: 服务器端跳转,地址栏不改变: 执行到跳转语句后马上无条件跳转,之后的代码不再执行(跳转之前一定要释放全部资源): request设置的属性在跳转后的页面仍可以使用: 使用&l ...

  5. 笔记:Maven 反应堆

    在一个多模块的Maven项目中,反应堆(Reactor)是指所有模块组成的一个构建结构,对于单个模块的项目,反应堆就是该模块本身,但对于多模块项目来说,反应堆就包含了各模块之间继承与依赖的关系,从而能 ...

  6. 2.java.util.logging.Logger使用详解

    一.java.util.logging.Logger简介 java.util.logging.Logger不是什么新鲜东西了,1.4就有了,可是因为log4j的存在,这个logger一直沉默着, 其实 ...

  7. 怎样把Linux的私钥文件id_rsa转换成putty的ppk格式

    在Linux VPS下产生的私钥文件putty是不认识的,putty只认识自己的ppk格式,要在这两种格式之间转换,需要PuTTYgen这个程序. puttygen是putty的配套程序,putty的 ...

  8. 介绍C语言指针

    最近心态不太好,但是还是控制自己刷一下算法题,但是看着多次出现的 “Segmentation fault”,心态又爆炸啦.我只想说:“我也早觉得有写一点东西的必要了.离三月十八日也已有两星期,忘却的救 ...

  9. Java集合:TreeMap源码剖析

    一.概念 TreeMap是基于红黑树结构实现的一种Map,要分析TreeMap的实现首先就要对红黑树有所了解. 要了解什么是红黑树,就要了解它的存在主要是为了解决什么问题,对比其他数据结构比如数组,链 ...

  10. 爬虫(BeautifulSoup--select--class的选择)

    <div class="item name" title="中央公园"> <a href="/Attraction_Review-g ...