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

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

 

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

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

为了更简单清晰地呈现中继触发控制的原理,我做了这个小项目。项目的原理图和线路连线如上图。

所需材料:
继电器 X 1
330Ohm 电阻 X 2
晶体管 NPN 2N2222 X 1
二极管 1N4148 X 1
按钮 X 1
LED X 1

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

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

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

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

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

看图片并根据原理图正确连接晶体管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 }

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