第一步、应变片介绍

 

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

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

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

第二部分:应变片如何测量应变力的(对应的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. java--Object类接受任意引用数据类型对象

    java学习进展到类,首先就对万类之父Object类进行举例练习,这里我是对一维数组和接口用Object接受数组和接口. package test1; public class enum1 { pub ...

  2. 关于del命令

    del命令用于删除具体的文件,但是删除文件的时候如果不指定文件的扩展名就会显示找不到文件 还有如果所要删除文件的文件名中含有空格的话该命令会自动识别为几个文件,就从空格处把文件 分成几份,然后就会显示 ...

  3. 如约而至,Java 10 正式发布!

    3 月 20 日,Oracle 宣布 Java 10 正式发布. 官方已提供下载:http://www.oracle.com/technetwork/java/javase/downloads/ind ...

  4. Linux chown命令

    chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID:组可以是组名或者组ID:文件是以空格分开的要改变权限的文件列表,支持通配符.系统管理员经常使用chown命令,在将文件拷贝 ...

  5. 动画:UIViewAnimationOptions类型

    动画 1.常规动画属性设置(可以同时选择多个进行设置) UIViewAnimationOptionLayoutSubviews:动画过程中保证子视图跟随运动.**提交动画的时候布局子控件,表示子控件将 ...

  6. 压力测试(webbench、ab、siege)

    在本地安装webbench,步骤如下: wget http://www.ha97.com/code/webbench-1.5.tar.gz tar zxvf webbench-1.5.tar.gz m ...

  7. C语言描述二叉树的实现及操作(链表实现)

    概述     二叉树为每个节点最多有两个儿子节点(左儿子节点和右儿子节点)的树. 前序遍历:根结点 ---> 左子树 ---> 右子树. 中序遍历:左子树---> 根结点 ---&g ...

  8. oracle 分析函数中 keep关键字的使用

    语法 min | max(column1) keep (dense_rank first | last order by column2) over (partion by column3); 另外f ...

  9. phpcms v9 搜索结果列表页时间显示1970问题解决方案

    对于喜欢用phpcms v9 的小伙伴来说,在调用时间时,总会出现时间1970这样的问题,对于这个问题,网上的说法很多,内容页时间显示通常不会问题,搜索结果页就不行了,通过总结,发现使用{format ...

  10. ResultSet的getInt()和getString()方法详解

     数据库tt的examstudent数据表如下:   在MySQL中执行查询语句如下: ResultSet rs = null; String sql="SELECT flow_id,Typ ...