树莓派控制继电器
1.继电器:(可编程电子开关)
低电平有效
一、继电器的定义
继电器(英文名称:relay)是一种电控制器件,是当输入量(激励量)的变化达到规定要求时,在电气输出电路中使被控量发生预定的阶跃变化的一种电器。它具有控制系统(又称输入回路)和被控制系统(又称输出回路)之间的互动关系。
二、继电器的作用(小电流控制大电流)
通常应用于自动化的控制电路中,它实际上是用小电流去控制大电流运作的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。
三、继电器模块实物图
四、模块说明:
1、模块采用正品继电器,常开接口大负载:交流250V/10A,直流30V/10A;
2、采用贴片光耦隔离,驱动能力强,性能稳定;触发电流5mA;
3、模块工作电压有5V、9、12V、24V可供选择;
4、模块可以通过跳线设置高电平或低电平触发;
5、容错设计,即使控制线断,继电器也不会动作;
6、电源指示灯(绿色),继电器状态指示灯(红色)
7、接口设计人性化,所有接口均可通过接线端子直接连线引出,非常方便
8、模块:50mm * 26mm* 18.5mm(长宽高)
9、设有4个固定螺栓孔,孔3.1mm,间距44.5mm*20.5mm
五、 模块接口:
1、DC+:接电源正极(电压按继电器要求,有5V.9V.12V和24V选择)
2、DC-:接电源负极
3、IN:可以高或低电平控制继电器吸合
继电器输出端:
1、NO: 继电器常开接口,继电器吸合前悬空,吸合后与COM短接
2、COM:继电器公用接口
3、NC: == 继电器常闭接口==,继电器吸合前与COM短接,吸合后悬空
高低电平触发选择端:
1.跳线与LOW短接时为低电平触发;
2.跳线与high短接时为高电平触发;
2.树莓派:
一,在终端输入:
gpio readall
显示出树莓派的引脚信息:
把指定引脚与继电器进行相连。
程序;
写一个程序实现,键盘输入1:导通;输入0:断开。
#include <stdio.h>
#include <wiringPi.h>
#define SWIT 7
int main()
{
int cmd;
if(wiringPiSetup()==-1)
{
printf("硬件接口初始化失败\n");
return -1;
}
pinMode(SWIT,OUTPUT);
digitalWrite(SWIT,HIGH);
while(1)
{
printf("请输入0/1:0--断开开关;1--导通开关\n");
scanf("%d",&cmd);
getchar();
if(cmd==1)
{
digitalWrite(SWIT,LOW);//继电器低电平有效
}else if(cmd==0)
{
digitalWrite(SWIT,HIGH);//灭
} else
{
printf("输入错误\n");
}
}
return 0;
}
编译运行1:
gcc demo1.c -lwiringPi
./a.out
1----亮
0----灭
二:控制4个继电器开关亮灭:
把指定引脚与继电器进行相连。
程序:
#include <stdio.h>
#include <wiringPi.h>
#include <string.h>
#define SWI1 26
#define SWI2 27
#define SWI3 28
#define SWI4 29
int main()
{
char cmd[12]={
'\0'};
if(wiringPiSetup()==-1)
{
printf("硬件接口初始化失败\n");
return -1;
}
pinMode(SWI1,OUTPUT);
pinMode(SWI2,OUTPUT);
pinMode(SWI3,OUTPUT);
pinMode(SWI4,OUTPUT);
digitalWrite(SWI1,HIGH);
digitalWrite(SWI2,HIGH);
digitalWrite(SWI3,HIGH);
digitalWrite(SWI4,HIGH);
while(1)
{
printf("请输入1/2/3/4:off--断开开关;on--导通开关\n");
memset(cmd,'\0'sizeof(cmd));
//scanf("%s",&cmd);
//getchar();
gets(cmd);
if(strcmp(cmd,"1 on")==0)//
{
digitalWrite(SWI1,LOW);//继电器低电平有效
}else if(strcmp(cmd,"1 off")==0)
{
digitalWrite(SWI1,HIGH);//灭
}
if(strcmp(cmd,"2 on")==0)//
{
digitalWrite(SWI2,LOW);//继电器低电平有效
}else if(strcmp(cmd,"2 off")==0)
{
digitalWrite(SWI2,HIGH);//灭
}
if(strcmp(cmd,"3 on")==0)//
{
digitalWrite(SWI3,LOW);//继电器低电平有效
}else if(strcmp(cmd,"3 off")==0)
{
digitalWrite(SWI3,HIGH);//灭
}
if(strcmp(cmd,"4 on")==0)//
{
digitalWrite(SWI4,LOW);//继电器低电平有效
}else if(strcmp(cmd,"4 off")==0)
{
digitalWrite(SWI4,HIGH);//灭
}
if(strcmp(cmd,"all on")==0)//
{
digitalWrite(SWI1,LOW);//继电器低电平有效
digitalWrite(SWI2,LOW);
digitalWrite(SWI3,LOW);
digitalWrite(SWI4,LOW);
}else if(strcmp(cmd,"all off")==0)
{
digitalWrite(SWI1,HIGH);//灭
digitalWrite(SWI2,HIGH);
digitalWrite(SWI3,HIGH);
digitalWrite(SWI4,HIGH);
}
else
{
printf("输入错误请重新输入\n");
}
}
return 0;
}
编译运行:
gcc demo1.c -lwiringPi
./a.out
1 on
2 on
3 on
4 on
all on
亮
-------------------------
1 off
2 off
3 off
4 off
all off
灭
参考:
树莓派wiringPi库详解