第一步、应变片介绍

 

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

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

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

第二部分:应变片如何测量应变力的(对应的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. mailgun 发邮件示例代码Python版

    1 首先到mailgun官网注册账号,并激活账号 点击domains,进入默认的域名,最底下那个sandbox域名就是默认的测试域名 如果自己有域名,也可以添加自己的域名测试,具体参考:ssr pan ...

  2. 异步解决方案promise及源码实现

    js语言的特性,造就了特别的异步处理方式,我记得以前用的最多的就是回调函数,那个时候写jquery的ajax时候,特别喜欢写这种代码: $.ajax({ method:'get', url:" ...

  3. 深入理解JVM垃圾收集机制(JDK1.8)

    垃圾收集算法 标记-清除算法 最基础的收集算法是"标记-清除"(Mark-Sweep)算法,分两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象. 不足: ...

  4. 三十天学不会TCP,UDP/IP网络编程 - RST的用法

    不知不觉也写了这么多了,继续我的自己的推广大业~完整版可以去gitbook(https://www.gitbook.com/@rogerzhu/)看到. 如果对和程序员有关的计算机网络知识,和对计算机 ...

  5. Win10_x86_x64PE维护光盘——我用过最好用的PE

    先感谢hongxj和fish2006两位大大提供的PE. 先放出所有工具的下载地址: hongxj的PE:https://yunpan.cn/crAw6HS6ar9ck  访问密码 4a4e fish ...

  6. ERROR : PHP中错误基础

    1.错误 在进行PHP代码编辑的时候,容易碰到error错误提示,PHP中错误有两种:语法错误.逻辑错误. 2.错误报告类型 Notice : 通知 比如直接使用未定义的变量,这种错误不影响PHP脚本 ...

  7. Python3 多线程编程(thread、threading模块)

    threading是对thread的封装. 1.开启线程: t=threading.Thread(target=sayhi,args=('hh',)) t.start() 或者先建一个Thread的继 ...

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

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

  9. es6学习笔记--新数据结构Set,Map以及WeakSet,WeakMap

    在javascript中,存储数据的方式大部分就是以数组或者对象形式存储的,es6出现了4种新集合Set,Map,WeakSet,WeakMap来存储数据,简化了编程. 集合--Set 类似于数组,但 ...

  10. 【node】安装和配置node项目文件

    需要把 views文件中的子文件全部改为以 .ejs的后缀 1·npm install express -g (全局安装) 2·npm install -g express-generator (安装 ...