0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32F103C8T6使用外部中斷法和輸入捕獲法進(jìn)行編碼器測(cè)速

CHANBAEK ? 來(lái)源:月月望歸鳥(niǎo) ? 作者:K.Fire ? 2023-06-15 16:52 ? 次閱讀

01 前言

如果我們想對(duì)電機(jī)進(jìn)行速度或者轉(zhuǎn)角的精確控制,需要使用到很多算法,比如非常經(jīng)典的PID控制算法,或者一些只能算法,但這些算法都需要傳感器來(lái)提供轉(zhuǎn)速或轉(zhuǎn)角的反饋值,對(duì)于電機(jī)來(lái)說(shuō),編碼器是非常流行并且實(shí)用的電機(jī)配套傳感器,本文使用STM32F103C8T6+L298N+MG513P30電機(jī)進(jìn)行直流電機(jī)的編碼器測(cè)速。

02 編碼器原理

1.分類(lèi)

圖片

光電式編碼器的精準(zhǔn)度比霍爾式要高,但是由于它需要紅外線發(fā)生器和接收器,相對(duì)來(lái)說(shuō)造價(jià)要貴一些?,F(xiàn)在我們比較常用的是霍爾式增量編碼器,有很多電機(jī)都會(huì)自帶編碼器。

image.png

2.測(cè)速方法分類(lèi)

(1)M法測(cè)速

編碼器輸出的脈沖個(gè)數(shù)代表了位置,那么單位時(shí)間里的脈沖個(gè)數(shù)表示這段時(shí)間里的平均速度。因此,我們可以通過(guò)計(jì)量單位時(shí)間脈沖個(gè)數(shù)即可以估算出平均速度,稱(chēng)為M法測(cè)速(測(cè)脈沖個(gè)數(shù))測(cè)速原理如圖所示。

圖片

例如,若編碼器每轉(zhuǎn)產(chǎn)生N個(gè)脈沖,在T時(shí)間(單位s)產(chǎn)生m個(gè)脈沖,那么平均轉(zhuǎn)速如下式所示:

圖片

式中 n——平均轉(zhuǎn)速(r/min);

T——測(cè)速采樣時(shí)間(s);

m——T時(shí)間內(nèi)測(cè)得的編碼器脈沖個(gè)數(shù);

N——編碼器每轉(zhuǎn)脈沖數(shù)。

(2)T法測(cè)速

若用M法測(cè)速,在記錄時(shí)間短、速度低的時(shí)候,只能記錄幾個(gè)脈沖,則分辨率降低。針對(duì)該問(wèn)題,目前解決方法為:可以采用輸出碼盤(pán)脈沖為一個(gè)時(shí)間間隔,然后用計(jì)數(shù)器記錄在這段時(shí)間里高速脈沖源發(fā)出的脈沖數(shù)。即通過(guò)采集到脈沖源脈沖數(shù)來(lái)計(jì)量編碼器兩個(gè)脈沖時(shí)間間隔,從而估算出速度,稱(chēng)為T(mén)法測(cè)速(測(cè)脈沖周期),測(cè)速原理圖如圖所示。

圖片

T法測(cè)速,利用編碼器產(chǎn)生的脈沖用作門(mén)電路的觸發(fā)信號(hào);用已知頻率f的時(shí)鐘信號(hào)做輸入。若控制門(mén)電路在編碼器脈沖上升沿到來(lái)時(shí)開(kāi)始導(dǎo)通,再次上升沿到來(lái)時(shí)關(guān)閉,即計(jì)數(shù)器只記錄一個(gè)編碼器脈沖周期內(nèi)的時(shí)鐘脈沖個(gè)數(shù)。若在編碼器相鄰脈沖之間記錄的脈沖時(shí)鐘個(gè)數(shù)為m,那么,可以計(jì)算兩個(gè)編碼器脈沖的時(shí)間間隔為m /f;若編碼器每轉(zhuǎn)有N個(gè)線脈沖輸出,那么我們就知道編碼器轉(zhuǎn)過(guò)1/N轉(zhuǎn)時(shí)需要時(shí)間m /f。據(jù)此,可計(jì)算與編碼器同軸轉(zhuǎn)速為公式所示。

圖片

式中 n ——平均轉(zhuǎn)速(r/min);

f ——時(shí)鐘脈沖頻率(個(gè)/s);

m ——兩個(gè)編碼器脈沖之間的時(shí)鐘脈沖個(gè)數(shù);

N ——編碼器每轉(zhuǎn)脈沖數(shù)。

編碼器一般會(huì)輸出兩路信號(hào),分別稱(chēng)為A相和B相,它們相差90°,因此編碼器也稱(chēng)為十字碼盤(pán),通過(guò)捕獲兩路輸出信號(hào)可以測(cè)算出電機(jī)的轉(zhuǎn)速和轉(zhuǎn)向。

STM32使用編碼器的方法有兩種分別是外部中斷法和輸入捕獲法,這兩種方法都屬于M法測(cè)速,兩種方法比較來(lái)說(shuō)外部中斷法占用CPU資源較多,平時(shí)比較常用的是輸入捕獲法,但博主兩種方法都調(diào)試出來(lái)了,因此記錄下來(lái)跟大家分享一下。

03 外部中斷法測(cè)速

對(duì)于外部中斷的知識(shí),各個(gè)講STM32的教程都有,我就不過(guò)多贅述,外部中斷的初始化都一樣,主要是出發(fā)外部中斷時(shí)需要進(jìn)行的操作。

圖片

看這張圖,正轉(zhuǎn)方向是信號(hào)向右走,因?yàn)槲覀兪峭瑫r(shí)捕獲兩路信號(hào),有以下幾種情況:

圖片

然后我們?cè)O(shè)置兩個(gè)變量用來(lái)存儲(chǔ)捕獲的脈沖數(shù),每捕獲到一次脈沖信號(hào)根據(jù)上表進(jìn)行判斷,正轉(zhuǎn)時(shí)使其加1;反轉(zhuǎn)時(shí)使其減1;然后配置一個(gè)定時(shí)器,每隔一段時(shí)間反饋一次測(cè)速值。

1.外部中斷配置

先編寫(xiě)一個(gè)函數(shù)初始化外部中斷,使用PB12-15引腳復(fù)用為外部中斷輸入,外部中斷配置步驟如下:

1.端口初始化:RCC_APB2PeriphClockCmd()、GPIO_Init()

2.使能復(fù)用功能時(shí)鐘:RCC_APB2PeriphClockCmd()

3.設(shè)置IO口與中斷線的映射關(guān)系:GPIO_EXTILineConfig()

4.初始化線上中斷:EXTI_Init()

5.配置中斷分組:NVIC_Init()

完整函數(shù)如下:

/**************************************************************************
功能:應(yīng)用外部中斷方式采集編碼器數(shù)據(jù),使用M法測(cè)速反饋車(chē)輪實(shí)時(shí)速度
函數(shù):Encoder_EXTIX_Init(void)  EXTI15_10_IRQHandler(void)
作者:K.Fire
日期:2022.01.30
引腳:PB12(左輪A相) PB13(左輪B相) PB14(右輪A相) PB15(右輪B相)
參數(shù):void
*************************************************************************/


int Encoder_L_EXTI=0;
int Encoder_R_EXTI=0;


void Encoder_EXTIX_Init(void)
{
  //1.端口初始化
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
  GPIO_InitTypeDef GPIO_InitStruct;
  GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPD;
  GPIO_InitStruct.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13 |GPIO_Pin_14 | GPIO_Pin_15;


  GPIO_Init(GPIOB,&GPIO_InitStruct);


  //2.使能復(fù)用功能時(shí)鐘
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);


  //3.設(shè)置IO口與中斷線的映射關(guān)系
  GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource12);
  GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource13);
  GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource14);
  GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource15);


  //4.初始化線上中斷
  EXTI_InitTypeDef EXTI_InitStruct;
  EXTI_InitStruct.EXTI_Line = EXTI_Line12 | EXTI_Line13 | EXTI_Line14 | EXTI_Line15;
  EXTI_InitStruct.EXTI_LineCmd = ENABLE;
  EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt;
  EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Rising_Falling;//跳變沿觸發(fā)
  EXTI_Init(&EXTI_InitStruct);


  //5.配置中斷分組
  NVIC_InitTypeDef NVIC_InitStruct;
  NVIC_InitStruct.NVIC_IRQChannel = EXTI15_10_IRQn;
  NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
  NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 1;
  NVIC_InitStruct.NVIC_IRQChannelSubPriority = 0;
  NVIC_Init(&NVIC_InitStruct);
}

2.外部中斷服務(wù)函數(shù)

函數(shù)的判斷邏輯與上表一致,外部中斷捕獲判斷函數(shù)如下:

void EXTI15_10_IRQHandler(void)
{
  if(EXTI_GetITStatus(EXTI_Line12) != RESET)//左輪A相 PB12
  {
    EXTI_ClearITPendingBit(EXTI_Line12);  //清除LINE上的中斷標(biāo)志位
    if(PBin(12)==0)   //這里判斷檢測(cè)到的是否是下降沿
    {
      if(PBin(13)==0)   Encoder_L_EXTI++;//B相的電平如果是低,電機(jī)就是正轉(zhuǎn)加1
      else             Encoder_L_EXTI--;//否則就是反轉(zhuǎn)減1
    }
    else                  //上升沿
    { 
      if(PBin(13)==1)  Encoder_L_EXTI++; //B相電平如果為高,電機(jī)就是正轉(zhuǎn)加1
      else             Encoder_L_EXTI--;//否則就是反轉(zhuǎn)減1
    }
  }


  if(EXTI_GetITStatus(EXTI_Line13) != RESET)//左輪B相 PB13
  {
    EXTI_ClearITPendingBit(EXTI_Line13);  //清除LINE上的中斷標(biāo)志位
    if(PBin(13)==0)   //這里判斷檢測(cè)到的是否是下降沿
    {
      if(PBin(12)==1)   Encoder_L_EXTI++;//B相的電平如果是高,電機(jī)就是正轉(zhuǎn)加1
      else             Encoder_L_EXTI--;//否則就是反轉(zhuǎn)減1
    }
    else                  //上升沿
    { 
      if(PBin(12)==0)  Encoder_L_EXTI++; //B相電平如果為高,電機(jī)就是正轉(zhuǎn)加1
      else             Encoder_L_EXTI--;//否則就是反轉(zhuǎn)減1
    }
  }


  if(EXTI_GetITStatus(EXTI_Line14) != RESET)//右輪A相 PB14
  {
    EXTI_ClearITPendingBit(EXTI_Line14);  //清除LINE上的中斷標(biāo)志位
    if(PBin(14)==0)   //這里判斷檢測(cè)到的是否是下降沿
    {
      if(PBin(15)==0)   Encoder_R_EXTI++;//B相的電平如果是低,電機(jī)就是正轉(zhuǎn)加1
      else             Encoder_R_EXTI--;//否則就是反轉(zhuǎn)減1
    }
    else                  //上升沿
    { 
      if(PBin(15)==1)  Encoder_R_EXTI++; //B相電平如果為高,電機(jī)就是正轉(zhuǎn)加1
      else             Encoder_R_EXTI--;//否則就是反轉(zhuǎn)減1
    }
  }


  if(EXTI_GetITStatus(EXTI_Line15) != RESET)//右輪B相 PB15
  {
    EXTI_ClearITPendingBit(EXTI_Line15);  //清除LINE上的中斷標(biāo)志位
    if(PBin(15)==0)   //這里判斷檢測(cè)到的是否是下降沿
    {
      if(PBin(14)==1)   Encoder_R_EXTI++;//A相的電平如果是高,電機(jī)就是正轉(zhuǎn)加1
      else             Encoder_R_EXTI--;//否則就是反轉(zhuǎn)減1
    }
    else                  //上升沿
    { 
      if(PBin(14)==0)  Encoder_R_EXTI++; //A相電平如果為低,電機(jī)就是正轉(zhuǎn)加1
      else             Encoder_R_EXTI--;//否則就是反轉(zhuǎn)減1
    }
  }


}

注意一下,在使用引腳時(shí)不要重復(fù),因?yàn)镻x0(x=AB..F)都是使用的同一條外部中斷線(EXIT0)

3.讀取捕獲脈沖數(shù)值

配置完定時(shí)器后,每過(guò)一段時(shí)間調(diào)用讀取函數(shù),通過(guò)公式可以計(jì)算出實(shí)際的脈沖值。

函數(shù)如下:

/**************************************************************************
功能:獲取不同方式下的脈沖值
函數(shù):int Read_Encoder(u8 TIMX)
作者:K.Fire
日期:2022.01.30
參數(shù):1:外部中斷法左輪 2:外部中斷法右輪 3:輸入捕獲法左輪 4:輸入捕獲法右輪
**************************************************************************/

int Read_Encoder(u8 TIMX)
{
    int Encoder_TIM;    
    switch(TIMX)
  {
    case 1:Encoder_TIM=Encoder_L_EXTI;  Encoder_L_EXTI=0; break;
    case 2:Encoder_TIM=Encoder_R_EXTI;  Encoder_R_EXTI=0; break;
    case 3:Encoder_TIM=TIM3 - > CNT;  TIM3 - > CNT=0;break;  
    case 4:Encoder_TIM=TIM4 - > CNT;  TIM4 - > CNT=0;break;
      default:Encoder_TIM=0;break;
  }
    return Encoder_TIM;
}

/**************************************************************************
功能:獲取并打印輸出實(shí)際速度值
函數(shù):void Get_SpeedNow(float* CurrentVelcity_L,float* CurrentVelcity_R)
作者:K.Fire
日期:2022.01.30
參數(shù):CurrentVelcity_L:左輪實(shí)時(shí)速度(地址)  CurrentVelcity_R:右輪實(shí)時(shí)速度(地址)
**************************************************************************/

extern int Current_LN,Current_RN;//速度脈沖數(shù)

void Get_SpeedNow(int* CurrentVelcity_L,int* CurrentVelcity_R)
{

  /*外部中斷方式*/
  Current_LN = Read_Encoder(1);
  Current_RN = Read_Encoder(2);

  *CurrentVelcity_L = Current_LN * MPN * 100;//計(jì)算實(shí)際速度值
  *CurrentVelcity_R = Current_RN * MPN * 100;

  printf("The Current Left Wheel Velocity is: %d mm/s.\\r\\n",*CurrentVelcity_L);
  printf("The Current Right Wheel Velocity is: %d mm/s.\\r\\n",*CurrentVelcity_R);
}

4.測(cè)試結(jié)果

通過(guò)USART1串口向電腦輸出實(shí)時(shí)速度值,結(jié)果如下:

圖片

04 輸入捕獲發(fā)測(cè)速

輸入捕獲是將TIM定時(shí)器的CHx通道配置為輸入捕獲模式,每捕獲到一個(gè)信號(hào)會(huì)將響應(yīng)定時(shí)器的CNT計(jì)數(shù)器的值加/減1,然后每隔一段時(shí)間提取并清空計(jì)數(shù)器的值就可以測(cè)算出電機(jī)的實(shí)時(shí)轉(zhuǎn)速。

1.輸入捕獲模式配置

輸入捕獲模式的初始化,各個(gè)STM32的教學(xué)視頻都有,只是在配置編碼器模式時(shí),需要用到一個(gè)編碼器模式的配置函數(shù):TIM_EncoderInterfaceConfig()

輸入捕獲模式的初始化步驟如下:

1.使能定時(shí)器和通道對(duì)應(yīng)的時(shí)鐘:RCC_APB1PeriphClockCmd()

2.初始化IO口:GPIO_Init()

3.初始化定時(shí)器:TIM_TimeBaseInit()

4.配置編碼器模式:TIM_EncoderInterfaceConfig()

5.初始化輸入捕獲通道:TIM_ICInit()

6.開(kāi)啟更新中斷:TIM_ITConfig()

7.使能定時(shí)器:TIM_Cmd()

完整的代碼如下:

/**************************************************************************
功能:應(yīng)用輸入捕獲方式采集編碼器數(shù)據(jù),使用M法測(cè)速反饋車(chē)輪實(shí)時(shí)速度
函數(shù):void Encoder_CAP_Init()
作者:K.Fire
日期:2022.01.30
引腳:PA6(左輪A相) PA6(左輪B相) PB6(右輪A相) PB7(右輪B相)
參數(shù):無(wú)
**************************************************************************/

void Encoder_CAP_Init_L()
{
  /*1.使能定時(shí)器和通道對(duì)應(yīng)的時(shí)鐘*/
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

  /*2.初始化IO口*/
  GPIO_InitTypeDef GPIO_InitStruct;
  GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPD;//推挽下拉輸入
  GPIO_InitStruct.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
  GPIO_Init(GPIOA,&GPIO_InitStruct);

  /*3.初始化定時(shí)器*/
  TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
  TIM_TimeBaseInitStruct.TIM_ClockDivision = 0;
  TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;
  TIM_TimeBaseInitStruct.TIM_Period = 0xffff;
  TIM_TimeBaseInitStruct.TIM_Prescaler = 0x0;
  TIM_TimeBaseInit(TIM3, &TIM_TimeBaseInitStruct);

  //配置編碼器模式
  TIM_EncoderInterfaceConfig(TIM3,TIM_EncoderMode_TI12,TIM_ICPolarity_Rising,TIM_ICPolarity_Rising);

  /*4.初始化輸入捕獲通道*/
  TIM_ICInitTypeDef TIM_ICInitStruct;
  TIM_ICStructInit(&TIM_ICInitStruct);
  TIM_ICInitStruct.TIM_ICFilter = 10;//設(shè)置濾波器,重復(fù)檢測(cè)10次,防止抖動(dòng),增加精度
  TIM_ICInit(TIM3,&TIM_ICInitStruct);

  TIM_ClearFlag(TIM3, TIM_FLAG_Update);//清除TIM的更新標(biāo)志位

  /*5.開(kāi)啟更新中斷*/
  TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);

  TIM_SetCounter(TIM3,0);//計(jì)數(shù)器置零
  TIM3- >CNT = 0x7fff;

//  /*4.初始化輸入捕獲通道*/
//  TIM_ICInitTypeDef TIM_ICInitStruct;
//  TIM_ICInitStruct.TIM_Channel = TIM_Channel_1 | TIM_Channel_2;//通道1和2
//  TIM_ICInitStruct.TIM_ICFilter = 10;//設(shè)置濾波器,重復(fù)檢測(cè)10次,防止抖動(dòng),增加精度
//  TIM_ICInitStruct.TIM_ICPolarity = TIM_ICPolarity_TIM_ICPolarity_Rising;//上升沿捕獲
//  TIM_ICInitStruct.TIM_ICPrescaler = TIM_ICPSC_DIV1;//配置輸入分頻,不分頻
//  TIM_ICInitStruct.TIM_ICSelection = TIM_ICSelection_DirectTI;//不設(shè)置重映射
//  TIM_ICInit(TIM2,&TIM_ICInitStruct);
//  
//  /*5.開(kāi)啟捕獲中斷,并配置中斷*/
//  TIM_ITConfig(TIM2, TIM_IT_CC1 | TIM_IT_CC2, ENABLE);
//  
//  NVIC_InitTypeDef NVIC_InitStruct;
//  NVIC_InitStruct.NVIC_IRQChannel = TIM2_IRQn;
//  NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
//  NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 1;
//  NVIC_InitStruct.NVIC_IRQChannelSubPriority = 0;
//  NVIC_Init(&NVIC_InitStruct);

  /*6.使能定時(shí)器*/
  TIM_Cmd(TIM3,ENABLE);

  /*7.編寫(xiě)中斷服務(wù)函數(shù)*/

}

一個(gè)編碼器需要占用一個(gè)定時(shí)器,這里我使用的是TIM3和TIM4

注意:在初始化IO口時(shí),選擇輸入輸出模式有點(diǎn)問(wèn)題。

網(wǎng)上有的說(shuō)選擇輸入浮空模式、有的說(shuō)選擇輸入上拉模式,但是我調(diào)試的時(shí)候這兩種都不出結(jié)果,我改成輸入下拉模式的是才調(diào)試成功,大家在實(shí)際調(diào)試過(guò)程中可以幾個(gè)輸入模式都試一下。

2.讀取捕獲脈沖數(shù)值

這部分和上面外部中斷法的函數(shù)一樣,輸入3和4參數(shù)使用輸入捕獲方式提取計(jì)數(shù)器的值。

/**************************************************************************
功能:獲取不同方式下的脈沖值
函數(shù):int Read_Encoder(u8 TIMX)
作者:K.Fire
日期:2022.01.30
參數(shù):1:外部中斷法左輪 2:外部中斷法右輪 3:輸入捕獲法左輪 4:輸入捕獲法右輪
**************************************************************************/

int Read_Encoder(u8 TIMX)
{
    int Encoder_TIM;    
    switch(TIMX)
  {
    case 3:Encoder_TIM=TIM3- >CNT-0x7fff;  TIM3- >CNT=0x7fff;break;  
    case 4:Encoder_TIM=TIM4- >CNT-0x7fff;  TIM4- >CNT=0x7fff;break;
      default:Encoder_TIM=0;break;
  }
    return Encoder_TIM;
}

/**************************************************************************
功能:獲取并打印輸出實(shí)際速度值
函數(shù):void Get_SpeedNow(float* CurrentVelcity_L,float* CurrentVelcity_R)
作者:K.Fire
日期:2022.01.30
參數(shù):CurrentVelcity_L:左輪實(shí)時(shí)速度(地址)  CurrentVelcity_R:右輪實(shí)時(shí)速度(地址)
**************************************************************************/

extern int Current_LN,Current_RN;//速度脈沖數(shù)

void Get_SpeedNow(int* CurrentVelcity_L,int* CurrentVelcity_R)
{
  /*輸入捕獲方式*/
  Current_LN = -Read_Encoder(3);
  Current_RN = Read_Encoder(4);

  *CurrentVelcity_L = (MPN * Current_LN * 1000 * 10)/T;//單位:mm/s
  *CurrentVelcity_R = (MPN * Current_RN * 1000 * 10)/T;

  printf("The Current Left Wheel Velocity is: %d mm/s.\\r\\n",*CurrentVelcity_L);
  printf("The Current Right Wheel Velocity is: %d mm/s.\\r\\n",*CurrentVelcity_R);

}

3.測(cè)試結(jié)果

圖片

05 總結(jié)

注意:左輪電機(jī)和右輪電機(jī)是相反的,需要實(shí)際測(cè)試確定,比如我這里,向前走的時(shí)候,右輪是正轉(zhuǎn),這時(shí)左輪反轉(zhuǎn)的時(shí)候才是前進(jìn),在編寫(xiě)程序時(shí)需要給左輪的脈沖值加個(gè)負(fù)號(hào)。

獲取到了實(shí)時(shí)速度值后,就可以用PID算法對(duì)電機(jī)轉(zhuǎn)速進(jìn)行準(zhǔn)確控制了。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 傳感器
    +關(guān)注

    關(guān)注

    2545

    文章

    50459

    瀏覽量

    751103
  • 編碼器
    +關(guān)注

    關(guān)注

    45

    文章

    3574

    瀏覽量

    133987
  • STM32
    +關(guān)注

    關(guān)注

    2264

    文章

    10854

    瀏覽量

    354311
  • PID
    PID
    +關(guān)注

    關(guān)注

    35

    文章

    1469

    瀏覽量

    85197
  • STM32F103C8T6
    +關(guān)注

    關(guān)注

    107

    文章

    160

    瀏覽量

    83078
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    有關(guān)AB相磁編碼器STM32F103C8T6之間脈沖計(jì)數(shù)問(wèn)題

    AB相磁編碼器STM32F103C8T6引腳應(yīng)該怎么連接?我看手冊(cè)通用定時(shí)四個(gè)通道都可以實(shí)現(xiàn)輸入捕獲功能,那是否能實(shí)現(xiàn)
    發(fā)表于 09-17 12:29

    深圳高價(jià)回收STM32F103C8T6 收購(gòu)STM32F103C8T6

    [[ ST芯片大量收購(gòu)STM32F103C8T6 ,高價(jià)回收意ST電子芯片,實(shí)力回收電子芯片,高價(jià)回收各個(gè)品牌電子芯片 ]]優(yōu)勢(shì)回收以下ST型號(hào):STM32F101C6T6
    發(fā)表于 08-30 16:10

    MT測(cè)速單片機(jī)程序設(shè)計(jì)

    MT測(cè)速單片機(jī)程序設(shè)計(jì)M、T
    發(fā)表于 09-02 06:01

    如何實(shí)現(xiàn)STM32F103C8T6編碼器測(cè)速

    如何實(shí)現(xiàn)STM32F103C8T6編碼器測(cè)速?
    發(fā)表于 12-13 07:21

    STM32F103C8T6最小系統(tǒng)原理圖

    本文件是關(guān)于意半導(dǎo)體公司研制的STM32F103C8T6最小系統(tǒng)的電路原理圖,供單片機(jī)學(xué)習(xí)使用。
    發(fā)表于 04-25 17:07 ?302次下載

    STM32F103C8T6引腳圖

    本文介紹STM32F103C8T6引腳圖、STM32F103C8T6開(kāi)發(fā)板電路圖及各部分引腳功能圖介紹,STM32F103C8T6資料下載。
    發(fā)表于 08-03 15:53 ?43.8w次閱讀
    <b class='flag-5'>STM32F103C8T6</b>引腳圖

    STM32F103C8T6核心板的資料合集免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是STM32F103C8T6核心板的資料合集免費(fèi)下載包括了:STM32F103C8T6核心板測(cè)試程序(PC13閃爍),STM32F103C8T6核心板測(cè)試程序(RTC
    發(fā)表于 06-04 08:00 ?719次下載
    <b class='flag-5'>STM32F103C8T6</b>核心板的資料合集免費(fèi)下載

    STM32F103C8T6原理圖

    STM32F103C8T6原理圖免費(fèi)下載。
    發(fā)表于 06-02 10:01 ?177次下載

    STM32F103C8t6程序下載

    STM32F103C8t6程序下載
    發(fā)表于 11-24 18:21 ?230次下載
    <b class='flag-5'>STM32F103C8t6</b>程序下載

    STM32F103C8T6中斷特征介紹 用按鈕為STM32 MCU觸發(fā)一個(gè)中斷

    中斷是MCU的特征之一,STM32F103C8T6也不例外。以下通過(guò)STM32F103C8T6 Blue Pill外接一個(gè)按鈕,向MCU觸發(fā)外部中斷
    的頭像 發(fā)表于 05-17 08:57 ?1.1w次閱讀
    <b class='flag-5'>STM32F103C8T6</b><b class='flag-5'>中斷</b>特征介紹 用按鈕為<b class='flag-5'>STM32</b> MCU觸發(fā)一個(gè)<b class='flag-5'>中斷</b>

    STM32F103C8T6微控制手冊(cè)

    STM32F103C8T6微控制手冊(cè)免費(fèi)下載。
    發(fā)表于 05-24 16:05 ?48次下載

    使用stm32f103c8t6設(shè)計(jì)的藍(lán)牙小車(chē)

    使用stm32f103c8t6設(shè)計(jì)的藍(lán)牙小車(chē),具有前進(jìn)后退,左轉(zhuǎn)右轉(zhuǎn)等功能
    發(fā)表于 08-07 16:08 ?25次下載

    ch32f103c8t6stm32f103c8t6的區(qū)別

    ch32f103c8t6stm32f103c8t6的區(qū)別 STM32F103C8T6是一款32位微處理,屬于STM32F1系列中的一員。
    的頭像 發(fā)表于 08-22 16:05 ?8980次閱讀

    分享STM32F103C8T6原理圖

    STM32F103C8T6最小系統(tǒng)原理圖
    發(fā)表于 08-29 15:52 ?94次下載

    stm32f103c8t6怎么連接噪聲傳感

    連接噪聲傳感STM32F103C8T6需要以下步驟: 確定傳感STM32F103C8T6之間的連接接口。噪聲傳感通常使用模擬信號(hào)輸
    的頭像 發(fā)表于 12-21 16:10 ?1328次閱讀