女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于IHM16M1開發板調節電機轉速

易絡盟電子 ? 來源:電子工程世界 ? 2025-05-26 10:12 ? 次閱讀

01測試介紹

本次測試使用MC SDK提供的API函數調節電機的轉速。

測試硬件:

IHM16M1 +NUCLEO-G431RB 電機套件

SSD1306 OLED IIC接口顯示屏·

EC1 旋轉編碼器

RED LED

ZD2808-V1.9 BLDC 電機

杜邦線+萬用板+Type-C連接線

12V 1A開關電源

測試使用EC1旋轉編碼器調節電機的目標轉速,使用開發板user1按鈕啟動/停止電機。OLED顯示電機轉速和調節轉速設置,LED指示電機狀態

89deddbc-36a2-11f0-afc8-92fbcf53809c.png

02開發板資源分配

SSD1306 OLED使用 I2C1 接口,引腳 PB9 =>SDA ,PB8 => SCL

EC1旋轉編碼器 使用 TIM3定時器 ,引腳 PC6 => TIM3_CH1,PC7 => TIM3_CH2

RED LED ,引腳 PB7 => LED

8d045ddc-36a2-11f0-afc8-92fbcf53809c.png

LED需要串接 2K 電阻R,不可以直接接入MCU引腳。

03程序設置與引腳分配

1、旋轉編碼設置

8d2289ec-36a2-11f0-afc8-92fbcf53809c.png

EC1旋轉編碼器,使用TIM3定時器,模式設置為:ENCoder MODE,引腳PC6 => EC1_CLK, PC7 => EC1_DT

輸入過濾值選擇:15,其它默認。如果EC1旋轉時跳動厲害,可以降低TIM3預分頻器。

2、SSD1306 128*64 OLED

8dca3138-36a2-11f0-afc8-92fbcf53809c.png

OLED使用I2C1作為控制,引腳PB9 =>OLED_SDA ,PB8 => OLED_SCL

3、RED LED

8dec26da-36a2-11f0-afc8-92fbcf53809c.png

LED使用GPIO PB8引腳,將引腳設置上拉和輸出模式。

04程序與工作原理

1、EC1是一種簡易的旋轉編碼器,可以生產兩路脈沖CLK、DT,該組脈沖相差90度,編碼器作為機械部件其輸出的波形不如磁編的好,所以輸出引腳需要上拉電阻和103的電容濾波

編碼器可以使用__HAL_TIM_GET_COUNTER(&htim3)獲得編碼的計數累加值。__HAL_TIM_SetCounter(&htim3,0);設置編碼器的初始值。

向上滑動閱覽

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


  /* USER CODE BEGIN SysInit */


  /* USER CODE END SysInit */


  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_DMA_Init();
  MX_ADC1_Init();
  MX_ADC2_Init();
  MX_CORDIC_Init();
  MX_TIM1_Init();
  MX_USART2_UART_Init();
  MX_MotorControl_Init();
  MX_I2C1_Init();
  MX_TIM3_Init();


  /* Initialize interrupts */
  MX_NVIC_Init();
  /* USER CODE BEGIN 2 */
  
  rspeed = MC_GetMecSpeedReferenceMotor1();
  HAL_TIM_Encoder_Start(&htim3,TIM_CHANNEL_ALL);
  ssd1306_Init();
  ssd1306_Fill(Black);
  
  ssd1306_SetCursor(0, 0);
  ssd1306_WriteString("EEWORLD", Font_11x18, White);
  
  
  ssd1306_UpdateScreen();
  /* USER CODE END 2 */


  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    if (IDLE == MC_GetSTMStateMotor1())
    {
       /* Ramp parameters should be tuned for the actual motor */
       HAL_GPIO_WritePin(Mstatus_GPIO_Port,Mstatus_Pin,GPIO_PIN_RESET);
       speed = 0;
       counter = __HAL_TIM_GET_COUNTER(&htim3);
       
       if(counter != counter_old)
       {
         //rspeed = MC_GetMecSpeedReferenceMotor1(); 
         rspeed += counter/2;
         if( rspeed <0)
         { 
           rspeed=0; 
           __HAL_TIM_SetCounter(&htim3,0);
         }
         if( rspeed > 420)
         { 
            rspeed=420; 
           __HAL_TIM_SetCounter(&htim3,0);
         }  
         MC_ProgramSpeedRampMotor1(rspeed, 1000);
        
       }
       counter_old = counter;
   
    }
    else
    {
       HAL_GPIO_WritePin(Mstatus_GPIO_Port,Mstatus_Pin,GPIO_PIN_SET); 
       speed = MC_GetMecSpeedAverageMotor1();
    }
    ssd1306_Fill(Black);
    
    ssd1306_SetCursor(0, 0);
    ssd1306_WriteString("SPEED TEST", Font_11x18, White);
  
    ssd1306_SetCursor(0, 20);
    memset(MessageStr,'?',sizeof(MessageStr));
    sprintf(MessageStr,"%d RPM",speed * 6);
    ssd1306_WriteString(MessageStr, Font_11x18, White);
    
    ssd1306_SetCursor(0, 40);
    memset(MessageStr,'?',sizeof(MessageStr));
    sprintf(MessageStr,"%d R",rspeed * 6);
    ssd1306_WriteString(MessageStr, Font_11x18, White);
    ssd1306_UpdateScreen();
    /* USER CODE END WHILE */


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



2、電機的狀態使用MC_GetSTMStateMotor1()函數返回,IDLE狀態為電機停止且準備好狀態,在該狀態下可以調節參數和設置電機啟動。本例將電機參數設置放在該狀態下完成。

向上滑動閱覽

if (IDLE == MC_GetSTMStateMotor1())
  {
    /* Ramp parameters should be tuned for the actual motor */
    HAL_GPIO_WritePin(Mstatus_GPIO_Port,Mstatus_Pin,GPIO_PIN_RESET);
    speed = 0;
    counter = __HAL_TIM_GET_COUNTER(&htim3);
    
    if(counter != counter_old)
    {
     //rspeed = MC_GetMecSpeedReferenceMotor1(); 
     rspeed += counter/2;
     if( rspeed <0)
 ? ? ? ? { 
 ? ? ? ? ? rspeed=0; 
 ? ? ? ? ? __HAL_TIM_SetCounter(&htim3,0);
 ? ? ? ? }
 ? ? ? ? if( rspeed > 420)
     { 
      rspeed=420; 
      __HAL_TIM_SetCounter(&htim3,0);
     } 
     MC_ProgramSpeedRampMotor1(rspeed, 1000);
    
    }
    counter_old = counter;
  
  }
  else
  {
    HAL_GPIO_WritePin(Mstatus_GPIO_Port,Mstatus_Pin,GPIO_PIN_SET); 
    speed = MC_GetMecSpeedAverageMotor1();
  }

參數設置:MC_ProgramSpeedRampMotor1(rspeed, 1000);該函數可以設置從上一個狀態到目標狀態需要持續的時間,其時間斜率需要根據電機的性能參數而定。

05測試

修改轉速過程,使用旋轉編碼器進行參數的調節,順時針:增加轉速,逆時針:降低轉速

以上測評內容撰寫自電子工程世界(EEWORLD)用戶:bigbat。感謝這位小伙伴對測評活動的大力支持!

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • OLED
    +關注

    關注

    119

    文章

    6270

    瀏覽量

    227119
  • 編碼器
    +關注

    關注

    45

    文章

    3773

    瀏覽量

    137118
  • 電機
    +關注

    關注

    143

    文章

    9248

    瀏覽量

    148327
  • 開發板
    +關注

    關注

    25

    文章

    5503

    瀏覽量

    102196

原文標題:【測評分享】IHM16M1開發板電機調速攻略

文章出處:【微信號:易絡盟電子,微信公眾號:易絡盟電子】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    Nucleo-F446RE+X-NUCLEO-IHM07M1生成的應用為什么啟動設置參數無效?

    開發板Nucleo-F446RE+X-NUCLEO-IHM07M1工具版本MC6.1.2,通過profiler測得電機參數轉速最高4200以及霍爾角120度+303度。用workben
    發表于 03-07 08:03

    X-NUCLEO-IHM16M1驅動上三電阻采樣和單電阻采樣是怎么切換的?

    由于沒有實物,沒有詳細圖片介紹,想了解一下 X-NUCLEO-IHM16M1 驅動上怎么切換三電阻和單電阻?想買塊開發板來用,官方規格書沒明說這個,說是在板子背面,具體是需要焊接還是可以通過跳帽?因為 X-NUCLEO-
    發表于 03-12 06:26

    關于P-NUCLEO-IHM03上電后電機的問題求解

    電機控制小白,買了P-NUCLEAO-IHM03的開發套件,nucleo-g431的板子加上x-nucleo-ihm16m1的驅動,連接套
    發表于 03-26 07:41

    STM32F103RB+IHM07M1 SDK中顯示Feedback Error是哪里的問題?

    我購買了F103RB開發板,以及IHM07M1, 用SDK 5.2 新建工程,選擇了這2個,以及Bull電機。 產生了代碼,編譯通過。 串口建立連接,可以看到部分參數在變化。但是
    發表于 04-25 07:46

    X-NUCLEO-IHM07M1電機調速降不了是什么原因導致的?

    電源{:2:}P-NUCLEO-IHM002)套件 電源(12V 2A) 主控:Nucleo-F303RE 驅動:X-NUCLEO-IHM7M1
    發表于 04-25 07:51

    轉:P-NUCLEO-IHM001 電機開發板串口調試指南

    前言P-NUCLEO-IHM001 是一款功能強大,且小巧的針對永磁同步電機開發板。本文介紹如何通過該套件上的虛擬串口來實現串口調試電機
    發表于 07-15 17:16

    怎么制作一個用PWM調節電機轉速的程序

    你好!我想制作一個用PWM調節電機轉速的程序,但是我不知道如何讓PWM工作。我用的是PIC32MX270F256B。我做了一些研究,但沒有成功。一些示例代碼會很好,謝謝!
    發表于 09-06 14:27

    請問F28027F控制無刷電機轉速的函數是什么?

    \boostxldrv8301_revB\f28x\f2802xF\projects\ccs5\proj_lab05b例子,如果在運行中想隨時調節電機轉速用哪個函數?還是改變CTRL object的值?
    發表于 06-02 11:47

    如何通過PWM調節電機的PWM?

    的高低電平來實現PWM信號的輸出,從而控制電機的速度。  三、測試  將代碼下載到主控上,點擊BOOT按鍵,觀察電機轉速。  四、總結  本節我們通過簡單的一個實驗學習了如何通過PW
    發表于 03-27 16:36

    Explorer 16開發板用戶指南

    Explorer 16開發板用戶指南 本章包含使用Explorer 16 開發板前需要了解的有用的一般信息。內容包括:• 文檔編排• 本指南中使用的約定
    發表于 04-15 09:42 ?25次下載

    Cepark AVR M16開發板原理圖

    本內容向大家提供了Cepark AVR M16開發板原理圖 希望對大家學習上有所幫助
    發表于 04-11 17:06 ?179次下載
    Cepark AVR <b class='flag-5'>M16</b><b class='flag-5'>開發板</b>原理圖

    STEVAL-IHM042V1原理圖

    STEVAL-IHM042V1 電機驅動DEMO的原理圖
    發表于 11-11 16:34 ?12次下載

    IHM01A1步進電機驅動的電路原理圖免費下載

    本文檔的主要內容詳細介紹的是IHM01A1步進電機驅動的電路原理圖免費下載。
    發表于 03-09 08:00 ?5次下載
    <b class='flag-5'>IHM01A1</b>步進<b class='flag-5'>電機</b>驅動<b class='flag-5'>板</b>的電路原理圖免費下載

    無刷電機開發板資料

    無刷電機開發板資料(內含開發板電路文件,程序)
    發表于 03-11 15:17 ?0次下載

    開發板評測】Renesas RA6M4開發板之SDIO(SDHI)

    本次評測的開發板為Renesas的CPK-RA6M4開發板,它是一款Renesas官方基于RA6M4 MCU群組設計的一款中國本地評估。如
    的頭像 發表于 12-27 13:15 ?3149次閱讀