迅為4412開(kāi)發(fā)板-步進(jìn)電機-驅動(dòng)和測試例程 和本文檔配套的資料有: 1 內核配置和步進(jìn)電機驅動(dòng)補丁包: topeet_modules_20190319.tar.gz 2 linux-C 的測試例程: iTOP-4412-linuxc-stepmotor_V1.0.zip 3 QtE 的測試例程: iTOP-4412-QtE4.7-step_moter_V1.0.tar 4 Android 的測試例程: iTOP-4412-Android4.0-stepmotortest-V1.0.zip 請注意,在光盤(pán)的內核源碼中,沒(méi)有步進(jìn)電機的驅動(dòng),需要添加步進(jìn)電機的驅動(dòng)之后才能使用。步進(jìn)電機使用的是 camera 接口上的 IO,需要屏蔽掉 camera 驅動(dòng)。 1.硬件連接 硬件連接分為兩個(gè)部分,供電和控制線(xiàn)的連接。 如下圖所示,是步進(jìn)電機的原理圖部分。 ![]() 端子 j2 可以看出,需要通過(guò)排線(xiàn)和開(kāi)發(fā)板的 camera 接口。上圖右半部分,可以看出供電可以采用 5v 電源或者 usb 供電的方式。 排線(xiàn)鏈接,如下圖所示;鹋W USB 線(xiàn)供電二選一,如下圖所示是 usb 線(xiàn)供電。 ![]() 這里務(wù)必需要注意的是,如果大家使用的是默認的光盤(pán)內核鏡像,請不要給步進(jìn)電機上電太長(cháng)時(shí)間。因為步進(jìn)電機驅動(dòng)芯片,默認狀態(tài)是上拉,會(huì )導致步進(jìn)電機處于不正常的狀態(tài),會(huì )讓電機發(fā)熱。 需要將步進(jìn)電機驅動(dòng)配置完成之后,步進(jìn)電機驅動(dòng)在初始化的時(shí),將步進(jìn)電機的驅動(dòng)芯片拉低,這樣步進(jìn)電機就會(huì )處于準備工作狀態(tài),這種狀態(tài)不會(huì )有電流,不會(huì )導致步進(jìn)電機發(fā)熱! 2.內核配置和補丁包 由硬件部分可知,步進(jìn)電機使用的是 camera 接口,內核默認狀態(tài)會(huì )編譯 camera 驅動(dòng),camera 驅動(dòng)會(huì )占用電機用到的四個(gè) GPIO,所以首先需要在內核配置中將 camera 驅動(dòng)去掉。然后添加驅動(dòng)補丁包,重新編譯內核,燒寫(xiě)到內核中。 2.1 內核配置 進(jìn)入內核目錄,配置所需要的缺省文件,使用命令“make menuconfig”,如下圖所示,進(jìn)入配置界面。 選中“Device Drivers --->”進(jìn)入。 ![]() 如下圖所示,選中“Multimedia support --->”,進(jìn)到選項中。 ![]() 如下圖所示,進(jìn)入“Video capture adapters --->”選項。 ![]() 如下圖所示,取消“OmniVision OV5640 sensor support ”,這個(gè)是攝像頭 ov5640的配置選項。 ![]() 如上圖所示,取消 ov5640 的選項,然后保存退出,得到新的.config 文件。 2.2 修改 Makefile 文件 然后需要修改 Makefile 文件。 打開(kāi)“drivers/char/Makefile”文件,如下圖所示。 增加以下代碼: obj-y += topeet_modules/ ![]() 然后保存退出。 2.3 補丁包 驅動(dòng)補丁包“topeet_modules_20190319.tar.gz”和文檔放在一起。 補丁包同時(shí)也放在網(wǎng)盤(pán)鏈接“iTOP4412 開(kāi)發(fā)板資料匯總(不含光盤(pán)內容)\iTOP-4412開(kāi)發(fā)板系統源碼及鏡像(其他)\topeet_modules”目錄下的“topeet_modules_20190319.tar.gz”下,日期可能會(huì )有變化,使用最新日期的壓縮包即可。 拷貝到“drivers/char”目錄下,使用命令“tar -vxftopeet_modules_20190319.tar.gz”解壓,如下圖所示。 ![]() 2.4 內核編譯和測試 重新編譯內核,燒寫(xiě)到開(kāi)發(fā)板,啟動(dòng)開(kāi)發(fā)板,如下圖所示。在“/dev”目錄下可以看到有設備節點(diǎn)“step_motor_driver”生成。 ![]() 至此,內核驅動(dòng)配置完成。這個(gè)時(shí)候給步進(jìn)電機上電,會(huì )發(fā)現四個(gè)并排的小燈已經(jīng)滅了。 3.Linux-C 的測試例程 然后拷貝和本文檔一起打包的“iTOP-4412-linuxc-stepmotor_V1.0.zip”壓縮包中“step_motor_app”文件到開(kāi)發(fā)板(U 盤(pán),tf 卡或者 nfs 都可以)。 如下圖所示,拷貝到開(kāi)發(fā)板上,作者的系統是最小 Linux 系統。如果是 Android 系統,則需要使用“chmod 777 /dev/step_motor_driver”修改權限。 ![]() 使用命令“./step_motor_app”如下圖所示,可以看到有如下提示。 ![]() 步進(jìn)電機的測試例程需要傳遞參數。 第一個(gè)參數是 R 或者 L,用于設置步進(jìn)電機的方向; 第二個(gè)參數是步角距,步角距是 5.625/64 度,4096 個(gè)步角距就是 360 度,所以這個(gè)參數的范圍是 0-4096,取值 4096 是一圈,最小建議為 10。 第三個(gè)參數是轉速,建議取值為 3000 到 20000 之間,小于 3000 轉速不穩定。提供了一個(gè) demon 為“./step_motor_app R 4076 3000”。 使用命令“./step_motor_app R 4076 3000”,可以看到步進(jìn)電機在右轉,轉一圈之后就會(huì )停下,“./step_motor_app L 4076 3000”會(huì )左轉一圈之后停止,用戶(hù)可以執行測試其它參數。 ![]() 4.QtE4.7 的測試例程 和本文檔一起打包的“iTOP-4412-QtE4.7-step_moter_V1.0”為 QtE4.7 的測試源碼資源包,源碼中的“step_moter”為步進(jìn)電機的編譯好的 qt4.7 程序。 請注意,需要參考本文檔第二小節,先配置內核驅動(dòng),確認有設備節點(diǎn)“/dev/step_motor_driver”。 開(kāi)發(fā)板燒寫(xiě) QtE4.7 系統,將“step_moter”拷貝到開(kāi)發(fā)板,使用命令“./step_moter& ”運行,如下圖所示。 ![]() 以上界面中,參數如下: Speed:通過(guò)改變延時(shí)來(lái)控制速度,延時(shí)越短,轉速越快。延時(shí)范圍:3--20ms。 Num:設置步進(jìn)數,當值為 4096 時(shí)轉一圈。 Direction:設置轉動(dòng)方向。RIGHT 為正轉,LEFT 為反轉。 START:設置好后,點(diǎn)擊 START 開(kāi)始運行。 CLOSE:關(guān)閉當前頁(yè)面。 5.Android4.0.3 的例程測試 “iTOP-4412-Android4.0-stepmotortest-V1.0.zip”為 Android4.0.3 的測試源碼資源包,源碼包中的“bin”下的“stepmotortest.apk”為步進(jìn)電機的編譯好的 Android4.0.3 程序。 請注意,需要參考本文檔第二小節,先配置內核驅動(dòng),確認有設備節點(diǎn)“/dev/step_motor_driver”,如下圖所示。 ![]() 在控制臺輸入命令“chmod 777 /dev/step_motor_driver”修改權限。 ![]() 在控制臺輸入命令“chmod 777 /dev/step_motor_driver”修改權限。 ![]() 速度:通過(guò)改變延時(shí)來(lái)控制速度,速度設置越大,轉速越快,但不能設置成 20。 步數:設置步進(jìn)數,當值為 4096 時(shí)轉一圈。 方向:設置轉動(dòng)方向。 START:設置好后,點(diǎn)擊 START 開(kāi)始運行。 ![]() |