chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

基于IHM16M1開(kāi)發(fā)板調(diào)節(jié)電機(jī)轉(zhuǎn)速

易絡(luò)盟電子 ? 來(lái)源:電子工程世界 ? 2025-05-26 10:12 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

01測(cè)試介紹

本次測(cè)試使用MC SDK提供的API函數(shù)調(diào)節(jié)電機(jī)的轉(zhuǎn)速。

測(cè)試硬件:

IHM16M1 +NUCLEO-G431RB 電機(jī)套件

SSD1306 OLED IIC接口顯示屏·

EC1 旋轉(zhuǎn)編碼器

RED LED

ZD2808-V1.9 BLDC 電機(jī)

杜邦線(xiàn)+萬(wàn)用板+Type-C連接線(xiàn)

12V 1A開(kāi)關(guān)電源

測(cè)試使用EC1旋轉(zhuǎn)編碼器調(diào)節(jié)電機(jī)的目標(biāo)轉(zhuǎn)速,使用開(kāi)發(fā)板user1按鈕啟動(dòng)/停止電機(jī)。OLED顯示電機(jī)轉(zhuǎn)速和調(diào)節(jié)轉(zhuǎn)速設(shè)置,LED指示電機(jī)狀態(tài)

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

02開(kāi)發(fā)板資源分配

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

EC1旋轉(zhuǎn)編碼器 使用 TIM3定時(shí)器 ,引腳 PC6 => TIM3_CH1,PC7 => TIM3_CH2

RED LED ,引腳 PB7 => LED

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

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

03程序設(shè)置與引腳分配

1、旋轉(zhuǎn)編碼設(shè)置

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

EC1旋轉(zhuǎn)編碼器,使用TIM3定時(shí)器,模式設(shè)置為:ENCoder MODE,引腳PC6 => EC1_CLK, PC7 => EC1_DT

輸入過(guò)濾值選擇:15,其它默認(rèn)。如果EC1旋轉(zhuǎn)時(shí)跳動(dòng)厲害,可以降低TIM3預(yù)分頻器。

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引腳,將引腳設(shè)置上拉和輸出模式。

04程序與工作原理

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

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

向上滑動(dòng)閱覽

 /* 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、電機(jī)的狀態(tài)使用MC_GetSTMStateMotor1()函數(shù)返回,IDLE狀態(tài)為電機(jī)停止且準(zhǔn)備好狀態(tài),在該狀態(tài)下可以調(diào)節(jié)參數(shù)和設(shè)置電機(jī)啟動(dòng)。本例將電機(jī)參數(shù)設(shè)置放在該狀態(tài)下完成。

向上滑動(dòng)閱覽

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();
  }

參數(shù)設(shè)置:MC_ProgramSpeedRampMotor1(rspeed, 1000);該函數(shù)可以設(shè)置從上一個(gè)狀態(tài)到目標(biāo)狀態(tài)需要持續(xù)的時(shí)間,其時(shí)間斜率需要根據(jù)電機(jī)的性能參數(shù)而定。

05測(cè)試

修改轉(zhuǎn)速過(guò)程,使用旋轉(zhuǎn)編碼器進(jìn)行參數(shù)的調(diào)節(jié),順時(shí)針:增加轉(zhuǎn)速,逆時(shí)針:降低轉(zhuǎn)速

以上測(cè)評(píng)內(nèi)容撰寫(xiě)自電子工程世界(EEWORLD)用戶(hù):bigbat。感謝這位小伙伴對(duì)測(cè)評(píng)活動(dòng)的大力支持!

聲明:本文內(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)投訴
  • OLED
    +關(guān)注

    關(guān)注

    121

    文章

    6310

    瀏覽量

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

    關(guān)注

    45

    文章

    3875

    瀏覽量

    140532
  • 電機(jī)
    +關(guān)注

    關(guān)注

    143

    文章

    9421

    瀏覽量

    152208
  • 開(kāi)發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    6007

    瀏覽量

    110102

原文標(biāo)題:【測(cè)評(píng)分享】IHM16M1開(kāi)發(fā)板電機(jī)調(diào)速攻略

文章出處:【微信號(hào):易絡(luò)盟電子,微信公眾號(hào):易絡(luò)盟電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Nucleo-F446RE+X-NUCLEO-IHM07M1生成的應(yīng)用為什么啟動(dòng)設(shè)置參數(shù)無(wú)效?

    開(kāi)發(fā)板Nucleo-F446RE+X-NUCLEO-IHM07M1工具版本MC6.1.2,通過(guò)profiler測(cè)得電機(jī)參數(shù)轉(zhuǎn)速最高4200以及霍爾角120度+303度。用workben
    發(fā)表于 03-07 08:03

    X-NUCLEO-IHM16M1驅(qū)動(dòng)上三電阻采樣和單電阻采樣是怎么切換的?

    由于沒(méi)有實(shí)物,沒(méi)有詳細(xì)圖片介紹,想了解一下 X-NUCLEO-IHM16M1 驅(qū)動(dòng)上怎么切換三電阻和單電阻?想買(mǎi)塊開(kāi)發(fā)板來(lái)用,官方規(guī)格書(shū)沒(méi)明說(shuō)這個(gè),說(shuō)是在板子背面,具體是需要焊接還是可以通過(guò)跳帽?因?yàn)?X-NUCLEO-
    發(fā)表于 03-12 06:26

    關(guān)于P-NUCLEO-IHM03上電后電機(jī)的問(wèn)題求解

    電機(jī)控制小白,買(mǎi)了P-NUCLEAO-IHM03的開(kāi)發(fā)套件,nucleo-g431的板子加上x(chóng)-nucleo-ihm16m1的驅(qū)動(dòng),連接套
    發(fā)表于 03-26 07:41

    STM32F103RB+IHM07M1 SDK中顯示Feedback Error是哪里的問(wèn)題?

    我購(gòu)買(mǎi)了F103RB開(kāi)發(fā)板,以及IHM07M1, 用SDK 5.2 新建工程,選擇了這2個(gè),以及Bull電機(jī)。 產(chǎn)生了代碼,編譯通過(guò)。 串口建立連接,可以看到部分參數(shù)在變化。但是
    發(fā)表于 04-25 07:46

    X-NUCLEO-IHM07M1電機(jī)調(diào)速降不了是什么原因?qū)е碌模?/a>

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

    《電子發(fā)燒友電子設(shè)計(jì)周報(bào)》聚焦硬科技領(lǐng)域核心價(jià)值 第13期:2025.05.26--2025.05.30

    內(nèi)存映射 5、基于IHM16M1開(kāi)發(fā)板調(diào)節(jié)電機(jī)轉(zhuǎn)速 6、如何借助NVIDIA ARC-Compact在基站部署AI-RAN 7、中微愛(ài)芯觸摸芯片注入電流提高指南 8、飛凌i.MX935
    發(fā)表于 05-30 19:39

    轉(zhuǎn):P-NUCLEO-IHM001 電機(jī)開(kāi)發(fā)板串口調(diào)試指南

    前言P-NUCLEO-IHM001 是一款功能強(qiáng)大,且小巧的針對(duì)永磁同步電機(jī)開(kāi)發(fā)板。本文介紹如何通過(guò)該套件上的虛擬串口來(lái)實(shí)現(xiàn)串口調(diào)試電機(jī)。
    發(fā)表于 07-15 17:16

    怎么制作一個(gè)用PWM調(diào)節(jié)電機(jī)轉(zhuǎn)速的程序

    你好!我想制作一個(gè)用PWM調(diào)節(jié)電機(jī)轉(zhuǎn)速的程序,但是我不知道如何讓PWM工作。我用的是PIC32MX270F256B。我做了一些研究,但沒(méi)有成功。一些示例代碼會(huì)很好,謝謝!
    發(fā)表于 09-06 14:27

    請(qǐng)問(wèn)F28027F控制無(wú)刷電機(jī)轉(zhuǎn)速的函數(shù)是什么?

    \boostxldrv8301_revB\f28x\f2802xF\projects\ccs5\proj_lab05b例子,如果在運(yùn)行中想隨時(shí)調(diào)節(jié)電機(jī)轉(zhuǎn)速用哪個(gè)函數(shù)?還是改變CTRL object的值?
    發(fā)表于 06-02 11:47

    如何通過(guò)PWM調(diào)節(jié)電機(jī)的PWM?

    的高低電平來(lái)實(shí)現(xiàn)PWM信號(hào)的輸出,從而控制電機(jī)的速度?! ∪y(cè)試  將代碼下載到主控上,點(diǎn)擊BOOT按鍵,觀察電機(jī)轉(zhuǎn)速?! ∷?、總結(jié)  本節(jié)我們通過(guò)簡(jiǎn)單的一個(gè)實(shí)驗(yàn)學(xué)習(xí)了如何通過(guò)PW
    發(fā)表于 03-27 16:36

    Explorer 16開(kāi)發(fā)板用戶(hù)指南

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

    Cepark AVR M16開(kāi)發(fā)板原理圖

    本內(nèi)容向大家提供了Cepark AVR M16開(kāi)發(fā)板原理圖 希望對(duì)大家學(xué)習(xí)上有所幫助
    發(fā)表于 04-11 17:06 ?179次下載
    Cepark AVR <b class='flag-5'>M16</b><b class='flag-5'>開(kāi)發(fā)板</b>原理圖

    STEVAL-IHM042V1原理圖

    STEVAL-IHM042V1 電機(jī)驅(qū)動(dòng)DEMO的原理圖
    發(fā)表于 11-11 16:34 ?12次下載

    IHM01A1步進(jìn)電機(jī)驅(qū)動(dòng)的電路原理圖免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是IHM01A1步進(jìn)電機(jī)驅(qū)動(dòng)的電路原理圖免費(fèi)下載。
    發(fā)表于 03-09 08:00 ?5次下載
    <b class='flag-5'>IHM01A1</b>步進(jìn)<b class='flag-5'>電機(jī)</b>驅(qū)動(dòng)<b class='flag-5'>板</b>的電路原理圖免費(fèi)下載

    無(wú)刷電機(jī)開(kāi)發(fā)板資料

    無(wú)刷電機(jī)開(kāi)發(fā)板資料(內(nèi)含開(kāi)發(fā)板電路文件,程序)
    發(fā)表于 03-11 15:17 ?0次下載