CubieBoard通过GPIO控制步进电机-python
生活随笔
收集整理的這篇文章主要介紹了
CubieBoard通过GPIO控制步进电机-python
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
1.首先你要編譯并加載sun4i-gpio.ko驅(qū)動(dòng),如何編譯:參考 < 如何編譯單個(gè)驅(qū)動(dòng)文件>2.修改script.bin配置,在末尾加上gpio配置段,如何修改:參考< 如何修改script.bin | script.fex>
添加的內(nèi)容如下: [gpio_para]
gpio_used = 1
gpio_num = 67
gpio_pin_1 = port:PG03<1><default><default><1>
gpio_pin_2 = port:PB19<1><default><default><1>
gpio_pin_3 = port:PB18<1><default><default><1>
gpio_pin_4 = port:PG06<1><default><default><1>
gpio_pin_5 = port:PG05<1><default><default><1>
gpio_pin_6 = port:PG04<1><default><default><1>
gpio_pin_7 = port:PG01<1><default><default><1>
gpio_pin_8 = port:PG02<1><default><default><1>
gpio_pin_9 = port:PG00<1><default><default><1>
gpio_pin_10 = port:PH14<1><default><default><1>
gpio_pin_11 = port:PH15<1><default><default><1>
gpio_pin_12 = port:PI06<1><default><default><1>
gpio_pin_13 = port:PI05<1><default><default><1>
gpio_pin_14 = port:PI04<1><default><default><1>
gpio_pin_15 = port:PG11<1><default><default><1>
gpio_pin_16 = port:PG10<1><default><default><1>
gpio_pin_17 = port:PG09<1><default><default><1>
gpio_pin_18 = port:PG08<1><default><default><1>
gpio_pin_19 = port:PG07<1><default><default><1>
gpio_pin_20 = port:PE08<1><default><default><1>
gpio_pin_21 = port:PE07<1><default><default><1>
gpio_pin_22 = port:PE06<1><default><default><1>
gpio_pin_23 = port:PE05<1><default><default><1>
gpio_pin_24 = port:PE04<1><default><default><1>
gpio_pin_25 = port:PI09<1><default><default><1>
gpio_pin_26 = port:PI08<1><default><default><1>
gpio_pin_27 = port:PI07<1><default><default><1>
gpio_pin_28 = port:PD04<1><default><default><1>
gpio_pin_29 = port:PD03<1><default><default><1>
gpio_pin_30 = port:PD02<1><default><default><1>
gpio_pin_31 = port:PD01<1><default><default><1>
gpio_pin_32 = port:PD00<1><default><default><1>
gpio_pin_33 = port:PE11<1><default><default><1>
gpio_pin_34 = port:PE10<1><default><default><1>
gpio_pin_35 = port:PE09<1><default><default><1>
gpio_pin_36 = port:PD12<1><default><default><1>
gpio_pin_37 = port:PD11<1><default><default><1>
gpio_pin_38 = port:PD10<1><default><default><1>
gpio_pin_39 = port:PD09<1><default><default><1>
gpio_pin_40 = port:PD08<1><default><default><1>
gpio_pin_41 = port:PD07<1><default><default><1>
gpio_pin_42 = port:PD06<1><default><default><1>
gpio_pin_43 = port:PD05<1><default><default><1>
gpio_pin_44 = port:PD20<1><default><default><1>
gpio_pin_45 = port:PD19<1><default><default><1>
gpio_pin_46 = port:PD18<1><default><default><1>
gpio_pin_47 = port:PD17<1><default><default><1>
gpio_pin_48 = port:PD16<1><default><default><1>
gpio_pin_49 = port:PD15<1><default><default><1>
gpio_pin_50 = port:PD14<1><default><default><1>
gpio_pin_51 = port:PD13<1><default><default><1>
gpio_pin_52 = port:PB02<1><default><default><1>
gpio_pin_53 = port:PD25<1><default><default><1>
gpio_pin_54 = port:PD24<1><default><default><1>
gpio_pin_55 = port:PD26<1><default><default><1>
gpio_pin_56 = port:PD27<1><default><default><1>
gpio_pin_57 = port:PD23<1><default><default><1>
gpio_pin_58 = port:PD22<1><default><default><1>
gpio_pin_59 = port:PD21<1><default><default><1>
gpio_pin_60 = port:PI11<1><default><default><1>
gpio_pin_61 = port:PI13<1><default><default><1>
gpio_pin_62 = port:PI10<1><default><default><1>
gpio_pin_63 = port:PI12<1><default><default><1>
gpio_pin_64 = port:PB13<1><default><default><1>
gpio_pin_65 = port:PB11<1><default><default><1>
gpio_pin_66 = port:PB10<1><default><default><1>
gpio_pin_67 = port:PH07<1><default><default><1> #注意,sun4i-gpio驅(qū)動(dòng)不是一個(gè)標(biāo)準(zhǔn)的linux gpio驅(qū)動(dòng),無(wú)法即時(shí)轉(zhuǎn)換輸入輸出模式,而是定義死在script.bin里的。這里我將67個(gè)針腳全都配置為輸出模式了。比如:gpio_pin_67 = port:PH07< 1><default><default><1> 中,紅色的 1表示將PH07針腳配置為輸出模式,改為0則為輸入模式,gpio_pin_數(shù)字 和 針腳名稱(chēng) 并沒(méi)有特定的對(duì)應(yīng)要求,只要一個(gè)數(shù)字對(duì)應(yīng)一個(gè)針腳就可以,使用的時(shí)候我們是用針腳名,gpio_pin_數(shù)字 可以無(wú)視。
針腳名具體參考: http://linux-sunxi.org/Cubieboard#Expansion_ports
3.重啟系統(tǒng),查看/sys/devices/virtual/misc/sun4i-gpio/pin/下是否有67個(gè)針腳名,如果沒(méi)有,那你使用命令:dmesg 查看是否有g(shù)pio驅(qū)動(dòng)或者script配置的報(bào)錯(cuò)信息,再google解決.
如果你有l(wèi)ed燈或是其他原件,可以參考< Cubieboard GPIO成功點(diǎn)亮LED>來(lái)進(jìn)行測(cè)試
4. 先說(shuō)說(shuō)控制步進(jìn)電機(jī)的原理,網(wǎng)上已經(jīng)有一大堆了,如果你完全不了解,可以google搜索"樹(shù)莓派 步進(jìn)電機(jī)"或"arduino 步進(jìn)電機(jī)"。我這里就簡(jiǎn)單描述一下:除了步進(jìn)電機(jī),你還需要一塊步進(jìn)電機(jī)的驅(qū)動(dòng)板,買(mǎi)電機(jī)的時(shí)候就一起買(mǎi)了吧。要讓電機(jī)轉(zhuǎn)動(dòng),只需要在某一時(shí)刻對(duì)驅(qū)動(dòng)板的 4個(gè)引腳輸出3個(gè)低電平一個(gè)高電平,下一時(shí)刻把高電平往下一個(gè)針腳轉(zhuǎn)移。
假設(shè):驅(qū)動(dòng)板a b c d 四條線(xiàn) 連接的 cb上的??1 2 3 4針腳,那么我們需要在t1時(shí)間輸出電平為:1=>高 2=>低 3=>低 4=>低。
t1+n毫秒時(shí),輸出1=>低 2=>高 3=>低 4=>低。以此類(lèi)推,4為高電平后,為通電一周,下次就再重復(fù)1為高電平...
接下來(lái),我寫(xiě)了一些python代碼。分為兩部分:一是 對(duì)針腳電平控制的基礎(chǔ)庫(kù),這樣就能方便的用python對(duì)任意針腳進(jìn)行電平控制;二是 調(diào)用基礎(chǔ)庫(kù)對(duì)電機(jī)進(jìn)行控制的代碼。 代碼下載見(jiàn)底部附件。
5. 下載代碼之后,先參考確定你要使用哪幾個(gè)針腳來(lái)控制電機(jī),在上面67個(gè)中自己選4個(gè)。選好之后,把線(xiàn)接上,把針腳名字記好。除了4根控制線(xiàn),驅(qū)動(dòng)板還有 vcc和gnd兩根線(xiàn)供電,也接在板子上對(duì)應(yīng)的針腳。比如我使用的控制針腳為'pg0', 'pb18', 'pb19', 'pg3'。針腳名和在板子上的位置還是參考: http://linux-sunxi.org/Cubieboard#Expansion_ports正負(fù)極我接的U15的1號(hào)和19號(hào)針腳
這里要吐槽一下,CB的GPIO針腳是2mm間距的,我用標(biāo)準(zhǔn)的2.45的杜邦線(xiàn)插上去相當(dāng)困難,所以買(mǎi)線(xiàn)的時(shí)候要注意買(mǎi)2.0的杜邦線(xiàn)哦。
連接控制線(xiàn)的時(shí)候,注意順序,驅(qū)動(dòng)板上的4個(gè)接線(xiàn)口假設(shè)依次為a b c d,那么你給他通電的順序一定要是 a b c d或者 d c b a ,所以要看好順序,然后在下面修改針腳名的時(shí)候,依次排列。
解壓之后,先修改motor_main.py 的第5行
#modify the tuple to the pins you used
motor_pins = ('pg0', 'pb18', 'pb19', 'pg3')??#將這里的引腳名改為你已經(jīng)連接了的引腳名,注意順序
保存退出,最后執(zhí)行
python motor_main.py
電機(jī)轉(zhuǎn)了!!有木有!!!!!
下面上圖:
雖然你看不出,但它的確在轉(zhuǎn)。。
旁邊的 卡王(帶天線(xiàn)那位) 是打醬油的,請(qǐng)無(wú)視
來(lái)個(gè)特寫(xiě),驅(qū)動(dòng)板是必須有的
引腳接線(xiàn)
源碼下載:
motor_gpio.zip
轉(zhuǎn)載于:https://my.oschina.net/lanybass/blog/108779
總結(jié)
以上是生活随笔為你收集整理的CubieBoard通过GPIO控制步进电机-python的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 第三方之联合登陆(微信)
- 下一篇: 计算机应用实际综合报告,计算机应用实践报