1. 程式人生 > >樹莓派3+python+wiringpi 生成PWM 驅動電調

樹莓派3+python+wiringpi 生成PWM 驅動電調

  1. 材料:樹莓派3,wiringpi,電源,HobbyWing電調;
  2. 介面:電調的白色線接GPIO21,黑色線接地;
  3. 程式碼
import wiringpi as wiringpi
from time import sleep;
#from wiringpi import GPIO

wiringpi.wiringPiSetupGpio()
#import wiringpi as wiringpi
wiringpi.pinMode(21,1)
wiringpi.digitalWrite(21,0)
wiringpi.pwmSetClock(2)
W=raw_input("Input 1-200 :"
) i=wiringpi.softPwmCreate(21,0,200) wiringpi.softPwmWrite(21,int(W)) W=raw_input("Input 1-200 :") wiringpi.softPwmWrite(21,int(W)) W=raw_input("Input 1-200 :") wiringpi.softPwmWrite(21,int(W)) W=raw_input("Input 1-200 :") wiringpi.softPwmWrite(21,int(W)) W=raw_input("Input 1-200 :") wiringpi.softPwmWrite(21,int(W)) W=raw_input("Input 1-200 :"
) wiringpi.softPwmWrite(21,int(W)) W=raw_input("Input 1-200 :") wiringpi.softPwmWrite(21,int(W)) W=raw_input("Input 1-200 :") wiringpi.softPwmWrite(21,int(W)) while 1: sleep(30) print "goodbye"

4.操作

1)先給樹莓派上電,執行程式,輸入引數20,此時樹莓派通過GPIO21輸出週期為20ms,脈寬為2ms的方波(相當於油門最大);
2)電調上電,“嗶嗶”兩聲後,3秒內將輸入輸入引數10,此時樹莓派通過GPIO21輸出週期為20ms,脈寬為1ms的方波(相當於油門最小);
3)油門設定完畢,將引數設定成11,電機開始以較低速度旋轉,逐漸提高輸入引數,轉速隨著升高,引數為20時達到最高速。

5.總結

用wiringpi的softPWM,PWM的Clock是固定不變的(100us),而我們需要的PWM週期20ms,softPwmCreate中設定200就好了。問題在於softPwmWrite函式中的引數均為整數,轉速10到20可調,也就是共11個檔位,對於精確控制不利,後面需要解決這個問題。