河南快3走势

当前位置:顺达电子 >> 解密技术 >> 浏览文章

基于PIC16F628单片机的CM402型高速贴片机控制系统改造设计与实现

  引言
  随着表面贴装技术(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控制系统已制作成品销售,经联机生产验证,证明该设计方案可靠、可行。利用该PVS控制系统改造CM402型贴片机,预期可提升生产力约4%,具有良好的实用价值。

 

服务咨询热线

咨询热线:

189-2383-0090

189-2383-0091

微信扫描二维码咨询

陕西快乐十分 河南快3 四川快乐12走势图 河南快3走势 河南快3 四川快乐12开奖结果 河南快3投注 河南快3开奖结果 澳门最有名彩票网站 湖北快3走势