步進電機是一種無刷直流電動機,其旋轉(zhuǎn)每轉(zhuǎn)一圈分為幾步。步進電機需要不同數(shù)量的步驟來完成一個360°旋轉(zhuǎn)。由于這一特點,步進電機提供了精確的控制,并用于3D打印機,CNC路由器和機器人。步進電機需要電機驅(qū)動器和單片機才能正常工作,這里我們將使用A4988步進電機驅(qū)動器與樹莓派通過網(wǎng)頁旋轉(zhuǎn)NEMA17步進電機。
該網(wǎng)頁將使用用于樹莓派步進電機控制的Flask Web框架創(chuàng)建。網(wǎng)頁將有一個滑塊和一個提交按鈕,它將發(fā)送滑塊值到樹莓派按下提交按鈕。在基于物聯(lián)網(wǎng)的應(yīng)用中,web服務(wù)器用于使用web瀏覽器控制或監(jiān)控任何傳感器值,我們以前使用Arduino, ESP8266, NodeMCU, ESP32,樹莓派等創(chuàng)建了許多web服務(wù)器。
Flask是一個流行的Python web框架,由Pocoo的Armin Ronacher開發(fā)。它是用于開發(fā)web應(yīng)用程序的第三方Python庫。Flask被歸類為微框架,它基于Pocoo項目Werkzeug和Jinja2。Flask在樹莓派上非常常用,因為樹莓派有Linux操作系統(tǒng),可以很容易地處理Python腳本。樹莓派由于其高處理能力和內(nèi)置Wi-Fi功能,在創(chuàng)建web服務(wù)器和基于物聯(lián)網(wǎng)的項目中也很受歡迎。
組件的要求
?樹莓派3
?NEMA17步進電機
?A4988步進驅(qū)動模塊
?跳線
線路圖
用樹莓派控制Nema 17步進電機的電路圖如下:
在這個項目中,我們使用了A4988步進電機驅(qū)動器與樹莓派。A4988電機驅(qū)動模塊內(nèi)置轉(zhuǎn)換器,因此可以使用步進和方向引腳控制步進電機。STEP引腳控制步驟,DIRECTION引腳控制方向。步進電機使用12V電源供電,A4988模塊通過樹莓派供電。RST引腳連接到SLP/SLEEP引腳,使驅(qū)動程序處于使能狀態(tài)。
樹莓派Nema 17的完整連接如下表所示。
安裝Flask模塊和庫
在這里,我們將使用以下命令安裝Flask模塊和庫:
首先,使用以下命令更新樹莓派
現(xiàn)在,安裝pip和Rpi。Gpio庫使用以下命令:
現(xiàn)在使用下面的命令來安裝Flask:
現(xiàn)在安裝樹莓派電機庫。它是一個python庫,用于控制使用樹莓派的各種電機。使用以下命令安裝庫。
Python程序說明
這個Nema 17步進電機與樹莓派項目的完整python代碼在文檔的末尾給出。
通過導(dǎo)入所需的庫文件來啟動代碼。從各自的庫文件中導(dǎo)入GPIO、Flask、sleep和RpiMotorLib。GPIO功能使我們能夠?qū)I的GPIO引腳進行編程。Sleep函數(shù)用于提供延遲,F(xiàn)lask用于創(chuàng)建Web應(yīng)用程序。
現(xiàn)在定義Raspberry Pi GPIO引腳,其中連接A4988模塊的STEP, Direction和Microstep引腳。
從Web頁面獲取滑塊值并將其作為整數(shù)值打印。
現(xiàn)在比較滑塊值,如果滑塊值大于10,則順時針旋轉(zhuǎn)電機。
Motor_go是移動電機的主要方法。它接受六個輸入(順時針、步長類型、步長、步長延遲、冗長、初始化延遲)。
地點:
順時針用于控制電機的方向,可以通過True和False來改變電機的方向。False表示逆時針方向,True表示順時針方向。
步驟類型用于定義步驟分辨率。通過使用步進類型,您可以將電機設(shè)置為五步分辨率之一。
步長用于定義電機的步長數(shù)。
步延遲是步之間的延遲。
Verbose是一個布爾函數(shù),用于寫入引腳動作。默認(rèn)為False。
Initdelay是初始化GPIO引腳之后,但在電機移動之前的初始延遲
運行樹莓派Web服務(wù)器,用于控制Nema17
一旦你的代碼準(zhǔn)備好了,Nema 17步進電機按照電路圖連接,打開PI來寫程序。
使用以下命令創(chuàng)建thestep .py文件:
現(xiàn)在將給定的內(nèi)容粘貼到末尾,并使用以下命令運行python代碼:
現(xiàn)在導(dǎo)航到樹莓派Web瀏覽器,輸入打開Web頁面,如下所示。
最后,移動滑塊并按下提交按鈕,使步進電機旋轉(zhuǎn)。如果向左移動滑塊,則電機將沿逆時針方向移動,如果向右移動滑塊,則電機將沿順時針方向移動。電機的速度取決于滑塊的值。如果滑塊值高,則電機速度會慢,反之亦然。
這是使用Python語言控制Nema17步進電機的方法。通過在路由器中啟用端口轉(zhuǎn)發(fā),您可以通過輸入ISP(互聯(lián)網(wǎng)服務(wù)提供商)提供的靜態(tài)IP來控制世界上任何地方的步進電機。
本文編譯自iotdesignpro