树莓派3+python+wiringpi 生成PWM 驱动电调

2019-04-13 14:19发布

  1. 材料:树莓派3,wiringpi,电源,HobbyWing电调;
  2. 接口:电调的白 {MOD}线接GPIO21,黑 {MOD}线接地;
  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个档位,对于精确控制不利,后面需要解决这个问题。