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庫詳解