AS5040磁编码器使用笔记

AS5040 是一款无接触式磁旋转编码器,在单个封装内整合了集成式 Hall 元件、模拟前端和数据信号处理功能。使用时必须结合一块圆柱形双极磁铁推荐时直径6cm高2cm。磁铁的安装需要对准当磁铁与芯片对准时引脚MagINCn (引脚1)和MagDECn (引脚2)将被拉低至VSS。。磁铁可以安装在 IC 的上方或下方。这种绝对角度测量方式可即时指示磁铁的角位置,其分辨率达到 0.35°,即每圈 1024 个位置。数字化数据能够以串行比特流(SSI)或 PWM 信号的形式给出。也提供用户可编程的增量式输出,内置电压调节器,允许其工作在 3.3V 或 5V电源电压下。
优点

  1. 完整的片上系统
  2. 灵活的系统解决方案,同时可以提供绝对值串
  3. 行输出、 PWM 输出和增量输出
  4. 由于采用无接触式检测方式,对工作环境严酷
  5. 的应用非常理想
  6. 能够耐受磁铁位置偏离和气隙变动情况
  7. 不必进行温度补偿
  8. 无需校准

主要特性

  1. 在整个 360°范围内实现无接触式、高分辨率的旋
  2. 转位置编码
  3. 2 种数字式、 10 位绝对值输出:
  4. 串行接口输出,以及
  5. 脉宽调制(PWM)输出
  6. 3 种增量输出模式:
  7. 正交 A/B 和索引(Index)输出信号
  8. 步/方向和索引输出信号
  9. 可用于无刷直流电动机的 3 相换向
  10. 10、 9、 8 或 7 位用户可编程分辨率
  11. 用户可编程零位/索引位置
  12. 实现磁铁位置监测和断电监测的故障检测模式
  13. 旋转速率可高达 10,000 rpm
  14. 能够检测磁铁沿 Z 轴移动的按钮功能
  15. 可采用菊链连接模式,串行读取多个互联的
  16. AS5040 器件
  17. 宽广的温度范围: - 40°C 至 + 125°C
  18. 完全符合汽车行业的 AEC-Q100, 1 级规范
  19. 小型无铅封装: SSOP 16 (5.3mm x 6.2mm)

应用

  1. 工业应用:
  2. 无接触式旋转位置检测
  3. 机器人技术
  4. 无刷直流电动机换向
  5. 电动工具
  6. 汽车应用:
  7. 方向盘位置检测
  8. 油门位置检测
  9. 传动变速箱编码器
  10. 头灯位置控制
  11. 电动座椅位置指示器
  12. 办公设备:打印机、扫描仪、复印机
  13. 取代光学编码器
  14. 前面板旋转开关
  15. 取代电位器

此芯片工作时会默认返还三种类型数据,其中绝对式采样频率为10Khz采样1024个数据频率为10hz,所测转速为600rpm,当两个采样点记为一个可以测1200rpm,增量式频率为166hz可以测到10000rpm不会丢失脉冲。没有使用编程改变芯片输出。芯片默认是顺时针计数、未编程零位、位宽度 = 1LSB(最低有效位)、增量分辨率= 10 位、增量模式 = 正交(ABZ)

5040ABZ信号测速  每一圈返回脉冲信号1024,AB两相信号的相位差反应电机的转向,Z信号则是一圈一个脉冲的零信号。本人使用STM32F103单片机使定时器工作在编码器模式,接收AB两相的脉冲信号进行计数。计数器计数方向和AB相信号的关系如下图所示,(本人的设计中A相信号接在TI1,B相信号接在TI2)。

本人使用的是STM32cubeMX配置的工程,编码器配置如下图所示。选择组合通道中的编码器模式,通道1和通道2会自动设为编码器模式,本人的设计中只计A相的脉冲所以2分频,定时器的编码器模式有低通滤波器我没有使用。从上升沿开始计数,其余的都是默认。使用STM32cubeMX5.2.1固件库使用F1的1.7.0版本。

使用算法将16位计数器扩展为32计数。设置50ms中断读取一次计数器数据,32位数据存储1s内的脉冲次数得到转速。

void HAL_TIM_PeriodElapsedCallback( TIM_HandleTypeDef* htim )
{
    if( TIM4 == htim->Instance )
    {
        now_count = __HAL_TIM_GET_COUNTER(&htim3);     //50ms一次中断取出计数器数值
        Angle = now_count - last_count;                //计算出单位时间内脉冲数
        if (Angle < 0)                                 //负数转为正数
        {
            Angle = Angle + count_period;
        }
        
        last_count = now_count;                         //将此次脉冲数存
        Pulsecount1 = Pulsecount1 + Angle;              //累加单位时间内脉冲 32位数据  
        time_cnt++;                                     //时间变量累加   
        
        now_count = 0;                                  //变量清零
        Angle = 0;                                      //角度变量清零
        if (time_cnt >= 20)
        {
            time_cnt = 0;
            Pulsecount = Pulsecount1 >> 10;
            Pulsecount1 = 0x00000000;
        }
    }
}

SSI信号接收STM32cubeMX配置如下图所示,数据在CLK第一个下降沿锁存至移位寄存器,每一个后续CKL上升沿输出移位数据,共输出16位数据,输出高位在前。SSI信号读取速率不可超过1M。

前10位数据是角度信息。  

OCF (偏差补偿完成),逻辑高电平表示偏差补偿算法执行完毕。为了实现快速启动,可以通过外部微控制器查询此位。一旦此位置位,则表明AS5040 已经完成启动,并且数据有效。
COF Cordic 溢出),逻辑高电平表示 CORDIC 单元出现了超范围的错误。此位置位时, D9:D0 的数据无效。绝对值输出保留最后 1 个有效的角度值。通过将磁铁位置调整至 X-Y-Z 容限以内,可以消除这种报警故障。
LIN (线性度报警),逻辑高电平表示输入磁场产 生 了 严 重 的输 出 线 性 度 问题 。 此 位 置 位时 ,D9:D0 的数据仍然可以使用,但可能包含无效数据。通过将磁铁位置调整至 X-Y-Z 容限以内,可以消除此项告警。
MagINCn, (磁场增强),磁铁被推向靠近 IC 的位置时,会导致磁场强度增大,该位将变成逻辑高。
MagDECn, (磁场减弱),磁铁被拉至远离 IC 的位置时,会导致磁场强度减小,该位将变成逻辑高。
由于绝对式测转速有很大的局限所以没有深入研究下去。如果还有疑问可以查看以下链接有中文数据手册。https://download.csdn.net/download/cao_zuo_xi_tong/11367339

  • 6
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值