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

stm32霍爾編碼器電機(jī)測速原理

這篇具有很好參考價值的文章主要介紹了stm32霍爾編碼器電機(jī)測速原理。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

????????本次選用的編碼器電機(jī)為13線的霍爾編碼器電機(jī),電機(jī)減速比為30:1,轉(zhuǎn)動一圈輸出13*30=390個脈沖。輪胎直徑為75mm,輪胎周長為pi*d=3*75=225mm.定時器采用四倍頻計(jì)數(shù),則一圈輸出390*4=1560個脈沖。具體編碼器知識這里就不多說了。

?????????根據(jù)測速原理:假設(shè)編碼器輸出的脈沖數(shù)為N,而電機(jī)轉(zhuǎn)動一圈輸出1569個脈沖,轉(zhuǎn)動一圈輪子將前進(jìn)225mm。那輸出脈沖數(shù)為N時前進(jìn)的距離就應(yīng)該為225*(N/1560)mm,再除以時間及可得速度。

下面為具體代碼:

encoder.c文件

#include "encoder.h"

void Encoder_TIM2_Init(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);		//開時鐘
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
	
	GPIO_InitTypeDef GPIO_InitStruct;							//配置IO口
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;
	GPIO_Init(GPIOA, &GPIO_InitStruct);
	
	TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;				//定時器初始化
	TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;
	TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;
	TIM_TimeBaseInitStruct.TIM_Period = 65535;
	TIM_TimeBaseInitStruct.TIM_Prescaler = 0;
	TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStruct);
	
	//定時器編碼器模式初始化
	TIM_EncoderInterfaceConfig(TIM2, TIM_EncoderMode_TI12, TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);
	
	TIM_ICInitTypeDef TIM_ICInitStruct; 						//輸入捕獲單元配置
	TIM_ICStructInit(&TIM_ICInitStruct);
	TIM_ICInitStruct.TIM_ICFilter = 10;
	TIM_ICInit(TIM2, &TIM_ICInitStruct);
	
	TIM_ClearFlag(TIM2, TIM_FLAG_Update);
	
	TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
	
	TIM_SetCounter(TIM2, 0);
	
	TIM_Cmd(TIM2, ENABLE);
}

void Encoder_TIM4_Init(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);
	
	GPIO_InitTypeDef GPIO_InitStruct;
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
	GPIO_Init(GPIOB, &GPIO_InitStruct);
	
	TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
	TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;
	TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;
	TIM_TimeBaseInitStruct.TIM_Period = 65535;
	TIM_TimeBaseInitStruct.TIM_Prescaler = 0;
	TIM_TimeBaseInit(TIM4, &TIM_TimeBaseInitStruct);
	
	TIM_EncoderInterfaceConfig(TIM4, TIM_EncoderMode_TI12, TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);
	
	
	TIM_ICInitTypeDef TIM_ICInitStruct; 
	TIM_ICStructInit(&TIM_ICInitStruct);
	TIM_ICInitStruct.TIM_ICFilter = 10;
	TIM_ICInit(TIM4, &TIM_ICInitStruct);
	
	TIM_ClearFlag(TIM4, TIM_FLAG_Update);
	
	TIM_ITConfig(TIM4, TIM_IT_Update, ENABLE);
	
	TIM_SetCounter(TIM4, 0);
	
	TIM_Cmd(TIM4, ENABLE);
}

int Read_Spead(int TIMx)			//讀取編碼器輸出脈沖數(shù)
{
	int value_1;
	switch(TIMx)
	{
		case 2:value_1 = (short)TIM_GetCounter(TIM2);TIM_SetCounter(TIM2, 0);break;
		case 4:value_1 = (short)TIM_GetCounter(TIM4);TIM_SetCounter(TIM4, 0);break;
		default:value_1 = 0;
	}
	return value_1;
}

void TIM2_IRQHander(void)
{
	if(TIM_GetITStatus(TIM2, TIM_IT_Update) == 1)
	{
		TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
	}
}

void TIM4_IRQHander(void)
{
	if(TIM_GetITStatus(TIM4, TIM_IT_Update) == 1)
	{
		TIM_ClearITPendingBit(TIM4, TIM_IT_Update);
	}
}

? ? ? ? 我使用的是簡單的delay一下來采集定時器捕獲的編碼器脈沖數(shù),不過我建議使用定時器中斷來處理編碼器采集。此函數(shù)只采集右輪脈沖進(jìn)行計(jì)算

主函數(shù)循環(huán)體內(nèi)函數(shù):文章來源地址http://www.zghlxwxcb.cn/news/detail-609358.html

while(1)
	{
		delay_s(1);
		{
			uint16_t right = Read_Spead(2);//采集右輪脈沖數(shù)
			displacement = 0.225 * (right / 1560);//計(jì)算位移
			speed = displacement;//由于我設(shè)置的為延時一秒就不用除時間
			OLED_Float(0, 0, speed, 4);//通過OLED顯示速度
			set_PWM(999);//設(shè)置電機(jī)PWM
			TIM_SetCounter(TIM2, 0);//下一次一秒計(jì)數(shù)前再一次將計(jì)數(shù)清零
		}
	}

到了這里,關(guān)于stm32霍爾編碼器電機(jī)測速原理的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • STM32定時器編碼器模式實(shí)現(xiàn)直流有刷電機(jī)測速(HAL庫)

    STM32定時器編碼器模式實(shí)現(xiàn)直流有刷電機(jī)測速(HAL庫)

    最近在做一個單片機(jī)大作業(yè),要用到直流有刷,在這里把學(xué)習(xí)編碼器的知識記錄一下,學(xué)習(xí)參考資料: 正點(diǎn)原子DMF407電機(jī)控制專題教程_V1.0 我所使用的編碼器是市面上常見的 磁電增量式編碼器 ,其有AB兩相,用于輸出電機(jī)轉(zhuǎn)動時的 脈沖數(shù) ,AB兩相的先后順序決定了電機(jī)的

    2023年04月24日
    瀏覽(33)
  • 【程序】【必須】編碼器電機(jī)測速,原理+代碼+濾波

    【程序】【必須】編碼器電機(jī)測速,原理+代碼+濾波

    參考資料: https://blog.csdn.net/lzzzzzzm/article/details/119416134 野火STM32電機(jī)開發(fā)教程 常見的編碼器有兩種,分別為霍爾編碼器和GMR編碼器。 1.1 霍爾編碼器 ? 霍爾編碼器圓盤上分布有磁極,當(dāng)圓盤隨電機(jī)主軸轉(zhuǎn)動時,會輸出兩路相位差90°的方波,用這兩路方波可測出電機(jī)的轉(zhuǎn)速和

    2023年04月23日
    瀏覽(18)
  • stm32-編碼器測速

    stm32-編碼器測速

    編碼電機(jī) 旋轉(zhuǎn)編碼器 A,B相分別接通道一和二的引腳,VCC,GND接單片機(jī)VCC,GND 以前的代碼是通過觸發(fā)外部中斷,然后在中斷函數(shù)里手動進(jìn)行計(jì)次。使用編碼器接口的好處就是節(jié)約軟件資源。對于頻繁執(zhí)行,操作簡單的任務(wù),一般設(shè)計(jì)一個硬件電路模塊來自動完成。 使用定時器

    2024年03月19日
    瀏覽(27)
  • AS5600步進(jìn)電機(jī)編碼器(原理圖+pcb+stm32控制代碼)

    AS5600步進(jìn)電機(jī)編碼器(原理圖+pcb+stm32控制代碼)

    AS5600是一個易于編程的磁性旋轉(zhuǎn)位置傳感器,具有高分辨率的12位模擬或PWM輸出。這種非接觸式系統(tǒng)測量一個直徑磁化的軸上磁鐵的絕對角度。 引腳如下圖 他有兩種供電模式:5V和3.3V 我們?yōu)榱撕蛃tm32F103C8T6單片機(jī)的電壓一致,也使用3.3V供電,然后開始畫PCB。 使用嘉立創(chuàng)EDA畫

    2024年02月03日
    瀏覽(202)
  • STM32-微項(xiàng)目07-旋轉(zhuǎn)編碼器計(jì)數(shù)及測速

    STM32-微項(xiàng)目07-旋轉(zhuǎn)編碼器計(jì)數(shù)及測速

    一、微項(xiàng)目實(shí)現(xiàn)目標(biāo): 檢測旋轉(zhuǎn)編碼器模式下,檢測旋轉(zhuǎn)編碼器的轉(zhuǎn)動計(jì)數(shù)值及轉(zhuǎn)速。并且區(qū)分轉(zhuǎn)向,一側(cè)轉(zhuǎn)動增加cout,轉(zhuǎn)速值為正,一側(cè)轉(zhuǎn)動減少count,轉(zhuǎn)速值為負(fù); ? 二、微項(xiàng)目硬件配置需求: 1,stm32F103C8T6核心板一塊 2,0.96寸OLED顯示,用于顯示計(jì)數(shù) 3,旋轉(zhuǎn)編碼器,

    2024年02月08日
    瀏覽(24)
  • 【STM32】【HAL庫】定時器編碼器模式測速

    【STM32】【HAL庫】定時器編碼器模式測速

    目錄 概述 HAL設(shè)置 ?定時器的編碼器模式 定時器設(shè)置 ?常用函數(shù) 代碼 電機(jī)AB相增量型編碼器的介紹和解碼方法在這里介紹過了 電機(jī)編碼器 https://blog.csdn.net/m0_57585228/article/details/125791283 測速可以使用外部中斷進(jìn)行脈沖計(jì)數(shù) 很多型號的單片機(jī)中有專門的電路來計(jì)算脈沖的速度和

    2023年04月18日
    瀏覽(36)
  • stm32f103單片機(jī)—編碼器測速

    stm32f103單片機(jī)—編碼器測速

    stm32f103ZET6開發(fā)板(非指定) MG513P3012V型號電機(jī)(帶霍爾編碼器)(非指定) 此種測速方法要求單片機(jī)的定時器具有編碼器模式,對于stm32f1系列,具備編碼器模式的定時器有TIM1/2/3/4/5/8, 定時器使用通道1、2來實(shí)現(xiàn)編碼器功能 ,接線時注意把A/B相接到定時器通道1/2的引腳。 電

    2024年02月06日
    瀏覽(33)
  • 霍爾編碼器電機(jī)與TB6612電機(jī)驅(qū)動相關(guān)學(xué)習(xí)

    霍爾編碼器電機(jī)與TB6612電機(jī)驅(qū)動相關(guān)學(xué)習(xí)

    簡單粗暴的說下,電機(jī)-電機(jī)驅(qū)動-單片機(jī)該怎么連線。 先簡單認(rèn)識一下霍爾編碼器電機(jī) 以上選用的平衡小車之家的,市面上基本都跟這個差不了多少。 電機(jī)線-+這兩個引腳 與電機(jī)驅(qū)動相連接 來控制電機(jī)的正反轉(zhuǎn)(自己的淺顯理解) ?編碼器的AB相 連接單片機(jī)(定時器)? 編

    2023年04月09日
    瀏覽(22)
  • STM32定時器捕獲編碼器模式測速和方向測不準(zhǔn)問題

    STM32定時器捕獲編碼器模式測速和方向測不準(zhǔn)問題

    ** 問題概述 關(guān)于STM32編碼器模式電機(jī)測速的資料網(wǎng)上一抓一大把,卻發(fā)現(xiàn)真的拿過來用還是有問題的,比如剛剛做了個東西,是個個頭比較大的麥克納姆輪車,控制運(yùn)動就需要精確的測量轉(zhuǎn)速和方向,我用的是直流有刷、減速比90、11線霍爾編碼器的減速電機(jī)。 原本想著用個

    2024年02月15日
    瀏覽(30)
  • STM32F407 電機(jī)編碼器測量

    STM32F407 電機(jī)編碼器測量

    STM32的定時器功能非常強(qiáng)大,根據(jù)官方手冊,定時器的功能如下 高級定時器 TIM1 和 TIM8 主要特性 TIM1 和 TIM8 定時器具有以下特性: ● 16 位遞增、遞減、遞增/遞減自動重載計(jì)數(shù)器。 ● 16 位可編程預(yù)分頻器,用于對計(jì)數(shù)器時鐘頻率進(jìn)行分頻(即運(yùn)行時修改),分頻系數(shù) 介于

    2023年04月08日
    瀏覽(65)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包