微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 采用SPCE061A单片机的髋作用力测试仪设计

采用SPCE061A单片机的髋作用力测试仪设计

时间:04-15 来源:互联网 点击:

考电压。考虑到该测试仪的测力量程为0kg~300kg,力采集电路对应的模拟电压输出O V~3V,模拟电压信号符合SPCE061A自带A/D转换器的输入要求。因此,A/D转换参考电压采用系统默认的Vdd。将Usample连接至 SPCE061A的I/O A0端,即可进行A/D转换。本系统设计的A/D转换频率设置为l kHz,髋作用力F可表示为:

式中:Mmax是测试仪所测作用力的最大量程,g是重力加速度值,Umax是力采集电路输出的模拟电压最大值,AD_Data是力采集电路输出 Usample经A/D转换后得到的10位数字量,AD_Max是10位A/D转换器参考电压Uref所对应的数字量,此处为0x03FF。实际编程中,为了降低采样过程瞬态误差的干扰,运用了算术均值滤波的方法,即最终显示的作用力F通过对10次采样的作用力求算术平均值取得。

  3.2 速度测量

本测试仪中,与髋作用力同步的速度值和作用力方向由光电编码器、鉴相电路和相应软件计数器求得。

  3.2.1 光电编码器测速原理

光电编码器是一种数字式角度传感器,它能将角位移转化成相应数量的电压脉冲信号,主要用于机械转角位置和旋转速度的检测和控制。本测试仪选用的ZKX-6- 50BM7型增量式光电缩码器是一款高精度角位移传感器,转动轴每旋转一周分两路输出500个电压脉冲信号Out_A和Out_B。其中,Out_A和 Out_B两路信号相位差为90°。

将光电编码器输出接至单片机的外部中断IRQ3,则转动引起的每一个电压脉冲都会触发单片机外部中断。通过编制单片机外部中断子函数,就可以实现对光电编码器输出脉冲个数的准确计算,经换算后即得转动轴转过的精确角位移。

因此,计算固定时间段内光电编码器的角位移,就可求得转动轴的角速率,结合光电编码器同轴转盘的半径,就可算得与髋作用力同步的线速度值。实际编程中,选用单片机内部512 Hz的时基中断产生固定时间段,即计算每个时间间隔t=l/512 s内光电编码器的输出脉冲个数,从而求得速度。设v为t时间内的平均速度,由于固定时间段足够小,所以将瞬时速度近似为平均速度v,则

式中:s为t时间内被测对象产生的位移;n为固定时间间隔内(1/512 s)光电编码器输出的脉冲数;ι为光电编码器同轴转盘的周长,N为光电编码器旋转一周输出的脉冲数,此处N=500。

  3.2.2 速度鉴相的方法

髋作用力检测过程中,光电编码器的转向说明训练者髋部是主动发力或是被动受力。因此,光电编码器转向的判别是本测试仪必须具备的基本功能。通过对光电编码器所输出的相位差90°的两路电压脉冲信号0ut_A和Out_B进行鉴相,就能够判别转盘正转或反转。具体鉴相电路原理如图3所示。

光电编码器输出的Out_A和Out_B分别接至D触发器时钟端Clk和控制端D。根据D触发器的功能定义,在输入时钟信号Out_A的每个脉冲上跳沿,触发器的输出W2被控制端D的输入信号Out_B置位。图4示意了光电编码器正转时,Out_A、Out_B的信号波形和鉴相电路的输出。

正转时,Out_A信号的相位超前Out_B信号90°,w1输出始终为高电平。反转时,Out_A信号的相位延后Out_B信号90°,W1输出始终为低电平。因此,通过读取W1的电压高低,就可以判别光电编码器的转向。

3.3 功率的测量

测得作用力和速度之后,功率可由二者乘积算得。即功率:

P=Fv (5)

但考虑到单片机在计算实数乘法的效率和精度上的劣势,单片机只负责将采集到的作用力和速度通过RS232上传到上位机,实际运算则由上位机完成。此方法能满足测试仪的实时性和精度要求。

4 系统软件设计

SPCE061A内置在线仿真电路ICE (In-CircuitEmulator)接口和在线串行编程技术,使程序开发、调试和下载等均在可视化开发环境中通过在线调试器PROBE实现,省去了传统单片机开发中必需的硬件在线实时仿真器(ICE)和程序烧写器。具体软件设计中,充分利用SPCE061A丰富的时基中断,在IRQ4、IRQ5中断子程序中完成键盘扫描和A/D转换等工作。与上位机的串行通信则采用SPCE061A自带的UART硬件传输中断,以满足数据双向传输的异步性和实时性。

系统程序由主程序、力采集子程序、速度计算子程序、串行通信子程序、外扩存储器子程序和中断子程序等部分组成。各部分严格按照模块化原则编写,易于日后系统升级和维护。其中,主程序主要完成测试仪各部件的初始化和自检,以及实际测量中各个功能模块的协调。

力采集子程序和速度计算子程序流程图如图5所示。

测试仪的上位机监控程序基于Visual C++6.0平台开发。使用微软公司提供的MSComm控件,极大程度上避免了直接调用Win32API造成的编程繁琐等弊端,以较少代码量实现本系统要求的通信功能。上位机程序具备作用力计时、平

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top