本文以STM32F103RBT6为主控芯片,设计了一种自动贴片机。
1、贴片机模块设计方案
本文将贴片机模块化的进行设计与编程,模块化后的整机系统由3个部分组成:机械传动系统、机器视觉系统和运动控制系统,如图1所示。
图1贴片机系统框图
1.1、贴片机机械传动系统的设计方案
1.1.1、贴片机X轴Y轴设计方案
本方案采用X—Y轴两轴联动,Z轴独立运动的设计方案。其中X-Y轴由步进电机通过同步带传动进行机械运动。具体实现结构如图2所示。
图2贴片机X-Y轴传动机构图
如图所示,Y轴步进电机固定于底座上,带动同步带轮旋转,同步轮带动同步带做直线运动,光轴滑块与同步带相连。从而跟随同步带演光轴导轨做Y轴方向的的运动。X轴整体机构与Y轴相似,提供X轴方向上的直线运动。其整体固定与Y轴滑块之上,当Y轴运动时同时带动X轴运动。从而实现X—Y两轴联动。
1.1.2、贴片机Z轴设计方案
本设计方案中Z轴由舵机、光轴导轨、吸笔、拖拽针、摄像头组成。其结构如图3所示。
图3贴片机Z轴机构图
其中吸笔由空心轴步进电机制作而成,当步进电机旋转时,带动吸笔吸盘选择,从而提供了贴片机旋转轴的运动。旋转吸笔用于改变元器件贴装方向。拖拽针与吸笔固定在同一直线上,用于拖拽料盘,从而实现送料功能。拖拽针与吸笔分别固定在2组光轴导轨上,底部安装有弹簧,用于拖拽针与吸笔复位。舵机控制压杆左右旋转,从而压动吸笔与拖拽针进行向下运动,当压杆处于中间态时,弹簧将吸笔与拖拽针弹起,回到初始位置。摄像头安装在工作台上方,用于俯视PCB板。
1.2、机器视觉系统设计方案
本方案采用两台CCD相机、环形LED光源及图像处理设备组成。其中一台CCD相机安装在贴片机Z轴上。与贴装头一起运动,用于俯视PCB板,采集各定位点坐标信息,计算X—Y轴运动偏移量,辅助定位。另外一台CCD相机固定在工作台上,向上仰视。当贴装头吸取原件后,运动至相机上方,相机采集元器件图像。计算旋转角度偏移量及X—Y轴运动偏移量。
1.3、运动控制系统设计方案
运动控制部分由软件系统与硬件设备组成。其中软件部分分为上位机及下位机。上位机即计算机。下位机采用STM32F103RBT6微控制器作为核心控制器。上位机与下位机由串口数据线连接。硬件设备由步进电机、步进电机驱动器、舵机、电磁阀等组成。
运动控制系统工作流程如图4所示。
图4运动控制系统工作流程图
2、运动控制系统硬件设计
2.1、运动控制系统结构
控制系统的控制模式是以PC机为平台、以微控制器为核心协调工作。通用PC机负责数控程序编辑、人机界面管理等功能;微控制器用来管理子程序以及负责机械本体的运动控制和逻辑控制,支持用户的开发和扩展,并具有上、下两级的开放性。
本设计方案采用STN32F103微控制器作为核心器件,协调3个步进电机驱动器控制步进电机的运行。同时获取编码器数据,限位开关状态,并控制舵机、电磁阀等器件的运行。各器件连接图如图5所示。
图5运动控制系统连接图
本设计方案所采用的主控芯片STM32F103RBT6是一款基于ARMCodex—M3内核的32位处理器,具有杰出的功耗控制与众多外设。该芯片内置128KFLASH、20KSRAM、2个SPI、3个串口、1个USB、1个CAN、2个12位的ADC、RTC、51个可用IO口。其电路图如图6所示。
图6STM32F103RBT6芯片
2.2、电源电路
电源电路采用AMS1117—3.3作为电压转换芯片。AMS1117是一款正电压输出低压差的三端线性稳压电路,在输出1A电流时,输入输出的电压差典型值为1.8V,内部集成过热保护和限流电路,确保芯片和电源系统的稳定性。
图7电源电路图
该电路输入端与输出端各接1个0.1μF的非极性独石电容和1个220μF的极性电容。这两组电容起到了稳压滤波的作用。
2.3、串口电平转换电路
串行接口是嵌入式系统中较为常用的一种接口。本系统采用RS-232总线于上位机进行通信,采用MAX232芯片来完成RS-232串行接口的电平转换。串口通信电路如图8所示。
图8串口电平转换电路
2.4、步进电机驱动电路
驱动器的作用是对控制脉冲进行环形分配、功率放大,使步进电机绕组按一定顺序通电,控制电机转动。本设计采用DM442数字式步进电机驱动器。该驱动器可以设置512内的任意细分以及额定电流内的任意电流值,能够满足大多数场合的应用需要。电路连线如图9所示。
图9步进电机驱动器连线图
通过步进电机驱动器控制步进电机的方法较为简单,仅需通过单片机IO口给出不同频率的方波脉冲信号即可控制步进电机的速度,通过另一个IO口给出高低电平控制电机旋转方向。本文所采用的步进电机步距角为1.8°,因此驱动器每接收200个脉冲信号,步进电机旋转一周。
3、运动控制系统软件设计
下位机控制程序由串口收发程序,限位开关检测程序,舵机驱动程序、步进电机驱动等部分组成。下面将对舵机驱动和串口收发部分做详细的介绍。
3.1、舵机驱动程序
根据1.1.2中的介绍,舵机用来控制吸笔和拖拽针的运动,在单片机的控制中常用PWM(PulseWidthModulation)调制来驱动它。在舵机控制系统中,输出的PWM信号通过功率器件将所需的电流和能量传送到舵机线圈绕组中,来控制舵机的正反转。
STM32的定时器除了TIM6和TIM7,其他的定时器都可以用来产生PWM输出。其中高级定时器TIM1和TIM8可以同时产生多达7路的PWM输出。而通用定时器也能同时产生多达4路的PWM输出,这样,STM32最多可以同时产生30路PWM输出。由于只控制一个舵机,这里我们仅利用TIM3的CH2产生一路PWM输出。具体步骤如下:
1)开启TIM3时钟,配置PA7为复用输出。
2)设置TIM3的ARR和PSC,控制输出PWM的周期。
3)设置TIM3_CH2的PWM模式。
4)使能TIM3的CH2输出,使能TIM3。
5)修改TIM3_CCR2来控制占空比。
由于舵机所需的控制信号标准周期是20毫秒,最低不得少于15毫秒。中位脉冲宽度是1.5毫秒,脉冲宽度在加减1.5毫秒之间内变化。可控范围一般都是0.5~2.5毫秒。即控制舵机运行至两个机械极限位置的信号周期为0.5~2.5毫秒,对应占空比为2.5%-12.5%。本方案中舵机需保持在3个状态,分别是左极限,右极限和中间位置。用于控制拖拽针下移,吸笔下移和复位。
因此,要控制舵机,首现需要一个频率为50赫兹的PWM波,然后调节其占空比为2.5%-12.5%。PWM输出频率的计算公式为:
这里系统时钟频率为72000000赫兹,所需PWM频率为50赫兹。为方便计算,同时保证自动重装载值和预分频系数均为整数,这里取自动重装载值为1000。计算得预分频系数为1440-1=1439。因此调用PWM初始化函数为:PWM_Init(1000,1439);
PWM输出波形占空比计算公式为:
由此计算得到:
左极限位置时TIM3-》CCR2=25,
右极限位置时TIM3-》CCR2=125,
中间位置时TIM3-》CCR2=75。
3.2、串口通信配置
STM32的串口配置需要开启串口时钟,并设置相应IO口的模式,配置波特率、数据位长度、奇偶校验位等信息。STM32的串口波特率计算公式如下:
上式中,fPCLKx是给串口的时钟;USARTDIV是一个无符号定点数。
3.3、串口数据包格式设计
表1为串口与单片机通信的数据包格式,每帧有9个字节,开始六个字节是包头标志、器件地址、数据类型、起始地址以及数据长度,其中数据类型有:读数据指令r(0x72)、预设参数w(0x77)、运动指令m(0x6D)、请求重发指令c(0x63)、正常返回指令b(0x62)和放弃通信指q(0x71)。然后是10个字节的数据位,通常数据位为2个4字节的数据,为了避免出现数据对齐问题,在后面加入两个值为0的字节。最后是两个字节的校验位和结束标志位,采用CRC16进行校验。
表1串口数据包格式
数据由上位机即PC主动发送,下位机即单片机被动等待接收,系统在每次上电初始化时进行一次握手,下位机在接收到的包头数据中匹配自己的器件地址,一致时则接收命令,否则将收到的数据包抛弃。当上层控制器向单片机发送读数据指令r(0x72)时,其数据位均为0;单片机收到指令后,将状态信息填入数据位,回发给上位机。当上位机向单片机发送预设参数w(0x77)数据包时,将参数信息填入相应数据位;单片机收到后,将数据写入EEPROM中并发送反馈,反馈帧以同样的类型、将存好的数据再次读出填入数据位,发送给上位机进行匹配校验。当上位机向单片机发送运动指令m(0x6D)时,将数据位按设定的格式填入数据位;单片机读取并按照指令内容进行运动。
图10串口收发程序流程图
单片机正确接收到除预设参数之外的数据时向主机回发正常返回指b(0x62);若收到上一组主机的数据后发现数据出错,则请求重发指令c(0x63),主机接收到此回应指令后执行重发操作;若连续通信错误并超过最大限制后则发送的放弃指令q(0x71)。
4、结束语
本文根据目前贴片机市场上的应用现状,提出了低成本,小型化的设计方案。对贴片机整机的机械结构进行了优化设计。分别对贴片机的机械传动系统,机器视觉系统及运动控制系统给出了设计思路。