久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: STM32控制步進電機程序+詳細解說資料(通俗易懂) [打印本頁]

作者: 尼古拉斯    時間: 2019-4-16 09:32
標題: STM32控制步進電機程序+詳細解說資料(通俗易懂)

步進電機(也稱脈沖電機)(將電脈沖轉換為相應的角位移或線位移的電磁機械裝置,具有快速啟動,停能力,在電機的負荷不超過它能提供的動態轉矩時,可以通過輸入脈沖來控制它在一瞬間的啟動或者停止。在非超載的情況下,步距角和轉速只和輸入的脈沖頻率有關,和環境溫度,氣壓,振動無關,也不受電網電壓的波動和負載變化的影響,因此,控制較為精準)即給電機一個脈沖信號,電機則轉過一個步距角


步進電機是一種感應電機,它的工作原理:利用電子電路,將直流電變成分時供電的,多相時序控制電流,用這種電流為步進電機供電,步進電機才能正常工作,驅動器就是為步進電機分時供電的,多相時序控制器,就是說:必須用由雙環形脈沖信號功率驅動電路等組成的控制系統方可使用。


步距角:控制系統每發一個步進脈沖信號,電機所轉動的角度。電機出廠時給了一個步距角的值,如:86BYG250A型      電機的值為0.9、1.8(表示半步工作時為0.9,整步為1.8),被稱之為“電機的固有步距角”,但是不一定是      電機實際工作時的真正步距角,真正的步距角和驅動器有關


相數:電機內部的線圈組數,目前常用的有二相,三相,四相,五相步進電機。電機相數不同,其步距角也就不同了,  一般二相電機的步距角為0.9/1,8,三相為0.36/0.72,五相為0.36/0.72。在沒有細分驅動器的情況下,用戶主要 靠選擇不同相數的步進電機來滿足自己步距角的要求。如果使用細分驅動器,那么相數好像也就沒有了意義

拍數:完成一個磁場周期性變化所需脈沖數或導電狀態,或指電機轉過一個步距角所需脈沖數。以如下的四相電機為            例,有四相四拍運行方式,AB-BC-CD-DA-AB;四相八拍:A-AB-B-BC-C-CD-D-DA-A


失步:電機運轉時運轉的步數不等于理論上的步數,稱之為失步


開環控制與閉環控制:(主要看系統中有沒有反饋環節)(反饋指的是動作所引起的效果)

(反饋簡單的理解就是:“你打了別人一巴掌,我們看到了它的臉是紅的,嗯嗯,這就是眼睛所得到的反饋”)

閉環控制:存在反饋環節的控制,就是當前的系統能夠實時的檢測控制的輸出結果,并將檢測到的信息通過反饋環節反映到輸入端,調整輸入量,達到修正控制誤差,提高控制精度的目的,(對外部擾動和系統參數變化不敏感)如:

(閉環)

全自動洗衣機,給洗衣機加水時,里邊有一個紅外傳感器,掃描到水位高低,當水位合適時,洗衣機自動停止加水


家用空調根據傳感器采集到當前的溫度,然后比較設定溫度,通過設定指令,控制室內外機的工作情況,改變頻率,壓縮機的轉速等進行簡單的調節,然后不斷地進行控制


尋跡小車時,兩邊的紅外傳感器不斷的檢測黑線,將返回的結果輸入到相應i/o口上,我們對這些i/o口進行中斷檢測就可以知道,當前時刻的位置,然后可以執行相應的操作(左轉,右轉);


調節平衡天平的時候,其中一種方法就是利用mpu6050獲取當前所處位置的角度,調用PID算法,對當前的位置或者角度進行處理,然后對調整后的角度再次進行反饋處理

(家用空調調節溫度)

家用空調調節指定的溫度,靠的是電子傳感器,(電子傳感器就是一個熱敏電阻,不同的溫度會有不同的阻值),利用也可以理解為電子膨脹,不同的溫度會有不同的阻值。利用對入風口的空氣進行取樣,把數據傳輸到控制板上,然后,在與設定的溫度進行比較,產生一個指令來實現控制。(制冷的話,比較之后:輸出室內風機和室外機的開機指令,內外機開始工作(室外機包括壓縮機,室外風機,四通閥等部件),工作一定溫度的話,室內溫度將會:1,(定頻空調)達到設定值,室外機停止工作,室內機保持工作,保證空氣循環,當室內溫度逐漸上升,大于設定值2-3度時,室外機重新啟動制冷,室內溫度將又開始下降,重復這個過程,室內溫度就能保持在設定溫度值上下1度左右范圍內波動; 2,(變頻空調)接近設定值,室外機的變頻板輸出的頻率下降,壓縮機轉速下降,制冷量也相應降低,室內溫度保持在與設定值相同的數值下。隨著室內熱源的變化,室內機溫度傳感器實時檢測溫度的變化,主控板輸出的控制信號使變頻器跟隨變化調節壓縮機工作頻率,從而改變瞬時制冷量,確保室內溫度穩定)



開環控制:不存在反饋環節的控制,也就是控制器與被控制對象間只有順序作業而無反方向聯系且控制單方向進行,

                  ,無自動糾偏能力,不用取輸出量變化信號控制輸入量。

                  

                   如:在開車的過程中,我們來控制方向盤

                   人工轉換電扇的檔位實現轉速的控制,不用反饋回來實際的轉速

                   給洗衣機加水時:我們通過來觀察水位來確定什么時候關掉水龍頭

(所以,簡單的說:就是看有沒有反饋:開環沒有,閉環有,對于用到機器上來說,每一件事都是有反饋的,只是情況不同而已,當反饋是人自己來判斷的話,那么這個系統就是開環的,如果反饋是機器自己來判斷的話,那么這個系統就是閉環的)

從整體的角度來看:


單片機控制電機正轉源程序如下:
  1. #include "delay.h"
  2. #include "sys.h"
  3. #include "usart.h"

  4. //引腳連接
  5. //IN1:PC3、IN2:PC2、IN3:PC0、IN4:PC13、

  6. //步進電機初始化函數
  7. void Motor_Init(void)
  8. {
  9.         GPIO_InitTypeDef GPIO_InitStructure;
  10.         
  11.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//開啟時鐘
  12.         
  13.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_0|GPIO_Pin_2|GPIO_Pin_3;
  14.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽輸出
  15.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  16.         GPIO_Init(GPIOC, &GPIO_InitStructure);
  17.         
  18.         GPIO_ResetBits(GPIOC,GPIO_Pin_13);//默認低電平
  19.         GPIO_ResetBits(GPIOC,GPIO_Pin_0);
  20.         GPIO_ResetBits(GPIOC,GPIO_Pin_2);
  21.         GPIO_ResetBits(GPIOC,GPIO_Pin_3);
  22.         
  23. }

  24. //步進電機正轉函數(反轉參考51版本)
  25. void Motorcw(void)
  26. {
  27.         GPIO_SetBits(GPIOC,GPIO_Pin_13);//依次高電平輸出
  28.         GPIO_ResetBits(GPIOC,GPIO_Pin_0);
  29.         GPIO_ResetBits(GPIOC,GPIO_Pin_2);
  30.         GPIO_ResetBits(GPIOC,GPIO_Pin_3);
  31.         delay_ms(10);
  32.         
  33.         GPIO_ResetBits(GPIOC,GPIO_Pin_13);
  34.         GPIO_SetBits(GPIOC,GPIO_Pin_0);
  35.         GPIO_ResetBits(GPIOC,GPIO_Pin_2);
  36.         GPIO_ResetBits(GPIOC,GPIO_Pin_3);
  37.         delay_ms(10);
  38.         
  39.         GPIO_ResetBits(GPIOC,GPIO_Pin_13);
  40.         GPIO_ResetBits(GPIOC,GPIO_Pin_0);
  41.         GPIO_SetBits(GPIOC,GPIO_Pin_2);
  42.         GPIO_ResetBits(GPIOC,GPIO_Pin_3);
  43.         delay_ms(10);
  44.         
  45.         GPIO_ResetBits(GPIOC,GPIO_Pin_13);
  46.         GPIO_ResetBits(GPIOC,GPIO_Pin_0);
  47.         GPIO_ResetBits(GPIOC,GPIO_Pin_2);
  48.         GPIO_SetBits(GPIOC,GPIO_Pin_3);
  49.         delay_ms(10);
  50.         
  51. }

  52. int main(void)
  53. {
  54.         delay_init();//delay初始化函數
  55.         Motor_Init();
  56. while(1)
  57. {
  58.         Motorcw();
  59. }
  60. }
復制代碼

正轉代碼與芯片資料供大家學習:
ULN2003步進電機正轉代碼與資料.7z (577.56 KB, 下載次數: 1160)


作者: 張先生一個人    時間: 2019-8-22 21:03
你好,請問怎樣使57步進電機旋轉方向發生改變?
我現在能驅動電機逆時針旋轉,要怎么做能使電機順時針旋轉呢?
我嘗試過改變DIR的輸入電平,但是并沒有發生改變。

作者: hujj    時間: 2019-8-23 10:34
張先生一個人 發表于 2019-8-22 21:03
你好,請問怎樣使57步進電機旋轉方向發生改變?
我現在能驅動電機逆時針旋轉,要怎么做能使電機順時針旋轉 ...

改變時序就能控制正反轉。
作者: zp17777    時間: 2019-10-21 21:27
謝謝你分享的資料,感謝
作者: yjglan    時間: 2019-11-4 15:51
看到代碼眼前一亮
這樣就不需要 驅動器了。
學習了
作者: zwl911124    時間: 2019-11-4 22:56
ths...
作者: yzh327    時間: 2019-11-16 17:57
樓主威武,感謝分享。
作者: 807964046    時間: 2019-11-19 08:16
感謝分享
作者: 4591314    時間: 2019-11-19 20:00
f407可以控制么?
作者: kxq    時間: 2019-12-11 19:19
請問那四個引腳哪個是脈沖,哪個是方向
作者: kxq    時間: 2019-12-11 19:22
hujj 發表于 2019-8-23 10:34
改變時序就能控制正反轉。

請問你有32控制步進電機的程序嗎?

作者: Lee_2019    時間: 2019-12-14 23:31
有PID的嗎?
作者: 敲敲小木魚    時間: 2020-1-2 10:18
樓主威武,感謝分享。
作者: 花式虐狗    時間: 2020-1-2 16:59
樓主威武,感謝分享。
作者: venjo    時間: 2020-1-8 11:47
樓主威武,感謝分享。
作者: 00750    時間: 2020-1-19 09:38
我想下來看看
作者: 156450727    時間: 2020-1-31 11:19
謝謝你分享的資料
作者: 18710841730    時間: 2020-3-18 00:10
感謝分享

作者: yaoke7941    時間: 2020-3-19 10:59
謝謝分享,學習一下
作者: yaoke7941    時間: 2020-3-19 11:20
謝謝分享,學習一下
作者: liufeng180840    時間: 2020-3-23 08:52
謝謝分享,學習一下
作者: 海底奇俠    時間: 2020-4-5 12:24
學習一下
作者: 華爾街神探    時間: 2020-5-14 22:42
不懂這個上位機的具體原理
作者: 時光LS    時間: 2020-5-30 09:44
厲害,感謝分享!
作者: bbcs852    時間: 2020-6-7 19:48
謝謝分享,學習一下
不知道怎么收藏主題,我從51開始轉STM32了
作者: 周凱    時間: 2020-6-15 10:29
正在學習STM32,剛好準備找些例子來聯系下,看到樓主的帖子很實用,超級簡單,非常感謝!!
作者: 15532112031    時間: 2020-7-3 11:19
驅動模塊是什么
作者: LYT123456    時間: 2020-8-11 14:13
hujj 發表于 2019-8-23 10:34
改變時序就能控制正反轉。

反轉:0001 0010 0100 1000
作者: 123456789zhangh    時間: 2020-9-14 13:27
如何控制進行反轉
作者: 與我同在    時間: 2020-9-17 20:54
kxq 發表于 2019-12-11 19:22
請問你有32控制步進電機的程序嗎?

這不就是32的嗎

作者: 774278841    時間: 2020-9-22 22:18
還以為是A4988的驅動了,2003啊
作者: WSZXAAA    時間: 2020-12-26 00:02
超級簡單,非常感謝!!

作者: GlenXu    時間: 2021-2-22 20:41
浪費資源,照這樣可以用更簡單的數字電路搭一個,連程序都不需要。
作者: lzlrsddz    時間: 2021-4-24 02:43
謝謝,正好需要,下載來看看
作者: suph007    時間: 2021-4-28 12:59
有其他更優化的算法么?
作者: xcza    時間: 2021-5-5 10:42
kxq 發表于 2019-12-11 19:22
請問你有32控制步進電機的程序嗎?

他上面有連接
作者: 我為單片機哭泣    時間: 2021-5-17 15:42
張先生一個人 發表于 2019-8-22 21:03
你好,請問怎樣使57步進電機旋轉方向發生改變?
我現在能驅動電機逆時針旋轉,要怎么做能使電機順時針旋轉 ...

57步進電機該怎么連接呢
作者: stm32單片機哭哭    時間: 2021-6-11 13:34
周凱 發表于 2020-6-15 10:29
正在學習STM32,剛好準備找些例子來聯系下,看到樓主的帖子很實用,超級簡單,非常感謝!!

你好,請問你調試出來了嗎?
作者: huand123    時間: 2021-6-18 10:40
有protues 仿真嗎
作者: huand123    時間: 2021-6-19 00:10
怎么連接啊,沒有原理圖或實物圖
作者: 996658355    時間: 2021-10-18 10:45
我為單片機哭泣 發表于 2021-5-17 15:42
57步進電機該怎么連接呢

請問你弄清楚了嗎?可以分享一下嗎?
作者: inacdgd    時間: 2021-10-20 09:08
基于正點原子開發板的一個實驗例子,感謝分享!
作者: liudi2526    時間: 2021-11-19 10:02
言過其實!就是原子的例程嘛,哪有按鍵控制功能了?!扣幾個幣無所謂,這種做法令人反胃!
作者: xinamofu    時間: 2021-12-25 08:31
yjglan 發表于 2019-11-4 15:51
看到代碼眼前一亮
這樣就不需要 驅動器了。
學習了

白亮了 ,去學點基礎的東西吧




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产精品成人一区二区三区 | 国产一区 | 在线视频日韩精品 | 日韩精品人成在线播放 | 日韩高清不卡 | 亚洲视频在线看 | 色婷婷一区二区三区四区 | 欧美久久一区二区 | 国产综合久久 | 久久精品国产久精国产 | 久久综合久| 美日韩中文字幕 | 国产69久久精品成人看动漫 | 欧美一区二区在线播放 | 一级特黄网站 | 久久久久久免费精品一区二区三区 | 99re6在线视频精品免费 | 日韩色视频 | 亚洲一区中文字幕在线观看 | 国产毛片久久久久久久久春天 | 福利精品| 日日操操 | 日韩精品一区二区三区在线播放 | 天堂国产| 99久久免费精品国产免费高清 | 中文字幕丁香5月 | 男女午夜激情视频 | 国产精品久久久久久久久久妇女 | 91精品国产色综合久久不卡98口 | 国产精品成人品 | 欧美一区2区三区3区公司 | 欧美日韩91 | 国产一区高清 | 日日夜夜操天天干 | 欧美日韩高清一区二区三区 | 国产成人在线视频 | 成人午夜在线 | 国产精品久久久久久婷婷天堂 | 国产视频二区 | 91在线精品一区二区 | 一区二区三区亚洲 |