您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 三花电子膨胀阀C51程序(适用于O型和T型)
三花电子膨胀阀C51程序(适用于O型和T型)程序说明励磁时序:1变量值:count_max为计数脉冲最大值,调零初始设定560,运行时设定为508,多加8个脉冲的闭阀动作。ADD_DEC_flag:1正转,0反转stopADD_flag为脉冲停止增加标志位,表示计数达到508时不再继续增加stopDEC_flag为脉冲停止减少标志位,表示计数达到0时不再继续减小count_num为电子膨胀阀发送的脉冲计数,定义int型,char最大255count8为电子膨胀阀每组数据发送序号count5为电子膨胀阀每组数据发送开度1°计数,1°为5个脉冲定义speed_time=20,控制膨胀阀的励磁速度,要求30-90pps,取50pps,则一个脉冲需要20ms2程序的编写:1.起点调整方法:(1)将阀全闭并调整起点至A相励磁;1234567812345678Ø1A橙P0.01100000110000011Ø2D红P0.10111000000001110Ø3C黄P0.20001110000111000Ø4F黑P0.300000111111000000x010x030x020x060x040x0C0x080x090x090x080x0C0x040x060x020x030x01AADDDCCCFFFAFAFCFCDCDADAØ5B蓝导通的线圈励磁状态(开阀)接线接电源线励磁状态(关阀)线圈数据线颜色对应的十六进制P0=0xf0;P0=vavle_excitation[count8];//调整至A相(2)切断电源时:通电后,施加560脉冲来进行闭阀动作;count_max=560(3)控制时:现有开度+8脉冲的闭阀动作。count_max=5082.停止驱动:在停止的励磁相上再施加励磁0.5sec以上后,停止驱动;3.开始驱动:施加0.5sec以上的励磁于前回停止运转的励磁相上后,使其开始运转;4.倒转驱动方向:在倒转前的励磁相上再施加0.5sec以上的励磁,然后进行倒转驱动;5.开阀激励步骤表1从步骤1到8。6.关阀激励步骤表1从步骤8到1。7.步进电机带有永磁铁具有自保持能力,保持开阀不需要通电。头文件vavle.h#ifndef__VAVLE_H__#define__VAVLE_H__#includestc15f2k60s2.h//单片机STC15F2K60S2头文件,可以不再加入reg51.h#includecommon.h//定义头文件#includedelay.h//延时函数头文件/******************************T系列电磁阀*****************************#definespeed_time20//膨胀阀的励磁速度,要求30-90pps,取50pps,则一个脉冲需要20ms#definePulse_max500//全开脉冲#defineFirstClosePluse_max560//关阀时最大脉冲,在500基础上要多关60#defineClosePluse_max508//关阀时最大脉冲,在500基础上要多关8*//******************************O系列电磁阀*****************************#definespeed_time10//膨胀阀的励磁速度,要求100-250pps,取100pps,则一个脉冲需要10ms#definePulse_max2000//全开脉冲#defineFirstClosePluse_max2200//关阀时最大脉冲,在2000基础上要多关30#defineClosePluse_max2030//关阀时最大脉冲,在2000基础上要多关30*/externunsignedcharspeed_time;//膨胀阀的励磁速度,要求30-90pps,取50pps,则一个脉冲需要20ms//externintPulse_max;//全开脉冲externintOpenPluse_max;//关阀时最大脉冲,在500基础上要多关60externintClosePluse_max;//关阀时最大脉冲,在500基础上要多关8externintClosePluse;//全闭脉冲-500或-2000externintOpenPluse;//全开脉冲500或2000//externintPulse_Init;//intPulse_max;//全开脉冲//intOpenPluse_max;//关阀时最大脉冲,在500基础上要多关60//intClosePluse_max;//关阀时最大脉冲,在500基础上要多关8//intPulse_Init;//初始化时的脉冲开度externunsignedcharcodevavle_excitation[];//ABCD四相对应的I/O口数据,正转//接线:A-P0.0,D-P0.1,C-P0.2,F-P0.3/*定义变量*/externintcount_num;//电子膨胀阀初始化计数//externunsignedintcount_max;//电子膨胀阀初始化时为560,初始化完赋值508externunsignedcharcount8;//电子膨胀阀每组数据发送计数externunsignedcharcount5;//电子膨胀阀每组数据发送开度1°计数externunsignedcharcount8_temp;//8拍计数缓externunsignedcharvavle_flag;//发送数据标志位externunsignedintopening_deg;//开度externunsignedcharADD_DEC_flag;//1正转,0反转externunsignedcharbutton_flag;//按钮标志位externunsignedcharstopADD_flag;//计数达到500时不再继续增加externunsignedcharstopDEC_flag;/*声明函数*///voidvavle_Init(void);voidstep_close(void);//关阀,n为正转圈数voidstep_open(void);//开阀,n为反转圈数voidcalc_opening_deg(void);//计算并显示开度#endif子程序Vavle_Control.c/************************************************************************************Copyright,ThunderDays程序名称:(晶振频率12MHz)功能说明:可正常点动加减开度程序版本:1.0(2017/07)************************************************************************************/#includevavle.h//电子膨胀阀头文件#includestdio.h//unsignedcharcodevavle_excitation[]={0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x09};//ABCD四相对应的I/O口数据,正转unsignedcharcodevavle_excitation[]={0x08,0x0C,0x04,0x06,0x02,0x03,0x01,0x09};//ABCD四相对应的I/O口数据,正转//接线:A-P0.0,D-P0.1,C-P0.2,F-P0.3intcount_num=0;//电子膨胀阀脉冲计数,定义int型,char最大255unsignedintcount_max;//电子膨胀阀初始化时为FirstClosePluse_max,正常闭阀时为ClosePluse_maxunsignedcharcount8=0;//电子膨胀阀每组数据发送计数unsignedcharcount5=0;//电子膨胀阀每组数据发送开度1°计数unsignedcharcount8_temp;//8拍计数缓存unsignedcharvavle_flag=0;//发送数据标志位unsignedintopening_deg=0;//开度unsignedcharADD_DEC_flag=1;//1正转,0反转unsignedcharbutton_flag=0;//按钮标志位unsignedcharstopADD_flag=0;//计数达到500时不再继续增加unsignedcharstopDEC_flag=0;/*电子膨胀阀初始化voidvavle_Init(void)//初始化电磁阀:关阀发560个脉冲,到0脉冲时,再通8个脉冲。{unsignedinti;//unsignedinti,N;ADD_DEC_flag=1;//标志位置1,说明进行关阀操作//while(count_num560);count_max=FirstClosePluse_max;P0=0xf0;P0=vavle_excitation[count8];//开始励磁前,在for(i=0;iFirstClosePluse_max;i++)//关阀发560个脉冲,开度为112度{step_close();}P26=1;//蜂鸣器count8=0;//初始化完调整到A相stopADD_flag=1;//关阀操作位为1,说明满开度//count_num=508;count_max=ClosePluse_max;LED_CLS_n(2);for(i=0;iPulse_Init;i++)//开阀到400个脉冲,在此基础上进行调节{step_open();calc_opening_deg();}LED_CLS_n(1);//TR0=0;//定时器0关闭DelayMS(500);P0=0x00;//关闭操作}*//******************************关阀操作,关1个脉冲*****************************/voidstep_close(void)//关阀,此程序操作开度1°{ADD_DEC_flag=1;//标志位置1,说明进行关阀操作if(stopADD_flag)//开阀停止标志位为1时,执行此操作。说明开阀已经开到做大开度,关阀时清空此标志位{stopADD_flag=0;//count_num=0;}if(!stopDEC_flag){P0=vavle_excitation[count8++];P26=0;//蜂鸣器DelayMS(speed_time);//延时//stopADD_flag=0;count_num--;if(count_numClosePluse_max)//在阀关到0脉冲时再额外通8个脉冲关闭操作,不计数{//count_num=516;count_num=ClosePluse;stopDEC_flag=1;//全闭标志位,说明膨胀阀已全闭//break;}}if(count8==8)count8=0;//count500_flag=1;}/******************************开阀操作,开1个脉冲*****************************/voidstep_open(void)//开阀,此程序操作开度1°{ADD_DEC_flag=0;//标志位清零,说明进行开阀操作if(stopDEC_flag)//关阀停止标志位为1时,执行此操作。说明关阀已经关到0°,开阀时清空此标志位{stopDEC_flag=0;//因关阀时,多加了8个脉冲进行关阀,所以计数值要进行复位为500,在此基础上进行减数操作//count_num=Pulse_max;}if(!stopADD_flag)//停止开阀标志位{P0=vavle_excitation[count8--];P26=0;//蜂鸣器DelayMS(speed_
本文标题:三花电子膨胀阀C51程序(适用于O型和T型)
链接地址:https://www.777doc.com/doc-6068743 .html