引言 隨著表面貼裝技術(Surface Mounted Technology,SMT)的不斷優化及貼片元器件制作工藝的迅速發展,貼片機在電子制造業中的應用日益突出。CM402型高速貼片機是由日本松下公司研發和生產,針對某些特定工件、按特定工序進行批量加工的專用設備。根據筆者為期兩周的現場調查和論證,傳統CM402型高速貼片機在拼接料生產過程中,若出現拼接料檢知停止時,停機掃料的時間將影響到生產效率。通過認真分析該設備的工序流程及閱讀其用戶手冊,可將此拼接料檢知、停機掃料程序進行技術改造,并在原有電控系統上利用PVS控制系統替代Timer(計時器),可實現接料不停機控制功能,從而可提升其生產效率。 本文以利用PIC16F628單片機構成PVS控制系統為例,從硬件系統設計和軟件系統設計入手,給出了印制電路板圖、電路原理圖及源代碼。 硬件系統設計 該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%,具有良好的實用價值。 作者:湖南有色金屬職業技術學院 李響初 上海振華科技有限公司 蔡振華 |