北工大电工学训练课设报告
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
void main(){
float Disp_Data;
int16 cm,mm;
uint8 code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};//0123456789不带小数点的位
Opamp_1_Start();
2
2.1
图2前向通道硬件(固件)设计
图3前向通道引脚分配
如图所示,为前向通道的整体固件设计,其中,R_PT100就是传感器铂电阻在电路中所处的位置,由于被测温度的变化,影响到铂电阻的阻值,从而最终影响到运算放大器的放大效果,最终显示通过软件设计计算出的被测温度数值。
在电路中采用两个电位器来完成对A/D转换输出数值的控制,如图2中R_4、R_5所示,使温度在可测范围内时,A/D转换的数值在0~4096( 之间,保持两个电位器的值不变,此时,电路的放大效果应该只与铂电阻的阻值有关,进而完成对温度的测量与显示。
图4PT100电阻随温度变化
2.2.2其余元器件选型
如图2中所示,定值电阻选型:R_1=2kΩ,R_2=R_3=10kΩ;
电位器选型:R_4=100kΩ,R_5=10kΩ。
2.2.3电路的调试
(1)用电位器(200Ω和20Ω电位器串联)替代铂电阻,进行调试,当电位器为156Ω时,调整R_5至Pin3处电压Uo1=1.65V,此时A/D转换应显示为2048左右。
cm=(uint16)voltageRawCount1;
mm=voltageRawCount1*100;
mm=mm%100;
LCD_Char_1_Position(ROW_0,COLUMN_9);
LCD_Char_1_PrintNumber(cm);
LCD_Char_1_PrintString(".");
Opamp_2_Start();
Opamp_3_Start();
ADC_DelSig_1_Start();
LCD_Char_1_Start();
PWM_1_Start();
Clock_2_Start();
LCD_Char_1_Position(ROW_0,COLUMN_0);
LCD_Char_1_PrintString("V Count:");
if(((uint16)(Disp_Data))/100==0&&((uint16)(Disp_Data/10))%10==0)
c=0x00;
else{
c=table[((uint16)(Disp_Data/10))%10];
}
if(((uint16)(Disp_Data))/100==0)
d=0x00;
}
void Timer_Int(void){
static int8 cyc=0, t0=0;
static int8 nyn=0;
float xi,yi;
static float yi_1=0;
int16 voltageRawCount;
uint8 b5,b6;
static uint8 b5c=0,b50,b60;
(2)将电位器调整至100Ω,调整R_4使A/D转换显示为0左右。
(3)调整电位器使其为212Ω,此时,不调整任何器件,AD转换应显示为4096左右。
此时,调试完成。再调整电位器阻值,示数应该在0到4096之间,如果再将电位器换为铂电阻,当改变铂电阻温度时,示数也会跟着改变。
3
3.1
图5用户界面硬件(固件)设计
3
温控器的总体结构如下:
其中,单片机采用实验室的PSOC,电烙铁由老师提供,传感器采用由老师统一提供的铂电阻PT100,后向通道中的功率放大器使用由老师提供的无触点继电器,其余部分小组内成员自己完成,用户界面显示采用LED7段数码管。
具体如何制作并完成各个模块,后文会具体说明。
二、
1
硬件电路总体设计图
图8后向通道硬件(固件)设计
图9后向通道引脚分配
后向通道的硬件设计比较简单,我们只需要设计一个PWM模块和无触点继电器就可以了,引脚连接也很简单,只需要连接两个引脚就可以了,值得注意的是:在引脚分配中,我们只分配了继电器的正极引脚Pin_12,而它的负极引脚应该是接地的,继电器的正负两引脚不能接反,否则就会出现错误。
(3)升温速度要快<3分钟
(4)操作要简便(调整温度)
(5)显示要清晰数字显示
(6)电路要简单尽量少分立元件
(7)成本要低廉不使用昂贵元件
图1温控电烙铁
2
本学期的电工学训练,使用PSOC来完成一套控温器的设计,旨在让我们熟悉并掌握简单的PSOC单片机操作与应用,完成一套简单而实用的常见用具的设计。
在这一过程中我们能将课堂上学过的或自学的AD转换、滤波、PID整定等知识活学活用,能做到理解与掌握,并做到以后再遇到同类的问题时能够用这些东西来解决它。同时,以小组合作的方式来完成这一任务,不仅能锻炼我们的团队合作意识,还能培养我们人与人共事的能力。
机械工程与应用电子技术学院
电工课程设计报告
课设名称电烙铁恒温控制器设计与制作
组别第N组
姓名学号彩虹人
同组成员彩虹人
指导老师杨建武
成绩
2016年6月12日
一、
1
在本学期中,我们需要完成用PSOC作为主控元件,制作一套完整的温控器的原理样机。技术要求如下:
(1)温度连续可调30~300℃
(2)温度要准确稳定±0.5℃
3
3.2.1四位七段数码管简介及选型
数码管是一种半导体发光器件,数码管可分为七段数码管和八段数码管,区别在于八段数码管比七段数码管多一个用于显示小数点的发光二极管单元DP(decimal point),其基本单元是发光二极管。
数码管是一类价格便宜使用简单的元器件,可以通过对其不同的管脚输入相对的电流,使其发亮,从而显示出数字能够显示时间、日期、温度等所有可用数字表示的参数。
在这一部分,我们通过控制PWM模块的输出值,来控制电烙铁的输入电压值,从而调节电烙铁的升温速度,以达到控制电烙铁温度的目的。
4.2 元件
这部分我们主要需要的元件是无触点继电器,由老师提供。
4.2.1无触点继电器简介
无触点继电器,即固态继电(Solid State Relay,缩写:SSR)是由半导体控制负载流经固态开关的无接点继电器,输入端系利用发光二极管、光晶体管、功率晶体等半导体电路所组成光耦合器,经内部控制电路触发输出端的硅控整流器(SCR)或双向硅控整流器(TRIAC)进而导通负载电流,因此可以接受低压直流或交流信号输入之后,进而导通高压、高功率之输出电流,具隔离输出入及控制高功率输出电流之效果。
4.2.2PWM功率放大器简介
PWM(Pulse Width Modulator,脉冲宽度调制模块)是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。
ADC_DelSig_1_StartConvert();
Clock_1_Start() ;
Timer_1_Start();
isr_1_Start();
CYGlobalIntEnable;
//a=0x06;
//b=0x5b;
//c=table[3];
//d=table[4];
while(1)
{
for(;;){
if(cyc==0){
Control_Reg_1_Write(a);
Control_Reg_2_Write(0x0E);
}
if(cyc==1){
2
2.2.1铂电阻简介
铂电阻是一种热敏电阻元件,电阻值会随温度改变而发生变化,我们选用的为PT100,其中,100表示它在0℃时阻值为100欧姆。它的阻值会随着温度上升,且阻值是成匀速增涨的。Pt100温度传感器的主要技术参数如下:测量范围:-200℃~+850℃。允通电流≤5mA。另外,pt100温度传感器还具有抗振动、稳定性好、准确度高、耐高压等优点。
三、
1
#include <device.h>
#include <math.h>
#d百度文库fine ROW_0 0
#define COLUMN_0 0
#define COLUMN_9 9
#define COLUMN_10 10
#define COLUMN_11 11
#define CLEAR_TENS_HUNDREDS " "
yi_1=yi;
//标度变换
voltageRawCount1=7.8106E-07*yi*yi+7.5841E-02*yi-1.8463E+01-0.8145;
//动态显示
cyc++;
nyn++;
if(nyn>100)
nyn=0;
if(cyc>3) cyc=0;
Control_Reg_2_Write(0x0F);
uint16 compare;
static int16 pyp=0;
float p,e;
static float e1=0;
float Kp,Ki,Kd;
static float Ie=0,t=0;
unsigned int ar[120];
//AD转换
ADC_DelSig_1_IsEndConversion(ADC_DelSig_1_WAIT_FOR_RESULT);
else{
d=table[((uint16)(Disp_Data))/100];
}
if(Disp_Data==Target_Temp)
a=0x00;
else{
a=table[((uint16)(Disp_Data*10))%10];}
}}
//UpdateDisplay(voltageRawCount);
#define CLEAR_HUNDREDS " 0"
void UpdateDisplay(uint16 voltageRawCount);
float voltageRawCount1;
int a,b,c,d;
uint16 Disp_Count;//显示计时器
int16 Target_Temp;//目标温度
图6用户界面引脚分配
在用户界面部分,我们主要需要完成两方面的任务,不但要完成对温度的显示,而且还要有用户输入部分,让用户手动输入需要的温度值。在此,我们就需要一个4位的七段数码管来进行温度的显示,并选择PSOC上的按键来完成用户对目标温度值的输入。
其中,如图5所示,左边Timer_1模块为一个定时中断,来控制对数码管上数字的扫描显示和软件部分的定时控制;右上Control_Reg_1为七段数码管显示模块,通过真值表的构建,完成对0~9数值及小数点的显示;右下Control_Reg_2是用来控制4为七段数码管的扫描显示;左下的两个按钮就是用来控制用户输入目标温度值的模块。
voltageRawCount=ADC_Delsig_1_GetResult16();
voltageRawCount=voltageRawCount+2048;
//一阶惯性滤波
xi=(float)voltageRawCount;
yi=0.01*xi+0.99*yi_1;
voltageRawCount=(uint16)yi;
在本次试验中,我们需要采用共阴极的4位七段数码管,因此,我们采购MT03641AR型号的数码管,并查找记录了其各个引脚位置,如图7所示:
图74位七段数码管及其引脚
3.2.2其余元器件选型
在数码管每个引脚上,我们都需要接上一个定值电阻以保证安全,因此,我们采购了8个阻值相同的定值电阻R=200Ω。
4
4.1 电路原理介绍与
LCD_Char_1_PrintNumber(mm);
LCD_Char_1_PrintString("C ");
if(Disp_Count>199)
Disp_Data=voltageRawCount1;
else
Disp_Data=Target_Temp;
//拆分数字显示
b=table[((uint16)(Disp_Data))%10]; //求余数
与继电器的基本原理相同,具有两个输入端与两个输出端,输入与输出中间为光隔离,输入端加上直流或交流信号达到额定电流值后,输出端就能从断路转变成通路状态,所以可以让小电流信号通过而激励电磁线圈,控制其接点导通或断开,进而控制大电流负载。让相隔离之大小不同的电力系统间转换高功率输出及隔离输出入,以自动调节、保护电路安全。
float Disp_Data;
int16 cm,mm;
uint8 code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};//0123456789不带小数点的位
Opamp_1_Start();
2
2.1
图2前向通道硬件(固件)设计
图3前向通道引脚分配
如图所示,为前向通道的整体固件设计,其中,R_PT100就是传感器铂电阻在电路中所处的位置,由于被测温度的变化,影响到铂电阻的阻值,从而最终影响到运算放大器的放大效果,最终显示通过软件设计计算出的被测温度数值。
在电路中采用两个电位器来完成对A/D转换输出数值的控制,如图2中R_4、R_5所示,使温度在可测范围内时,A/D转换的数值在0~4096( 之间,保持两个电位器的值不变,此时,电路的放大效果应该只与铂电阻的阻值有关,进而完成对温度的测量与显示。
图4PT100电阻随温度变化
2.2.2其余元器件选型
如图2中所示,定值电阻选型:R_1=2kΩ,R_2=R_3=10kΩ;
电位器选型:R_4=100kΩ,R_5=10kΩ。
2.2.3电路的调试
(1)用电位器(200Ω和20Ω电位器串联)替代铂电阻,进行调试,当电位器为156Ω时,调整R_5至Pin3处电压Uo1=1.65V,此时A/D转换应显示为2048左右。
cm=(uint16)voltageRawCount1;
mm=voltageRawCount1*100;
mm=mm%100;
LCD_Char_1_Position(ROW_0,COLUMN_9);
LCD_Char_1_PrintNumber(cm);
LCD_Char_1_PrintString(".");
Opamp_2_Start();
Opamp_3_Start();
ADC_DelSig_1_Start();
LCD_Char_1_Start();
PWM_1_Start();
Clock_2_Start();
LCD_Char_1_Position(ROW_0,COLUMN_0);
LCD_Char_1_PrintString("V Count:");
if(((uint16)(Disp_Data))/100==0&&((uint16)(Disp_Data/10))%10==0)
c=0x00;
else{
c=table[((uint16)(Disp_Data/10))%10];
}
if(((uint16)(Disp_Data))/100==0)
d=0x00;
}
void Timer_Int(void){
static int8 cyc=0, t0=0;
static int8 nyn=0;
float xi,yi;
static float yi_1=0;
int16 voltageRawCount;
uint8 b5,b6;
static uint8 b5c=0,b50,b60;
(2)将电位器调整至100Ω,调整R_4使A/D转换显示为0左右。
(3)调整电位器使其为212Ω,此时,不调整任何器件,AD转换应显示为4096左右。
此时,调试完成。再调整电位器阻值,示数应该在0到4096之间,如果再将电位器换为铂电阻,当改变铂电阻温度时,示数也会跟着改变。
3
3.1
图5用户界面硬件(固件)设计
3
温控器的总体结构如下:
其中,单片机采用实验室的PSOC,电烙铁由老师提供,传感器采用由老师统一提供的铂电阻PT100,后向通道中的功率放大器使用由老师提供的无触点继电器,其余部分小组内成员自己完成,用户界面显示采用LED7段数码管。
具体如何制作并完成各个模块,后文会具体说明。
二、
1
硬件电路总体设计图
图8后向通道硬件(固件)设计
图9后向通道引脚分配
后向通道的硬件设计比较简单,我们只需要设计一个PWM模块和无触点继电器就可以了,引脚连接也很简单,只需要连接两个引脚就可以了,值得注意的是:在引脚分配中,我们只分配了继电器的正极引脚Pin_12,而它的负极引脚应该是接地的,继电器的正负两引脚不能接反,否则就会出现错误。
(3)升温速度要快<3分钟
(4)操作要简便(调整温度)
(5)显示要清晰数字显示
(6)电路要简单尽量少分立元件
(7)成本要低廉不使用昂贵元件
图1温控电烙铁
2
本学期的电工学训练,使用PSOC来完成一套控温器的设计,旨在让我们熟悉并掌握简单的PSOC单片机操作与应用,完成一套简单而实用的常见用具的设计。
在这一过程中我们能将课堂上学过的或自学的AD转换、滤波、PID整定等知识活学活用,能做到理解与掌握,并做到以后再遇到同类的问题时能够用这些东西来解决它。同时,以小组合作的方式来完成这一任务,不仅能锻炼我们的团队合作意识,还能培养我们人与人共事的能力。
机械工程与应用电子技术学院
电工课程设计报告
课设名称电烙铁恒温控制器设计与制作
组别第N组
姓名学号彩虹人
同组成员彩虹人
指导老师杨建武
成绩
2016年6月12日
一、
1
在本学期中,我们需要完成用PSOC作为主控元件,制作一套完整的温控器的原理样机。技术要求如下:
(1)温度连续可调30~300℃
(2)温度要准确稳定±0.5℃
3
3.2.1四位七段数码管简介及选型
数码管是一种半导体发光器件,数码管可分为七段数码管和八段数码管,区别在于八段数码管比七段数码管多一个用于显示小数点的发光二极管单元DP(decimal point),其基本单元是发光二极管。
数码管是一类价格便宜使用简单的元器件,可以通过对其不同的管脚输入相对的电流,使其发亮,从而显示出数字能够显示时间、日期、温度等所有可用数字表示的参数。
在这一部分,我们通过控制PWM模块的输出值,来控制电烙铁的输入电压值,从而调节电烙铁的升温速度,以达到控制电烙铁温度的目的。
4.2 元件
这部分我们主要需要的元件是无触点继电器,由老师提供。
4.2.1无触点继电器简介
无触点继电器,即固态继电(Solid State Relay,缩写:SSR)是由半导体控制负载流经固态开关的无接点继电器,输入端系利用发光二极管、光晶体管、功率晶体等半导体电路所组成光耦合器,经内部控制电路触发输出端的硅控整流器(SCR)或双向硅控整流器(TRIAC)进而导通负载电流,因此可以接受低压直流或交流信号输入之后,进而导通高压、高功率之输出电流,具隔离输出入及控制高功率输出电流之效果。
4.2.2PWM功率放大器简介
PWM(Pulse Width Modulator,脉冲宽度调制模块)是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。
ADC_DelSig_1_StartConvert();
Clock_1_Start() ;
Timer_1_Start();
isr_1_Start();
CYGlobalIntEnable;
//a=0x06;
//b=0x5b;
//c=table[3];
//d=table[4];
while(1)
{
for(;;){
if(cyc==0){
Control_Reg_1_Write(a);
Control_Reg_2_Write(0x0E);
}
if(cyc==1){
2
2.2.1铂电阻简介
铂电阻是一种热敏电阻元件,电阻值会随温度改变而发生变化,我们选用的为PT100,其中,100表示它在0℃时阻值为100欧姆。它的阻值会随着温度上升,且阻值是成匀速增涨的。Pt100温度传感器的主要技术参数如下:测量范围:-200℃~+850℃。允通电流≤5mA。另外,pt100温度传感器还具有抗振动、稳定性好、准确度高、耐高压等优点。
三、
1
#include <device.h>
#include <math.h>
#d百度文库fine ROW_0 0
#define COLUMN_0 0
#define COLUMN_9 9
#define COLUMN_10 10
#define COLUMN_11 11
#define CLEAR_TENS_HUNDREDS " "
yi_1=yi;
//标度变换
voltageRawCount1=7.8106E-07*yi*yi+7.5841E-02*yi-1.8463E+01-0.8145;
//动态显示
cyc++;
nyn++;
if(nyn>100)
nyn=0;
if(cyc>3) cyc=0;
Control_Reg_2_Write(0x0F);
uint16 compare;
static int16 pyp=0;
float p,e;
static float e1=0;
float Kp,Ki,Kd;
static float Ie=0,t=0;
unsigned int ar[120];
//AD转换
ADC_DelSig_1_IsEndConversion(ADC_DelSig_1_WAIT_FOR_RESULT);
else{
d=table[((uint16)(Disp_Data))/100];
}
if(Disp_Data==Target_Temp)
a=0x00;
else{
a=table[((uint16)(Disp_Data*10))%10];}
}}
//UpdateDisplay(voltageRawCount);
#define CLEAR_HUNDREDS " 0"
void UpdateDisplay(uint16 voltageRawCount);
float voltageRawCount1;
int a,b,c,d;
uint16 Disp_Count;//显示计时器
int16 Target_Temp;//目标温度
图6用户界面引脚分配
在用户界面部分,我们主要需要完成两方面的任务,不但要完成对温度的显示,而且还要有用户输入部分,让用户手动输入需要的温度值。在此,我们就需要一个4位的七段数码管来进行温度的显示,并选择PSOC上的按键来完成用户对目标温度值的输入。
其中,如图5所示,左边Timer_1模块为一个定时中断,来控制对数码管上数字的扫描显示和软件部分的定时控制;右上Control_Reg_1为七段数码管显示模块,通过真值表的构建,完成对0~9数值及小数点的显示;右下Control_Reg_2是用来控制4为七段数码管的扫描显示;左下的两个按钮就是用来控制用户输入目标温度值的模块。
voltageRawCount=ADC_Delsig_1_GetResult16();
voltageRawCount=voltageRawCount+2048;
//一阶惯性滤波
xi=(float)voltageRawCount;
yi=0.01*xi+0.99*yi_1;
voltageRawCount=(uint16)yi;
在本次试验中,我们需要采用共阴极的4位七段数码管,因此,我们采购MT03641AR型号的数码管,并查找记录了其各个引脚位置,如图7所示:
图74位七段数码管及其引脚
3.2.2其余元器件选型
在数码管每个引脚上,我们都需要接上一个定值电阻以保证安全,因此,我们采购了8个阻值相同的定值电阻R=200Ω。
4
4.1 电路原理介绍与
LCD_Char_1_PrintNumber(mm);
LCD_Char_1_PrintString("C ");
if(Disp_Count>199)
Disp_Data=voltageRawCount1;
else
Disp_Data=Target_Temp;
//拆分数字显示
b=table[((uint16)(Disp_Data))%10]; //求余数
与继电器的基本原理相同,具有两个输入端与两个输出端,输入与输出中间为光隔离,输入端加上直流或交流信号达到额定电流值后,输出端就能从断路转变成通路状态,所以可以让小电流信号通过而激励电磁线圈,控制其接点导通或断开,进而控制大电流负载。让相隔离之大小不同的电力系统间转换高功率输出及隔离输出入,以自动调节、保护电路安全。