基于PIC16F628的CM402型高速貼片機控制系統改造設計與實(shí)現
引言
隨著(zhù)表面貼裝技術(shù)(Surface Mounted Technology,SMT)的不斷優(yōu)化及貼片元器件制作工藝的迅速發(fā)展,貼片機在電子制造業(yè)中的應用日益突出。CM402型高速貼片機是由日本松下公司研發(fā)和生產(chǎn),針對某些特定工件、按特定工序進(jìn)行批量加工的專(zhuān)用設備。根據筆者為期兩周的現場(chǎng)調查和論證,傳統CM402型高速貼片機在拼接料生產(chǎn)過(guò)程中,若出現拼接料檢知停止時(shí),停機掃料的時(shí)間將影響到生產(chǎn)效率。通過(guò)認真分析該設備的工序流程及閱讀其用戶(hù)手冊,可將此拼接料檢知、停機掃料程序進(jìn)行技術(shù)改造,并在原有電控系統上利用PVS控制系統替代Timer(計時(shí)器),可實(shí)現接料不停機控制功能,從而可提升其生產(chǎn)效率。
本文以利用PIC16F628單片機構成PVS控制系統為例,從硬件系統設計和軟件系統設計入手,給出了印制電路板圖、電路原理圖及源代碼。
硬件系統設計
該PVS控制系統以PIC16F628單片機為核心,由PIC16F628單片機及其外圍元器件、電源模塊、繼電器模塊組成,印制電路板和電路原理圖如圖1、圖2所示。
圖1 印制電路板
圖2 原理圖
PIC16F628單片機及其外圍元器件
PIC16F628單片機是由Microchip公司生產(chǎn)的PIC系列8位CMOS閃存單片機之一,該系列單片機采用RISC(Reduced Instruction Set Computer)嵌入式結構,具有執行速度高、功耗低、體積小巧、工作電壓低、驅動(dòng)能力強、品種豐富等優(yōu)越性能。其總線(xiàn)結構采取數據總線(xiàn)和指令線(xiàn)分離獨立的哈佛(Harvord)結構,具有很高的流水處理速度。與同類(lèi)8位單片機相比,程序存儲器可節省一半,指令運行速度可以提高4倍左右。PIC16F628單片機封裝形式為DIP-18,配合相應程序,該芯片可實(shí)現繼電器智能控制功能,即配合其他配套電路可構成PVS控制系統,實(shí)現CM402型貼片機接料不停機控制功能。JP2為報警信號輸入端、JP5為PC機并口解鎖信號輸入端、SB1、SB2為定時(shí)時(shí)間調節按鈕,LED1~LED6構成定時(shí)時(shí)間顯示電路,單只LED亮表示10s,全部亮表示60s。
電源模塊
電源模塊設計的質(zhì)量直接關(guān)系到PVS控制系統的穩定性。該控制系統直接利用CM402型貼片機的+24V穩壓電源,故采用穩壓性能較好的三端穩壓集成電路LM7812、LM7805實(shí)現兩級穩壓,為單片機、光電耦合器等元器件提供+5V直流穩壓電源。JP1為24V電源輸入端,與CM402貼片機相應插座直接連接。
繼電器模塊
繼電器模塊由晶體管驅動(dòng)電路和固態(tài)繼電器構成。其中VT1、VT2選用C9014型晶體管;歐姆龍TQ2-24V型24V繼電器。該模塊工作狀態(tài)由單片機RA4(第3腳)控制,并通過(guò)JP3、JP4與CM402型貼片機相應端口相連。
軟件系統設計
軟件環(huán)鏡基于MPLAB IDE V8.33,編譯器HI-TECH C,仿真器ICD2.0燒寫(xiě)PIC16F628芯片實(shí)現CM402型貼片機控制系統改造設計功能。
實(shí)現程序如下:
#include
__CONFIG(0X1F3C);
#define ulong unsigned long
#define uint unsigned int
#define uchar unsigned char
#define RD (1)
#define WR (11)
#define WREN (12)
#define WRERR (13)
#define FREE (14)
#define CFGS (16)
#define EEPGD (17)
#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;
評論