DS18B20温度计制作详细全过程
- 格式:doc
- 大小:1.51 MB
- 文档页数:15
使用DS18B20制作电子温度计——中北大学:马政贵本制作中使用单总线数字温度传感器DS18B20进行温度的测定,并通过51单片机控制1602液晶进行显示。
制作好的电子温度计如下图所示(显示当前温度为20.5摄氏度):第一部分:DS18B20的使用先介绍一下单总线的特点:单总线即只有一根数据线,系统中的数据交换,控制都由这根线完成。
单总线通常要求外接一个约为 4.7K —10K 的上拉电阻,这样,当总线闲置时其状态为高电平。
再介绍一下DS18B20的特点:( 1 )采用单总线的接口方式,与微处理器连接时,仅需要一条口线即可实现微处理器与 DS18B20 的双向通讯。
单总线具有经济性好,抗干扰能力强,适合于恶劣环境的现场温度测量,使用方便等优点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。
( 2 )测量温度范围宽,测量精度高: DS18B20 的测量范围为 -55 ℃ ~+ 125 ℃ ; 在 -10~+ 85°C 范围内,精度为 ± 0.5°C 。
( 3 )在使用中不需要任何外围元件。
( 4 )支持多点组网功能:多个 DS18B20 可以并联在惟一的单线上,实现多点测温。
( 5 )供电方式灵活:DS18B20 可以通过内部寄生电路从数据线上获取电源。
因此,当数据线上的时序满足一定的要求时,可以不接外部电源,从而使系统结构更趋简单,可靠性更高。
( 6 )测量参数可配置 DS18B20 的测量分辨率可通过程序设定 9~12 位。
( 7 )负压特性电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。
( 8 )掉电保护功能 DS18B20 内部含有 EEPROM ,在系统掉电以后,它仍可保存分辨率及报警温度的设定值。
DS18B20 具有体积更小、适用电压更宽、更经济、可选更小的封装方式,更宽的电压适用范围,适合于构建自己的经济的测温系统,因此也就被设计者们所青睐。
DS18B20数字温度计的设计与实现一、实验目的1.了解DS18B20数字式温度传感器的工作原理。
2.利用DS18B20数字式温度传感器和微机实验平台实现数字温度计。
二、实验内容与要求采用数字式温度传感器为检测器件,进行单点温度检测。
用数码管直接显示温度值,微机系统作为数字温度计的控制系统。
1.基本要求:(1)检测的温度范围:0℃~100℃,检测分辨率 0.5℃。
(2)用4位数码管来显示温度值。
(3)超过警戒值(自己定义)要报警提示。
2.提高要求(1)扩展温度范围。
(2)增加检测点的个数,实现多点温度检测。
三、设计报告要求1.设计目的和内容2.总体设计3.硬件设计:原理图(接线图)及简要说明4.软件设计框图及程序清单5.设计结果和体会(包括遇到的问题及解决的方法)四、数字温度传感器DS18B20由DALLAS半导体公司生产的DS18B20型单线智能温度传感器,属于新一代适配微处理器的智能温度传感器,可广泛用于工业、民用、军事等领域的温度测量及控制仪器、测控系统和大型设备中。
它具有体积小,接口方便,传输距离远等特点。
1.DS18B20性能特点DS18B20的性能特点:①采用单总线专用技术,既可通过串行口线,也可通过其它I/O 口线与微机接口,无须经过其它变换电路,直接输出被测温度值(9位二进制数,含符号位),②测温范围为-55℃-+125℃,测量分辨率为0.0625℃,③内含64位经过激光修正的只读存储器ROM ,④适配各种单片机或系统机,⑤用户可分别设定各路温度的上、下限,⑥内含寄生电源。
2. DS18B20内部结构DS18B20内部结构主要由四部分组成:64位光刻ROM,温度传感器,非挥发的温度报警触发器TH 和TL,高速暂存器。
64位光刻ROM 是出厂前被光刻好的,它可以看作是该DS18B20的地址序列号。
64位ROM 结构图如图2所示。
不同的器件地址序列号不同。
DS18B20的管脚排列如图1所示。
自制可调温度控制器(附原理图和源程序>自制可调温度控制器近期我发现很多DIY或是电子爱好的朋友们比较关注电子温度控制器制作的文章,前面我也发过一篇AT89C2051控制的简单温度计制作的文章,但是因为电路比较简易,而且没有调温功能.应部分朋友的要求我在此转载一篇温正伟在无线电杂志上发表过的一款可以方便调节、设定温度的控制器。
1.功能介绍笔者设计的这一款温度控制器是使用仍是比较常用的DS18B20集成温度传感器,还是用七段数码管做显示,完成温度采集与处理控制的CPU仍是AT89C2051单片机,但该电路具有电路简单,制作起来也无需调试,安装好后就可以使用等方便DIY的优点。
该电路最大的特点是用可以直观方便的调节所要限定的温度值,温度值是用3个7段共阳极数码管显示的,上电后会显示当前的温度值,按设定键时会闪烁显示设定温度值,这时可以按上/下调节键调整设定温度值,再次按下设定键时返回当前温度显示同时会对设定温度值进行保存,这个设定值会保存在DS18B20中,掉电后也不会丢失,下次上电时,单片机会自动读入上次的温度设定值。
长按设定键为关闭显示和温控,再次按下时功能再次打开。
电路中还设计了一路继电器控制,程序中设定超出设定温度时继电器被驱动吸合。
2.元器件背景及选用表一是元器件列表。
在这个电路中关键的两个元器件分别是单片机AT89C2051和温度传感传感芯片DS18B20。
AT89C2051具有2K的可多次擦写的FLASH存储器,有15个I/O口,用于做一些小型的控制显示和数据采集系统是很好的选择,本制作中2051单片机除要完成数据采集、处理、控制和显示的任务外,还要完按键值的采集、处理。
如果要用常规的数字加模拟电路实现起来就相对困难多了。
DS18B20是DALLAS半导体公司<现属MAXIM公司)设计生产的单总线数字温度传感器,单总线也就是说只用一根I/O引线完成数据的输入输出功能,所以它的体积很小,而且电压适用范围在3-5.5V,封装形式除有SO/uSO的8PIN贴片式,还有更方便的三极管形式的TO-92封装<封装形式和引脚说明请看图一)。
DS18B20工作过程及时序DS18B20内部的低温度系数振荡器是一个振荡频率随温度变化很小的振荡器,为计数器1提供一频率稳定的计数脉冲。
高温度系数振荡器是一个振荡频率对温度很敏感的振荡器,为计数器2提供一个频率随温度变化的计数脉冲。
初始时,温度寄存器被预置成-55℃,每当计数器1从预置数开始减计数到0时,温度寄存器中寄存的温度值就增加1℃,这个过程重复进行,直到计数器2计数到0时便停止。
初始时,计数器1预置的是与-55℃DS18B20工作过程及时序DS18B20内部的低温度系数振荡器是一个振荡频率随温度变化很小的振荡器,为计数器1提供一频率稳定的计数脉冲。
高温度系数振荡器是一个振荡频率对温度很敏感的振荡器,为计数器2提供一个频率随温度变化的计数脉冲。
初始时,温度寄存器被预置成-55℃,每当计数器1从预置数开始减计数到0时,温度寄存器中寄存的温度值就增加1℃,这个过程重复进行,直到计数器2计数到0时便停止。
初始时,计数器1预置的是与-55℃相对应的一个预置值。
以后计数器1每一个循环的预置数都由斜率累加器提供。
为了补偿振荡器温度特性的非线性性,斜率累加器提供的预置数也随温度相应变化。
计数器1的预置数也就是在给定温度处使温度寄存器寄存值增加1℃计数器所需要的计数个数。
DS18B20内部的比较器以四舍五入的量化方式确定温度寄存器的最低有效位。
在计数器2停止计数后,比较器将计数器1中的计数剩余值转换为温度值后与0.25℃进行比较,若低于0.25℃,温度寄存器的最低位就置0;若高于0.25℃,最低位就置1;若高于0.75℃时,温度寄存器的最低位就进位然后置0。
这样,经过比较后所得的温度寄存器的值就是最终读取的温度值了,其最后位代表0.5℃,四舍五入最大量化误差为±,即0.25℃。
温度寄存器中的温度值以9位数据格式表示,最高位为符号位,其余8位以二进制补码形式表示温度值。
测温结束时,这9位数据转存到暂存存储器的前两个字节中,符号位占用第一字节,8位温度数据占据第二字节。
ds18b20程序设计傻瓜式讲解
DS18B20 是一款数字温度传感器,可以直接读出被测温度,并采用 9 位数字量串行输出。
下面是一个简单的 DS18B20 程序设计讲解:
1. 初始化
在 DS18B20 通信过程中,首先需要初始化数据线,即将其置为高电平。
在初始化时,需要持续至少 480 微秒的高电平。
2. 跳过 ROM
在 DS18B20 中,每个传感器都有一个唯一的 ROM 序列号,可以通过跳过ROM 操作来避免对 ROM 进行操作。
具体操作是先发出一个低电平,然后持续至少 60 微秒的高电平。
3. 发送命令
在跳过 ROM 后,需要向传感器发送命令。
常用的命令有温度转换命令和读取温度命令。
温度转换命令是 0x44,读取温度命令是 0xBE。
4. 读取数据
在发送命令后,需要等待传感器响应。
传感器响应的标志是数据线上的低电平。
在低电平持续约 60-240 微秒后,数据线将变为高电平,此时可以开始读取数据。
每次读取一位数据后,需要将数据线置为低电平,等待传感器响应。
5. 数据解析
DS18B20 的数据由 9 位数字量组成,其中最高位是符号位。
如果最高位为0,则表示温度为正数;如果最高位为 1,则表示温度为负数。
其余 8 位为温度值,可以通过一定的计算公式将其转换为实际温度值。
以上就是 DS18B20 的程序设计流程。
需要注意的是,在实际应用中,还需要考虑数据传输的校验、错误处理等问题。
DS18B20温度计精简设计受杜洋老师MINI48定时器制作启发,制作了本精简温度计。
材料:如下图所示DS18B20温度传感器、STC12C5A60S2单片机、40针插座一个、共阳4联排LED、12Mhz晶振、30p电容(2个)、电源接头、导线、热缩套管。
另外用到AB胶图中没有列出。
制作注意点:1、把40针插座靠近单片机电源口那个地方剪掉,便于安装电源插座,如下图显示,可以在电源座接头引线的位置先把插针取消,便于焊接,免除不必要的麻烦。
设计好位置之后,把电源座用AB胶粘在CPU背面。
2、晶振、电容焊接时候,注意检查不要有短路电路图源程序下列程序也是用网上的程序进行修改,主要改动部分是显示输出部分,而温度转换是采用的查表法(具体原理还没有看懂),但该程序经过编译,100%通过。
#include < STC12C5A60S2.h >#include < intrins.h >#define uchar unsigned char#define uint unsigned intbit presence ;//****************************************************************************************** *********//sbit DQ = P1^6 ; //定义DS18B20端口DQsbit LED_A =P4 ^ 4; //设置LED点阵屏连接的I/O口sbit LED_B =P0 ^ 6; //设置LED点阵屏连接的I/O口sbit LED_C =P3 ^ 0; //设置LED点阵屏连接的I/O口sbit LED_D =P3 ^ 2; //设置LED点阵屏连接的I/O口sbit LED_E =P3 ^ 3; //设置LED点阵屏连接的I/O口sbit LED_F =P4 ^ 5; //设置LED点阵屏连接的I/O口sbit LED_G =P4 ^ 7; //设置LED点阵屏连接的I/O口sbit LED_DP =P3 ^ 1; //设置LED点阵屏连接的I/O口sbit LED1= P2^7 ; //定义LED数码管位脚sbit LED2= P4^6 ;sbit LED3= P0^7 ;sbit LED4= P1^7 ;//****************************************************************************************** *********//unsigned char data temp_data[2] = {0x00,0x00} ;unsigned char data display[5] = {0x00,0x00,0x00,0x00,0x00} ;unsigned char code ditab[16] = {0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09} ;unsigned char code mytab[4] = {0xF9,0xB0,0x92,0x99} ;//纯粹用来测试,可删除//****************************************************************************************** *********//const uchar tab[]={ /* 根据共阴极字型编码表获取0~9,A~B字型代码*/ 0x3f,0x06,0x5b,0x4f,//0~30x66,0x6D,0x7D,0x07,//4~70x7F,0x6F,0x77,0x7C,//8~b0x39,0x5E,0x79,0x71,//c~f0x00//mie};//****************************************************************************************** *********//const uchar tab1[]={ /* 根据共阳极字型编码表获取0~9,A~B字型代码*/ 0xC0,0xF9,0xA4,0xB0,//0~30x99,0x92,0x82,0xF8,//4~70x80,0x90,0x88,0x83,//8~b0xC6,0xA1,0x86,0x8E,//c~f0xff//mie};#define delayNOP() ; {_nop_() ;_nop_() ;_nop_() ;_nop_() ;} ;/*******************************************************************/void delay1(int ms){unsigned char y ;while(ms--){for(y = 0 ; y<250 ; y++){_nop_() ;_nop_() ;_nop_() ;_nop_() ;}}}/******************************************************************//*us级延时函数*//*******************************************************************/void Delay(unsigned int num) //延时6us,误差0us{unsigned char a;while(num--!=0){for(a=15;a>0;a--);}}/*void Delay(unsigned int num){while( --num ) ;}*//******************************************************************************************* **/void PUTLED (unsigned char d){ //LED段输入unsigned char i;i = d & 0x01;if(i == 0x00){ LED_A = 0;}i = d & 0x02;if(i == 0x00){ LED_B = 0;}i = d & 0x04;if(i == 0x00){ LED_C = 0;}i = d & 0x08;if(i == 0x00){ LED_D = 0;}i = d & 0x10;if(i == 0x00){ LED_E = 0;}i = d & 0x20;if(i == 0x00){ LED_F = 0;}i = d & 0x40;if(i == 0x00){ LED_G = 0;}i = d & 0x80;if(i == 0x00){ LED_DP = 0;}}/*******************************************************************/void dis_off(void){LED_A =1; //设置LED点阵屏连接的I/O口LED_B =1; //设置LED点阵屏连接的I/O口LED_C =1; //设置LED点阵屏连接的I/O口LED_D =1; //设置LED点阵屏连接的I/O口LED_E =1; //设置LED点阵屏连接的I/O口LED_F =1; //设置LED点阵屏连接的I/O口LED_G =1; //设置LED点阵屏连接的I/O口LED_DP =1; //设置LED点阵屏连接的I/O口LED1= 0 ;LED2= 0;LED3=0 ;LED4= 0 ;}/*******************************************************************/ void displayLED(void){dis_off();PUTLED(tab1[display[3]]);//显示百位LED1=1;Delay(150);dis_off();PUTLED(tab1[display[2]]);//显示十位LED2=1;Delay(150);dis_off();PUTLED(0x7f&tab1[display[1]]);//显示个位和小数点LED3=1;Delay(150);dis_off();PUTLED(tab1[display[0]]);//显示小数位LED4=1;Delay(150);dis_off();}/*******************************************************************/ /*初始化ds1820 */ /*******************************************************************/ Init_DS18B20(void){DQ = 1 ; //DQ复位Delay(8) ; //稍做延时DQ = 0 ; //单片机将DQ拉低Delay(90) ; //精确延时大于480usDQ = 1 ; //拉高总线Delay(8) ;presence = DQ ; //如果=0则初始化成功=1则初始化失败Delay(100) ;DQ = 1 ;return(presence) ; //返回信号,0=presence,1= no presence}/* 读一个字节*//*******************************************************************/ ReadOneChar(void){unsigned char i = 0 ;unsigned char dat = 0 ;for (i = 8 ; i > 0 ; i--){DQ = 0 ; // 给脉冲信号dat >>= 1 ;DQ = 1 ; // 给脉冲信号if(DQ)dat |= 0x80 ;Delay(4) ;}return (dat) ;}/* 写一个字节*//*******************************************************************/ WriteOneChar(unsigned char dat){unsigned char i = 0 ;for (i = 8 ; i > 0 ; i--){DQ = 0 ;DQ = dat&0x01 ;Delay(5) ;DQ = 1 ;dat>>=1 ;}}/* 读取温度*//*******************************************************************/ Read_Temperature(void){Init_DS18B20() ;WriteOneChar(0xCC) ; // 跳过读序号列号的操作WriteOneChar(0x44) ; // 启动温度转换Init_DS18B20() ;WriteOneChar(0xCC) ; //跳过读序号列号的操作WriteOneChar(0xBE) ; //读取温度寄存器temp_data[0] = ReadOneChar() ; //温度低8位temp_data[1] = ReadOneChar() ; //温度高8位}/* 数据转换与温度显示*/ /*******************************************************************/ Disp_Temperature(){display[4]=temp_data[0]&0x0f ;display[0]=ditab[display[4]] ; //查表得小数位的值display[4]=((temp_data[0]&0xf0)>>4)|((temp_data[1]&0x0f)<<4) ;display[3]=display[4]/100 ;display[1]=display[4]%100 ;display[2]=display[1]/10 ;display[1]=display[1]%10 ;if(display[3]==0x00) //高位为0,不显示{display[3]=16 ;if(display[2]==0x00) //次高位为0,不显示display[2]=16 ;}}/* 主函数*//************************************/void main(){ P0M1=0x00;P0M0=0x80;P1M1=0x00;P1M0=0x80;P2M1=0x00;P2M0=0x80;P4M1=0x00;P4M0=0x40;P4SW = 0xff; //启动P4接口while(1){Read_Temperature() ;Disp_Temperature() ;displayLED();}}。
DS18B20温度计制作全过程(转载请注明出处,谢谢)元件盒一直躺着几只DS18B20,从没试过,决定用它做个电子温度计,说干就干......1、构思Mega8做大脑、小塑料盒做外壳、3位LED数码管显示、废弃手机电池做电源、线路板热转印制作、设2个开关(1个按键式、1个拨动式可常开)、RS232升级程序。
先想这些吧,开始干了。
2、画电路出图电路原理图很简单,很快用PROTEL99SE画完;根据小塑料盒大小设计PCB板,布好线,这步也不复杂。
裁好热转印纸,准备出图了,我喜欢打印时选择"Show Holes",这样在焊盘上就有孔。
用我刚买的HP3050Z一体机,那天逛科技市场,看了感觉不错就搬回来了,从没用它打过转印纸,还不知道效果呢。
......图出来了,还不错!比较满意。
3、制作线路板①找块单面敷铜板, 按合适尺寸裁好,用很细很细的沙纸打磨光亮,冲洗干净,吹干。
千万别省事,一定要干净,否则转印效果不好。
也可以用稀三氯化铁擦涂一下,能提高转印效果。
②对好位置,将打好的热转印 纸盖到敷铜板上,用不干胶粘到平整的耐热材料上,强烈建议别直接放在你家的红木写字台上,我用的是铺剩的复合地板。
用电熨斗进行转印,慢慢移动,使图及板受热均匀,尤其是边缘部分,要特别照顾一下。
力量和时间我全是靠经验,大概20秒左右,稍用力。
③加热后,纸与板粘在一起了,很烫,一定小心,别烫了你的小手。
扔到洗手池里,用凉水降温,我实在等不及它自然冷却。
④板子凉了,从一边轻轻撕下转印纸,看看效果吧,很不错!是10Mil的线啊,没断一根。
⑤扔到三氯化铁熔液里腐蚀。
要想速度快,最好是热熔液+搅拌+毛刷轻刷。
应该好了吧,看看......⑥洗净炭粉。
你们都是用什么洗啊,我用汽油,气味大点,但非常好用,用纸巾蘸一点就擦干净了,擦后用肥皂洗一下板子。
什么?你没有汽油,这好办,拿个钢钉,拿把锤子,拿个瓶子,趁没人的时候到你家楼下找辆底盘高点的车,爬到车底下,在油箱上凿个洞,汽油就流出来了,接汽油的时候千万别抽烟,切记。
DS18B20温度计制作详细全过程
发布: 2009-9-09 10:34 | 作者: 玲珑 | 查看: 200次
元件盒一直躺着几只DS18B20,从没试过,决定用它做个电子温度计,说干就干......
1、构思
Mega8做大脑、小塑料盒做外壳、3位LED数码管显示、废弃手机电池做电源、线路板热转印制作、设置2个开关(1个按键式、1个拨动式可常开)、RS232升级程序。
先想这些吧,开始干了。
2、画电路出图
电路原理图很简单,很快用PROTEL99SE画完;
根据小塑料盒大小设计PCB板,布好线,这步也不复杂。
裁好热转印纸,准备出图了,我喜欢打印时选择"Show Holes",这样在焊盘上就有孔。
用我刚买的HP3050Z一体机,那天逛科技市场,看了感觉不错就搬回来了,从没用它打过转印纸,还不知道效果呢。
......图出来了,还不错!比较满意。
3、制作线路板
①找块单面敷铜板,按合适尺寸裁好,用很细很细的沙纸打磨光亮,冲洗干净,吹干。
千万别省事,一定要干净,否则转印效果不好。
也可以用稀三氯化铁擦涂一下,能稍微提高转印效果。
②对好位置,将打好的热转印纸盖到敷铜板上,用不干胶粘到平整的耐热材料上,强烈建议别直接放在你家的红木写字台上,我用的是铺剩的复合地板。
用电熨斗进行转印,慢慢移动,使图及板受热均匀,尤其是边缘部分,要特别照顾一下。
力量和时间我全是靠经验,大概20秒左右,稍用力。
③加热后,纸与板粘在一起了,很烫,一定小心,别烫了你的小手手。
扔到洗手池里,用凉水降温,我实在等不及它自然冷却。
④板子凉了,从一边轻轻撕下转印纸,看看效果吧,很不错!是10Mil的线啊,没断一根。
⑤扔到三氯化铁熔液里腐蚀。
要想速度快,最好是热熔液+搅拌+毛刷轻刷。
应该好了吧,看看......
⑥洗净炭粉。
你们都是用什么洗啊,我用汽油,气味大点,但非常好用,用纸巾蘸一点就擦干净了,擦后用肥皂洗一下板子。
什么?你没有汽油,这好办,拿个钢钉,拿把锤子,拿个瓶子,趁没人的时候到你家楼下找辆底盘高点的车,爬到车底下,在油箱上凿个洞,汽油就流出来了,接汽油的时候千万别抽烟,切记。
接完汽油后,别忘了给人家油箱用什么东西堵上,以免漏光油耽误人家办急事。
(取油方法仅限于想象,请勿模仿,哈哈)
4、线路板钻孔,学学CNC
线路板手动钻孔是件麻烦事,特别是IC脚的排孔,往往钻不垂直钻不整齐。
今天试试用雕刻机自动钻孔,开始了......
①用PROTEL99SE将PCB输出PDF格式文件,分辨率设置为600DPI,如果你装了虚拟图形打印机,当然也可以直接输出BMP格式图像文件,我用的是PdfCreator虚拟打印机。
用PhotoShop CS2打开PDF文件,分辨率输入600DPI......
②处理图像
将图像水平翻转,将角上4个螺丝孔的焊盘染为另一种颜色,我将它染成了绿色,存为BMP格式文件。
③生成刀路文件
启动ArtCAM Pro 8.1,打开刚才处理好的BMP格式文件,不要使用快捷方式<通过图像产生模型>,否则调入的图像会转换为灰度,要使用菜单的[文件]-[打开]或打开文件按钮。
确定后,会蹦出模型尺寸设置对话框,设置为600DPI,单位毫米......
双击绿色焊盘,选择绿色图形,然后在对话框上点<关闭>......
在<助手>里的<矢量-位图>点<位图到矢量>小图标......
退出通过位图产生矢量对话框,点<接受>即可。
这时4个绿色焊盘会由虚线框住。
下面要生成刀路文件了。
在<刀具路径>的<二维刀具路径>里点击<钻孔>图标
在<钻孔>设置里,开始深度0,结束深度2.5,随便选择个尖刀,设置下切步距3,钻孔中心位于全部已选矢量,材料厚度3,起个名称叫“定位”吧,点击<现在>,再点<关闭>,在<刀具路径>框上方就出现了[定位]的名称,单击它变成蓝色,点击<保存刀具路径>......
选择Tryax格式,起个名字,还是叫“定位”吧,保存刀具路径文件。
******焊盘钻孔的刀具路径与以上方法相同,不再赘述******
④开始自动钻孔啦
启动MACH2,调入“定位的.tap”,我喜欢用诊断模式,可以输入XYZ值控制主轴位置,按<Alt+7>进入诊断模式。
将线路板放到雕刻机工作面上,操控刻刀到线路图左下角位置,刀尖离板3mm,置XYZ全零。
不用开主轴电机,空跑一遍试试,看刀是否落位准确,根据偏差调整线路板位置,直到4个点能落位准确,用热熔胶固定线路板。
刀置于X0,Y0位置。
调入钻孔刀路文件。
换上0.8mm钻头,控制主轴下降,将钻头尖贴近线路板,将Z 置零,打开主轴电机,点<启动>,雕刻机开始自动钻孔了......
外壳开孔的加工方法同上,测量好开孔位置,用雕刻机尖刀开孔......
***(本论坛不支持WMV视频文件格式,有兴趣的可访问作者的
)***
5、制作测温头
找个大小合适的电解电容。
首先脱了它的衣扒了它的皮,然后抽了它的筋剔了它的肉,剩下个骨头架;
然后将里面灌上导热硅脂,把焊上线的DS18B20放进去,呵呵,有点象寄居蟹;
找根粗细合适的圆珠笔杆,将测温头用环氧树脂胶固定住,这样能测量液体温度,没事就测测水烧开了没有。
6、开始总装了
将半成品运到总装车间,在总工程师领导下,各部门协调有序地运作起来。
动力部门找了块原装名牌废手机锂电池,其实还能用,就是待机时间太短;
机械部门找来了一颗钢珠,用做按钮开关的按键,说是增加温度计金属感,提高档次,再者这么白白滑滑的,摸着也舒服;
线路板元件很少,几只电阻、1个按钮开关、1个拔动开关、1只Mega8、引出排线接LED数码管,再连上DS18B20的3根线......很快就焊接完毕。
把盖子安上,怎么样,不错吧!
还有2个接口需要交待,一个是充电口,一个是RS232口。
Mega8里烧进了BootLoader升级程序,用RS232口更新程序。
请看下面这个图,右边是充电接口,中间是电源拔动开关,左边是RS232接口。
7、电路及程序
电路非常简单,这是电路图:
程序用BASCOM-AVR编写,也是比较简单,以前从没用过DS18B20,现学现编。
采用9位精度,设置好后存入DS18B20的EEPROM。
程序没仔细推敲,只是完成简单的显示温度功能。
最多显示3位数字,(-10,100)显示1位小数,其它区间显示整数。