首页 理论教育智能车动力组件Auduino编程实例

智能车动力组件Auduino编程实例

【摘要】:Arduino板上自带了5 V和3.3 V转换芯片,以供给单片机和外设使用。PPM信号的频率是50 Hz,宽度为0.5~2.5 ms。例程2:用writeMicroseconds()函数,控制从544脉冲扫描到2 400脉冲,每次延时20 ms,2 min内完成扫描一次。

1.电池

智能车相关动力组件采用磷酸锂电池。每个电池满电电压为3.2 V,3个电池可以组成9.6 V,另一个电池用占位桶填充即可。

2.电源稳压芯片7805

电池电压为9.6 V,需要对电源进行转换方可使用。Arduino板上自带了5 V和3.3 V转换芯片,以供给单片机外设使用。由于舵机的功耗比较大,一般建议多焊一个芯片7805专门给舵机供电,以保障不会干扰单片机的正常工作。

3.舵机

舵机,顾名思义像船尾的舵那样,只能转动固定的角度,一般的舵机最大转角约为180°,也有一些舵机能达到300°。舵机工作原理:将PPM信号经信号线传输。PPM信号的频率是50 Hz,宽度为0.5~2.5 ms。舵机库函数需要调用Servo库,创建一个舵机的对象来控制舵机,该库有以下几个函数:

(1)attach(pin);attach(pin,min,max)。

(2)write(value)。

(3)writeMicroseconds(μs)。

(4)detach(pin)。

(5)read(pin)。

(6)readMicroseconds(pin)。

attach(pin)函数用于为舵机指定一个引脚。

例句:

Servomyservo1,myservo2;

myservo1.attch(1);

myservo2.attch(2);

attach(pin,min,max);

该函数在指定引脚的同时,还可以指定最小角度的脉宽值,单位μs,默认最小值为544,对应最小角度为0°;默认最大值为2 400,对应最大角度为180°。

例如,myservo1.attch(1,1000,2000);该语句限制在较小的转动范围。

write(value)函数可以直接填写需要的角度。

例如,myservo1.write(90):该函数精度较低,只能达到1°。

writeMicroseconds(μs):该函数精度较高,直接填写脉冲值,单位是μs。例如,myservo1.writeMicroseconds(1500);舵机指向90°,该函数的角度精度为0.097°。

detch(pin):该函数用于释放舵机引脚,可以作为其他用途。

read(pin):该函数用于返回当前舵机的角度,范围0°~180°。

readMicrosends(pin):该函数用于返回当前舵机的脉冲值,单位μs,范围在最大脉冲宽度和最小脉冲宽度之间。

例程原理:舵机信号线接数字脚3。

例程1:用write()函数,控制从0°~180°来回地扫描,每次延时20 ms,7.2 s完成来回扫描一次。

例程2:用writeMicroseconds()函数,控制从544脉冲扫描到2 400脉冲,每次延时20 ms,2 min内完成扫描一次。

4.电动机

电动机带减速装置,工作电压3~12 V,建议工作电压6~9 V,减速比1∶48。

5.L298电动机驱动芯片

例程:双路电动机实现10 s加速,然后反转减速10 s,依次并交替转动。将数字7、8脚接L298模块的IN1和IN2脚,12、13脚接L298模块的IN3和IN4脚。9、10脚分别接模块的ENA和ENB脚。ENA控制MOTORA的转速,ENB控制MOTORB的转速。7、8脚控制MOTORA的正反转,12、13脚控制MOTORB的正反转。