国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

MT6701磁編碼器使用指南,14Bit單圈絕對(duì)值,I2C stm32 HAL庫(kù)讀角度,兼容AS5600

這篇具有很好參考價(jià)值的文章主要介紹了MT6701磁編碼器使用指南,14Bit單圈絕對(duì)值,I2C stm32 HAL庫(kù)讀角度,兼容AS5600。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

??MT6701是麥歌恩(MagnTek)公司的磁性角度傳感器芯片,提供14Bit 0~360°單圈絕對(duì)角度檢測(cè),擁有 ABZ/PWM/模擬量/I2C/SSI 等多種信息輸出方式,還可根據(jù)磁場(chǎng)強(qiáng)度的瞬時(shí)變化提供非接觸式按壓檢測(cè)功能。能夠以較低的成本來(lái)替代傳統(tǒng)光電編碼器,可應(yīng)用于絕對(duì)值角度輸出、閉環(huán)步進(jìn)電機(jī)BLDC電機(jī)旋轉(zhuǎn)角度檢測(cè)、機(jī)器人關(guān)節(jié)、非接觸按鍵、非接觸電位器等場(chǎng)合。

??鑒于其數(shù)據(jù)手冊(cè)的介紹已經(jīng)非常詳細(xì),且有中文PDF版本,建議大家先讀一遍官方手冊(cè):MT6701_Rev.1.6_中文版


mt6701,ODrive伺服電機(jī)控制器,stm32,單片機(jī),arm,電機(jī)控制


??MT6701提供 ABZ/UVW/PWM/模擬量/I2C/SSI 等多種信息輸出方式,建議優(yōu)先選擇 I2C/SSI 數(shù)字接口使用。

??I2C除了獲取角度外,還可用于對(duì)其內(nèi)部 EEPROM編程,來(lái)更改 ABZ/UVW/模擬量/PWM 的配置參數(shù)和校準(zhǔn)參數(shù)。
??其 SSI 與SPI兼容,僅需要 SCK、MISO、CS 三個(gè)IO。




型號(hào)列表

??MT6701CT 封裝為 SOP-8。
??MT6701QT 封裝為 QFN 3x3。

??后面的尾綴 STD、AKD、AKE、ACD、A200…等,區(qū)別僅在于出廠時(shí)內(nèi)部燒錄的EEPROM配置不同,用戶拿到手后可二次編程來(lái)適配自己的應(yīng)用場(chǎng)景。且其EEPROM支持多次擦寫(xiě),可根據(jù)自己的場(chǎng)合進(jìn)行靈活配置。(其EEPROM真的大贊,完全不用擔(dān)心像AS5047P的OTP僅能編程一次的尷尬)

??如果僅使用 I2C/SSI 接口,則不必?fù)?dān)心其EEPROM參數(shù)對(duì)使用的影響。EEPROM多用來(lái)配置 ABZ/UVW/PWM/模擬量 的參數(shù)和校準(zhǔn)參數(shù),不會(huì)對(duì) I2C/SSI 讀角度有干涉。

??另外SOP-8封裝的MT6701的I2C模式電路,是兼容AS5600的,快扔掉以前的AS5600,換上性能與價(jià)格更好的MT6701。(TB上現(xiàn)在太多的AS5600翻新片,特別便宜的一定要留意很容易中獎(jiǎng))


mt6701,ODrive伺服電機(jī)控制器,stm32,單片機(jī),arm,電機(jī)控制




磁極安裝方式

??用于檢測(cè)旋轉(zhuǎn)角度的磁鐵,必須為 徑向充磁 方式,多使用 直徑6-8mm、厚度2-5mm的釹鐵硼強(qiáng)磁。

??強(qiáng)磁與芯片的垂直高度應(yīng)控制在 0.5-2mm的大概范圍(實(shí)際可以更遠(yuǎn)一些)。

mt6701,ODrive伺服電機(jī)控制器,stm32,單片機(jī),arm,電機(jī)控制



I2C接口模式電路

??MT6701 使用 I2C/SSI 接口時(shí),需要將 MODE腳(SOP-8的PIN2)拉高。

??因其芯片內(nèi)部已經(jīng)集成一200K的上拉,MODE腳空置也是可以的。

??使用I2C接口時(shí),還需將 Z腳(SOP-8的PIN8)保持拉高。

mt6701,ODrive伺服電機(jī)控制器,stm32,單片機(jī),arm,電機(jī)控制



I2C讀時(shí)序

??MT6701 的I2C從機(jī)地址,固定為 0x06(STM32需要左移一位,即0x0C)。

??獲取角度時(shí)候,只需從 0x03 寄存器,連續(xù)讀2字節(jié),其中就包含有 14Bit 絕對(duì)角度信息。

mt6701,ODrive伺服電機(jī)控制器,stm32,單片機(jī),arm,電機(jī)控制



測(cè)試電路、在售萬(wàn)能電機(jī)轉(zhuǎn)接板

??測(cè)試過(guò)MT6701后,深被其性價(jià)比折服,結(jié)合以前的AS5047P萬(wàn)能電機(jī)轉(zhuǎn)接板的外形,推出了 MT6701的版本。

??ABZ/UVW/PWM/模擬量/I2C/SSI 接口均已引出,PCB外形可適配 22xx、2606、2804、35xx、6010、6374、36/42/57步進(jìn) 等多種電機(jī)的安裝。

??現(xiàn)已在我TB小店批量售賣(mài),TB店鋪名:芯源藝碼。


mt6701,ODrive伺服電機(jī)控制器,stm32,單片機(jī),arm,電機(jī)控制
mt6701,ODrive伺服電機(jī)控制器,stm32,單片機(jī),arm,電機(jī)控制
mt6701,ODrive伺服電機(jī)控制器,stm32,單片機(jī),arm,電機(jī)控制


資料/原理圖/源碼匯總鏈接:Github-MT6701_Encoder_STM32




STM32 I2C HAL庫(kù)源碼

??這里我使用 STM32F103C8T6,其他型號(hào)的STM32均可,HAL庫(kù)只需改動(dòng)頭文件即可全系列使用。

??STM32CubeMX配置:SWD調(diào)試接口、UART1-115200用作串口打印、I2C1。

mt6701,ODrive伺服電機(jī)控制器,stm32,單片機(jī),arm,電機(jī)控制


MT6701.c

#include "MT6701.h"

unsigned char mt6701_write_reg(unsigned char reg, unsigned char value)
{
	return HAL_I2C_Mem_Write(&hi2c1, MT6701_SLAVE_ADDR, reg, I2C_MEMADD_SIZE_8BIT, &value, 1, MT6701_Timeout);
}

unsigned char mt6701_write_regs(unsigned char reg, unsigned char *value, unsigned char len)
{
	return HAL_I2C_Mem_Write(&hi2c1, MT6701_SLAVE_ADDR, reg, I2C_MEMADD_SIZE_8BIT, value, len, MT6701_Timeout);
}

unsigned char mt6701_read_reg(unsigned char reg, unsigned char* buf, unsigned short len)
{
	return HAL_I2C_Mem_Read(&hi2c1, MT6701_SLAVE_ADDR, reg, I2C_MEMADD_SIZE_8BIT, buf, len, MT6701_Timeout);
}

void mt6701_delay(unsigned int ms)
{
	HAL_Delay(ms);
}

// 14Bit角度信息,存儲(chǔ)在0x03[13:6]、0x04[5:0]兩個(gè)寄存器中,高位在前,原始讀數(shù)0~16383,對(duì)應(yīng)0-360°
void i2c_mt6701_get_angle(int16_t *angle, float *angle_f)
{
    uint8_t temp[2];
    mt6701_read_reg(MT6701_REG_ANGLE_14b, temp, 2);

    *angle = ((int16_t)temp[0] << 6) | (temp[1] >> 2);
    *angle_f = (float)*angle * 360 / 16384;
}

MT6701.h

#ifndef __MT6701_H__
#define __MT6701_H__

#include "stm32f1xx_hal.h"
#include "i2c.h"
#include <stdio.h>


#define MT6701_SLAVE_ADDR         0x06 << 1
#define MT6701_Timeout            50

#define MT6701_REG_ANGLE_14b      0x03    // 14Bit角度信息,存儲(chǔ)在0x03[13:6]、0x04[5:0]兩個(gè)寄存器中,高位在前,原始讀數(shù)0~16383

#define mt6701_log		printf



void i2c_mt6701_get_angle(int16_t *angle, float *angle_f);

#endif

main.c

#include "main.h"
#include "i2c.h"
#include "usart.h"
#include "gpio.h"

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include <stdio.h>
#include "MT6701.h"

/* USER CODE END Includes */

/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */

/* USER CODE END PTD */

/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
/* USER CODE END PD */

/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */

/* USER CODE END PM */

/* Private variables ---------------------------------------------------------*/

/* USER CODE BEGIN PV */

/* USER CODE END PV */

/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
/* USER CODE BEGIN PFP */
int fputc(int ch,FILE *f)
{
	HAL_UART_Transmit(&huart1,(uint8_t *)&ch,1,0xFFFF);
	return ch;
}

/* USER CODE END PFP */

/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */

/* USER CODE END 0 */

/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_I2C1_Init();
  MX_USART1_UART_Init();
  /* USER CODE BEGIN 2 */
	printf("-------------------- MT6701 angle test --------------------\r\n");
	HAL_Delay(200);
	int16_t angle;
	float angle_f;

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
		i2c_mt6701_get_angle(&angle, &angle_f);
		printf("angle = %d\t%.03f\r\n", angle, angle_f);
		HAL_Delay(30);
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}


連接 PA6、PA7 至 MT6701 的 I2C。PA9(TXD) 至 USB轉(zhuǎn)TTL 模塊的 RX。
可讀出0~360°的絕對(duì)角度信息,如下圖所示。

mt6701,ODrive伺服電機(jī)控制器,stm32,單片機(jī),arm,電機(jī)控制

(值得一提的是,我測(cè)試其數(shù)據(jù)輸出波動(dòng)為±1LSB,真14Bit,只要磁極不動(dòng),其輸出是一點(diǎn)都不會(huì)變的,效果非常好。因?yàn)橐郧皽y(cè)試過(guò)TLE5012 15Bit ±2LSB,AS5047P 14Bit ±4LSB,AS5600 10Bit都很抖。MT6701 真14BIt不說(shuō),MAX 55,000RPM,系統(tǒng)延時(shí)<5us,如果手冊(cè)數(shù)據(jù)當(dāng)真,結(jié)合其價(jià)位來(lái)看,絕對(duì)是性價(jià)比碾壓的存在)


mt6701,ODrive伺服電機(jī)控制器,stm32,單片機(jī),arm,電機(jī)控制


如未見(jiàn)輸出信息。請(qǐng)保證 Use MicroLIB 已經(jīng)被勾選,并重定向了 fputc函數(shù)。

mt6701,ODrive伺服電機(jī)控制器,stm32,單片機(jī),arm,電機(jī)控制

PUSH 按鈕輸出就不說(shuō)了,需要機(jī)械結(jié)構(gòu)的配合,自己也用不上。有興趣可以看下 smartknob
開(kāi)源項(xiàng)目,其中用到了MT6701,不過(guò)依舊沒(méi)有用到MT6701的按鈕檢測(cè),他的按壓用壓力傳感器和HX711實(shí)現(xiàn)的。

mt6701,ODrive伺服電機(jī)控制器,stm32,單片機(jī),arm,電機(jī)控制



小結(jié)

??對(duì)于 MT6701 這顆芯片個(gè)人表示強(qiáng)烈推薦,因其硬件電路簡(jiǎn)潔、使用簡(jiǎn)單(較AS5047P、TLE5012來(lái)說(shuō))、可靈活配置輸出方式( ABZ/UVW/PWM/模擬量/I2C/SSI 全部支持,已經(jīng)不能再全了,很難想象僅僅一顆SOP-8就能提供如此全面的功能,輸出參數(shù)還可EEPROM編程,yyds)、輸出角度精準(zhǔn)(個(gè)人測(cè)試絕大多數(shù)為±1LSB,真14位)、性能優(yōu)異(真14Bit,MAX 55,000RPM,系統(tǒng)延時(shí)<5us,結(jié)合它的價(jià)位簡(jiǎn)直殺瘋了)等諸多優(yōu)點(diǎn)。


??除了以上優(yōu)異的性能,MT6701的生產(chǎn)公司,麥歌恩微電子現(xiàn)已正式加入矽睿科技,矽??萍汲钟宣湼瓒魑㈦娮?6.75%的股權(quán)。值得一說(shuō)的是矽睿也是個(gè)寶貝公司,主要生產(chǎn)MEMS器件,其下的 QMI8658、QMC8610 我也用在過(guò)產(chǎn)品上,過(guò)幾星期會(huì)批量一批尺寸兼容MPU6050模塊的10DOF模組,供各位開(kāi)發(fā)學(xué)習(xí)使用。

??算是個(gè)小預(yù)告吧,先來(lái)張圖片,QMI8658A + QMC6310u + SPL07。I2C / SPI 通信接口。

mt6701,ODrive伺服電機(jī)控制器,stm32,單片機(jī),arm,電機(jī)控制文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-786055.html

到了這里,關(guān)于MT6701磁編碼器使用指南,14Bit單圈絕對(duì)值,I2C stm32 HAL庫(kù)讀角度,兼容AS5600的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • STM32:使用RS485和多摩川編碼器通信

    STM32:使用RS485和多摩川編碼器通信

    本文主要講使用STM32F767和絕對(duì)式多摩川TS5700N8501編碼器通信的流程和注意事項(xiàng)。 TS5700N8501編碼器推薦收發(fā)電路如下: ?首先使用STM32CubeMX生成RS485驅(qū)動(dòng)部分功能代碼,注意該款編碼器的波特率是2.5Mbps。 ? 注意使能的GPIO可以使用其他管腳,我們的主控板使用的是PA8。前期可以這

    2024年02月11日
    瀏覽(100)
  • 【STM32】HAL庫(kù)自學(xué)記錄-旋轉(zhuǎn)編碼器的使用

    【STM32】HAL庫(kù)自學(xué)記錄-旋轉(zhuǎn)編碼器的使用

    通過(guò)本文可學(xué)會(huì)兩種實(shí)現(xiàn)判斷旋轉(zhuǎn)編碼器正轉(zhuǎn)反轉(zhuǎn)的方法,可根據(jù)自己的應(yīng)用場(chǎng)景來(lái)選擇使用哪種方法。 1、芯片:STM32F103RCT6 2、STM32CubeMx軟件 3、IDE: MDK-Keil軟件 4、旋轉(zhuǎn)編碼器模塊 5、XCOM V1.4串口軟件 圖中C端為GND。 方向 :A相和B相相差一個(gè)相位,一般來(lái)說(shuō)是90°。A相信號(hào)在

    2024年02月11日
    瀏覽(27)
  • Stm32-使用TB6612驅(qū)動(dòng)電機(jī)及編碼器測(cè)速

    Stm32-使用TB6612驅(qū)動(dòng)電機(jī)及編碼器測(cè)速

    最近在 學(xué)習(xí)編碼電機(jī)以及嘗試使用編碼電機(jī)測(cè)速 。遇到了很多問(wèn)題,花費(fèi)了很多時(shí)間,在這里做一個(gè)記錄,對(duì)自己學(xué)習(xí)到的知識(shí)進(jìn)行一個(gè)總結(jié) 找了很多資料,看了很多視頻,這些太多了,以至于讓我不知道究竟哪一個(gè)是正確的,今天看這個(gè),明天看這個(gè),導(dǎo)致自己的學(xué)習(xí)效

    2023年04月16日
    瀏覽(30)
  • AIGC實(shí)戰(zhàn)——使用變分自編碼器生成面部圖像

    在自編碼器和變分自編碼器上,我們都僅使用具有兩個(gè)維度的潛空間。這有助于我們可視化自編碼器和變分自編碼器的內(nèi)部工作原理,并理解自編碼器和變分自編碼潛空間分布的區(qū)別。在本節(jié)中,我們將使用更復(fù)雜的數(shù)據(jù)集,并了解增加潛空間的維度時(shí),變

    2024年02月05日
    瀏覽(22)
  • 【嵌入式】STM32計(jì)時(shí)器編碼器接口模式使用

    【嵌入式】STM32計(jì)時(shí)器編碼器接口模式使用

    使用STM32調(diào)試電機(jī)或傳感器時(shí)經(jīng)常會(huì)使用到計(jì)數(shù)器的編碼器接口模式,本文主要記錄該模式的固件庫(kù)配置方法,并給出使用該模式獲取光柵測(cè)距值的實(shí)例。 硬件: STM32F103C8T6 光柵測(cè)距傳感器 編碼器接口模式為STM32計(jì)時(shí)器的一種特殊使用模式,該模式下可對(duì)編碼器輸出的脈沖信

    2024年02月20日
    瀏覽(20)
  • STM32循跡小車(chē)系列教程(二)—— 使用編碼器獲取小車(chē)速度

    STM32循跡小車(chē)系列教程(二)—— 使用編碼器獲取小車(chē)速度

    本章節(jié)主要介紹編碼器的原理,獲取編碼器脈沖值以及如何計(jì)算小車(chē)速度和路程 1.軟件準(zhǔn)備:STM32CubeMx、Keil5_?MDK 2.硬件準(zhǔn)備:STM32F103C8T6核心板、帶編碼器電機(jī)、TB6612電機(jī)驅(qū)動(dòng)模塊/L298N電機(jī)驅(qū)動(dòng)、18650鋰電池3節(jié)/3S航模電池、杜邦線若干 如圖 3-1 左所示是市場(chǎng)上常用的編碼器圖

    2024年02月13日
    瀏覽(41)
  • (STM32)PWM輸出控制電機(jī)旋轉(zhuǎn)并且使用編碼器讀取脈沖數(shù)

    (STM32)PWM輸出控制電機(jī)旋轉(zhuǎn)并且使用編碼器讀取脈沖數(shù)

    目錄 ?前言 一、pwm輸出讓電機(jī)轉(zhuǎn)? 1.電機(jī)的接線說(shuō)明 2.驅(qū)動(dòng)的接線說(shuō)明 3.pwm輸出代碼 ?pwm.c pwm.h 4.輸出pwm控制電機(jī)旋轉(zhuǎn) 二、配置定時(shí)器編碼器模式 1.定時(shí)器編碼器模式 編碼器原理 編碼器相關(guān)的概念 2.編碼器模式——代碼部分 3.獲取脈沖數(shù) 三、定時(shí)讀取編碼器讀取的脈沖數(shù)

    2024年02月03日
    瀏覽(29)
  • STM32自學(xué)筆記17-步進(jìn)電機(jī)驅(qū)動(dòng)項(xiàng)目-磁編碼器的正常使用

    上節(jié)有這樣一句話: 步進(jìn)電機(jī)旋轉(zhuǎn)角度和編碼器輸出數(shù)據(jù)之間的關(guān)系通常是非線性的。在校準(zhǔn)過(guò)程中,可以通過(guò)采集一系列已知角度位置的數(shù)據(jù)點(diǎn),并擬合出角度與編碼器數(shù)據(jù)之間的關(guān)系。這個(gè)擬合可以使用曲線擬合算法或其他數(shù)學(xué)方法來(lái)實(shí)現(xiàn)。通過(guò)擬合,可以建立編碼器輸

    2024年02月16日
    瀏覽(82)
  • 編碼器 | 基于 Transformers 的編碼器-解碼器模型

    基于 transformer 的編碼器-解碼器模型是 表征學(xué)習(xí) 和 模型架構(gòu) 這兩個(gè)領(lǐng)域多年研究成果的結(jié)晶。本文簡(jiǎn)要介紹了神經(jīng)編碼器-解碼器模型的歷史,更多背景知識(shí),建議讀者閱讀由 Sebastion Ruder 撰寫(xiě)的這篇精彩 博文。此外,建議讀者對(duì) 自注意力 (self-attention) 架構(gòu) 有一個(gè)基本了解

    2024年02月08日
    瀏覽(29)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包