用单片机实现的简单测温电路.docx

上传人:b****8 文档编号:11378671 上传时间:2023-02-28 格式:DOCX 页数:20 大小:74.43KB
下载 相关 举报
用单片机实现的简单测温电路.docx_第1页
第1页 / 共20页
用单片机实现的简单测温电路.docx_第2页
第2页 / 共20页
用单片机实现的简单测温电路.docx_第3页
第3页 / 共20页
用单片机实现的简单测温电路.docx_第4页
第4页 / 共20页
用单片机实现的简单测温电路.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

用单片机实现的简单测温电路.docx

《用单片机实现的简单测温电路.docx》由会员分享,可在线阅读,更多相关《用单片机实现的简单测温电路.docx(20页珍藏版)》请在冰豆网上搜索。

用单片机实现的简单测温电路.docx

用单片机实现的简单测温电路

用单片机实现的测温电路设计

利用单片机实现极简单的测温电路单片机在电子产品中的应用已经越来越广泛,在很多的电子产品中也用到了温度检测和温度控制,但那些温度检测与控制电路通常较复杂,成本也高,本文提供了一种低成本的利用单片机多余I/O口实现的温度检测电路,该电路非常简单,且易于实现,并且适用于几乎所有类型的单片机。

其电路如下图所示:

图中:

P1.0、P1.1和P1.2是单片机的3个I/O脚;RK为100k的精密电阻;RT为100K-精度为1%的热敏电阻;R1为

利用单片机实现极简单的测温电路

单片机在电子产品中的应用已经越来越广泛,在很多的电子产品中也用到了温度检测和温度控制,但那些温度检测与控制电路通常较复杂,成本也高,本文提供了一种低成本的利用单片机多余I/O口实现的温度检测电路,该电路非常简单,且易于实现,并且适用于几乎所有类型的单片机。

其电路如下图所示:

图中:

P1.0、P1.1和P1.2是单片机的3个I/O脚;

RK为100k的精密电阻;

RT为100K-精度为1%的热敏电阻;

R1为100Ω的普通电阻;

C1为0.1μ的瓷介电容。

其工作原理为:

1.先将P1.0、P1.1、P1.2都设为低电平输出,使C1放电至放完。

2.将P1.1、P1.2设置为输入状态,P1.0设为高电平输出,通过RK电阻对C1充电,单片机内部计时器清零并开始计时,检测P1.2口状态,当P1.2口检测为高电平时,即C1上的电压达到单片机高电平输入的门嵌电压时,单片机计时器记录下从开始充电到P1.2口转变为高电平的时间T1。

3.将P1.0、P1.1、P1.2都设为低电平输出,使C1放电至放完。

4.再将P1.0、P1.2设置为输入状态,P1.1设为高电平输出,通过RT电阻对C1充电,单片机内部计时器清零并开始计时,检测P1.2口状态,当P1.2口检测为高电平时,单片机计时器记录下从开始充电到P1.2口转变为高电平的时间T2。

5.从电容的电压公式:

可以得到:

T1/RK=T2/RT,即RT=T2×RK/T1

通过单片机计算得到热敏电阻RT的阻值。

并通过查表法可以得到温度值。

从上面所述可以看出,该测温电路的误差来源于这几个方面:

单片机的定时器精度,RK电阻的精度,热敏电阻RT的精度,而与单片机的输出电压值、门嵌电压值、电容精度无关。

因此,适当选取热敏电阻和精密电阻的精度,单片机的工作频率够高,就可以得到较好的测温精度。

当单片机选用4M工作频率,RK、RT均为1%精度的电阻时,温度误差可以做到小于1℃。

如果P1.2具有外部上升沿中断的功能,程序可以更简单,效果更好。

单片机工作的程序流程图如下:

 

1、型号说

 

MF

52

103

H

3435

F

A

NTC热敏电阻

环氧系列

电阻值

阻值允差

B值

B值允差

B值类别

10KΩ

±5%

3435K

±1%

B25/50

2、电气性能

序号

项目

符号

测试条件

最小值

正常值

最大值

单位

3-1.

25℃的电阻值

R25

Ta=25±0.05℃

PT≦0.1mw

9.9

10.0

10.1

3-2.

50℃的电阻值

R50

Ta=50±0.05℃

PT≦0.1mw

/

4.0650

/

3-3.

B值

B25/50

3436

3435

3504

K

3-4.

耗散系数

σ

Ta=25±0.5℃

2.0

/

/

mw/℃

3-5.

时间常数

τ

Ta=25±0.5℃

/

/

15

sec

3-6.

绝缘电阻

/

500VDC

50

/

/

3-7.

使用温度范围

/

/

-55

/

+125

3、机械试验

项目

技术要求

测试条件及方法

4-1.可焊性

引出端焊料自由流动和浸润良好,上锡面积95%以上

将引出端沾助焊剂后,浸入温度为230±5℃锡槽中,锡面距NTC本体下端2-2.5mm处,持续2±0.5S

(参照IEC60068-2-20试验Ta/GB2423.28Ta)

4-2.耐焊接热

无可见性损伤

ΔR/R25≤±2%

将引出端浸入温度为260±5℃锡槽中,锡面距NTC本体下端5mm处持续5±1S

(参照IEC60068-2-20试验Tb/GB2423.28Tb)

4-3.引出端强度

无脱落

ΔR/R25≤2%

试验Ua:

拉力5N,持续10S;

(参照IEC60068-2-21/GB2423.29U试验)

4、可靠性试验

序号

项目

技术要求

测试条件及方法

5-1.

高温试验

ΔR/R25≤±2%

125±5℃,通电1000±24h,DC0.2mA

(参照IEC60068-2-2/GB2423.2试验)

5-2.

低温试验

ΔR/R25≤±2%

-55±5℃,通电1000±24h,DC0.2mA

(参照IEC60068-2-1/GB2423.1试验)

5-3.

耐潮湿试验

ΔR/R25≤±2%

40±2℃,90%-95%RH环境下放置100±24h

(参照IEC60068-2-3/GB2423.3试验)

5-4.

温度冷热循环试验

ΔR/R25≤±2%

–55℃×30min→80℃×5min→125℃×30min→80℃×5min,反复5次

(参照IEC60068-2-14/GB2423.22试验)

5、使用注意事项

将产品引线裁剪成所需要的长度,注意最小长度≧5mm。

MF5210K3435温度特性表

R25℃=10K

B(25/50)=3435K

T(℃)

R(KΩ)

T(℃)

R(KΩ)

T(℃)

R(KΩ)

T(℃)

R(KΩ)

-40

190.5562

-27

99.5847

-14

53.1766

-1

29.2750

-39

183.4132

-26

94.6608

-13

50.7456

0

28.0170

-38

175.6740

-25

90.0326

-12

48.4294

1

26.8255

-37

167.6467

-24

85.6778

-11

46.2224

2

25.6972

-36

159.5647

-23

81.5747

-10

44.1201

3

24.6290

-35

151.5975

-22

77.7031

-9

42.1180

4

23.6176

-34

143.8624

-21

74.0442

-8

40.2121

5

22.6597

-33

136.4361

-20

70.5811

-7

38.3988

6

21.7522

-32

129.3641

-19

67.2987

-6

36.6746

7

20.8916

-31

122.6678

-18

64.1834

-5

35.0362

8

20.0749

-30

116.3519

-17

61.2233

-4

33.4802

9

19.2988

-29

110.4098

-16

58.4080

-3

32.0035

10

18.5600

-28

104.8272

-15

55.7284

-2

30.6028

11

18.4818

T(℃)

R(KΩ)

T(℃)

R(KΩ)

T(℃)

R(KΩ)

T(℃)

R(KΩ)

12

18.1489

25

10.0000

38

6.1418

51

3.9271

13

17.6316

26

9.5762

39

5.9343

52

3.7936

14

16.9917

27

9.1835

40

5.7340

53

3.6639

15

16.2797

28

8.8186

41

5.5405

54

3.5377

16

15.5350

29

8.4784

42

5.3534

55

3.4146

17

14.7867

30

8.1600

43

5.1725

56

3.2939

18

14.0551

31

7.8608

44

4.9976

57

3.1752

19

13.3536

32

7.5785

45

4.8286

58

3.0579

20

12.6900

33

7.3109

46

4.6652

59

2.9414

21

12.0684

34

7.0564

47

4.5073

60

2.8250

22

11.4900

35

6.8133

48

4.3548

61

2.7762

23

10.9539

36

6.5806

49

4.2075

62

2.7179

24

10.4582

37

6.3570

50

4.0650

63

2.6523

T(℃)

R(KΩ)

T(℃)

R(KΩ)

T(℃)

R(KΩ)

T(℃)

R(KΩ)

64

2.5817

77

1.7197

90

1.2360

103

0.8346

65

2.5076

78

1.6727

91

1.2037

104

0.8099

66

2.4319

79

1.6282

92

1.1714

105

0.7870

67

2.3557

80

1.5860

93

1.1390

106

0.7665

68

2.2803

81

1.5458

94

1.1067

107

0.7485

69

2.2065

82

1.5075

95

1.0744

108

0.7334

70

2.1350

83

1.4707

96

1.0422

109

0.7214

71

2.0661

84

1.4352

97

1.0104

110

0.7130

72

2.0004

85

1.4006

98

0.9789

73

1.9378

86

1.3669

99

0.9481

74

1.8785

87

1.3337

100

0.9180

75

1.8225

88

1.3009

101

0.8889

76

1.7696

89

1.2684

102

0.8610

6.测温及显示子程序

#include

#defineU8unsignedchar

#defineU16unsignedint

sbitwent=P1^0;

sbitwenc=P1^1;

sbitwenp=P1^2;

sbitclk=P3^0;

sbitsid=P3^1;

/*延时子程序*/

voiddelayms(U16ms)

{

U16i;

for(;ms>0;ms--)

{

for(i=124;i>0;i--);

}

}

unsignedintcewen()

{unsignedlongt0,t1,w;

unsignedintt,r;

TMOD=0x10;

TH1=0;

TL1=0;

went=wenc=wenp=0;//放电

delayms(50);

wenc=1;

went=wenp=0;//

TR1=1;

while(!

wenp);

TR1=0;

t0=TH1*256+TL1;

TH1=0;

TL1=0;

went=wenc=wenp=0;

delayms(50);

went=1;

wenc=wenp=0;

TR1=1;

while(!

wenp);

TR1=0;

t1=TH1*256+TL1;

w=t1*100/t0;

r=w;

if(268

elseif(257

elseif(246

elseif(236

elseif(227

elseif(218

elseif(209

elseif(201

elseif(193

elseif(186

elseif(185

elseif(181

elseif(176

elseif(170

elseif(163

elseif(155

elseif(148

elseif(140

elseif(134

elseif(127

elseif(121

elseif(115

elseif(110

elseif(105

elseif(100

elseif(96

elseif(92

elseif(88

elseif(85

elseif(81

elseif(79

elseif(76

elseif(73

elseif(71

elseif(68

elseif(66

elseif(64

elseif(61

elseif(59

elseif(57

elseif(55

elseif(r==55)t=41;

elseif(52

elseif(50

elseif(48

elseif(r==48)t=45;

elseif(45

elseif(r==45)t=47;

elseif(42

elseif(r==42)t=49;

elseif(39

elseif(r==39)t=51;

elseif(r==38)t=52;

elseif(35

elseif(r==35)t=54;

elseif(r==34)t=55;

elseif(r==33)t=56;

elseif(r==32)t=57;

elseif(29

elseif(r==29)t=59;

elset=60;

returnt;

}

 

/*发送数据子程序*/

voidsend_dat(U8dat)

{

U8i;

for(i=0;i<8;i++)

{

clk=0;

dat<<=1;

sid=CY;

clk=1;

}

}

U8get_byte()/*读取一个字节数据*/

{

U8i,temp1=0,temp2=0;

for(i=0;i<8;i++)

{

temp1=temp1<<1;

clk=0;

clk=1;

clk=0;

if(sid)temp1++;

}

for(i=0;i<8;i++)

{

temp2=temp2<<1;

clk=0;

clk=1;

clk=0;

if(sid)temp2++;

}

return((0xf0&temp1)+(0x0f&temp2));

}

voidcheck_busy()

{

do

{

send_dat(0xfc);

}

while(get_byte()&0x80);

}

 

voidsend_cmd(U8cmd)//送指令

{

check_busy();

send_dat(0xf8);//

send_dat(cmd&0xf0);//

send_dat((cmd&0x0f)<<4);//取高4位

}

voidwrite_char(U8dat)//写数据

{

check_busy();

send_dat(0xfa);//rw=0;rs=1

send_dat(dat&0xf0);

send_dat((dat&0x0f)<<4);

}

voidlcd_clear()//清除显示

{

send_cmd(0x01);

}

 

voidlcd_pos(U8y_add,U8x_add)//显示位置

{

switch(y_add)

{

case1:

send_cmd(0X80|x_add);break;

case2:

send_cmd(0X90|x_add);break;

case3:

send_cmd(0X88|x_add);break;

case4:

send_cmd(0X98|x_add);break;

default:

break;

}

}

 

voidlcd_wstr(U8y_add,U8x_add,U8*str)//在任何位置写字符串

{

U8i;

lcd_pos(y_add,x_add);

for(i=0;str[i]!

='\0';i++)

{

write_char(str[i]);

}

}

voidwrite_figer(U8y_add,U8x_add,U16figer)//在任何位置写数字

{

U8d[5],i,j;

lcd_pos(y_add,x_add);

d[4]=figer%10;

d[3]=figer%100/10;

d[2]=figer%1000/100;

d[1]=figer%10000/1000;

d[0]=figer/10000;

for(i=0;i<5;i++)

{

if(d[i]!

=0)break;///不等于位开始零输出

}

if(5==i)i--;

if(i==4)write_char(0x30);//数据装完,准备发送

for(j=i;j<5;j++)

{

write_char(d[j]|0x30);//取得的数字加上0x30也即得到该数字的ASCII码,再将该数字发送去显示

}

}

 

voidlcd_init()//

{

delayms

(1);

send_cmd(0x30);//不扩充

send_cmd(0x0C);//0000,1100整体显示,游标off,游标位置off

send_cmd(0x01);//0000,0001清DDRAM

/*send_cmd(0x02);//0000,0010DDRAM地址归位

send_cmd(0x80);//1000,0000设定DDRAM7位地址000,0000到地址计数器A*/

}

main()

{U16i=9000;

U16r;

P0=0xff;

lcd_init();

/*lcd_clear();

lcd_wstr(1,0,"桂林电子科技大学");

lcd_wstr(2,1,"机电工程学院");

lcd_pos(3,0);

write_char('a');

write_char('b');

lcd_pos(3,4);

write_char('c');

write_char('d');

lcd_wstr(4,0,"*****!

!

!

--*****");

delayms(2000);*/

//while(i--)

lcd_clear();

lcd_wstr(1,0,"路程:

");

//write_figer(1,3,r);

lcd_wstr(1,5,"m");

lcd_wstr(2,0,"速度:

");

//write_figer(2,3,r);

lcd_wstr(2,5,"m/s");

lcd_wstr(3,0,"温度:

");

r=cewen();

write_figer(3,3,r);

lcd_wstr(3,5,"℃");

delayms(64660);

}

/*voidmain()

{

unsignedlongi,r,t0;

unsignedintj;

P2=0xff;

for(i=0;i<50000;i++);//延时一会儿

//floatr;

//unsignedcharr;

TH1=50;

TL1=100;

t0=TH1*256+TL1;

r=t0*10/30000;

j=r;

P2=j;

for(i=0;i<50000;i++);//延时一会儿

//P2=(unsignedchar)r;

}*/

充电电路:

RC充放电电路图

  RC充放电电路是电阻器应用的基础电路,在电子电路中会经常见到,因此了解RC充放电特性是非常有用的。

  RC充放电电路如图1所示。

图申开关S原来停留在B点位置,电容器C上没有电荷,它两真个电压即是零。

当开关接到A点时,电源E通过R向电容器C充电。

在电路接通的瞬间,电容器电压Vc=0,充电电流最大值即是E/R。

随着电容器两极上电荷的积累,Vc逐渐增大,电阻器R上的电压VR=E-Vc,充电电流i=(E-V

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

当前位置:首页 > 初中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1