光电米测试仪
课程设计说明书
专业:电子信息技术 班级:
姓名: 学号:
组别: 指导教师: 李天超
日期:2011年9月2号 设计序号№:01
考勤 报告成绩 调试成绩 奖励成绩 总成绩
指导教师签名: 日期:
1概述
光电米测试仪是一种有效的测量电线、电缆长度的新型设备,它能在电线、电缆的生产线和复绕状态下对电线、电缆进行有效的长度测量和定长控制,从而实现电线、电缆的高精度测量和控制。光电米测试仪作为一种有效的高精度的计量仪表,已经广泛的应用于电线、电缆,纺织,影印,印染,皮革绸缎,布匹,钢材,塑料薄膜,地毯制作等行业,是一种适合与现代工业生产的新型测量设备。
2系统电路设计
2.1原理框图(行为、结构描述设计)
图1 光电米测试仪原理框图
系统设计思路是开关机按钮、增加、减少、单位长度光电传感器采用反射式光电开关电路,为了提高光电开关对环境杂散光的抗干扰性能,利用调制技术对光电开关电路的电源进行500Hz频率调制,使得这些电路工作时的状态受到功能信号和调制信号的二维约束,实现功能电路性能的唯一性的同时,又提高了它的抗干扰能力和实用性;500Hz调制信号由单片机提供,工作时,功能信号传送给单片机,它根据增加和减少的预置测试长度进行数字显示,并驱动吐线电机转动吐线,数字显示数字开始递减,当吐线长度等于原预置长度时,吐线电机停转,单片机输出信号驱动电剪剪断线体,同时发出“嘟嘟”声告知完成。
2.2 电路设计(物理描述设计)
2.2.1 系统电源电路设计
A) 行为结构描述设计
电源原理框图
图2 电源电路原理框图
B)电源电路原理图
图3 AC/DC电源电路原理图
电源电路设计根据系统电路正常工作所需的额定电源电压分析后进行优化进行分析可知,CPU电源和周边电路采用5VDC电流300mADC,负载电源采用24VDC/300mA,根据以上分析,选用AC/DC电源模块LH20-10D0524-03 ,特点是220V/50Hz供电,两路直流输出5VDC/24VDC,若该产品采用直流24CDC供电时可选择两套方案,其电源电路可选择DC/DC电源模块PWB4805LT-1W5;电路原理图如图4。
图4 24VDC供电电路原理图
2.2.2 功能按键控制电路
图 图5功能按键控制电路原理图
图中U1光电开关单元电路用于开机/待机功能控制电路,ajkonzhi2端子单片机输入500Hz信号驱动光电开关器件U1发光二极管,使他产生发射一个光脉冲串,当反射物体置于光电开关器件U1上方合适位置时,光脉冲串经反射物体将光反射给U1光电三极管转换成功能控制电信号传送给CPU,同理,U2(加)、U3(减)、U4(线单位长度脉冲发生电路)的工作原理类同,其目的是为了避免电器开关易磨损和产生干扰。电路参数计算,由于电路单元电路的类同性,所以以U1、Q1、Q17组成的单元电路为设计目标,计算如下,根据光电开关电路U1的发光二极管、R5、Q17的集电极、发射机构成的回路列KVL方程,已知条件:该支路工作在数字开关状态,电源电压5V,支路电流10mA(由光电开关器件的参数决定,并设光电开关器件的发光二极管的工作电压为VF),R5电路参数由下(1)、(2)计算;
R5= (1)
P(功率)= (2)
电阻功率取安全系数为5,则PR=0.16mW;取标称值R5=300R(1/16W)。
若选择光电开关器件中的BJT集电极电流为IC=0.5mA,则有以下(3)式决定,
R6=(5V-VCES) /0.3mA=(5V-0.5V)/0.3mA=15kΩ (3)
取标称值R6=15kΩ(1/16W)。
R53计算条件是IC=10mA,Q17的β值为250,输入电压脉冲幅值等于5V,则R53值由下式(4)决定,
R53=(5V-VBEQ17)/10mA/βQ17
=(5V-0.6V)/10mA/250=110kΩ (4)
取标称值R53=100kΩ(1/16W)。
R13是Q1的偏置电阻,其电路参数计算由(5)式决定,
R13=(VU1CE-VBEU1)/0.3mA/βQ1=208kΩ (5)
上式中VU1CE=1V,是由于光电开关元件的光电三极管暴露在杂散光下产生一个光电流形成的UU1CE=1V,所以VU1C=1V,取标称值R13=200K/1/16W。
同理R1=10KΩ/1/16W。其中C1是一个加速电容,它是为了提高电路的反应速度而设定的,其原理是电路稳态时C1不起作用,当他的两端电位突然变化时,将产生一个阶跃电流,加速Q1BJT的状态翻转,达到提高开关速度的目的。
2.2.3 单片机与显示电路
图6 单片机与显示电路原理图
图中CPU选择STC12C5A40S2,选择12MHz时钟,显示电路采用3位半LED字段共阴极显示模块,采用扫描式驱动方式;功能操作采用LED显示,供用户确定操作状态。其蜂鸣器供操作者确定参考状态。
2.2.4驱动电路
图7中是系统电路的直流电机和步进电机的驱动电路,它采用隔离电路U5、U5、U7、U11光电隔离器进行负载与CPU之间的电隔离,防止负载意外状态负载24V高压CPU的损害,提高系统稳定的可靠性。电机驱动电路采用专用芯片LV8731V,特点:它是一个全桥式功率驱动芯片,体积小,效率高,它可以驱动直流电机又可驱动步进电机,并且功能选择多样化,控制功能端数量少,工作效率高,给设计提高了方便。
图7 驱动电路原理图
3 系统PCB设计
PCB电路板选择双层电路板布局,采用贴片元件来提高元件布置密度,同时要求全工艺制板。
PCB如下图。
图8 系统电路PCB电路板图
4 软件工程设计
4.1算法
4.2 程序
/*******************************************
文 件:Test.c
环 境:编译环境为keilC Uv2
硬 件:STC12C5A56S2单片机,LV8731V电机驱动芯片,四位一体数码管,电磁式有源蜂鸣器,LED指示灯,反射式光电耦合器(按键)
功 能:通过按键设定所需要的线长(精确至0.1m),启动电机或者手动卷线,对卷线长度进行计数,当到达设定长度时(精确至0.01m)电机停转,
日 期:20##年11月30日
备 注:
设计者:李琳
*******************************************/
#include<intrins.h> //包含汇编指令文件
#include<reg52.h> //包含型号头文件
#define FOSC 12000000L // 声明晶振频率
#define T0MS (65536-FOSC/1000+14) //1ms计时初始值
sfr AUXR=0x8E; //单片机特殊功能寄存器
sfr P4=0xc0; //声明P4口的位置
sfr P4SW=0xBB; //声明P4口控制寄存器
sfr P0M0=0x94; //声明P0口模式配置寄存器0
sfr P0M1=0x93; //声明P0口模式配置寄存器1
sfr P1M0=0x92; //声明P1口模式配置寄存器0
sfr P1M1=0x91; //声明P1口模式配置寄存器1
sfr P2M0=0x96; //声明P2口模式配置寄存器0
sfr P2M1=0x95; //声明P3口模式配置寄存器1
sbit sd_led=P1^6; //加按键指示灯
sbit ds_led=P1^5; //减按键指示灯
sbit speaker=P1^4; //蜂鸣器控制输出端,为1时鸣响,为0时不响
sbit ajkongzhi2=P1^3; //开关机按键调制信号
sbit ajkongzhi1=P1^2; //其它按键调制信号
sbit fz_led=P1^1; //计数指示灯-红
sbit zz_led=P1^0; //计数指示灯-黄
sbit w1=P4^4; //声明数码管位选管脚1
sbit w2=P2^7; //声明数码管位选管脚2
sbit w3=P2^6; //声明数码管位选管脚3
sbit w4=P2^5; //声明数码管位选管脚4
sbit dp=P0^7; //声明小数点控制位
sbit aj1=P3^3; //声明按键1所对应的管脚
sbit aj2=P4^2; //声明按键2所对应的管脚
sbit aj3=P3^2; //声明按键3所对应的管脚
sbit aj4=P4^3; //声明按键4所对应的管脚
sbit ST=P2^0; //电机待机/工作控制脚
sbit DC11=P2^1; //电机控制信号
sbit DC12=P2^2; //电机控制信号
sbit DC21=P2^3; //电机控制信号
sbit DC22=P2^4; //电机控制信号
bit power; //电源状态标志,为0时为待机状态,为1时为工作状态
unsigned char shuzi[11]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00};
//常用数字所对应的数值(0-9) 0x00为数码管不亮
unsigned char qianwei,baiwei,shiwei,gewei; //显示数位千、百、十、个
unsigned char flag,flag2,flag3;
//flag为0时表示为power=0状态,为1时表示为power=1状态
//flag2为电机转动标志,为1时开始转动,为0时不转动
//flag3为0时计数键锁定,为1时计数键解锁
unsigned int jishi1,jishi2,jishi3,jishi4,jishi5,jishi6,jishi11,jishi22,jishi32;
//jishi1-4为按键1-4调制信号计数 ,
//jishi5为开关机按键时间计时,jishi6为500毫秒计时位
//jishi11为蜂鸣器鸣响时间计时
//jishi22为增加键加速计时,jishi32为减少键加速计时
unsigned char weizhi; //数码管位选标志
unsigned int xianchang; //线长计数,单位0.01m
sfr WDT=0xC1; //声明看门狗寄存器
/*******************************************
* 函 数 名: init
* 功能描述: 系统初始化程序
* 函数说明: 对端口和定时器进行初始化
* 调用函数: 无
* 全局变量: 无
* 输 入: 无
* 返 回: 无
* 设 计 者: 李琳 日期: 20##-11-30
* 版 本: 1.0
/*******************************************/
void inti()
{
WDT=0x3f; //喂狗,8.3886S溢出
TMOD=0x11; //定时器T0工作在模式1-16位计数器
TL0=T0MS; //定时器T0赋初值
TH0=T0MS>>8;
TR0=1; //定时器T0启动
ET0=1; //定时器T0中断允许
EA=1; //总中断允许
PT0=1; //定时器T0高中断优先级
ajkongzhi1=0; //按键调制信号1初始化
ajkongzhi2=0; //按键调制信号2初始化
P4SW=0x70; //P4口功能初始化
P0M0=0xff; //P0口输出模式初始化
P0M1=0x00;
P1M0=0xff; //P1口输出模式初始化
P1M1=0x00;
P2M0=0xff; //P2口输出模式初始化
P2M1=0x00;
power=0; //上电时处于待机状态
AUXR=0X81; //ALE禁止输出,定时器T0计数加速,对晶振频率不分频计数
speaker=0; //蜂鸣器状态初始化
jishi11=1000; //蜂鸣器上电鸣响1S }
/********************************************
* 函 数 名: main
* 功能描述: 主程序
* 函数说明: 先对系统初始化,然后等待
* 调用函数: init();
* 全局变量:
* 输 入: 无
* 返 回: 无
* 设 计 者: 李琳 日期: 20##-11-30
* 版 本: 1.0
/*********************************************/
void main()
{
inti(); //初始化子函数
WDT=0x3f; //喂狗,8.3886S溢出
while(1) //等待
{
}
}
/*****************************************
* 函 数 名: timer0
* 功能描述: 定时中断T0子函数
* 函数说明: 按1ms为时间单位进行动作,使单片机程序运行的每一步都在准确的控制之下
* 调用函数: 无
* 全局变量: 无
* 输 入: 无
* 返 回: 无
* 设 计 者: 李琳 日期: 20##-11-30
* 备 注: 每次中断均为1ms,精确至0.1us
* 版 本: 1.0
/***************************************/
void timer0() interrupt 1 using 1 //定时器T0
{
WDT=0x3f; //喂狗,8.3886S溢出
TL0=T0MS; //定时器T0赋初值
TH0=T0MS>>8;
TR0=1; //定时器T0启动 if(jishi11>0) //蜂鸣器鸣响控制
{
jishi11--;
speaker=1;
}
else
speaker=0;
if(aj1==ajkongzhi2) // 复位/开关按键
{
if(jishi1<200) // 200ms反应
jishi1++;
else
{
jishi11=200; //蜂鸣器鸣响200ms
jishi1=0;
if(flag2==0)
flag2=1; //电机转动
else
flag2=0; //电机停转
}
if(jishi5<200)
jishi5++;
else if(jishi5<1000) //2S反应-待机模式与开机模式转换
{
jishi5++;
jishi11=200; //蜂鸣器鸣响200ms
}
else
{
jishi11=200; //蜂鸣器鸣响200ms
jishi5=0;
if(power==0)
power=1; //系统开机运行
else
power=0; //系统待机
}
}
else
{
jishi1=0;
jishi5=0;
}
if(power==0) //待机模式
{
sd_led=1; //led待机
ds_led=1;
fz_led=1;
zz_led=1;
P0=0; //数码管待机
weizhi=1;
w1=w2=w3=w4=0;
ST=1; //线圈待机
flag=0; //状态标志
flag2=0; //电机待机
jishi22=500;
jishi32=500;
xianchang=9999; //开机显示画面
}
else if(power==1) //正常工作模式
{
if(flag==0)
{
if(jishi6<500) //开机时数码管显示控制
jishi6++;
else
{
jishi6=0;
if(xianchang>0)
{
xianchang=xianchang-1111;//开机时线长依次递减1111
sd_led=~sd_led; //led闪动
ds_led=~ds_led;
fz_led=~fz_led;
zz_led=~fz_led;
}
else
{
flag=1;
xianchang=1000; //开机默认切线长度为10.00m
sd_led=1;
ds_led=1;
fz_led=1;
zz_led=1;
}
}
}
qianwei=(xianchang%10000)/1000;//显示数字十位的运算
baiwei=(xianchang%1000)/100; //显示数字个位的运算
shiwei=(xianchang%100)/10; //显示数字0.1位的运算
gewei=xianchang%10; //显示数字0.01位的运算
if(qianwei==0) //当十位为0时,数码管不显示
qianwei=10;
switch(weizhi) //数码管显示控制
{
case 1:{ //数码管十位显示
P0=shuzi[qianwei];
w1=1;w2=w3=w4=0;
break;
}
case 2:{ //数码管个位显示
P0=shuzi[baiwei];
dp=1;
w2=1;w1=w3=w4=0;
break;
}
case 3:{ //数码管0.1位显示
P0=shuzi[shiwei];
w3=1;w2=w1=w4=0;
break;
}
case 4:{ //数码管0.01位显示
P0=shuzi[gewei];
w4=1;w2=w3=w1=0;
break;
}
default: weizhi=0;
}
weizhi++; //显示位置切换
DC11=1; //电机控制信号输出
DC12=0;
DC21=1;
DC22=0;
if(flag2==1) //电机转动状态
{
if(xianchang>0) //当设定线长未达到时,
ST=0; //电机转动
else
ST=1; //电机停转
}
else
ST=1; //电机不转
if(aj2==ajkongzhi1) //增加按键
{
if(jishi2<jishi22) //消抖时间500ms
jishi2++;
else
{
jishi11=100; //蜂鸣器响0.1S
sd_led=0; //加按键指示灯点亮
ds_led=1;
fz_led=1;
zz_led=1;
jishi2=0;
if(jishi22>49)
jishi22=jishi22-25; //持续按键时加速
if(xianchang<0) //线长所处范围不同时,按键权重不同
xianchang=0;
else if(xianchang<10)
xianchang++;
else if(xianchang<9900)
xianchang=xianchang+100;
else if(xianchang<9990)
xianchang=xianchang+10;
else if(xianchang<9999)
xianchang++;
else
xianchang=9999; //超出最大值,不再增加
}
}
else
{
jishi2=0;
jishi22=500;
}
if(aj3==ajkongzhi1) //减少按键
{
if(jishi3<jishi32) //消抖时间500ms
jishi3++;
else
{
jishi11=100; //蜂鸣器响0.1S
sd_led=1;
ds_led=0; //减按键指示灯点亮
fz_led=1;
zz_led=1;
jishi3=0;
if(jishi32>49)
jishi32=jishi32-25; //持续按键时加速
if(xianchang>9999) //线长所处范围不同时,按键权重不同
xianchang=9999;
else if(xianchang>9990)
xianchang--;
else if(xianchang>10)
xianchang=xianchang-10;
else if(xianchang>0)
xianchang--;
else
xianchang=0; //超出最小值,不再减少 }
}
else
{
jishi3=0;
jishi32=500;
}
if((aj4==ajkongzhi1)&&(flag3==1)) //线长计数信号
{
if(jishi4<2) //2ms消抖
jishi4++;
else
{
jishi11=50; //蜂鸣器响50ms sd_led=1;
ds_led=1;
zz_led=~zz_led; //线长计数指示灯交替显示
fz_led=~zz_led;
jishi4=0;
flag3=0; //线长锁定
if(xianchang>1)
xianchang--;
else if(xianchang==1)
{
xianchang=0;
jishi11=1000; //线长到位,蜂鸣器鸣响1S,提示
}
else
xianchang=0;
}
}
else if(aj4!=ajkongzhi1)
{
jishi4=0;
flag3=1; //线长解锁
}
ajkongzhi1=~ajkongzhi1; //按键调制信号1
}
else
power=0;
ajkongzhi2=~ajkongzhi2; //按键调制信号2
if(power==0) //待机时,按键调制信号1关闭,节能
ajkongzhi1=0;
}
5 总结
参考文献:
1.李照青.单机原理与接口技术。北京航空航天大学出版社. 1999.3
2.马忠梅.单片机的C语言应用程序设计.北京航空航天大学出版社.2003.1.13.
3.张石.微控制器原理及接口技术实验教程.沈阳:学出版社.2004.1
附1:光电米测试仪元器件清单
附图:系统电路原理图
附录1业务开通测试报告模板中国联合网络通信有限公司省际数字专线电路开通测试报告用户名称用户联系人测试人员测试日期中国联通分公司数字…
中国联合网络通信有限公司XX分公司互联网高速专线电路开通测试报告用户名称用户联系人测试人员测试日期测试说明一PING测试按照惯例一…
心电检测电路的设计报告一设计目的及其意义心肌是由无数个心肌细胞组成由窦房结发出的兴奋按一定的途径和时程依次向心房和心室扩布引起整个…
我来到大连XXX有限电子公司进行为期10周的实习培训。这里充满了和谐与朝气,充满了团结与智慧。本公司大连XX电子有限公司(简称:大…
RC一阶电路的响应测试实验目的1测定RC一阶电路的零输入响应零状态响应及完全响应2学习电路时间常数的测量方法3掌握有关微分电路和积…
RC一阶电路的响应测试实验目的1测定RC一阶电路的零输入响应零状态响应及完全响应2学习电路时间常数的测量方法3掌握有关微分电路和积…
东莞市新兴电路板有限公司扩建项目环境影响报告书简本建设单位东莞市新兴电路板有限公司评价单位江苏久力环境工程有限公司20xx年12月…
移动电源测试老化报告1移动电源测试仪测试操作1电池内阻电压2PCB线路板输入输出充放电性能测试定义测试充电状态下的各种指标测试设备…
1.实验摘要1、研究RC电路的零输入响应和零状态响应。用示波器观察响应过程。电路参数:R=100K、C=10uF、Vi=5V2.从…