三花电子膨胀阀C51程序(合用于O型和T型)程序阐明励磁时序:1变量值:count_max为计数脉冲最大值,调零初始设定560,运营时设定为508,多加8个脉冲的闭阀动作ADD_DEC_flag:1正转,0反转stopADD_flag为脉冲停止增长标志位,表达计数达到508时不再继续增长stopDEC_flag为脉冲停止减少标志位,表达计数达到0时不再继续减小count_num为电子膨胀阀发送的脉冲计数,定义int型,char最大 255 count8为电子膨胀阀每组数据发送序号count5为电子膨胀阀每组数据发送开度1°计数,1°为5个脉冲定义speed_time=20,控制膨胀阀的励磁速度,规定30-90pps,取50pps,则一种脉冲需要20ms2程序的编写:1.起点调节措施: (1)将阀全闭并调节起点至A相励磁;ﻩ 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 到17.步进电机带有永磁铁具有自保持能力,保持开阀不需要通电头文献vavle.h#ifndef __VAVLE_H__#define __VAVLE_H__#include "stc15f2k60s2.h"ﻩ // 单片机STC15F2K60S2头文献,可以不再加入reg51.h#include "common.h" ﻩ // 定义头文献#include "delay.h" ﻩ // 延时函数头文献 /******************************T系列电磁阀*****************************#define speed_time 20 //膨胀阀的励磁速度,规定30-90pps,取50pps,则一种脉冲需要20ms#define Pulse_max 500 //全开脉冲#define FirstClosePluse_max 560 //关阀时最大脉冲,在500基本上要多关60#define ClosePluse_max 508 //关阀时最大脉冲,在500基本上要多关8*//******************************O系列电磁阀*****************************#define speed_time 10 //膨胀阀的励磁速度,规定100-250pps,取100pps,则一种脉冲需要10ms#define Pulse_max //全开脉冲#define FirstClosePluse_max 2200 //关阀时最大脉冲,在基本上要多关30#define ClosePluse_max 2030 //关阀时最大脉冲,在基本上要多关30*/extern unsigned char speed_time; //膨胀阀的励磁速度,规定30-90pps,取50pps,则一种脉冲需要20ms//extern int Pulse_max; //全开脉冲extern int OpenPluse_max; //关阀时最大脉冲,在500基本上要多关60extern int ClosePluse_max; //关阀时最大脉冲,在500基本上要多关8extern int ClosePluse;//全闭脉冲-500或-extern int OpenPluse;//全开脉冲500或//extern int Pulse_Init;//int Pulse_max; //全开脉冲//int OpenPluse_max; //关阀时最大脉冲,在500基本上要多关60//int ClosePluse_max; //关阀时最大脉冲,在500基本上要多关8//int Pulse_Init; //初始化时的脉冲开度extern unsigned char code vavle_excitation[];ﻩ//ABCD四相相应的I/O口数据,正转//接线:A-P0.0,D-P0.1,C-P0.2,F-P0.3/*定义变量*/extern int count_num;ﻩ//电子膨胀阀初始化计数//extern unsigned int count_max;//电子膨胀阀初始化时为560,初始化完赋值508extern unsigned char count8;ﻩ//电子膨胀阀每组数据发送计数extern unsigned char count5;ﻩ//电子膨胀阀每组数据发送开度1°计数extern unsigned char count8_temp; //8拍计数缓extern unsigned char vavle_flag; //发送数据标志位extern unsigned int opening_deg; //开度extern unsigned char ADD_DEC_flag;ﻩ//1正转,0反转extern unsigned char button_flag; //按钮标志位extern unsigned char stopADD_flag;//计数达到500时不再继续增长extern unsigned char stopDEC_flag; /*声明函数*///void vavle_Init(void);void step_close(void);ﻩ //关阀,n为正转圈数void step_open(void);ﻩ//开阀,n为反转圈数void calc_opening_deg(void);//计算并显示开度#endif子程序Vavle_Control.c/************************************************************************************Copyright, ThunderDays 程序名称: (晶振频率12MHz) 功能阐明: 可正常点动加减开度 程序版本:1.0 (/07)************************************************************************************/#include "vavle.h"ﻩ // 电子膨胀阀头文献#include <stdio.h>//unsigned char code vavle_excitation[]={0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x09};ﻩ//ABCD四相相应的I/O口数据,正转unsigned char code vavle_excitation[]={0x08,0x0C,0x04,0x06,0x02,0x03,0x01,0x09};ﻩ//ABCD四相相应的I/O口数据,正转//接线:A-P0.0,D-P0.1,C-P0.2,F-P0.3int count_num=0;ﻩ//电子膨胀阀脉冲计数,定义int型,char最大 255 unsigned int count_max;//电子膨胀阀初始化时为FirstClosePluse_max,正常闭阀时为ClosePluse_maxunsigned char count8=0;ﻩ//电子膨胀阀每组数据发送计数unsigned char count5=0; //电子膨胀阀每组数据发送开度1°计数unsigned char count8_temp; //8拍计数缓存unsigned char vavle_flag=0; //发送数据标志位unsigned int opening_deg=0; //开度unsigned char ADD_DEC_flag=1;ﻩ//1正转,0反转unsigned char button_flag=0; //按钮标志位unsigned char stopADD_flag=0;//计数达到500时不再继续增长unsigned char stopDEC_flag=0;/*电子膨胀阀初始化void vavle_Init(void) ﻩ//初始化电磁阀:关阀发560个脉冲,到0脉冲时,再通8个脉冲。
{ unsigned int i; ﻩ //unsigned int i,N;ﻩ ADD_DEC_flag=1; //标志位置1,阐明进行关阀操作 //while(count_num<560);ﻩ count_max=FirstClosePluse_max; P0=0xf0;ﻩ P0=vavle_excitation[count8];//开始励磁前,在ﻩ for(i=0;i
阐明开阀已经开到做大开度,关阀时清空此标志位ﻩ {stopADD_flag=0; ﻩ //count_num=0; ﻩ } ﻩﻩ if(!stopDEC_flag) ﻩ {P0=vavle_excitation[count8++];ﻩﻩ ﻩP26=0; //蜂鸣器 DelayMS(speed_time); //延时 ﻩﻩ //stopADD_flag=0;ﻩﻩﻩﻩ ﻩ count_num--。