5、树莓派3ModelB———树莓派PWM控制直流电机速度1、实验前准备
树莓派3B及电源 x1
⾯包板 x1
LED灯 x1
ULN2003电机驱动或者L293、L298  x1
直流电机⼩风扇x1
电阻220欧 x1
杜邦线若⼲
2、实验原理
PWM就是脉冲宽度调制,也就是占空⽐可变的脉冲波形.
脉冲宽度调制是⼀种对模拟信号电平进⾏数字编码的⽅法。通过⾼分辨率计数器的使⽤,⽅波的占空⽐被调制⽤来对⼀个具体模拟信号的电平进⾏编码。PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全⽆(OFF)。电压或电流源是以⼀种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。只要带宽⾜够,任何模拟值都可以使⽤PWM 进⾏编码。
如图占空⽐为 t:T
对于树莓派硬件PWM只有1脚(wiringPi)GPIO.1,那么我们单独测试此脚通过不同占空⽐可以实现呼吸灯或者控制电机速度。
3、实验步骤欧尚z6新能源
按照如下接线。
LED正极接GPIO.1,串联⼀个220Ω电阻接地,ULN2003电源接⼊5V电源和地,输出接直流⼩电机暂且⽤D,对应GPIO.1接⼊IN4。
编写控制代码如下,我们实现⼀个很简单的功能,PWM从⼩的占空⽐到最⼤然后在从⼩到⼤,实现呼吸灯的效果,电机也速度从慢到快,从快再到慢的过程。代码如下:
#include <wiringPi.h>
#define PWMPin 1    //定义PWM引脚
void setup();
int main (void)
{
setup();
intval = 0;
intstep = 2;
mini pacemanwhile(1)
{
if(val>1024)
{
step = -step;
val = 1024;
}
else if(val<0)
{
step = -step;
val = 0;
}
马6座套pwmWrite(PWMPin,val);
val+=step;
delay(10);
}
return 0 ;
}
/*初始化配置*/
void setup()
{
别克多少钱
wiringPiSetup ();        //wiringPi库初始化
pinMode (PWMPin, PWM_OUTPUT);  //设置1为PWM输出
}
编写完代码通过SSH⽂件上传到wiringPi⽬录下。
输⼊如下命令:
捷马电动车
# gcc -o pwm pwm.c -lwiringPi
运⾏:
# ./pwm或者sudo  ./pwm
suv日产实验现象:我们执⾏程序,则LED会从亮到灭再到亮逐渐变化的过程即呼吸灯效果,直流电机⼩风扇从快到慢再到快实现了电机的调速功能。到此我们按键输⼊的学习到此结束,下⼀讲我们开始学习树莓派中断的知识,可以引⼊外部中断来处理突发事件,⽐如障碍物靠近,开始下⼀讲吧!
下⼀讲:6、树莓派中断实验, 通过按键模拟外部中断,控制LED亮灭。