工大创客馆-焊接科技网欢迎您

banner

一步步构建搭接,焊接制作最小测温系统

/
前面我们讲述了应用ds 18b20构建最小测温系统,并给出了完整的程序,同时考虑到ds 18b20的实际问题是最难设定时序问题,因此又详细的给出设计和检测方法,关于这些大家可以查看前面的文章。那么下面我们针对这个最小测温系统给出电路板构建。构建过程即用电路板或者是手工电烙铁进行焊接,从而完成用实物搭建来测试ds 18b20测温系统是否正确。
 
1、单个数码管验证   
第一步,准备材料,如图1所示。有单片机系统、电路板和Ds 18b20,发现没有两位数码管,我就从其他地方卸下两个1位数码管。
 
考虑到LED数码管的型号命名各厂家不统一,各厂家或同一厂家生产的不同型号的LED数码管,即使封装尺寸完全相同,其性能和引脚排列有可能大相径庭,而厂家说明书或相关的参数手册我也无法找到。所以只能自己验证了单个数码管各个引脚,确定公共极。
查询到LED数码管的主要参数数据如下: 正向压降UF(≤1.8V), 最大工作电流(40mA),反向击穿电压(8V)。
我的数码管是左右两侧双列直插结构,如图2 所示。简单起见,我就用两节的电池盒来验证。如同3  所示。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
具体做法为:取两节普通1.5V干电池放进电池盒构成串联(3V)电路,只是简单验证,忽略限流电阻器。首先查到这样结构的结构图有两种,如图4 所示。将电池盒的电极引线接在接在可能的公共极上(即使不是公共极没没事),另一引线依次移动接触其他引脚。通过试验,当构成回路时,对应笔段就发光显示。用这种方法可以快速测出数码管公共极,以及是否有断笔(某一笔段不能显示)或连笔(某些笔段连在一起),我的验证结果是共阳极,结构如图4中1的那个。
 
2、原程序修改 
由于现在我们只使用两个单位的数码管,而不是一个双位数码管,这样程序也应该进行相应的修改。可以看到,修改后的程序采用了P0口P2口,这对理解Ds 18b20最小测温系统更方便,更简单易懂,当然实用性也差一些。修改后的仿真运行结果如图5所示,程序如下:
 
#include "reg51.h"
#include "intrins.h"  
 
#define DIGTAL1 P0 
#define DIGTAL2 P2 
#define uchar unsigned char 
#define u8 unsigned char
#define uint unsigned int
#define u16 unsigned int
sbit     DS18B20_PORT=P3^4;                        
uint code DIGTAL[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
 
void delay_10us(u16 ten_us)
{
while(ten_us--); 
}
void delay_ms(u16 ms)
{
u16 i,j;
for(i=ms;i>0;i--)
for(j=110;j>0;j--);
}
 
void ds18b20_reset(void)
{
DS18B20_PORT=0; 
delay_10us(75); 
DS18B20_PORT=1; 
delay_10us(2); 
}
 
u8 ds18b20_check(void)
{
u8 time_temp=0;
while(DS18B20_PORT&&time_temp<20) 
{
time_temp++;
delay_10us(1); 
}
if(time_temp>=20)return 1;
else time_temp=0;
while((!DS18B20_PORT)&&time_temp<20) 
{
time_temp++;
delay_10us(1);
}
if(time_temp>=20)return 1;
return 0;
}
 
u8 ds18b20_read_bit(void)
{
u8 dat=0;
DS18B20_PORT=0;
_nop_();_nop_();
DS18B20_PORT=1; 
_nop_();_nop_();
if(DS18B20_PORT)dat=1;
else dat=0;
delay_10us(5);
return dat;
 
u8 ds18b20_read_byte(void)
{
u8 i=0;
u8 dat=0;
u8 temp=0;
 
for(i=0;i<8;i++)
{
temp=ds18b20_read_bit();
dat=(temp<<7)|(dat>>1);
}
return dat; 
}
 
void ds18b20_write_byte(u8 dat)
{
u8 i=0;
u8 temp=0;
for(i=0;i<8;i++)
{
temp=dat&0x01;
dat>>=1;
if(temp)
{
DS18B20_PORT=0;
_nop_();_nop_();
DS18B20_PORT=1; 
delay_10us(6);
}
else
{
DS18B20_PORT=0;
delay_10us(6);
DS18B20_PORT=1;
_nop_();_nop_(); 
}
 
void ds18b20_start(void)
{
ds18b20_reset();
ds18b20_check();
ds18b20_write_byte(0xcc);   
 ds18b20_write_byte(0x44); 
}
 
u8 ds18b20_init(void)
{
ds18b20_reset();
return ds18b20_check(); 
}
 
float ds18b20_read_temperture(void)
{
float temp;
u8 dath=0;
u8 datl=0;
u16 value=0;
 
ds18b20_start();
ds18b20_reset();
ds18b20_check();
ds18b20_write_byte(0xcc);
    ds18b20_write_byte(0xbe);
datl=ds18b20_read_byte();
dath=ds18b20_read_byte();
value=(dath<<8)+datl;
temp=value*0.0625*100+0.5;
return temp;
}
 
void main()
int i=0;
    int temp_value;
 ds18b20_init();
 
while(1)
i++;
if(i%50==0)
temp_value=ds18b20_read_temperture();
DIGTAL1=DIGTAL[temp_value % 10000 / 1000];
DIGTAL2=DIGTAL[temp_value % 1000 / 100];
}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3、ds 18b20测温系统电路搭建与电子焊接
 
尽管测温系统的电路原理图是很简单,但由于涉及很多引脚,所以不方便用面包板搭建,这里我们直接用电路板辅助进行手工电子焊接,来检验所设计的db18b20最简测系统是否正确。
 
温度传感器DS18B20只有一个数据管脚,因此将其数据管脚接
到某一单片机I/O管脚即可。但需要注意的是,为了使传感器正常工作,须在电源输入(VCC)
和数据管脚(DQ)间并联一个4.7kR左右的电阻,否则输入的温度会随意跳动,可能烧坏线路(高电平对低电平间没有消耗的短路现象)。
 
我们选择的是烙铁焊接,操作要点是烙铁(最高30W)尖端温度不超过300℃;焊接时间不超过3秒;焊接位置至少离胶体2毫米。因为温度过高或时间过长都会烧坏芯片,为了更好地保护LED数码管,LED数码管胶体与PC板应保持2mm以上的间距,以使焊接热量在引脚中散除。
 
电子焊接制作后的测温系统如图6所示,连接电源,实测结果如图7所示,为证明焊接制作成功,我们选择了数显测温表来做对比,也如图7所示。
 
 
 
 
 
 
 
 
 
 
 
敬告:本内容为制作人独立制作,非经制作人书面授权,请不要转载发布!