DIY雙路步進電機驅動器 使用DRV8825模組

2022-07-12 18:18:12 字數 1233 閱讀 9050

背景:乙個專案需要完成乙個工件表面粗糙度的測量系統,該系統的驅動方式是雙路的步進電機,分別驅動x軸和y軸的工作太移動,以完成粗糙度的測量。

硬體介紹:

主控:stm32f103c8t6

電源:cj7805 + amx1117

電機:42步進電機

驅動:drv8825模組*2

通訊:usart

取樣:stm32內建adc

除錯:swn介面

驅動器功能:

1、雙路步進電機驅動(相容a4988以及drv8825模組)(為了製作方便可靠,該專案中,我選擇使用購買的驅動模組,而省略了驅動晶元的外圍電路的設計)

2、串列埠通訊(由於專案中需要該測量系統與上位機通訊,並且實時顯示工件粗糙度的測量結果,因此這裡採用了串列埠通訊的方式,上位機採用qt編寫,通訊已經調通)

3、感測器介面(stm32內建adc測量電壓,該專案中的感測器是乙個電感感測器,感測器訊號經過一系列模擬電路的處理,轉化成可以直徑進行adc取樣的電壓訊號)

驅動器原理圖:(工程採用ad完成)

驅動器pcb三維圖:

軟體部分**邏輯:

程式共有三個任務,三個任務並行工作:

由於是開環控制的步進電機,故採用時間作為位移的基準。

同時,由於沒有位置編碼器,為了讓上位機知道電機的位置,在每次向上位機傳送感測器資料的同時,也將時間資訊同時傳送,達到下位機與上位機的時間統一,從而使上位機獲得工作台的實時位置。

串列埠傳送部分**:(包括傳送時間基準)

1

void upper_send(void)2

28 }

軟體部分實現思路:

1、使用stm32的tim1獲得系統時間

2、在tim1的溢位中斷中實現任務的排程(可以方便設定各個任務的排程頻率)

3、使用tim3生成兩個步進電機的驅動訊號(驅動訊號為1khz的方波,32細分)

4、使用stm32的內建adc1結合dma取樣電壓

5、使用usart1實現與上位機通訊(串列埠接收中斷處理上位機命令)  

步進電機 驅動器原理

1 步進電機是一種作為控制用的特種電機,它的旋轉是以固定的角度 稱為 步距角 一步一步執行的,其特點是沒有積累誤差 精度為100 所以廣泛應用於各種開環控制。步進電機的執行要有一電子裝置進行驅動,這種裝置就是步進電機驅動器,它是把控制系統發出的脈衝訊號轉化為步進電機的角位移,或者說 控制系統每發乙個...

步進電機驅動器分類

最近公司使用步進電機控制火車大燈的偏轉方向,因此在網上惡補了下步進電機驅動器相關知識。以下是我的總結,也不一定正確,不過我是我的理解。看了這麼多,電機驅動晶元有3類 1.tmc5160 l6474 這類驅動比較高階,直接就是mcu通過spi uart發命令給驅動晶元,驅動控制電機動作。典型框圖如下 ...

信捷步進指令的使用 步進電機驅動器的模式

步進電動機和步進電動機驅動器構成步進電機驅動系統。步進電動機驅動系統的效能,不但取決於步進電動機自身的效能,也取決於步進電動機驅動器的優劣。對步進電動機驅動器的研究幾乎是與步進電動機的研究同步進行的。步進電機驅動器有三種基本的步進電機驅動模式 整步 半步 細分。其主要區別在於電機線圈電流的控制精度 ...