×
单片机 > 单片机程序设计 > 详情

一种改造CM402型贴片机控制系统的方法

发布时间:2020-08-26 发布时间:
|

简介:该PVS控制系统以PIC16F628单片机为核心,具有集成度高、性能稳定、抗干扰能力强、性价比高等优点。该PVS控制系统已制作成品销售,由苏州翔庆精密机械有限公司等单位经过6个月的联机生产验证,证明该设计方案可靠、可行。利用该PVS控制系统改造CM402型贴片机,预期可提升生产力约4%,具有良好的实用价值。


一、分析


CM402型贴片机现状:


CM402型高速贴片机是由日本松下公司研发和生产,针对某些特定工件、按特定工序进行批量加工的专用设备。传统CM402型高速贴片机在拼接料生产过程中,若出现拼接料检知停止时,停机扫料的时间将影响到生产效率。


改进方法:


通过现场调查和论证并认真分析该设备的工序流程及阅读其用户手册,可将此拼接料检知、停机扫料程序进行技术改造,并在原有电控系统上利用PVS控制系统替代Timer(计时器),可实现接料不停机控制功能,从而可提升其生产效率。本文利用PIC16F628单片机构成PVS控制系统,实现对CM402型贴片机控制系统的改进。


二、硬件系统设计


该PVS控制系统以PIC16F628单片机为核心,由PIC16F628单片机及其外围元器件、电源模块、继电器模块组成,印制电路板和电路原理图如图1、图2所示。


图1 印制电路板


图2 原理图


PIC16F628单片机及其外围元器件


PIC16F628单片机是由Microchip公司生产的PIC系列8位CMOS闪存单片机之一,该系列单片机采用RISC(Reduced Instruction Set Computer)嵌入式结构,具有执行速度高、功耗低、体积小巧、工作电压低、驱动能力强、品种丰富等优越性能。其总线结构采取数据总线和指令线分离独立的哈佛(Harvord)结构,具有很高的流水处理速度。与同类8位单片机相比,程序存储器可节省一半,指令运行速度可以提高4倍左右。PIC16F628单片机封装形式为DIP-18,配合相应程序,该芯片可实现继电器智能控制功能,即配合其他配套电路可构成PVS控制系统,实现CM402型贴片机接料不停机控制功能。JP2为报警信号输入端、JP5为PC机并口解锁信号输入端、SB1、SB2为定时时间调节按钮,LED1~LED6构成定时时间显示电路,单只LED亮表示10s,全部亮表示60s。


电源模块


电源模块设计的质量直接关系到PVS控制系统的稳定性。该控制系统直接利用CM402型贴片机的+24V稳压电源,故采用稳压性能较好的三端稳压集成电路LM7812、LM7805实现两级稳压,为单片机、光电耦合器等元器件提供+5V直流稳压电源。JP1为24V电源输入端,与CM402贴片机相应插座直接连接。


继电器模块


继电器模块由晶体管驱动电路和固态继电器构成。其中VT1、VT2选用C9014型晶体管;欧姆龙TQ2-24V型24V继电器。该模块工作状态由单片机RA4(第3脚)控制,并通过JP3、JP4与CM402型贴片机相应端口相连。


三、软件系统设计


软件环镜基于MPLAB IDE V8.33,编译器HI-TECH C,仿真器ICD2.0烧写PIC16F628芯片实现CM402型贴片机控制系统改造设计功能。


实现程序如下:


#include


__CONFIG(0X1F3C);


#define ulong unsigned long


#define uint unsigned int


#define uchar unsigned char


#define RD (1)


#define WR (1<<1)


#define WREN (1<<2)


#define WRERR (1<<3)


#define FREE (1<<4)


#define CFGS (1<<6)


#define EEPGD (1<<7)


#define START_READ_EEPROM() EECON1=EECON1|RD


#define START_WRITE_EEPROM() EECON1=EECON1|WR


#define ENABLE_WRITE_EEPROM() EECON1=EECON1|WREN


#define DISABLE_WRITE_EEPROM() EECON1=EECON1&(~WREN)


#define SELECT_EEPROM() EECON1=EECON1&(~(EEPGD|CFGS))


#define out RA3


uint js=1;


uchar Key_Num = 0x00,Key_Num1 = 0x00; //本次键码


uchar Key_Backup = 0x00,Key_Backup1 = 0x00; //备份键码


uchar key,temp,key1,temp1;


bit Key_Dis_F = 0,Key_Dis_F1 = 0,OFF_ON=0;


uchar ES=1,ES_DATA=1;


bit a;


ulong z=1;


uchar ES_BC_DATA;


void ms(uint b);


void keyscan(void);


char readByte(char addr);


void writeByte(char addr, char data);


void X_Y_IN(void);


void main()


{ TRISB2=0;


TRISB3=0;


TRISB4=0;


TRISB5=0;


TRISA6=0;


TRISA7=0;


RB2=1;


RB3=1;


RB4=1;


RB5=1;


RA6=1;


RA7=1;


TRISB0=1;


TRISB1=1;


RB0=1;


RB1=1;


TRISB6=1;


TRISB7=1;


RB7=1;


RB6=1;


GIE=1;


PEIE=1;


T1CON=0X01;


TMR1IE=1;


TMR1IF=0;


TMR1L=0XEF;


TMR1H=0XD8;


CM0=1;


CM1=0;


CM2=1;


C2OUT=0;


C2INV=1;


TRISA4=0;


RA4=1;


TRISA3=0;


RA3=1;


a=out=1;


ES_BC_DATA=readByte(0x00);


ES_DATA=ES=ES_BC_DATA;


while(1)


{ asm("clrwdt");//清看门狗


keyscan();


X_Y_IN();


if((C2OUT==1)&(OFF_ON==1)&(a==0))


{ ms(4);


if((C2OUT==1)&(OFF_ON==1)&(a==0))


{ C2OUT=0;


ES_DATA=ES_BC_DATA;


OFF_ON=0;


a=out=1;


z=1;


}


}


switch(ES)


{ case 1:


RB2=1;


RB3=1;


RB4=1;


RB5=1;


RA6=1;


RA7=0;


break;


case 2:


RB2=1;


RB3=1;


RB4=1;


RB5=1;


RA6=0;


RA7=0;


break;


case 3:


RB2=1;


RB3=1;


RB4=1;


RB5=0;


RA6=0;


RA7=0;


break;


case 4:


RB2=1;


RB3=1;


RB4=0;


RB5=0;


RA6=0;


RA7=0;


break;


case 5:


RB2=1;


RB3=0;


RB4=0;


RB5=0;


RA6=0;


RA7=0;


break;


case 6:


RB2=0;


RB3=0;


RB4=0;


RB5=0;


RA6=0;


RA7=0;


break;


}


}


}


void ms(uint b)


{ uchar c;


while(b--)


for(c=123;c>0;c--);


}


void interrupt tmr1(void)


{ if(TMR1IF==1)


{ TMR1IF=0;


TMR1L=0XEF;


TMR1H=0XD8;


js++;


if(js==1000)


{ js=1;


if(OFF_ON==1)


{ if(ES_DATA!=0);


{ ES_DATA--;


if(ES_DATA==0)


{ a=out=0;


}


}


}


}


}


}


void X_Y_IN(void)


{ if((RB0==0)&(RB1==0))


{ ms(2);


if((RB0==0)&(RB1==0)&((z++)==500))


{ temp1=1;


}


}


else


{ z=1;


temp1=0;


}


Key_Num1=temp1;


if((Key_Num1!=0x00)&&(Key_Num1 == Key_Backup1 ))


{ if(!Key_Dis_F1)


{ Key_Dis_F1 = 1;


asm("clrwdt");


if((RB0==0)&(RB1==0))


{ OFF_ON=1;


}


}


}


else


{ Key_Backup1 = Key_Num1;


Key_Dis_F1 = 0;


}


}


void keyscan(void)


{ if((RB7==0)|(RB6==0))


{ ms(10);


if((RB7==0)|(RB6==0))


{ temp=1;


}


}


else


{ temp=0;


}


Key_Num=temp;


if((Key_Num!=0x00)&&(Key_Num == Key_Backup ))


{ if(!Key_Dis_F)


{ Key_Dis_F = 1;


asm("clrwdt");


if((RB6==0)&(RB7==1))


{ ES--;


if(ES<=1)


{ ES=1;


}


if(ES!=ES_BC_DATA)


{ ES_DATA=ES_BC_DATA=ES;


writeByte(0x00,ES_BC_DATA);


writeByte(0x01,out);


writeByte(0x02,RA4);


writeByte(0x03,RB1);


writeByte(0x04,RB0);


writeByte(0x05,z);


}


}


if((RB6==1)&(RB7==0))


{ ES++;


if(ES>=6)


{ ES=6;


}


if(ES!=ES_BC_DATA)


{ ES_DATA=ES_BC_DATA=ES;


writeByte(0x00,ES_BC_DATA);


}


}


}


}


else


{ Key_Backup = Key_Num;


Key_Dis_F = 0;


}


}


char readByte(char addr)


{ char tmpEEPROM;


EEADR = addr;


SELECT_EEPROM();


START_READ_EEPROM();


tmpEEPROM = EEDATA;


return tmpEEPROM;


}


void writeByte(char addr, char data)


{ EEADR = addr;


EEDATA = data;


SELECT_EEPROM();


ENABLE_WRITE_EEPROM();


EECON2 = 0X55;


EECON2 = 0Xaa;


START_WRITE_EEPROM();


ENABLE_WRITE_EEPROM();


while(1 != EEIF);


EEIF = 0;


}


四、结束语

该PVS控制系统以PIC16F628单片机为核心,具有集成度高、性能稳定、抗干扰能力强、性价比高等优点。该PVS控制系统已制作成品销售,由苏州翔庆精密机械有限公司等单位经过6个月的联机生产验证,证明该设计方案可靠、可行。利用该PVS控制系统改造CM402型贴片机,预期可提升生产力约4%,具有良好的实用价值。

关键字:改造  CM402型贴片机  控制系统 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
TQ210天嵌开发板S5PV210 LED闪烁程序C语言代码记录