STM32 HAL库 AS5600编码器程序

这篇具有很好参考价值的文章主要介绍了STM32 HAL库 AS5600编码器程序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

STM32 HAL库 AS5600编码器程序


前言

提示:这里可以添加本文要记录的大概内容:

AS5600磁性旋转位置编码器是一款可编程、12位高分辨率、非接触式的设备,具有卓越的可靠性和耐久性。这个旋转位置传感器提供没有旋转角度限制。AS5600位置编码器可以通过I (2)C接口或通过OUT引脚输出PWM波/模拟波。典型应用电机闭环控制,机器人手臂,三脚架头,和工业机器控制。


提示:以下是本篇文章正文内容,下面案例可供参考

一、引脚及接线

stm32hal库读取as5600角度,笔记,stm32
图一 AS5600芯片引脚图stm32hal库读取as5600角度,笔记,stm32
图二 引脚定义
VDD5V为5V供电,VDD3V3为3.3V供电,只需接一个电源。OUT引脚是模拟输出,随着电机的转动,OUT引脚会从0-3.3V来会变化,只需用单片机ADC引脚检测电压值即可判断电机位置。本文介绍如何获取通过数字方式读取AS5600的角度值。
stm32hal库读取as5600角度,笔记,stm32
图三 接线图

二、代码

1.as5600.c文件

代码如下(示例):文章来源地址https://www.toymoban.com/news/detail-828533.html

#include "AS5600.h"




unsigned char write_reg(unsigned char reg, unsigned char value)
{
	return HAL_I2C_Mem_Write(&hi2c1, Slave_Addr, reg, I2C_MEMADD_SIZE_8BIT, &value, 1, 50);
}

unsigned char write_regs(unsigned char reg, unsigned char *value, unsigned char len)
{
	return HAL_I2C_Mem_Write(&hi2c1, Slave_Addr, reg, I2C_MEMADD_SIZE_8BIT, value, len, 50);
}

unsigned char read_reg(unsigned char reg, unsigned char* buf, unsigned short len)
{
	return HAL_I2C_Mem_Read(&hi2c1, Slave_Addr, reg, I2C_MEMADD_SIZE_8BIT, buf, len, 50);
}



float i2c_AS5600_get_angle(void)
{   float angle_d;
	int16_t in_angle;
    uint8_t temp[2]={0,0};
		read_reg( Angle_Hight_Register_Addr, temp, 2);
    //printf("%d  %d\n",temp[0],temp[1]);
    in_angle = ((int16_t)temp[0] <<8) | (temp[1]);
    angle_d = (float)in_angle * cpr / 4096;
		//printf("angle=%.2f\n",angle_d);

		return angle_d;
	//angle_d为弧度制,范围在0-6.28	
}

2.as5600.h文件

#ifndef __AS5600_H__
#define __AS5600_H__

#include "main.h"
#include <stdio.h>
#define PI					3.14159265358979f
#define cpr (float)(2.0f*PI)
#define Slave_Addr                0x36<<1//设备从地址
#define Write_Bit                 0	   //写标记	
#define Read_Bit                  1    //读标记
#define Angle_Hight_Register_Addr 0x0C //寄存器高位地址
#define Angle_Low_Register_Addr   0x0D //寄存器低位地址
extern I2C_HandleTypeDef hi2c1;
unsigned char read_reg(unsigned char reg, unsigned char* buf, unsigned short len);
float i2c_AS5600_get_angle(void);
unsigned char write_reg(unsigned char reg, unsigned char value);
#endif
---

# 总结
相比模拟IIC,代码很简单,已经经过验证,另外,程序使用的STM32的IIC1。

到了这里,关于STM32 HAL库 AS5600编码器程序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • stm32 HAL库 4096线ABZ编码器

    @[TOC]目录 买的是这个 AB相代表计数方向,Z代表过零点 也可以选上DMA 中断 找一个空闲管脚 打开对应中断 用DMA 过机械零点就+/-360

    2024年04月17日
    浏览(35)
  • 【STM32】【HAL库】定时器编码器模式测速

    目录 概述 HAL设置  定时器的编码器模式 定时器设置  常用函数 代码 电机AB相增量型编码器的介绍和解码方法在这里介绍过了 电机编码器 https://blog.csdn.net/m0_57585228/article/details/125791283 测速可以使用外部中断进行脉冲计数 很多型号的单片机中有专门的电路来计算脉冲的速度和

    2023年04月18日
    浏览(35)
  • 【STM32】HAL库自学记录-旋转编码器的使用

    通过本文可学会两种实现判断旋转编码器正转反转的方法,可根据自己的应用场景来选择使用哪种方法。 1、芯片:STM32F103RCT6 2、STM32CubeMx软件 3、IDE: MDK-Keil软件 4、旋转编码器模块 5、XCOM V1.4串口软件 图中C端为GND。 方向 :A相和B相相差一个相位,一般来说是90°。A相信号在

    2024年02月11日
    浏览(23)
  • STM32(HAL库)——光电编码器、M/T法测量电机转速

    目录 一 编码器 二 电机测试的三种方法 三 STM32CubeMx配置 四 程序编写 五 实验结果 常见的用于电机测速的编码器有霍尔编码器和光电编码器两种。两者测速的基本原理不同,但都是输出两路相位差90°的脉冲信号。这里以光电编码器为例介绍一下测速原理。 光电编码器是由光

    2024年02月07日
    浏览(34)
  • STM32定时器编码器模式实现直流有刷电机测速(HAL库)

    最近在做一个单片机大作业,要用到直流有刷,在这里把学习编码器的知识记录一下,学习参考资料: 正点原子DMF407电机控制专题教程_V1.0 我所使用的编码器是市面上常见的 磁电增量式编码器 ,其有AB两相,用于输出电机转动时的 脉冲数 ,AB两相的先后顺序决定了电机的

    2023年04月24日
    浏览(44)
  • stm32(HAL)库编码器电机pid代码及利用VOFA+对Pid波形显示调参

    PID控制是一种经典的反馈控制算法,它通过不断地调整输出来使系统的实际值与设定值尽量接近,并保持在设定值附近。PID控制器由三个部分组成:比例§、积分(I)和微分(D)。 比例作用(P):比例作用通过测量实际值与设定值之间的偏差,乘以一个比例系数来产生输出。输出

    2024年02月13日
    浏览(33)
  • STM32(HAL)--使用定时器TIM的Encoder Mode来读取旋钮编码器的脉冲数

    目录 一 旋钮编码器相关知识 二 STM32CubeMx配置 三 程序编写 3.1 相关函数介绍 3.2 程序编写 四 实验结果 旋转编码器是一种位置传感器,输出脉冲信号可以用来确定编码器的旋转角度和旋转方向。 编码器中有两个开关,当旋钮旋转后,开关会依次导通,开关结构图如下图所示

    2024年02月15日
    浏览(23)
  • IIC读取AS5600磁编码器并计算相对角度与圈数代码移植

    芯片F103CBT6,使用cubeide+hal库,驱动部分源码移植于: (22条消息) STM32使用模拟I2C读取AS5600(深入讲解:带波形图)_yizeni的博客-CSDN博客_as5600使用方法 使用前需要重定向printf,方便串口调试;此外,sys库是由正点原子那个由m3内核直接写寄存器的位带操作库,无法用于其他co

    2024年02月13日
    浏览(15)
  • (四) timer+pit(定时器中断)+encoder(编码器)-逐飞TC264库学习(对比STM32 HAL库)

    PIT , 是programmable interval timer 可编程间隔定时器 DSC中的器件 的缩写,所以就是定时器中断,有点像32里的timer(TIMx) 目前看来一共能用通道的有四个 typedef enum // 枚举通道号 {     CCU60_CH0,     CCU60_CH1,     CCU61_CH0,     CCU61_CH1, }pit_index_enum; 因为涉及到中断,为方便设定中断优

    2024年03月15日
    浏览(44)
  • 【单片机】STM32单片机读取旋转编码器,TIM定时器编码器模式捕获,程序

    旋转编码器简单来说,就是会输出2个PWM,依据相位可以知道旋转方向,依据脉冲个数可以知道旋转的角度。一般旋转一圈有一个固定数值的脉冲个数。 旋转编码器广泛用于电机、或者角度传感器,STM32的定时器可以直接接入这两个波形获取到信息。 前两个引脚(接地和Vcc)

    2024年02月13日
    浏览(20)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包