用 Arduino 实现带继电器的拨动开关

很多情况下我们需要通过程序去实现同一个按钮对应多个操作,例如开关机按钮,按一下开,再按一下就关(注意,这里是指用轻触按钮,而不是通过自锁开关从物理上实现);再例如播放按钮,按一下播放,再按一下暂停。

现在我们会在这样的开关下接一个继电器,通过拨动开关来控制所接入的设备。

为了更简单清晰地呈现中继触发控制的原理,我做了这个小项目。项目的原理图和线路连线如上图。
所需材料:
继电器 X 1
330Ohm 电阻 X 2
晶体管 NPN 2N2222 X 1
二极管 1N4148 X 1
按钮 X 1
LED X 1

按钮连接上拉电阻,需要二极管来截留从继电器线圈返回的电流。这被称为续流二极管(或飞轮二极管)。

工作原理:这里我使用了一个按钮作为拨动开关,它可以模拟打开和关闭而不是用两个按钮。对于继电器上的负载,暂时只使用Led来演示。

大多数类似项目的这一部分被忽略了。用欧姆表,找到线圈端子的位置。它的值大约或小于100欧姆。找到线圈上没有电压的触点闭合NC(常闭)~0Ohm。(对其他触点NO(常开)开路电阻执行相同操作。)

看图片并根据原理图正确连接晶体管E(发射极),B(基极),C(集电极)。

/*********************
Simple toggle switch
Created by: P.Agiakatsikas
*********************/
int button = 8;
int led = 13
int status = false;
void setup(){
pinMode(led, OUTPUT);
pinMode(button, INPUT_PULLUP); // set the internal pull up resistor, unpressed button is HIGH
}
void loop(){
//a) if the button is not pressed the false status is reversed by !status and the LED turns on
//b) if the button is pressed the true status is reveresed by !status and the LED turns off
if (digitalRead(button) == true) {
status = !status;
digitalWrite(led, status);
} while(digitalRead(button) == true);
delay(50); // keeps a small delay
}

如果你需要 Proteus 文件,点这里下载

之前还有一篇《用 Arduino 实现最简单的拨动开关》,这里提供了一个更简单的 Arduino 保持和切换开关状态的使用范例。

via

坐沙发

发表评论