基于STM32F103的贴片机控制系统的设计与实现

发布者:翩翩轻舞最新更新时间:2021-06-29 来源: 21ic关键字:STM32F103  贴片机控制系统  整机系统 手机看文章 扫描二维码
随时随地手机看文章

摘要:本文采用STM32F103RBT6芯片设计并实现了一款小型化桌面型的贴片机。首先介绍了贴片机的结构及各个模块的组成,分析了其中运动控制系统模块的硬件组成、软件设计方案,对核心电路部分、舵机的驱动程序以及串口通讯数据包的设计做了详细的介绍。经过调试,该设计方案能够较为准确和高效的完成自动贴片工作。


贴片机又称“表面贴装系统”(Surface Mount System),是一种通过移动、吸取、安放动作把表贴元件精准放置在指定位置的一种自动化设备。在实际生产线中,先由点胶机对PCB板进行点胶操作,然后由贴片机进行贴装操作,最后由回流焊机焊接,完成整个PCB板的焊接任务,是SMT流水线中不可或缺的一环。目前发达国家垄断了贴片机的主要领域,我国的贴片机产业完全靠进口。而且在实际生产中,国际上的自动贴片机虽然效率与精度最高,但大都造价昂贵,功能单一,适用于大型企业。而手动贴片机造价低廉,但效率极低,精度取决于操作者得水平,且无法解放双手。


本文以STM32F103RBT6为主控芯片,设计了一种适应于个体经营者、学校实验以及科研制板等领域的自动贴片机,既能解放双手,增加效率,又能不失精度,价格适中。


1 贴片机模块设计方案


本文将贴片机模块化的进行设计与编程,模块化后的整机系统由3个部分组成:机械传动系统、机器视觉系统和运动控制系统,如图1所示。

基于STM32F103的贴片机控制系统的设计与实现

1.1 贴片机机械传动系统的设计方案


1.1.1 贴片机X轴Y轴设计方案


本方案采用X—Y轴两轴联动,Z轴独立运动的设计方案。其中X-Y轴由步进电机通过同步带传动进行机械运动。具体实现结构如图2所示。

基于STM32F103的贴片机控制系统的设计与实现

如图所示,Y轴步进电机固定于底座上,带动同步带轮旋转,同步轮带动同步带做直线运动,光轴滑块与同步带相连。从而跟随同步带演光轴导轨做Y轴方向的的运动。X轴整体机构与Y轴相似,提供X轴方向上的直线运动。其整体固定与Y轴滑块之上,当Y轴运动时同时带动X轴运动。从而实现X—Y两轴联动。


1.1.2 贴片机Z轴设计方案


本设计方案中Z轴由舵机、光轴导轨、吸笔、拖拽针、摄像头组成。其结构如图3所示。

基于STM32F103的贴片机控制系统的设计与实现

其中吸笔由空心轴步进电机制作而成,当步进电机旋转时,带动吸笔吸盘选择,从而提供了贴片机旋转轴的运动。旋转吸笔用于改变元器件贴装方向。拖拽针与吸笔固定在同一直线上,用于拖拽料盘,从而实现送料功能。拖拽针与吸笔分别固定在2组光轴导轨上,底部安装有弹簧,用于拖拽针与吸笔复位。舵机控制压杆左右旋转,从而压动吸笔与拖拽针进行向下运动,当压杆处于中间态时,弹簧将吸笔与拖拽针


弹起,回到初始位置。摄像头安装在工作台上方,用于俯视PCB板。


1.2 机器视觉系统设计方案


本方案采用两台CCD相机、环形LED光源及图像处理设备组成。其中一台CCD相机安装在贴片机Z轴上。与贴装头一起运动,用于俯视PCB板,采集各定位点坐标信息,计算X—Y轴运动偏移量,辅助定位。另外一台CCD相机固定在工作台上,向上仰视。当贴装头吸取原件后,运动至相机上方,相机采集元器件图像。计算旋转角度偏移量及X—Y轴运动偏移量。环形LED光源提供相机采集图像时的背光,提高成像质量。计算机用于处理采集到的图像数据,分析计算后将控制指令传送至运动控制系统。


1.3 运动控制系统设计方案


运动控制部分由软件系统与硬件设备组成。其中软件部分分为上位机及下位机。上位机即计算机。下位机采用STM32F103RBT6微控制器作为核心控制器。上位机与下位机由串口数据线连接。硬件设备由步进电机、步进电机驱动器、舵机、电磁阀等组成。


运动控制系统工作流程如图4所示。

基于STM32F103的贴片机控制系统的设计与实现

2 运动控制系统硬件设计


2.1 运动控制系统结构


贴片机控制系统模块所完成的主要任务是,在上层控制器的控制下,对步进电机驱动器进行控制,使各轴能够进行“受控运动”,实现运动控制系统所需求的各轴起制动、正反转、调速和保护等功能。


控制系统的控制模式是以PC机为平台、以微控制器为核心协调工作。通用PC机负责数控程序编辑、人机界面管理等功能;微控制器用来管理子程序以及负责机械本体的运动控制和逻辑控制,支持用户的开发和扩展,并具有上、下两级的开放性。


本设计方案采用STN32F103微控制器作为核心器件,协调3个步进电机驱动器控制步进电机的运行。同时获取编码器数据,限位开关状态,并控制舵机、电磁阀等器件的运行。各器件连接图如图5所示。

基于STM32F103的贴片机控制系统的设计与实现

本设计方案所采用的主控芯片STM32F103RBT6是一款基于ARM Codex—M3内核的32位处理器,具有杰出的功耗控制与众多外设。该芯片内置128K FLASH、20K SRAM、2个SPI、3个串口、1个USB、1个CAN、2个12位的ADC、RTC、51个可用IO口。其电路图如图6所示。

基于STM32F103的贴片机控制系统的设计与实现

2.2 电源电路


电源电路采用AMS1117—3.3作为电压转换芯片。AMS1117是一款正电压输出低压差的三端线性稳压电路,在输出1 A电流时,输入输出的电压差典型值为1.8 V,内部集成过热保护和限流电路,确保芯片和电源系统的稳定性。


该电路输入端与输出端各接1个0.1μF的非极性独石电容和1个220μF的极性电容。这两组电容起到了稳压滤波的作用。


2.3 串口电平转换电路


串行接口是嵌入式系统中较为常用的一种接口。本系统采用RS-232总线于上位机进行通信,采用MAX232芯片来完成RS-232串行接口的电平转换。串口通信电路如图8所示。

基于STM32F103的贴片机控制系统的设计与实现

2.4 步进电机驱动电路


步进电机必须有驱动器和控制器才能正常工作。驱动器的作用是对控制脉冲进行环形分配、功率放大,使步进电机绕组按一定顺序通电,控制电机转动。本设计采用DM442数字式步进电机驱动器。该驱动器可以设置512内的任意细分以及额定电流内的任意电流值,能够满足大多数场合的应用需要。电路连线如图9所示。

基于STM32F103的贴片机控制系统的设计与实现

通过步进电机驱动器控制步进电机的方法较为简单,仅需通过单片机IO口给出不同频率的方波脉冲信号即可控制步进电机的速度,通过另一个IO口给出高低电平控制电机旋转方向。本文所采用的步进电机步距角为1.8°,因此驱动器每接收200个脉冲信号,步进电机旋转一周。


3 运动控制系统软件设计


下位机控制程序由串口收发程序,限位开关检测程序,舵机驱动程序、步进电机驱动等部分组成。下面将对舵机驱动和串口收发部分做详细的介绍。


3.1 舵机驱动程序


根据1.1.2中的介绍,舵机用来控制吸笔和拖拽针的运动,在单片机的控制中常用PWM(Pulse Width Modulation)调制来驱动它。脉冲宽度调制(PWM)是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,其优越性在于驱动电子设备的简单性和计算机接口的容易性。在舵机控制系统中,输出的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输出频率的计算公式为:

基于STM32F103的贴片机控制系统的设计与实现

这里系统时钟频率为72000000赫兹,所需PWM频率为50赫兹。为方便计算,同时保证自动重装载值和预分频系数均为整数,这里取自动重装载值为1000。计算得预分频系数为1440-1=1439。因此调用PWM初始化函数为:PWM_Init(1000,1439);


PWM输出波形占空比计算公式为:

基于STM32F103的贴片机控制系统的设计与实现

由此计算得到:


左极限位置时TIM3->CCR2=25,


右极限位置时TIM3->CCR2=125,


中间位置时TIM3->CCR2=75。


3.2 串口通信配置


STM32的串口资源相当丰富的,最多可提供5路串口(STM32F103RBT6只有3个串口),有分数波特率发生器、支持同步单线通信和半双工单线通讯、支持LIN、支持调制解调器操作、智能卡协议和IrDA SIR ENDEC规范(仅串口3支持)、具有DMA等。


STM32的串口配置需要开启串口时钟,并设置相应IO口的模式,配置波特率、数据位长度、奇偶校验位等信息。STM32的串口波特率计算公式如下:

基于STM32F103的贴片机控制系统的设计与实现

上式中,fPCLKx是给串口的时钟;USARTDIV是一个无符号定点数。


3.3 串口数据包格式设计


表1为串口与单片机通信的数据包格式,每帧有9个字节,开始六个字节是包头标志、器件地址、数据类型、起始地址以及数据长度,其中数据类型有:读数据指令r(0x72)、预设参数w(0x77)、运动指令m(0x6D)、请求重发指令c(0x63)、正常返回指令b(0x62)和放弃通信指q(0x71)。然后是10个字节的数据位,通常数据位为2个4字节的数据,为了避免出现数据对齐问题,在后面加入两个值为0的字节。最后是两


个字节的校验位和结束标志位,采用CRC16进行校验。

基于STM32F103的贴片机控制系统的设计与实现

数据由上位机即PC主动发送,下位机即单片机被动等待接收,系统在每次上电初始化时进行一次握手,下位机在接收到的包头数据中匹配自己的器件地址,一致时则接收命令,否则将收到的数据包抛弃。当上层控制器向单片机发送读数据指令r(0x72)时,其数据位均为0;单片机收到指令后,将状态信息填入数据位,回发给上位机。当上位机向单片机发送预设参数w(0x77)数据包时,将参数信息填入相应数据位;单片机收到后,将数据写入EEPROM中并发送反馈,反馈帧以同样的类型、将存好的数据再次读出填入数据位,发送给上位机进行匹配校验。当上位机向单片机发送运动指令m(0x6D)时,将数据位按设定的格式填入数据位;单片机读取并按照指令内容进行运动。

基于STM32F103的贴片机控制系统的设计与实现

单片机正确接收到除预设参数之外的数据时向主机回发正常返回指b(0x62);若收到上一组主机的数据后发现数据出错,则请求重发指令c(0x63),主机接收到此回应指令后执行重发操作;若连续通信错误并超过最大限制后则发送的放弃指令q(0x71)。因为不涉及有效数据,所以这三种指令的起始地址、数据长度、有效数据均为0。


4 结束语


本文根据目前贴片机市场上的应用现状,提出了低成本,小型化的设计方案。对贴片机整机的机械结构进行了优化设计。分别对贴片机的机械传动系统,机器视觉系统及运动控制系统给出了设计思路。针对运动控制系统,设计了具体的硬件与软件实现方案,并对整机工作过程进行详细说明。本文设计的贴片机运动控制程序经过调试,达到了预期目标,现已在学校实验室的应用中取得了不错的成果。


关键字:STM32F103  贴片机控制系统  整机系统 引用地址:基于STM32F103的贴片机控制系统的设计与实现

上一篇:基于STM32 HID例程生成不多于64字节传输的示范
下一篇:基于STM32Cube USB设备库应用的几个常见问题

推荐阅读最新更新时间:2024-11-13 10:27

STM32F103入门 | 4.Keil 5主窗口和工具栏概述
4.1 前言 为了让小伙伴们更快速地上手Keil MDK-ARM V5,本文先让小伙伴们简单了解一下Keil的主窗口界面以及工具栏。之所以有工具栏,是因为有些快捷按钮在编程开发时使用频率较高,所以为了方便使用者使用,就把某些常用的快捷按钮归结在一起,于是就出现了工具栏。 本文主要讲解Keil MDK-ARM V5 的工具栏,Keil系列其他版本也同样适用。 4.2 主窗口界面 为了让小伙伴对Keil集成开发环境有个大概的了解,首先给小伙伴讲述一下Keil默认编辑模式主窗口下的各个小窗口的内容。 主窗口如下图 菜单栏(Menu Bar) 菜单栏跟我们使用的其他软件非常类似,包含File文件、Edit编辑
[单片机]
<font color='red'>STM32F103</font>入门 | 4.Keil 5主窗口和工具栏概述
STM32f103 —— can通信
#include stm32f10x_can.h CanRxMsg CanPeliRxMsgStructure; CanTxMsg CanPeliTxMsgStructure; static void can_nvic_config(void) { NVIC_InitTypeDef NVIC_InitStructure; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); NVIC_InitStructure.NVIC_IRQChannel = USB_LP_CAN1_RX0_IRQn; NVIC_InitStructure.NVIC_IRQChannelPr
[单片机]
stm32f103学习笔记——NVIC初始化
初学STM32F103的中断优先级配置,感觉很难找到着手点,下面给出NVIC初始化程序的注释,供大家参考: void Nvic_Init(void)//中断优先级初始化 { NVIC_InitTypeDef NVIC_InitStructure; /* NVIC_PriorityGroup */ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//指定抢占优先级为两位,响应优先级为2位,(抢占优先级- 响应优先级- 中断向量表顺序) NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn;//指定TIMER3中断 NVIC_InitStruct
[单片机]
STM32F103贴片机控制系统的设计
  本文以STM32F103RBT6为主控芯片,设计了一种自动贴片机。   1、贴片机模块设计方案   本文将贴片机模块化的进行设计与编程,模块化后的整机系统由3个部分组成:机械传动系统、机器视觉系统和运动控制系统,如图1所示。      图1贴片机系统框图   1.1、贴片机机械传动系统的设计方案   1.1.1、贴片机X轴Y轴设计方案   本方案采用X—Y轴两轴联动,Z轴独立运动的设计方案。其中X-Y轴由步进电机通过同步带传动进行机械运动。具体实现结构如图2所示。      图2贴片机X-Y轴传动机构图   如图所示,Y轴步进电机固定于底座上,带动同步带轮旋转,同步轮带动同步带做直线运动,光轴滑块与同步带相连。从而跟随同步带
[单片机]
<font color='red'>STM32F103</font>的<font color='red'>贴片机</font><font color='red'>控制系统</font>的设计
stm32f103——串口UART
在学习UART之前,我们先来了解一下单片机与外围设备之间的通信: 单片机与外围设备之间的信息交换和传输我们称为通信。过去通信方式有两种:并行通信和串行通信。 并行通信: 定义:并行通信是指利用多条传输线将一个数据的各位同时传送。 传输方式:传输一个字节(8个位)的数据时,并口是将8个位一字排开,分别在8条连接线上同时传输。 特点:传输速度块,适用于短距离通信。 缺点:虽然,并行通信传输速度快,但是由于,线与线之间存在电磁干扰,会导致数据错误。而且由于线比较多,PCB布线比较麻烦,所以并行通信不常用,而串行通信用得比较广泛。 串行通信: 定义:串行通信是指利用一条传输线将数据一位位地顺序传送。 传输方式:传输一个字节(8
[单片机]
<font color='red'>stm32f103</font>——串口UART
STM32F103跳过停止模式,不能进入停止模式
问题: STM32F103跳过停止模式,不能进入停止模式stopmode static void led_thread_entry(void* parameter) { unsigned int count = 0; rt_hw_led_init(); while(1) { rt_hw_led_on(0); rt_thread_delay(RT_TICK_PER_SECOND / 2); rt_hw_led_off(0); rt_thread_delay(RT_TICK_PER_SECOND / 2); { //失能 SysTic
[单片机]
<font color='red'>STM32F103</font>跳过停止模式,不能进入停止模式
STM32应用案例 基于STM32F103ZE开发的数码相册
1.硬件平台 CPU:STM32F103ZE 屏幕:3.5寸TFTLCD屏 触控:电阻式触摸屏xpt2046 SD卡、外扩Sram 2.示例效果 SD卡检测和图片搜索 图片加载与显示 3.软件设计 3.1 遍历目录   遍历目录,搜索所有的bmp格式图片,以链表方式保存图片名,方便接下来图片切换。 typedef struct FILE_info { char file_name ; u16 number;//保存第几张图片 struct FILE_info *next; struct FILE_info *pre; }FILE_INFO; FILE_INFO *bmp_head=NULL; /*创
[单片机]
STM32应用案例 基于<font color='red'>STM32F103</font>ZE开发的数码相册
STM32F103释放Jtag接口用做普通io
stm32上有两个调试接口,一个是比较通用的Jtag,一个是SWD。SWD占用的IO口更少,因此,我们可以用SWD来调试MCU,这样,除去swd的两条线,Jtag接口的另外三个口则可以用来作普通IO口使用,配置很简单,分享给各位: GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); G
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved