基于自由摆的平板精确控制与激光追踪系统

发布者:cxd88988最新更新时间:2012-11-27 来源: 单片机与嵌入式系统 关键字:MSP430F5438  激光追踪  精密电位器  自由摆 手机看文章 扫描二维码
随时随地手机看文章
引言
    随着现代科学技术的发展,基于嵌入式系统的自动控制在工业中得到了广泛的应用。目前,工业生产的机械复杂度越来越高,单纯在静止条件下的自动控制已经不能满足人们对测控系统的要求,因此,研究如何在动态条件下对系统实施精确测量与控制是十分必要的。本文介绍了一种基于自由摆的平板精确控制与激光追踪系统。在现代工业中,这种系统可以适应工业发展,应用在复杂度较高的自动化生产中,在生产过程中可以同时完成测量与控制,提高生产的自动化程度。

1 系统结构
1.1 系统整体结构
   
系统整体结构如图1所示,主要由控制模块、采集模块、步进电机驱动模块、步进电机、自由摆平板和激光笔,以及调试模块组成。其中,采集模块采用WDD35D-4精密电位器,当自由摆摆杆摆动时,电位器的阻值会发生变化,从而反应摆杆的位置信息。控制模块采用低功耗单片机MSP430F5438作为处理器,MSP430F5438内置A/D模块,可以采集精密电位器反馈的模拟信号。步进电机驱动选用东芝公司的TB6560芯片,该芯片是低功耗、高集成两相混合式驱动芯片,驱动步进电机,用以控制自由摆平板和激光笔的位置。调试模块用于控制模块程序下载与系统调试,正常工作时不使用。

d.JPG


1.2 自由摆机械结构
   
自由摆机械主要由固定支架、转轴、摆杆、电机、平板、激光笔构成,如图2(a)所示。自由摆转轴上连接有精密电位器作为摆杆角度传感器,电机固定在摆杆底部,平板固定在电机的转轴上。自由摆摆动示意图如图2(b)所示,在平板上放置8枚一元硬币,在摆杆摆动过程中,电机和平板也会随摆杆转动,通过单片机控制电机的转动,使硬币稳定在平板上。同时,在平板下方与平板平行的方向固定有激光笔,通过系统控制,可以实现在摆杆摆动过程中激光笔跟踪预设目标的功能。

a.JPG



2 理论分析
2.1 自由摆精确控制理论
   
在平板中心稳定放置8枚1元硬币(人民币),抬起摆杆让摆杆与支架成一定角度θ(45°≤θ≤60°),放开摆杆让其自由摆动。自由摆精确控制必须达到以下目标:在摆杆摆动过程中,要求控制平板状态,使硬币在5个摆动周期中不会从平板上滑落,并尽量减少滑离平板的中心位置。
    要达到以上目的,电机必须根据相关参数控制平板的角度,保证摆杆摆动过程中硬币的受力平衡。分析自由摆摆动过程,精确控制主要得保证从摆杆初始位置到平板与摆杆垂直(该状态无须主动控制硬币即可受力平衡)的过程中,硬币保持相对稳定。[page]

2.2 激光追踪理论
   
激光追踪示意图如图3所示。在距离自由摆1.50 m距离处垂直放置靶子,当摆杆垂直静止且平板处于水平时,调节靶子高度,使激光笔光斑照射在靶子的中心。用手推动摆杆,支架与摆杆角度为θ(θ为30°~60°)。放开摆杆,系统应控制平板在15 s内尽量使激光笔照射在中心线上(偏差绝对值<1 cm),这就是激光追踪理论的目标。图3中,b为自由摆摆杆静止时平板中心(激光笔固定点)到靶子中心的线段;a为θ的角平分线与线段b的交点到激光笔固定点的线段;c是激光笔固定点到靶子中心的线段;γ为线段a、c的夹角。

b.JPG


    图3中,摆杆与支架的角度θ可以通过转轴上的精密电位器测量,转换成的模拟电压值输出给单片机,单片机通过内置的A/D转换器将模拟电压值转化成数字量,计算出相应的角度θ。为了使系统实现激光追踪功能,必须使激光笔发射的激光始终打在靶心位置。由于激光笔固定在平板下方,并且与平板方向平行,在摆杆摆动过程中我们通过控制γ来实现追踪功能。结合几何运算,对θ与γ之间的关系进行分析:
    a=tanθ/2
    b=1.5-a
    c2=a2+b2-2ab cosθ
    sinθ/c=sinγ/b
    角度γ即平板的倾角,由于平板固定在步进电机转轴上,因而角度γ也是步进电机转动的角度。通过以上分析,可以知道,实现系统激光追踪的功能必须满足θ与γ之间存在sin θ/c=sin γ/b这一关系。在整个系统运行过程中,单片机不断接收精密电位器采集的θ值,然后进行
分析运算,计算出步进电机的转动角度γ。由于MSP430F5438不含浮点数运算单元,处理数据能力较弱,且会占用CPU大量的工作时间,所以在程序的编写过程中,采用查表法来优化程序。以θ为已知量,γ为未知数运用MATLAB求解,得到θ与γ的关系,如表1所列。在程序运行过程中,当单片机每读到一个θ值,通过查表即可知道与之对应的γ值。

c.JPG

[page]

3 系统硬件方案
3.1 电源模块
   
本系统电源电路采用LM2596与LM1117-3.3组合构成。LM2596开关电压调节器是降压型电源管理单片集成电路,能够输出3 A的驱动电流,同时具有很好的线性和负载调节特性;采用150 kHz的内部振荡频率,属于第二代开关电源调节器,功率小、效率高;LM1117-3.3是低压差线性电压调节器,可以固定输出3.3 V电压,输出电流可达800 mA。MSP430F5438单片机最小系统需要3.3V供电,因此采用LM1117-3.3给单片机供电。
3.2 数据采集模块
   
本系统的数据采集模块采用WDD35D-4精密电位器,精密电位器由一个电阻体和一个转动(或滑动)系统组成。当电阻体的两个固定触点之间外加一个电压时,通过转动(或滑动)系统改变触点在电阻体上的位置,在动触点与固定触点之间便可得到一个与动触点位置成一定关系的电压。利用MSP430F5438单片机内置A/D转换器读取精密电位器两端电压值,实现数据采集功能。
3.3 控制模块
   
选择MSP430F5438单片机进行系统控制。在系统运行过程中,单片机通过内置A/D转换器读取数据采集模块采集的数据,然后进行数据处理,根据处理结果控制步进电机驱动芯片TB6560,最终控制步进电机按要求转动。MSP430系列单片机是16位单片机,采用了精简指令集(RISC)结构,具有丰富的寻址方式、大量的寄存器以及片内数据存储器,可参加多种运算,同时具有高效的查表处理指令。MSP430F15438是基于闪存的产品系列,具有集成外设USB、模拟比较器、DMA、硬件乘法器、RTC、USCI、12位DAC等。
3.4 步进电机驱动模块
   
步进电机驱动模块采用东芝公司的低功耗、高集成两相混合式步进电机驱动芯片TB6560。其主要特点有:内部集成双桥MOSFET驱动,最高耐压40 V,单相输出最大电流为3.5 A。步进电机驱动电路原理图如图4所示,引脚VMA、VMB是步进电机驱动电源引脚。OUT_AP、OUT AM、OUT BP、OUT_BM引脚分别与步进电机的两相接口相连,当芯片输入端接收到单片机输入信号时,这4个引脚会执行单片机的命令使步进电机进行相应转动。NFA、NFB分别为电机A、B相电路检测端,所接电阻为0.2 Ω。PGNDA、PGNDB、SGND则是地线引脚。通过单片机MSP430F5438的I/O口与TB6560芯片的CLK、ENABLE、CW/CWW引脚相连,从而实现单片机对步进电机的控制。

f.JPG

[page]

4 系统软件设计
   
由于系统功能有两个,需要在不同的模式下运行,故程序设计采用状态机的设计思想,根据编码开关的不同状态,进入不同的模式控制,具体设计流程如图5所示。程序开始后,扫描编码开关的状态,当系统扫描到编码开关的状态为状态1时,系统执行平板控制命令;当系统扫描到编码开关的状态为状态2时,系统执行激光追踪命令。

g.JPG



5 系统测试
5.1 平板控制测试
   
根据设计要求对系统平板控制功能的稳定性进行测试,测试方法为直接计数法。将单摆拉至60°,在平板上放置8枚硬币,松开单摆,记录单摆摆动5个周期后平板上剩余硬币的数目。统计结果用直方图表示,如图6所示。其中,横坐标表示平均每次剩余硬币数目,纵坐标表示测试次数。测试表明,随着测试次数的增加,平均剩余硬币数目也随着增加,平板控制功能趋向稳定。

h.JPG


5.2 激光追踪测试
   
根据设计要求对系统激光追踪功能进行测试,测试方案选用多次测量取平均值的方法。按图3所示,在靶纸上确定靶心的位置,打开激光笔;启动系统,在自由摆摆动过程中,观察并记录激光笔在靶纸上的红色光斑与靶心的最大距离,这个最大距离就是本激光追踪系统的误差。按照上述方法多次测量,统计后得出激光追踪系统的误差范围和稳定程度。具体结果如图7所示,其中横坐标表示误差大小,纵坐标表示测试次数。经计算误差平均值为0.13 cm。测试表明,随着测试次数的增加,误差平均值逐渐减小,激光追踪性能较为稳定。

i.JPG



结语
   
本设计基于自由摆,以MSP430F5438单片机为控制核心,设计并实现了精确控制与激光追踪系统,通过MATLAB建模实现了硬件与软件的结合。经过测试,在误差允许的范围内验证了系统可以实现基于单摆的平板精确控制与激光追踪功能。

关键字:MSP430F5438  激光追踪  精密电位器  自由摆 引用地址:基于自由摆的平板精确控制与激光追踪系统

上一篇:区分ADC0804模拟地与数字地消除干扰的方法
下一篇:基于STC12C的铁路信号半自动闭塞光缆传输器设计

推荐阅读最新更新时间:2024-03-16 13:14

MSP430F5438研究心得
一、多源中断问题 #pragma vector = PORT2_VECTOR __interrupt void port2(void) { switch(P2IV) { case P2IV_P2IFG6: P2IFG &=~BIT6; P1OUT ^= BIT0;break; //LED1 亮灭 case P2IV_P2IFG7: P2IFG &=~BIT7; P1OUT ^= BIT1;break; //LED2 亮灭 default :break; } } #pragma vector = PORT2_VECTOR __inter
[单片机]
MSP430F5438学习笔记 UART ACLK 9600-8-N-1
1.初始化UART0之前需要先初始化ACLK、SMCLK和MCLK。示例代码中使用XT1,ACLK为32768,SMCLK和MCLK约为8MHZ。 2.UART的时钟可以参考ACLK或者SMCLK,本例参考ACLK。由于参考ACLK时钟,所以串口速率不能超过32768。选择9600较为合适。 3.MSP430波特率的产生有两种模式,低频波特率产生和过采样波特率产生。代码中使用低频波特率产生。 4.代码的开头调用了stdio,在函数中宏重写了putchar函数,定向到UART单字节输出。 5.代码初始化之后输出 Hello MSP430,随后直接反射串口接收到的数据,例如发送123456即返回123456。 /
[单片机]
MSP430F5438研究心得
一、多源中断问题 #pragma vector = PORT2_VECTOR __interrupt void port2(void) { switch(P2IV) { case P2IV_P2IFG6: P2IFG &=~BIT6; P1OUT ^= BIT0;break; //LED1 亮灭 case P2IV_P2IFG7: P2IFG &=~BIT7; P1OUT ^= BIT1;break; //LED2 亮灭 default :break; } } #pragma vector = PORT2_VECTOR __inter
[单片机]
msp430F5438+CC2520通信
软件的实现主要是对硬件的初始化和简单基于IEEE820.15.4格式的无线收发。 硬件初始化包括时钟的初始化,SPI初始化,UART初始化等。 以下是一个时钟初始化的程序: MSP430F5438 // ----------------- // /|\| | // | | P7.0|-- XT1 37.768K // --| P7.1 |-- // | P5.2|-- XT2 16M // | P5.3|-- // | | 硬件连接方面,P7.0与P7.1连接晶振XTI,P
[单片机]
MSP430F5438 看门狗实验
简介: 1,学会在定时器和看门狗模式下操作 WDT,了解 WDT 寄存器的配置 2,编程实现WDT 定时功能,WDT 时钟源来自 ACLK,且 ACLK 无失效来自 XT1 晶体 3,实现功能:250ms 定时,每 250ms LED1 亮灭交替闪烁 1,看门狗介绍 看门狗定时器是一个32位的定时器它可以作为看门狗或定时器使用所有F5XX系列的器件中都有增强型看门狗定时器—WDT_A。 什么是看门狗? 从字面的意思理解,看门狗帮我的系统看门,防止我的系统到处乱跑。在实际嵌入式系统中看门狗也是充当这个角色的。看门狗,简称WDT,很明显它实际上是一个定时器,就如同我们所讲的Timer_A3亦或是Timer_B7系统一样,
[单片机]
<font color='red'>MSP430F5438</font> 看门狗实验
MSP430F5438学习笔记 TA1溢出中断加比较匹配中断
// 时钟默认情况 // FLL时钟 FLL选择 XT1 // 辅助时钟 ACLK选择 XT1 32768Hz // 主系统时钟 MCLK选择 DCOCLKDIV 8000000Hz // 子系统时钟 SMCLK选择 DCOCLKDIV 8000000Hz // TA1选择ACLK,最大计数值为65535 // 比较匹配值为 32768 // 在TIMER1_A0_VECTOR中 CCR0中断 P4.0 = 0 // 在TIMER1_A1_VECTOR中 OVF中断 P4.0 = 1 // 实际效果 P4.0 1s为高电平,1s为低电平,交替进行 #include
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

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

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