智能仪器设计课程设计.docx

上传人:wj 文档编号:721116 上传时间:2023-04-29 格式:DOCX 页数:16 大小:549.01KB
下载 相关 举报
智能仪器设计课程设计.docx_第1页
第1页 / 共16页
智能仪器设计课程设计.docx_第2页
第2页 / 共16页
智能仪器设计课程设计.docx_第3页
第3页 / 共16页
智能仪器设计课程设计.docx_第4页
第4页 / 共16页
智能仪器设计课程设计.docx_第5页
第5页 / 共16页
智能仪器设计课程设计.docx_第6页
第6页 / 共16页
智能仪器设计课程设计.docx_第7页
第7页 / 共16页
智能仪器设计课程设计.docx_第8页
第8页 / 共16页
智能仪器设计课程设计.docx_第9页
第9页 / 共16页
智能仪器设计课程设计.docx_第10页
第10页 / 共16页
智能仪器设计课程设计.docx_第11页
第11页 / 共16页
智能仪器设计课程设计.docx_第12页
第12页 / 共16页
智能仪器设计课程设计.docx_第13页
第13页 / 共16页
智能仪器设计课程设计.docx_第14页
第14页 / 共16页
智能仪器设计课程设计.docx_第15页
第15页 / 共16页
智能仪器设计课程设计.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

智能仪器设计课程设计.docx

《智能仪器设计课程设计.docx》由会员分享,可在线阅读,更多相关《智能仪器设计课程设计.docx(16页珍藏版)》请在冰点文库上搜索。

智能仪器设计课程设计.docx

课程名称:

智能仪器设计课程设计

实验项目:

_设计智能仪表

专业班级:

学号:

学生姓名:

指导教师:

20 年 1 月 12 日

目 录

一、设计目的及要求 3

二、设计思路 3

三、硬件电路原理图与设计 3

3.1智能仪表基本模块硬件电路 3

3.2智能仪表基本模块的功能 8

四、测温模块设计 9

4.1热电偶 9

4.2热电偶信号调理电路 10

五、驱动双向晶闸管设计 10

六、软件设计 11

6.1主程序 11

6.2子程序 12

七、总结 16

一、设计目的及要求

实现智能数字显示仪表。

要求8位数码管显示(4位显示测量值,4位显示设定值),

4输入按钮(功能选择、数码管选择、数字增加、数字减少),可设定上下限报警(蜂鸣器报警)。

适配B型(铂铑30)热电偶,测温范围为400℃~1200℃。

采用位式(两位、三位,具有滞环)控制、并用晶闸管过零驱动1000W电加热器(电源电压为AC220V)。

二、设计思路

通过B型(铂铑30)热电偶测量的答题思路为

三、硬件电路原理图与设计

3.1智能仪表基本模块硬件电路

智能仪表基本模块由单片机、输入按钮、硬件显示和通信接口组成原理图:

.

JLED

4

3

2

1

.

Jkey1

1

2

3

4

13

12

10

11

15

1

2

3

4

5

6

7

9

1312

10

11

15

1

2

3

4

5

6

7

9

SN74HC595

14

SER QHQH1

QA

RCK QB

QCSRCLRQD

SRCKQEQFQG

G

SN74HC595

14

G QA

RCK QBQC

SRCLRQD

SRCKQEQFQG

SER QHQH1

11

11

3

5

10

1

2

4

7

abcdefgh

3

5

10

1

2

4

7

abcdefgh

.

abcdefgh

.

.

510¦¸x8

SM2

LLM

RMR

SM1

LLM

RMR

n812

n79

n68

n56

n412

n39

n28

n16

.

.

.

.

.

.

.

hgf

ed

cba

+5V

510¦¸x4

Uy1

Uy2

AN1AN2AN3

AN4

Rz1510

J5951

3

2

1

data

RCKSRCK

+5V

.

(1)最小系统板电路

n8n7n6n5n4n3n2n1

(2)电源电路

(3)按键电路

(4)扬声器电路

(5)数码管电路

(6)信号调理电路

(7)功率驱动电路

(8)LED电路

3.2智能仪表基本模块的功能:

(1)具有两排8个是数码管显示,分别显示测量值与设定值,数码管由74HC595驱动,因此只需要3个单片机引脚,可以用SPI接口引脚:

PB4、PB5(MOSI)和PB7(SCK),或是采用I/O引脚搭配时序的方法驱动。

(2)具有4个按钮:

功能选择按钮、数码管选择按钮、数字加按钮、数字减按钮。

按钮直接连在单片机引脚,低电平有效。

(3)具有4个LED灯,用于显示状态,直接连到单片机引脚,低电平有效。

智能仪表的外形:

PV

SV

.

SET

ÖÇÄÜÒDZ

.

.

.

其中上排数码管显示测量值,下排数码管显示设定值,4个按钮用三个,右上侧有4个发光二极管。

四、测温模块设计

4.1热电偶

B型热电偶在热电偶系列中具有准确度最高,稳定性最好,测温温区宽,使用寿命长,测温上限高等优点。

适用于氧化性和惰性气氛中,也可短期用于真空中,但不适用于还原性气氛或含有金属或非金属蒸气气氛中。

B型热电偶一个明显的优点是不需用补偿导线进行补偿,因为在0~50℃范围内热电势小于3μV。

B型热电偶不足之处是热电势,热电势率较小,灵敏度低,高温下机械强度下降,对污染非常敏感,贵金属材料昂贵,因而一次性投资较大。

两种不同成分的导体两端接合成回路,当接合点的温度不同时,在回路中就会产生电动势,这种现象称为热电效应,而这种电动势成为热电势,也称为热电动势,热电偶就是利用这种原理进行温度测量的。

其中,直接用做测量介质温度的一端叫作工作端(称为测量端),另一端叫做冷端(称为补偿端)。

冷端与显示仪表或配套仪表连接,显示仪表会显示出热电偶所产生的热电势。

热电偶将热能转换为电能,用所产生的热电势测量温度,对于热电偶的热电势,应注

意以下问题:

(1)热电偶所产生的热电势大小,与热电偶的长度和直径无关,只与热电偶材料的成分和两端的温差有关

(2)当热电偶的两个热电偶丝材料成分确定后,热电偶电势的大小,只与热电偶的温度差有关;若热电偶冷端的温度保持一定,则热电势仅是工作端温度的单值函数

本设计要求的B型(铂铑30)热电偶测温范围如下表

热电偶分类

热电偶电极材料

温度范

( C)

热电动势(mV)/温度

( C)

正极

负极

B

铂铑30

铂铑6

0—1800

0/0 18.84/1800

.

.

.

D11N4001

JD1

~220V

L N

G1

JRELAY

R1

300¦¸C1

104

1

2

TLP521-1+12V

4

3

9013

Q1

R1

10k¦¸

R1

5.1k¦¸

R5

470¦¸

0.047uFC3

J1_1

J1_2

.

¼ÓÈÈÆ÷2000W

.GND12

GND12

加热器1000W

JC1

2

1

4.2热电偶信号调理电路

采用LM35的B00000000 型热电偶冷端补偿电路

B型热电偶在0度时的热电势为0mV,在1600度时的热电势为18.84mV。

若输出电压为0.2-3.3v。

因此放大器输出电压方程为:

1)0.2=m*0+b和2)3.3=m*18.84+b算出m、b的值然后根据

3)m=[R2/(R1+R2)][(Rf+Rg)/Rg]和4)b=Vref[R1/(R1+R2)][(Rf+Rg)/Rg]算出实验所需的数据

五、驱动双向晶闸管设计

本系统采用晶闸管脉冲调制驱动电路,其负载为1000W的电加热器(电源电压为

220VAC)。

单片机驱动晶闸管脉冲调制驱动器的电路如下图所示。

8

1

7

5

2

4

6

3

+12V

.

单片机驱动晶闸管脉冲调制驱动器的电路

六、软件设计

6.1主程序

#include#include

unsignedcharvadc; //vadc测得的放大电势值

unsignedintvar; //测得的温度值

Unsignintdata[8]; //全局变量unsignedcharxs[8]; //数据缓存

unsignedchardisp[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,//共阳数码

0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xFE,0xFF};

unsigned intweizhi[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};高电平有效*/

unsignedcharLED0,LED1,LED2,LED3;

Voidmain(void) //主函数

{

unsigncharadc_time;unsigncharsaomiao_time;unsigncharxianshi_time;

init_devices();adc_time=0;}

while

(1)

While(adc_time=1) //测温

{adc();

Charlp(); //滤波

PID();

Shuchu();adc_time=0;}

While(saomiao_time==1)

{saomiao1(); //扫描按键并存放数据

Saomiao_time=0;}while(xianshi_time==1)

{spihc(); //数码管显示

LED(); //LED灯显示

xianshi_time=0;}

}

#pragmainterrupt_handlerint_TCCR1A:

7 //定时器1的TCCR1A组比较匹配中断服务程序

{staticunsignedcharn;

n++;

If(n==20) //200ms

adc_time=1; //adc转换

Saomiao_time=1; //扫描PD口按键

xianshi_time=1; //显示数码管

}

6.2子程序

(1)ADC初始化函数

Voidadc_init(void)

{ADCSRA=0x00; //ADCSRA–ADC控制和状态寄存器

ADMAX=0x20; //选择外部参考电压,通道0,左对齐

ADCSRA=0xE2;

SFIOR=0Xa0; //SFIOR-特殊功能IO寄存器,定时器1比较匹配B

}

(2)ADC转换程序

Voidadc(void)

{staticunsignedcharn;

while(!

(ADCSRA&(1<

ADH=ADCH; //8位转换

If(n<5)

Value_adc[n++]=ADH;

Else

n=0;}

(3)算术平均值滤波子函数VoidCharlp(void)

{Intsum=0;

Charcount;

For(count=0;count<5;count++)

{ sum+=Value_adc[count]; //获取ADC转换结果,计算相加

Delay();}vadc=sum/5;

}

(4)定时器初始化函数

VoidT1_init(void) //初始化定时器,产生10ms周期中断

{OCR1A=1249;TIMSK|=(1<

TCCR1B=0x08; //定时器工作在CTC计数器模式

TCCR1B|=0x02; //设定定时器1的分频值为8分频

}

(5)显示LED灯子程序

VoidLED(void)

{if(LED0==1)PORTB^=0x01;If(LED1==1)

PORTB|=1<<1;If(LED2==1)PORTB|=1<<2;If(LED3==1)

PORTB|=1<<3;

}

(6)定时器1的TCCR1A组比较匹配中断服务程序

#pragmainterrupt_handlerint_TCCR1A:

7 //定时器1的TCCR1A组比较匹配中断服务程

{staticunsignedcharn;

n++;

If(n==20) //200ms

adc_time=1; //adc转换

Saomiao_time=1; //扫描PD口按键

xianshi_time=1; //显示数码管

}

(7)SPI初始化

VoidSPI_init(void)

SPDR=(1<<6)|(1<<4)|(1<<5)|(1<<1)|(1<<0); //使能SPI主机模式,设置时钟速率为

fck/128

}

(8)引脚初始化函数

Voidport_init(void) //引脚初始化函数

{PORTA=0x80; //AD通道PA0口输入模拟信号

DDRA=0x80;

PORTB=0xff; //PB输出LED灯

DDRB=0xff;

PORTC=0xff; //PC输出数码管

DDRC=0xff;

PORTD=0x00; //PD口输入按钮信号

DDRD=0x00;

}

(9)系统初始化函数

Voidinit_devices(void) //系统初始化

{CLI();

port_init();

adc_init;T1_init;SPI_init;SEI();

}

(10)扫描子程序

Voidsaomiao1(void)

{unsignedinti;

Staticunsignedintj,m,k;

If(j==0)

{if(PIND|=0xFE) //判断PD0引脚 功能键

for(i=0;i<<2000;i++);if(PIND|=0xFE)

while(PIND|=0xFE);

{j+=1;

if(j>3)j=0;}

else

saomiao2();shuju();

if(j==1) //LED灯亮

{LED1=1;

data[3]=data[2];} //设定并存放报警上限值

Elseif(j==2)

{LED2=1;data[4]=data[2];} //设定并存放报警下限值

Elseif(j==3)

{ED3=1;data[5]=data[2];} //设定并存放给定值

}

(11)数码管、按钮子程序

Voidsaomiao2(void) //选择数码管按钮

{unsignedintp;if(m==0)

if(PIND|=0xFD) //判断PD1引脚

for(p=0;p<<2000;p++);if(PIND|=0xFD)

while(PIND|=0xFD);

{m+=1;

if(m>4)m=0;}

else

saomiao3();

}

(12)判断数据增减子程序

Voidsaomiao3(void) //判断数据增减

{unsignedintq;

If(0

if(PIND|=0xFB) //判断PD2引脚

for(q=0;q<<2000;q++);if(PIND|=0xFB)

while(PIND|=0xFB);

{k+=1;}

if(PIND|=0xF7) //判断PD3引脚

for(q=0;q<<2000;q++);if(PIND|=0Xf7)

while(PIND|=0xF7);

{k-=1;}

Elsek=0;

}

(13)数据设定存放子程序

Voidshuju(void)

{If(m==1)

data[2]+=k;if(m==2)data[2]+=1<<4;

if(m==3)data[2]+=1<<8;

if(m==4)data[2]+=1<<12;}

(14)向HC595输出数据的函数

voidxianshi(unsignedcharX) //向HC595输出数据的函数

{unsignedchari;for(i=8;i>=1;i--)

{if(X&0x80)PORTC.5=1;elsePORTC.5=0; //先输出低位X<<=1;

PORTC.7=0;

PORTC.7=1;

}

}

(15)显示数码管子程序

voidspihc595(void) //显示子程序

{unsignedchari;

{

{data[0]=var; //显示测量值

data[1]=data[4]; //显示给定值定值

if(LED1==1)

data[1]=data[2]; //显示报警上限值

if(LED2==1)

data[1]=data[3]; //显示报警下限值xs[0]=data[1]/1000%10;

xs[1]=data[1]/100%10;xs[2]=data[1]/10%10;xs[3]=data[1]%10;xs[4]=data[0]/1000%10;xs[5]=data[0]/100%10;xs[6]=data[0]/10%10;xs[7]=data[0]%10;

}

xianshi(weizhi[i]); //位输出

xianshi(disp[xs[i]]); //段输出

PORTC.6=0; //锁存信号低电平

PORTC.6=1; //锁存信号高电平i++;if(i==8)i=0;

}

}

七、总结

在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。

在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。

学会了合作,学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世。

智能仪表的课程设计使我加深了对于所学知识的理解,巩固了所学的知识,学会了用

Protel99SE软件设计制作简单的单片机电路及其设计封装PCB图。

从生疏到较熟练地应用软件设计单片机的过程中,并不是一帆风顺,我在设计过程中也遇到了不少自己没有想到的问题和困难,只有理论的自己发现要将这些理论灵活运用起来还是非常困难的。

在这次设计过程中,体现出自己单独设计模具的能力以及综合运用知识的能力,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,

从而加以弥补。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2