背景:乙個專案需要完成乙個工件表面粗糙度的測量系統,該系統的驅動方式是雙路的步進電機,分別驅動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發命令給驅動晶元,驅動控制電機動作。典型框圖如下 ...
信捷步進指令的使用 步進電機驅動器的模式
步進電動機和步進電動機驅動器構成步進電機驅動系統。步進電動機驅動系統的效能,不但取決於步進電動機自身的效能,也取決於步進電動機驅動器的優劣。對步進電動機驅動器的研究幾乎是與步進電動機的研究同步進行的。步進電機驅動器有三種基本的步進電機驅動模式 整步 半步 細分。其主要區別在於電機線圈電流的控制精度 ...