智能家居基础教程6-执行器-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1844|回复: 2

智能家居基础教程6-执行器

[复制链接]
发表于 2022-1-21 10:04 | 显示全部楼层 |阅读模式
[md]## 简介

上一章节我们介绍了传感器的分类,如果我们将主控板(这里是wifiduino)之于人的大脑,传感器就之于人的眼睛、耳朵、鼻子等能感知外界环境的器官。那么执行器相当于人的手、脚,可以执行大脑分析后给出的动作指令。

本节我们介绍几种经常使用的执行器,led、震动模块、舵机。

## LED

LED的中文叫做发光二极管 。 它是半导体二极管的一种,可以把电能转化成光能 。 LED有正负两极,短脚为负极、长脚为正极。LED也是电子学习中的一个基础入门器件,广泛应用于信号指示、照明等领域。生活中我们的常见的LED,在形状、尺寸、大小、颜色方面都不尽相同。

** LED模块**

OpenJumper LED灯模块是一种非常方便连接的集成化模块,同时它也是一个执行器。该模块采用贴片插接座,拥有防反接功能,使用者可以直接通过连接对应的3P连接线就能使用,而不用担心因为将元器件插反而导致的烧毁器件。在LED模块中同时集成了限流电阻,插上就可以使用,对于LED模块,我们可以使用输出数字信号或者模拟信号来驱动这个模块。
01.jpg
## 继电器模块

继电器是一个可控的电子开关,可以使用wifiduino发出一个数字信号来闭合或断开这个开关。
02.jpg
继电器有多种种类,这里我们使用的是电磁继电器,其工作原理如图所示。
03.jpg
ab之间是线圈,只要在ab两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,S端上的衔铁开关就会在电磁力吸引的作用下克服返回弹簧的拉力,吸向D端连接的铁芯,从而导通S端和D端。当线圈断电后,电磁的吸力也随之消失,衔铁开关就会在弹簧的反作用力下返回原来的位置,将S与C导通。如此吸合、释放衔铁开关,便达到了闭合、断开电路的目的。

继电器与LED的控制方法一样,不过继电器内部吸铁通断需要一点时间反应,所以控制不能太快。

### 示例程序[/md]

  1. #define LED_PIN  D13  //设置连接LED模块在D13号引脚上
  2. void setup() {
  3.   pinMode(LED_PIN, OUTPUT);     //将IO设置为输出状态
  4. }
  5. // 循环执行
  6. void loop() {
  7.   digitalWrite(LED_PIN, HIGH);   //引脚输出高电平,将LED打开  delay(1000);                       // 延时1秒
  8.   digitalWrite(LED_PIN, LOW);    //引脚输出低电平,将LED关闭  delay(1000);                       // 延时1秒
  9. }
复制代码
[md]
### 图形化程序
04.jpg
### 连接硬件
05.jpg

将LED模块通过连接线连接在D13号接口中,观察LED亮灭情况

## 震动电机

现在智能手机是非常的流行,几乎大部分人都会使用智能手机了,那么我们一定使用过一个功能就是手机震动,当不方便使用铃声的时候,手机可以震动,当设置闹铃的时候,也可以使用震动,其实手机内部有一个震动电机,这个电机是一个执行模块,当给它输入合适的高电平后,这个电机便会震动,发出“嗡”“嗡”“嗡”的声音。

震动马达模块内置了一个小的震动马达,当通电时,马达就会发出震动,进行提示。手机内置的震动也是基于此原理。而震动马达和LED一样属于执行模块,当给出足够的电压输出边可以执行震。
06.jpg
我们可以尝试用analogWrite() 函数输出PWM波,来制作一个带震动频率逐渐变化的震动器。

我们使用analogWrite() 函数实现这个功能。但该函数并不是输出真正意义上的模拟值,而是以一种特殊的方式来达到输出模拟值的效果,这种方式叫做PWM——脉冲宽度调制(PWM,Pulse Width Modulation)。

当你使用analogWrite() 函数时,指定引脚会通过高低电平的不断转换输出一个周期固定(默认1kHz)的方波,通过改变高低电平在每个周期中所占的比例(占空比),而得到近似输出不同的电压的效果(如图所示)。

需要注意的是,这里我们仅仅是得到了近似模拟值输出的效果,如果要输出真正的模拟值,还需要加上外围滤波电路。

### 示例程序[/md]
  1. int ledPin = D9;    // LED连接在D9号引脚上
  2. void setup()  {
  3. // Setup部分不进行任何处理
  4. }
  5. void loop()  {
  6. // 从暗到亮,以每次加5的形式逐渐亮起来
  7. for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) {
  8. // 输出PWM
  9.     analogWrite(ledPin, fadeValue);        
  10.     // 等待30ms,以便观察到渐变效果
  11.     delay(30);                           
  12.   }
  13.   // 从亮到暗,以每次减5的形式逐渐暗下来
  14.   for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) {
  15.     // 输出PWM
  16.     analogWrite(ledPin, fadeValue);        
  17.     // 等待30ms,以便观察到渐变效果
  18.     delay(30);                           
  19.   }
  20. }
复制代码
[md]
### 连接硬件
07.jpg
将震动模块通过连接线连接在D9号接口中

### 观察现象

观察震动模块的震动情况,下载程序到wifiduino后,你可以观察到震动由快变慢,随后再由慢变快。以上程序中,通过for循环,逐渐改变震动的频率,达到渐变的效果。在两个for循环中都有delay(30) 的延时语句,这是为了让我们能够感受到震动变化带来的效果。如果没有这个语句,整个变化效果将一闪而过。

## 舵机
08.jpg
舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。目前,在高档遥控玩具,如飞机、潜艇模型,遥控机器人中已经得到了普遍应用。舵机其实是一种电机,它使用一个反馈系统来控制电机的转动位置,所以舵机适用于那些需要角度不断变化并可以保持的控制系统里。例如我们玩过的航模飞机,舵机被用来控制飞行轨迹。在遥控汽车中舵机被用来控制转向。在船模中,舵机同样被用来控制船舵从而控制航行方向,在外面常见的机器人玩具中,机器人运动的关节也由舵机组成。舵机有标准舵机与连续旋转舵机之分,这里我们使用的是转动角度为180°的标准舵机。同时舵机还有模拟舵机与数字舵机之分。这里我们使用数字式舵机。

扩展阅读:舵机原理:舵机主要由以下几个部分组成,舵盘、减速齿轮组、位置反馈电位计、直流电机、控制电路等,如图所示。

09.jpg

控制电路板接受来自信号线的控制信号,控制电机转动,电机带动一系列齿轮组,减速后传动至输出舵盘。舵机的输出轴和位置反馈电位计是相连的,舵盘转动的同时,带动位置反馈电位计,电位计将输出一个电压信号到控制电路板,进行反馈,然后控制电路板根据所在位置决定电机转动的方向和速度,从而达到目标停止。

其工作流程为:控制信号→控制电路板→电机转动→齿轮组减速→舵盘转动→位置反馈电位计→控制电路板反馈。 舵机的控制信号周期为20MS的脉宽调制(PWM)信号,其中脉冲宽度从0.5-2.5MS,相对应的舵盘位置为0-180度,呈线性变化,如图:
10.jpg

### 示例程序[/md]

  1. #include <Servo.h>
  2. Servo myservo;  // 新建一个对象
  3. #define servoPIN  D2   //舵机连接引脚
  4. void setup() {
  5.   myservo.attach(servoPIN);  // 初始化
  6. }
  7. void loop() {
  8.   int pos;
  9.   for (pos = 0; pos <= 180; pos += 1) { // 从0到180度变化
  10.     // 每次增加1度
  11.     myservo.write(pos);              // 把位置信息告诉舵机
  12.     delay(15);                       //延时一小段时间,让舵机运动到位
  13.   }
  14.   for (pos = 180; pos >= 0; pos -= 1) { //  从180到0度变化
  15.     myservo.write(pos);              // 把位置信息告诉舵机
  16. delay(15);                       // 延时一小段时间,让舵机运动到位
  17. }
  18. }
复制代码
[md]
### 硬件连接
11.jpg

将舵机对应连接在wifiduino扩展板上的D2接口上 ,通电观察舵机运转情况

### 图形化程序
[/md]
12.jpg
发表于 2022-5-11 11:30 | 显示全部楼层
请教下楼主,我买的扩展板与你教程上的所用的不一样。按你这个教程所编程序,LED等执行器,都不工作?帮忙处理下
 楼主| 发表于 2022-5-17 09:52 | 显示全部楼层
hongyu13028 发表于 2022-5-11 11:30
请教下楼主,我买的扩展板与你教程上的所用的不一样。按你这个教程所编程序,LED等执行器,都不工作?帮忙 ...

主板是用的wifiduino吗,扩展板是哪种呢
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-27 15:15 , Processed in 0.080331 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表