随着计算机技术的日益普及,计算机辅助评片系统愈来愈受检测人的青睐。针对胶片的气孔缺陷,设计了计算机辅助评片,并进行自动分级。为了保证缺陷智能检测中线阵CCD相机对胶片的数字化处理准确无失真,文中设计采用ARM处理器STM32F103C8T6为核心,光电编码器接入电路,电机驱动选用LMD18245芯片,驱动步进电机控制扫描机构的运动速度与线阵CCD线频率的匹配,从而确保工业胶片数字化和同步只能检测的准确无误,为未来工业射线检测提供重要保障和技术支持。
1 系统总体设计
本设计采用STM32F103作为集成控制芯片,增量式光电编码器作为采集启动信号,接收到由增量式编码器发出的A、B相信号,再由STM32 F103对步进电机驱动器发脉冲信号,利用脉冲计数方式控制电机驱动器,再用电机驱动器带动电机进行加工。增量式编码器在转动时,可连续输出与旋转角度对应的脉冲数,静止状态不输出脉冲。计算其步进电机的转速,利用步进电机细分驱动和PID控制算法调整传动机构的速度,最终实现对步进电机的精确控制,电机同步系统框图如图1所示。
2 硬件电路设计
步进电机总体控制设计采用两相四线的步进电机,ARM控制器给步进电机驱动器一个脉冲信号和方向信号,并利用驱动电路中的细分功能,经过功率放大和环形分配器,驱使步进电机绕组精确运转,采用细分控制电路,能够降低工作噪音,减少震动,消除步进电机的低频共振,改善步进电机工作的旋转位移分辨率。
2.1 光电编码器
光电编码器在电机控制中可以用来测量电机转子的磁场位置和机械位置以及转子的磁场和机械位置的变化速度与变化方向。可以利用定时器/计数器配合光电编码器的输出脉冲信号来测量电机的转速。其测速原理是在规定的检测时间Tc内,对光电编码器输出的脉冲信号计数的测速方法。
设在时间T内,转轴转过的弧度数为XT,则转速可由下式表示:
相关参数如表1所示。
2.2 步进电机驱动及细分电路
驱动电路选用两片LMD18245作为步进电机驱动芯片,用来驱动两相四线步进电机,它与STM32F103主要硬件控制连接图如图2所示。[page]
步进电机必须有驱动器和控制器才能正常工作,驱动器的作用是对控制脉冲进行功率放大,环形分配,为了更加精确有效的控制步进电机,改善步进电机工作的旋转位移分辨率,步进电机驱动采用细分功能,LMD18245电源电压12 V供电,固有步距脚1.8°,电机齿数50 W,DIRECTION为方向逻辑输入引脚。逻辑控制功能,BRAKE为急停信号,为D/A转换器的参考电压,设置为5 V,M1-M4为D/A转换器的二进制数字输入端,可以改变细分数,此设计采用4细分驱动,因此细分后步距角=电机固有步距角/细分数,其步距角为1.8°/4=0.45°,也就相当于每来一个脉冲走0.45°,当细分等级大于1/4后,电机的定位精度并不能提高,只是电机转动更平稳。通过对步进电机的精确,平稳控制,可以使其和线阵CCD相机的采集频率表相互匹配最终达到精确检测的目的。
3 软件设计
控制系统软件主要由六部分,分别为主控程序,增量式PID速度控制程序,串口收发程序,外部中断程序,位移,速度计算程序,步进电机正反控制程序。设计流程图如图3所示。
步进电机上电初始化后,对胶片位移和速度进行测量和计算,并利用增量式PID控制步进电机的移动速度,串口进行对电机方向,目标位置,PID参数的设定,当胶片开始移动后,控制器将对编码器进行计数进行位移计算和速度计算,并调用PID算法。
PreU=Kax[(Dreeor+betaxKbxek+KcxPreDerror)] (4)
计算误差,更新电机转速的输出值,为了使线阵CCD线频率与扫描机构的运动速度相匹配,已知步进电机步距角T,细分数N,频率f,可以计算得到步进电机的转速。
进而转化为Vr=RxVm,线阵CCD的线频率fc=VrxL,其中L为每个CCD像素的成像代表物面上的尺寸。从而更新胶片相对于CCD镜头的位置进行成像,最终实现对X胶片的数字化精确采集。
4 结束语
文中设计了基于STM32的底片数字化仪硬件电路,重点描述了电机同步控制电路,通过利用驱动细分技术对步进电机转速的控制,使线阵CCD相机的扫描速率和胶片传动机构速率相匹配,实践证明,采用以上设计方法可以获得更加准确、清晰、无失真的数字化底片图像。
关键字:STM32 DMOS LMD18245 智能检测 同步控制
引用地址:
基于STM32的焊缝底片数字化仪硬件设计
推荐阅读最新更新时间:2024-03-16 13:41
STM32微控制器中采用DMA实现方波的产生和捕获
1 STM32微 控制器 介绍
STM32系列微控制器是ST公司基于Cortex-M3内核的高集成度的微控制器。它在性能、价格、功耗和实时性方面树立了一个新的标杆,集成了Cortex-M3内核,以及双ADC、多用途的通用 时钟 TIMx、RTC、I2C、SPI、UART、 CAN 、DMA、 USB 等丰富的 外设 。其功耗在全速72MHz所有模块都打开时也仅仅为36 mA,在低功耗模式下其功耗仅为2μA。
2 DMA和TIMx简介
STM32系列微控制器均含有DMA和通用时钟TIMx模块。其低端型号中仅包含DMA1,支持7个通道;高端型号还包括DMA2,支持5个通道。它的每个通道可任意指定工作模式,如
[电源管理]
Keil MDK3.20 在ULINK下调试stm32方法
1. 程序在RAM中运行 要点:(1)程序的下载地址改到RAM空间中 (2)程序的debug之前要设定SP,PC指针到Ram空间 新建工程,选择STM32 的具体型号,我买的万利的开发板,选择stm32f103Vb。 设定程序下载地址,如下图所示,IROM1的地址指向了STM32的ram空间。 空间大小如何分配取决于自己的需求。本款处理器内部ram大小为20K,分配16K给只读区,4K给可读可写区。这样IROM设定的大小为0x4000,IRAM1的起始就变为0X20004000,大小只剩下0X1000。 Debug标签选择ULINK1 Cortex Debugger(软件采用yjgyiys
[单片机]
Linux环境开发STM32,从环境到调试
首先简单地描述一下软硬件开发环境。 宿主机: 操作系统:CentOS7 x86_64 ( grome桌面版 ) IDE:Eclipse Luna JLink驱动:JLink_Linux_V434a 工具链:GNU-ARM-Toolchains-4.9-2014q4 GDB:arm-linux-gdb V7.8.1 硬件平台: CPU:STM32F103C8T6 JLink:V8 USB转串口:Silicon Labs CP2101 环境的搭配都是比较简单的,编译工具链都比较容易装。这里就不再介绍了。下面就只附上工具链的下载链接。 https://launchpad.net/gcc
[单片机]
STM32学习笔记一一GPIO
1. GPIO工作方式 STM32 每个 IO 口可以自由编程,但 IO 口寄存器必须要按 32 位字被访问。 本文主要是库函数实现的笔记。相关图片来自正点原子教程。 1.1 4种输入模式 输入浮空 输入上拉 输入下拉 模拟输入 a.输入浮空 CPU可以通过输入数据寄存器读出I/O口的高低电平,工作电路如图。 b.上拉下拉输入:添加了上拉、下拉电阻后,CPU再读电平 c.模拟输入 输入量为模拟量,不再是电平,输入的电压范围:0—3.3V 1.2 4种输出模式 开漏输出 开漏复用功能 推挽式输出 推挽式复用功能 a. 开漏输出 开漏输出:输出端相当于三极管的集电极. 要得到
[单片机]
【STM32】使用HAL库进行电机测速,原理、代码、滤波
STM32是一款非常强大的微处理器,广泛应用于各种电机控制系统中。对于电机控制系统来说,测速是非常重要的,因为只有知道电机的转速,才能控制电机的转动。在STM32中,我们可以使用HAL库来实现电机测速。 测速原理: 电机测速的原理是通过测量电机转子的转速来得到电机的转速,一般有两种测速方式,一种是使用霍尔传感器,另一种是使用反电动势法。使用霍尔传感器的测速方法是在电机转子上安装三个霍尔传感器,通过测量这三个传感器的输出电压来确定电机转子的位置和转速。使用反电动势法的测速方法是通过测量电机绕组上的反电动势来确定电机的转速。 代码实现: 使用HAL库的电机测速需要先初始化定时器,然后在中断函数中计算电机转速。具体代码实现如下: 1
[单片机]
STM32的TIM1互补PWM输出
芯片为STM32F412VETx,使用的是高级定时器TIM1的PWM互补PWM输出,看一下STM32CubeMX配置, 再看时钟的配置,TIM1用的是APB2的时钟,。 再看引脚的配置 产生的PWM频率为:Fpwm = 96MHz / ((95+1)(9999+1)) =100Hz,占空比为50% 然后生成代码,看下代码中的FMX_TIM1_Init函数初始化 /* TIM1 init function */ static void FMX_TIM1_Init(void) { TIM_ClockConfigTypeDef sClockSourceConfig; TIM_MasterConfigType
[单片机]
STM32使用FSMC控制sram例程
一、基本概念 1. 与非总线复用的16位SRAM接口 FSMC配置 SRAM存储器和NOR闪存存储器共用相同的FSMC存储块,所用的协议依不同的存储器类型而有所不同。 控制SRAM存储器,FSMC应该具有下述功能: ● 使用或禁止地址/数据总线的复用功能。 ● 选择所用的存储器类型:NOR闪存、SRAM或PSRAM。 ● 定义外部存储器的数据总线宽度:8或16位。 ● 使用或关闭扩展模式:扩展模式用于访问那些具有不同读写操作时序的存储器。 正如配置NOR闪存存储器一样,用户必须按照SRAM存储器的数据手册给出的时序数据,计算和设置下列参数: ● ADDSET:地址建立时间 ● ADDHOLD:地址保持时间 ● DATAST:数据建
[单片机]
【STM32】实战1—用STM32与ULN2003驱动步进电机28BYJ-48(一)
1 实验预期效果 完成步进电机的正转(不通过串口控制)。 2 硬件学习 2.2 28BYJ-48步进电机 2.2.1 规格书 2.2.2 原理认识 【该部分为视频第20讲-步进电机控制_哔哩哔哩_bilibili的学习记录】【强推看原视频】 电机参数: 1~4为相线,5为电源线 同一根绕线,面对面通电励磁,吸引转子转动 : 该图中,定子8个齿,平均相间45°(即360°/8);转子6个齿,平均相间60°(即360°/6)。所以相差15°。根据系列计算可知,得出的结果与规格书并不相符。 所以:货不对板!!!!!!!!!!! (即上面那张图片中的齿数与
[单片机]