树莓派8:树莓派控制继电器

树莓派控制继电器

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库详解

猜你喜欢

转载自blog.csdn.net/weixin_40734514/article/details/108672190
今日推荐