Arduino周边模块:执行部件(舵机、直流电机、步进电机)

Arduino周边模块:执行部件

Arduino周边模块:执行部件

嵌入式系统的构成

如今已经有各种各样的基于Arduino的嵌入式系统,
比如:智能小车、3D打印机、机器人,甚至还有基于Arduino的开源人造卫星

但是光有Arduino,就像一个人只有大脑,没有四肢也是什么也做不到的

因此,
控制代码+Arduino+执行部件=改变世界的力量

常用的执行部件:

1.舵机-------->机器人
2.直流电机----->智能小车
3.步进电机----->3D打印机

使用Arduino输出PWM方波

PWM有什么作用?

  • 控制电机的转速
  • 控制舵机的角度
  • 控制喇叭的音量
  • 输出真正的模拟电压

什么是PWM?

PWM:脉宽调制
脉宽就是高电平持续的时间长度
而脉宽调制就是改变数字方波中高电平的持续时间,来对外部模块进行控制的一种方式。

优点:精确而简单

Alt text

PWM波的频率越高模拟的效果越好。一般来说,PWM波要高于20Hz才能保证基本的模拟效果

总结来说,就是通过改变方波的脉冲宽度,或者说是占空比来进行模拟信号的仿真
Alt text

如何通过Arduino进行PWM波的输出?

  1. 硬件控制
    在前面的控制三色LED中说过,在Arduino的数字端口前带有号的,就是能够输出PWM波的
    控制语句:
1.analogWrite(pin,value)//value范围0~255

Alt text

  1. 软件控制
    当我们要控制多路的PWM波输出,比如说多自由度机器人(需要17路PWM输出),那么就需要使用软件输出PWM波
    关键:使用软件来模拟硬件执行过程
    Alt text

软件输出PWM波代码:

1.loop()
2.{
3. int compareReg1=pulseWidth1;
4. int compareReg2=pulseWidth2;
5. int currentCount=0;
6. digitalWrite(5,HIGH);
7. digitalWrite(6,HIGH);
8.
9. for(int i=0;i<255;i)
10. {
11. current ++;
12. if(currentCount >= compareReg1)
13. {
14. digitalWrite(5,LOW);
15. }
16. if(currentCount>=compareReg2)
17. {
18. digitalWrite(6,LOW);
19. }
20. delayMicroseconds(2);
21. }
22.}

通过软件进行模拟,我们就可以得到一个超级timer,它包含任意多个比较寄存器

两种输出方式比较

优缺点 硬件输出 软件输出
优点 1.不占用CPU 1.灵活性高
优点 2.控制简单 2.能够输出多路PWM
优点 3.控制精确
缺点 1.受硬件限制,路数少 1.占用CPU计算时间
缺点 2.脉宽不精确,存在误差

使用Arduino控制舵机

舵机又称伺服电机,能够根据给出的控制信号旋转特定的角度
Alt text
电位器(potentiometer):充当位置传感器,从而获得舵机的转动角度信息

舵机的原理

Alt text

舵机的控制

Alt text

舵机的硬件连接

一般的舵机会引出三根线,分别是地线、电源线以及信号线
Alt text

类型 颜色
地线 棕色
电源线 红色
信号线 橙色

舵机与Arduino的连接
Alt text

舵机的控制代码

1.#include <Servo.h>
2.Servo myservo;//命名为myservo
3.
4.void setup()
5.
{
6. myservo.attach(9);//设置引脚编号
7.}
8.void loop()
9.
{
10. int pos=0;//定义一个变量,来控制旋转角度
11. for(pos=0;pos<180;pos++)
12. {
13. myservo.write(pos);
14. delay(15);
15. }//从0转到180度
16. for(pos=180;pos>0;pos--)
17. {
18. myservo.write(pos);
19. delay(15);
20. }//从108度再转回来
21.}

使用Arduino控制直流电机

直流电机:实现将直流电能转化为机械能,或者将机械能转化为直流电能的元件。

你可能感兴趣的:(Arduino周边模块:执行部件(舵机、直流电机、步进电机))