#第四届立创大赛#AI恒温电烙铁 - 嘉立创EDA开源硬件平台

编辑器版本 ×
标准版 Standard

1、简单易用,可快速上手

2、流畅支持300个器件或1000个焊盘以下的设计规模

3、支持简单的电路仿真

4、面向学生、老师、创客

专业版 professional

1、全新的交互和界面

2、流畅支持超过3w器件或10w焊盘的设计规模,支持面板和外壳设计

3、更严谨的设计约束,更规范的流程

4、面向企业、更专业的用户

标准版 #第四届立创大赛#AI恒温电烙铁

  • 1w
  • 2
  • 35

暂无简介

开源协议: BSD

(未经作者授权,禁止转载)

创建时间: 2019-06-06 21:50:35
更新时间: 2023-03-29 16:59:56
描述
简要介绍: 基于触摸感应+单片机控制的可携带的智能恒温电烙铁,携带方便、智能控制、烙铁芯和烙铁头永不干烧、节能环保、烙铁头和烙铁芯使用寿命延长一倍以上。 一、详细描述:    把触摸+智能控制内置到电烙铁手柄里,当使用者拿起电烙铁时,切换到高功率快速升温恒温模式,当使用者放下电烙铁时,切换到低功率保温节能模式,烙铁芯和烙铁头免于干烧和节省电力,延长了电烙铁使用寿命,普通电烙铁烙铁芯和烙铁头使用寿命是3个月左右,AI恒温电烙铁的烙铁头和烙铁芯寿命寿命在6个月以上。 二、所面临的挑战及所解决的问题; A、面临的挑战:1、把感应电路、单片机、供电芯片如何内置到电烙铁手柄里。2、从闲置状态到使用状态,如何快速升温。3、如何可靠识别使用者状态。 B、解决的问题:使用电烙铁(或者电焊台)者分为研发工程师、调试工程师、维修工程师和电器维修人员、生产线上技术工人以及初学电子技术人员。1、研发工程师、调试工程师调试线路板时,也许几个小时使用一下电烙铁,烙铁80%的时间处于等待状态。因为:a、工程师不会也不可能等到要使用电烙铁时插上电烙铁,上电电烙铁预热需要3-5分钟。b、长期插上电烙铁(或者电焊台),电烙铁烙铁头和烙铁芯就会干烧,充气干烧烙铁头会很脏污,脏污的烙铁头会严重影响焊接质量。2、维修工程师和电器维修人员,由于测量分析时间不一,使用电烙铁或者电焊台的时间也不同,电烙铁(或者电焊台)80%的时间在干烧,另外,一个维修人员背着一个2-3公斤的大焊台,很不方便。3、初学电子技术人员,由于电焊台价格贵,初学电子技术人员买普通的没有恒温功能的电烙铁,没有恒温控制,电烙铁2-3个月就会烧坏,而且电烙铁温度高,焊接焊接质量没有保障。本AI恒温电烙铁,恒温、智能感应控制,携带方便(普通电烙铁大小),价格跟普通恒温电烙铁几乎一样。 三、硬件、软件的关键点: A、硬件: 1、电源芯片、触摸芯片、单片机等硬件如何装进手感好的烙铁小手柄里(大的手柄手感极差,现在没有人使用):电源芯片选用必易科技的KP3310 SOP8分钟,外围元件只有5个元件;触摸芯片选用专用触摸芯片SC01,SOP8封装,单片机选用松翰或者中微12位ADC12  SOP8封装,上述配置元件就能内置到手柄里。 2、烙铁芯:烙铁芯的选择要求,低功率保温模式时,功率在8-10W,高功率工作模式时,要求在3秒内快速升温值350度左右,并且恒温。这样选用内置感温电阻的陶瓷4线发热芯,感温电阻45-55欧姆,发热电阻选用90W功率的陶瓷发热芯,但是这么高的功率发热芯,如何保持恒温。 3、感应模式:由于使用220V或者110V电压,触摸感应片(点)不能外置,一定要在手柄里才安全。同时由于使用者手握时千差万别,如何保证触摸感应可靠。本设计选用专用触摸芯片SC01,+弹簧紧贴手柄内壳, B、软件: 1、烙铁芯发热部位离焊嘴有20mm左右,烙铁芯感温电阻检测到是烙铁芯的温度,不是焊嘴的温度,软件采取先全速加热,再延时一定时间后,再逐步减少输入功率。 2、环境影响,在同样功率下,环境10度和环境36度,烙铁焊嘴的温度相差很大,目前采取时用单片机一路检测环境温度,烙铁工作时,把环境温度低时的影响补偿。 四、材料清单: | | | | | | | --- | --- | --- | --- | --- | | 序号 | 名称 | 编号 | 封装 | 数量 | | 1 | 二极管M7F | D1,D2 | SMD | 2 | | 2 | 单片机8F5701 | IC5 | SOP8 | 1 | | 3 | 可控硅BT131 | Q1 | SOT223 | 1 | | 4 | 电源芯片3310 | IC1 | SOP8 | 1 | | 5 | 电容100uF/10V | C15,C3 | EC8MM_3.81MM | 2 | | 6 | 温度探头1000K | RNTC | | 1 | | 7 | 贴片电阻100K 5% | R1 | 0603 | 1 | | 8 | 贴片电容104 | C8,C10,C13,C14 | 0603 | 3 | | 9 | 贴片电容4.7nF | C5 | 0603 | 1 | | 10 | 贴片电容15pF NPO | C16 | 0603 | 1 | | 11 | 贴片电阻3k 5% | R2,R4 | 0603 | 2 | | 12 | 贴片电阻1k 5% | R11 | 0603 | 1 | | 13 | 贴片电阻1k 1% | R13 | 0805 | 1 | | 14 | 贴片电阻510R 5% | R9,R3 | 0603 | 2 | | 16 | 感应ICSC01 | IC2 | SOP8 | 1 | | 17 | 贴片电容8p NPO | C17 | 0603 | 1 | | 18 | NTC 100K | RNTC1 | | 1 | | 19 | 贴片电阻10k 1% | R12 | 0603 | 1 | | 20 | LED 红色 蓝色 | LED1,LED2 | 0603 | 2 | 五、电烙铁照片: 1、线路板:![微信图片_20190922134752_副本.jpg](//image.lceda.cn/pullimage/hTpi27UsY0ozMFGSZqGo2j5JkhoE7tw004zJqDCn.jpeg) ![微信图片_20190922134746_副本.jpg](//image.lceda.cn/pullimage/TzudHAhLgYbltVUciVywIAAvfWSSkR9X3i7il6gV.jpeg) ![微信图片_20190922134742_副本.jpg](//image.lceda.cn/pullimage/TkiwfhCsd0oTJgIgPD9rs2ocGaQCzTH7kKkDMHp1.jpeg) ![微信图片_20190922134736_副本.jpg](//image.lceda.cn/pullimage/Rr4r90n3JotTbVumfRBj3xqaAZsNMPXPFHdptVAq.jpeg) 2、成品:![微信图片_20190922134706_副本.jpg](//image.lceda.cn/pullimage/JFkgvUcc8fTulVPZMGVHrCzcnfK1QQHrsKc4TJUy.jpeg) 六、视频:见11附件。 七、开源文档:    七、开源文档。 #include #include #include #define  unchar  unsigned char              //8位,值域0~255 #define  unint   unsigned int                 //16位,值域0~65535 #define CLR_ADCCH           (ADM & 0xE0)        // 清除CHS[4:0] #define _EOC                ADM & 0x20          // ADC status (EOC) \#define \_ADENB              ADM \|= 0x80         // ADC enable \(ADENB\) \#define EnADC\_Coverting     ADM \|= 0x40         // ADC converting start \(ADS\) //#define BufSize     20 unint  uiADCL=0; //AD值低8位 unint  uiADC=0; //AD值高4位 unint ADC\_Room\_Temperature=0;// unint Value\_Room\_Temperature=0;//室温ADC unint Value\_Room\_Temperature\_Average=0;//室温平均值 //unint xdata ADC\_Room\_Temperature\_Last=0; unint ADC_NTC=0;// unint Value_NTC=0;//烙铁ADC unint Value\_NTC\_Average=0;//室温平均值 unint Value\_NTC\_Last=0; unint Value_Work=0; unint Value_Work1=0; unint Value_Work2=0; unint Low_Default=4018; unint High_Default=3993; unint Low=3861; unint High=3798; unchar Time_20ms=0; //20ms计数器 unchar Time_500ms=0; unchar Time_1s=0; unchar Time_1m=0; unchar Time_90m=90; unchar Time_240m=240; unchar Time_1h=0; unchar i=0; unchar j=0; unchar Count_50=50; unchar Count_5=5; unchar Open_Time=15; //unchar Count_Heating=0; unchar Mode_Temperature=1; unchar Time_10s=10; unchar Time_45s=45; unchar Time_30s=30; unchar Count_20ms=0; bit Tag_1s=0; //bit Tag_500ms=0; bit Tag_100ms=0; bit Tag_240m=0; bit Tag_90m=0; bit Tag_20ms=0; bit Tag_Touch=0; bit Tag\_Pre\_Insulation=0; bit Tag_Smart=1; bit Tag\_Timing\_Control=1; bit Tag_10s=1; bit Tag\_Temperature\_Setting=1; bit Tag_Compensate=0; bit Tag_45s=0; bit Tag_Compensate1=0; bit Tag_30s=0; bit Tag\_Stop\_High=0; bit Tag\_ADC\_Deal=0; /\*\*\*\*\*\*\*\*\*\*\*\*输入输出定义\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*/ sbit LED_Blue=P0^0;      //蓝色灯 sbit NTC=P0^1; //NTC检测 sbit SCR=P0^2; //可控硅输出 sbit Touch=P0^3;             //触摸接口 sbit Room_Temperature=P0^4; //温度监测 sbit LED_Red=P0^5;     //红色灯 //\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*系统初始化\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* void System_Init(void) { WDTR   = 0x5A;   //清看门狗 CLKSEL = 0x04; //Fcpu=32M/2=16M CLKCMD = 0x69; //使能设置 CKCON  &= 0x4F; //Wait 4 Cycle From=16M //P0OC   \|= 0x02; //1pin开漏输出模式 } //\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*IO输入输出设置\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* void Init_GPIO(void) { P0M  = 0x25;        //1,3,4为输入,其余为输出 P0UR = 0x08;          // 3设为上拉电阻 P0CON=0x12; //1和4只作为模拟输入脚,其余为GPIO P0   = 0x08; //3为高电平,其余为低电平 } //\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*定时器0初始化\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* void Timer0\_Init\_Mode1\(void\) //50ms { TCON0 = 0x22; //定时器外部时钟选择寄存器T1RATE=Fext0/32=32/32=1M TMOD  = 0x65;               // 定时器模式1                               // T0GATE = 0,                               // T0CT = 0, 16位定时器 TH0   = 0xB1; TL0   = 0xE0;        // 65536-45536=20ms初始化初值 TF0   = 0; //没有溢出位 ET0   = 1; //中断开启 TR0   = 1; //定时功能开启 } //\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*ADC初始化\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* void ADC_Init(void) {     ADR \|= 0x40;                    // 开启ADC中断功能 \(GCHS\)     ADR \|= 0x30;                      //1/2时钟源 VREFH = 0x04;                  // 使能内部VDD电压参考     //VREFH &= 0xFD;                  // 使能内部低电压参考     //VREFH \|= 0x03;                  // VHS\[2\] = 0 :  ADC internal VREFH function is depend on VHS\[1:0\]\.                                     // VHS[1:0] = 0X03 : 内部参考电压为VDD. } //\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*ADC处理\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* void ADC_Deal(void) // 只有在保温阶段方去ADC判断 { if\(Tag\_100ms==1&&Tag\_10s==0\) { //Tag_100ms=0; i++; IEN2 \|= 0x01;  //ADC中断使能 _ADENB; //ADC 使能(ADENB),STOP模式下,禁止ADC以省电 ADR  \|= 0x40;                    //开启ADC全局通道\(GCHS\) ADM = CLR\_ADCCH \|0x04; //选中ADC 04通道 P0CON \|= 0x10; //P04置1,作为ADC输入 EnADC_Coverting; while(!_EOC); //等待转换结束 ADC\_Room\_Temperature=uiADC; IEN2 &= 0xFE; //关闭ADC中断 Value\_Room\_Temperature=Value\_Room\_Temperature\+ADC\_Room\_Temperature; if(i==10) { i=0; Value\_Room\_Temperature\_Average=Value\_Room\_Temperature/10; Value\_Room\_Temperature=0; ADC\_Room\_Temperature=0; Tag\_ADC\_Deal=1; } } if(Tag_100ms==1) { Tag_100ms=0; j++; IEN2 \|= 0x01;  //ADC中断使能 _ADENB; //ADC 使能(ADENB),STOP模式下,禁止ADC以省电 ADR  \|= 0x40;                    //开启ADC全局通道\(GCHS\) P0CON \|= 0x02; //P01置1,作为ADC输入 ADM = CLR\_ADCCH \|0x01; //选中ADC 01通道 EnADC_Coverting; while(!_EOC); //等待转换结束 ADC_NTC=uiADC; IEN2 &= 0xFE; //关闭ADC中断 Value\_NTC=Value\_NTC\+ADC\_NTC; if(j==10) { j=0; Value\_NTC\_Average=Value\_NTC/10; Value_NTC=0; ADC_NTC=0; if\(Value\_NTC\_Last\!=0\) { if\(Value\_NTC\_Average=41\)Open\_Time=40; } //Value\_NTC\_Last=Value\_NTC\_Average; } else Value\_NTC\_Last=Value\_NTC\_Average; } } } /\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*按键扫描\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*/ void Key_Scan(void) { if(Tag_10s==1) { SCR=0; if(Touch==0) { Mode_Temperature+=1;     if\(Mode\_Temperature==4\)Mode\_Temperature=1; switch(Mode_Temperature) { //case 1:Low\_Default=3913;High\_Default=3866;Tag\_Temperature\_Setting=1;break;//130\-140 //case 1:Low\_Default=4018;High\_Default=3993;Tag\_Temperature\_Setting=1;break;//130\-140 case 1:Low=3861;High=3798;LED\_Red=1;LED\_Blue=0;Tag\_Temperature\_Setting=0;Value\_Work1=32;break;//140\-150 case 2:Low=3798;High=3725;LED\_Red=0;LED\_Blue=0;Tag\_Temperature\_Setting=0;Value\_Work1=40;break;//150\-160 case 3:Low=3725;High=3640;LED\_Red=0;LED\_Blue=1;Tag\_Temperature\_Setting=0;Value\_Work1=49;break;//160\-170 } while(1) { if(Touch==1) return; //触摸松开跳到主程序 if(Tag_10s==0) return; //10秒定时到跳到主程序 } } } } // \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*室温温度处理\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* void Value\_Work\_Deal\(void\) //头10秒处理室温,因为室温传感器会被烙铁头传热 { if\(Tag\_ADC\_Deal==1&&Tag\_10s==0\) { Tag\_ADC\_Deal=0; if\(Value\_Room\_Temperature\_Average=119&&Value\_Room\_Temperature\_Average=146&&Value\_Room\_Temperature\_Average=185&&Value\_Room\_Temperature\_Average=232&&Value\_Room\_Temperature\_Average=289&&Value\_Room\_Temperature\_Average=355&&Value\_Room\_Temperature\_Average=432&&Value\_Room\_Temperature\_Average=520&&Value\_Room\_Temperature\_Average=619&&Value\_Room\_Temperature\_Average=731&&Value\_Room\_Temperature\_Average=880\)Value\_Work2=31; } } // \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*烙铁头温度处理\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* void Temperature_Treatment(void) //1s查询一次 { if\(Tag\_10s==0&&Tag\_20ms==1\) {   Tag_20ms=0; //初始温度设置 if\(Value\_Work1\>=Value\_Work2\)Value\_Work=Value\_Work1; else Value\_Work=Value\_Work2;   //手握时电烙铁的处理,高温恒温工作状态 if(Touch==0) { Tag_Smart=0; Tag\_Pre\_Insulation=1; Tag_Compensate1=1; Tag_45s=1; Time_45s=45; if(Tag_Compensate==1) //从低温返回时,全功率工作30s { Tag_Compensate=1; Tag_30s=1; LED_Blue=1; LED_Red=0; SCR=1; } else //手握时温度处理 { LED_Blue=1; if\(Value\_NTC\_Average=Value\_Work\)SCR=0; else SCR=1; } if\(Value\_NTC\_Average=High\) { if\(Open\_Time=Open\_Time\)SCR=0; else SCR=1; } if\(Value\_NTC\_Average\>=Low\)SCR=1;      }   } //闲置时电烙铁的处理,进入烙铁头防氧化状态 if(Touch==1) { Tag_Smart=1; Tag\_Pre\_Insulation=0; Tag_Compensate=1; Tag_30s=1; Time_30s=30; if(Tag_Compensate1==1) //从高温返回时,40%功率工作45s { Tag_Compensate1=1; Tag_45s=1; LED_Blue=0; LED_Red=0; if(Count_50>=26)SCR=0; else SCR=1; } else  //闲置时温度恒温 { LED_Red=1; if\(Value\_NTC\_Average=Open\_Time\)SCR=0; else SCR=1; } if\(Value\_NTC\_Average=High\_Default\) { if\(Count\_50\>=Open\_Time\)SCR=0; else SCR=1; } if\(Value\_NTC\_Average\>=Low\_Default\)SCR=1; }   } Value\_NTC\_Last=Value\_NTC\_Average; } } // \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*主程序\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* void main(void) { EAL=1; //开总中断 System_Init(); //系统初始化 Init_GPIO(); //IO口输入输出定义 Timer0\_Init\_Mode1\(\); //定时器0初始化 ADC_Init(); while (1) { ADC_Deal(); Key_Scan(); Value\_Work\_Deal\(\); Temperature_Treatment(); } } //\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*time0中断函数\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* void Timer0_ISR(void) interrupt ISRTimer0   // 20ms定时中断 { TH0  = 0xB1; TL0  = 0xE0;        // 65536-45536=20ms初始化初值 Tag_20ms=1; Count_5-=1; //100ms倒计时   if(Count_5==0) { Tag_100ms=1;   Count_5=5; } Count_50-=1; //功率计时基准 if\(Count\_50==0\)Count\_50=50; Time_20ms+=1; if(Time_20ms==25) { Time_20ms=0; Time_500ms+=1; if(Time_500ms==2) //1秒计数 { Time_500ms=0; Time_1s+=1; Tag_1s=1; if\(Tag\_10s==1\)Time\_10s\-=1; if(Time_10s==0) { Tag_10s=0; Tag\_Temperature\_Setting=0; } if\(Tag\_30s==1\)Time\_30s\-=1; if(Time_30s==0) { Tag_30s=0; Time_30s=30; Tag_Compensate=0; } if\(Tag\_45s==1\)Time\_45s\-=1; if(Time_45s==0) { Tag_45s=0; Time_45s=45; Tag_Compensate1=0; } if(Time_1s==60)//60 { Time_1m+=1; Time_1s=0; if\(Tag\_Timing\_Control==1\)Time\_240m\-=1; if(Time_240m==0) { Tag_90m=1; Tag\_Timing\_Control=0; Time_240m=240; } if(Tag_90m==1) { Time_90m-=1; P0M = 0x00; P0  = 0x08; if(Time_90m==0) { Tag_90m=0; P0M  = 0x25;        //1,3,4为输入,其余为输出 P0UR = 0x08;          // 3设为上拉电阻 P0CON=0x12; //1和4只作为模拟输入脚,其余为GPIO P0   = 0x08; //2为低电平,其余为高电平 } } if(Time_1m==60) { Time_1h+=1; Time_1m=0; if(Time_1h==10)//4 { P0M=0x00; P0 = 0x08; //关掉LED和输出,掉电重启后恢复 Time_1h=0; EAL=1; } } } if\(Tag\_Temperature\_Setting==1\) { LED\_Red=\~LED\_Red; LED_Blue=1; } if\(Tag\_Smart==1&&Tag\_10s==0&&Value\_NTC\_Average\>=High\_Default\) { LED\_Blue=\~LED\_Blue; //LED_Red=1; } if\(Tag\_Pre\_Insulation==1&&Tag\_10s==0&&Value\_NTC\_Average\>=High\) { LED\_Red=\~LED\_Red; //LED_Blue=1; } } } } //\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*ADC中断函数\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* void ADC_ISR(void) interrupt ISRAdc { IRCON2 &= 0xFE;                 //清除中断请求 if (_EOC) // 检查ADC状态 { uiADCL = ADR; uiADCL &= 0x0F;             // 获取ADB3~ADB0 uiADC = ADB ; uiADC
设计图
原理图
1 /
未生成预览图,请在编辑器重新保存一次
ID Name Designator Footprint Quantity
1 M7F D1,D2 R4000F 2
2 8F5701 IC5 SOP8 1
3 BT131 Q1 BT131_SOT223 1
4 3310 IC1 SOP8 1
5 100uF/16V C15,C3 EC8MM_3.81MM 2
6 1000K RNTC XH2.54_CON2 1
7 100K R1 0603 1
8 104 C8,C13,C14 0603 3
9 4.7nF C5 0603 1
10 15pF C16 0603 1
11 3k R2,R4 0603 2
12 1k R11 0603 1
13 1k R13 0805 1
14 510 R9,R3 0603 2
15 104 C10 0805 1
16 SC01 IC2 SOP8 1
17 8p C17 0603 1
18 100K RNTC1 XH2.54_CON2 1
19 10k R12 0603 1
20 204-10SURD/S530-A3 LED1,LED2 LED-3MM/2.54 2
21 30W/220V HEATER AXIAL-0.3 1

展开

工程视频/附件
序号 文件名称 下载次数
1

11.mp4

3049
工程成员
侵权投诉
相关工程
换一批
加载中...
添加到专辑 ×

加载中...

温馨提示 ×

是否需要添加此工程到专辑?

温馨提示
动态内容涉嫌违规
内容:
  • 153 6159 2675

服务时间

周一至周五 9:00~18:00
  • 技术支持

support
  • 开源平台公众号

MP