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