日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

STM32 电机教程 7 - 步进电机开环速度控制

發布時間:2025/4/5 编程问答 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STM32 电机教程 7 - 步进电机开环速度控制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

????? 上一講我們已成功實現對步進電機的正反轉動控制,并簡單的通過調節節拍間的延時時間實現了簡單的轉速控制(開環),這一節將繼續給大學介紹在STM32中通過定時器方式來實現節拍間的精確延時操作,并通時調節定時器定時中斷產生的時間來實現對步進電機的開環速度控制。

?

????? 本節演示步進電機實物圖如下,因沒有找到電機的詳細參數,只能從型號中大致猜測一些(電機工作電壓4V),結合萬用表實測,得知該步進電機為兩相四線電機,具體接線關系如下圖所示。

?

示例詳解

本節用到ST官方推出的NUCLEO-F103RB和MPS的EV8049S-U-00A 電機控制評估板 ,EV8049S-U-00A評估板使用MP8049雙通道全橋芯片,可同時控制兩個有刷直流電機或兩個喇叭或一個步進電機,本節將用它來控制一個步進電機,手頭沒有EV8049S-U-00A評估板的可以用專門的步進電機驅動板(tb6560等)代替,也可以用L298N電機驅動板來控制

?

?

NUCLEO-F103RB對應的大致原理接線圖:

EV8049S-U-00A 電機控制評估板原理圖:

?

?

?

  • 準備操作
  • MP8049驅動芯片工作電壓是5-26V,因不太確定步進電機工作電壓具體是多少,本示例以該驅動支持的最低電壓5V控制步進電機(電壓越低,電機電流越小,電機越不容易燒壞,但出力也越小),關于EV8049S-U-00A評估板及MP8049雙通道全橋芯片的詳細數據手冊可在mps官網下載),連接好NUCLEO-F103RB與EV8049S-U-00A及電機:
  • ?

    需要用到的信號

    對應MCU引腳

    PWM1A

    PA0

    PWM1B

    PA1

    PWM2A

    PA4

    PWM1B

    PB0

    GND

    GND

    本節將直接使能PA0,PA1,PA4,PB0引卻配置成通用輸出模式 ,直接以接高或拉低方式控制步進電機的各相通電狀態,步進電機的節拍控制放在定時器中斷中完成,通過控制定時器定時時間便可實現對步時電機的速度控制。

    ?

    關于兩相步進電機的控制節拍:

    正轉:

    (1)四拍:A 1000,A- 0010,?? B 0100,? B- 0001.

    (2)八拍:A 1000,AA- 1010, A- 0010,A-B 0110,B 0100,BB- 0101,B- 0001,B-A 1001.

    反轉為正轉的逆序,本節將演示以上兩種控制方式的步進電機正反控制。

    ?

  • 在STM32CubeMX中,有專門的NUCLEO-F103RB工程模板,新建一個Cube工程,芯片型號為st32f103rb:
  • 生成一個簡單的工程模板實現了RCC,SYS,USART2接口的配置,同時還實現了LD2(LED)引腳的配置。接下來手動配置PA0,PA1,PA4,PB0為普通輸出功能:

    配置定時器1,用來產生定時中斷,并在定時中斷函數中完成步進電機的節拍換向操作,這里在定時器分頻系數為(71+1)=72,默認定時時長為(999+1)=1000us ,即1ms,可實現的定時時間范圍是1us 到 65.535ms。

    同時開啟定時器更新中斷,中斷等級選擇默認即可:

    ?

    生成工程:

    ?

    ?

  • 打開工程,為工作加入stepmotor.c(放于src文件夾下) 和stepmotor.h(放于inc文件夾下)文件,并在tim.c中加入開啟定時器更新中斷代碼:
  • 修改stm32f1xx_it.c中代碼

    最后在main.c 中加入如下測試代碼:

    設置工程下載后自動運行:

    編譯代碼,下載程序運行可直以看到步時電機成功轉動起來,可以看到步進電機成功實現了三種速度正轉及反轉功能,結合已編寫好的stepmotor.c中的代碼及定時器功能,可以很方便實現步進電機的速度,方向及使能控制,操作mymotor.EN變量可以實現步進電機的起停控制,控制mymotor.Dir 變量值就可以實現步進電機的方向控制,映射好mymotor.Delay 變量的值如程序中( mymotor.Delay= &(htim1.Instance->ARR); )后操作 *mymotor.Delay ?的值就可實現步進電機的速度控制( 如程序中的 *mymotor.Delay = 500; )。

    通過本節內容,我們已經可以實現對步時電機速度的較為精確的控制,不過需在注意的是,本節對步進電機的速度控制是開環控制,如果步進電機不丟步,則速度是比較準確的,為了防止步進電機丟步,控制節拍間的間隔一定不能太小,否則很有可能發生步進電機跟不上(丟步)甚至不轉的情況。OK,本期內容完成!下一期將給大家介紹步進電機的開環電流控制,如果大家有什么疑問或是有想了解的其它內容,也歡迎大家留言!!最后喜歡這個公眾號的同學們記得加關注了,每天都會有技術干貨推出!!

    ?

    文中源碼及資料下載,關注十三公眾號:

    在公眾號里給十三發送 “下載|STM32 電機教程 7” :

    ?

    ?

    總結

    以上是生活随笔為你收集整理的STM32 电机教程 7 - 步进电机开环速度控制的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。