Documente Academic
Documente Profesional
Documente Cultură
Seciuni lucrare:
Elemente de comand la distan fr fir
Proiect decodificator de telecomand
Funcionarea elementelor de tip releu
Proiect sistem de comand la distan
Referine online
1
Laborator Sisteme cu Microprocesoare Integrate
Departamentul de Automatic i Informatic Industrial
Pentru a transmite comanda ctre un sistem bazat pe receptor infrarou putem folosi orice
telecomand pe care o avem deja (telecomanda de la televizor, de la aerul condiionat sau de la
combina audio), o telecomand specializat sau un sistem Arduino cu un LED IR ataat.
Biblioteca IR de mai sus permite att decodarea transmisiei IR ct i codarea pentru
transmiterea comenzii (n directorul examples al bibliotecii se regsesc exemple pentru
operaiile de recepie i transmisie: IRrecvDemo i IRsendDemo).
n cazul n care se utilizeaz o telecomand deja existent pentru a putea identifica codurile
corespondente diverselor butoane de comand se poate utiliza unul dintre exemplele
bibliotecii: IRrecvDemo sau IRrecvDump. Pentru a utiliza biblioteca este necesar copierea n
directorul libraries al mediului Arduino IDE, includerea n fiierul surs a acesteia
#include <IRremote.h>
declararea unui obiect de tip IRrecv i a unui obiect de tip decode_results iar n funcia setup()
activarea receptorului IR:
IRrecv irrecv(PIN);
decode_results results;
2
Laborator Sisteme cu Microprocesoare Integrate
Departamentul de Automatic i Informatic Industrial
#include <IRremote.h>
#include <LiquidCrystal.h>
void setup()
{
lcd.begin(16, 2);
lcd.noCursor();
irrecv.enableIRIn();
}
3
Laborator Sisteme cu Microprocesoare Integrate
Departamentul de Automatic i Informatic Industrial
4
Laborator Sisteme cu Microprocesoare Integrate
Departamentul de Automatic i Informatic Industrial
void loop() {
if (irrecv.decode(&results)) {
lcd.setCursor(0,0);
lcd.print(" ");
lcd.setCursor(0,0);
if (results.decode_type == UNKNOWN) {
lcd.print("Unknown");
}
else if (results.decode_type == NEC) {
lcd.print("NEC");
}
else if (results.decode_type == SONY) {
lcd.print("SONY");
}
else if (results.decode_type == RC5) {
lcd.print("RC5");
}
else if (results.decode_type == RC6) {
lcd.print("RC6");
}
else if (results.decode_type == PANASONIC) {
lcd.print("PANASONIC");
}
else if (results.decode_type == JVC) {
lcd.print("JVC");
}
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print(results.value, HEX);
lcd.print(" ");
// decodare comenzi pentru NEC AverMedia RM-KV
if (results.value==0x20DF807F) lcd.print("Power");
if (results.value==0x20DF609F) lcd.print("Mute");
if (results.value==0x20DF906F) lcd.print("1");
if (results.value==0x20DF50AF) lcd.print("2");
if (results.value==0x20DFD02F) lcd.print("3");
if (results.value==0x20DFD22D) lcd.print("OK");
if (results.value==0x20DF20DF) lcd.print("Vol+");
if (results.value==0x20DFA05F) lcd.print("Vol-");
if (results.value==0x20DF40BF) lcd.print("CH+");
if (results.value==0x20DFC03F) lcd.print("CH-");
irrecv.resume();
}
delay(100);
}
5
Laborator Sisteme cu Microprocesoare Integrate
Departamentul de Automatic i Informatic Industrial
n cazul n care n cadrul unui sistem este necesar transmiterea unei comenzi unui element ce
difer ca putere electric (tensiune / curent) de elementul de comand este necesar gsirea
de soluii pentru urmtoarele dou probleme:
Amplificarea comenzii poate fi realizat prin tranzistoare de putere sau drivere de curent dar
aceste componente au un raport de amplificare limitat i nu asigurar izolarea galvanic
(separarea electric ntre circuitul comandat i circuitul de comand). Circuitele de tip
optocuplor pot asigura izolarea galvanic dar au nici o influen asupra parametrilor electrici de
comand.
6
Laborator Sisteme cu Microprocesoare Integrate
Departamentul de Automatic i Informatic Industrial
Vom utiliza de pe telecomand un buton pentru a comanda o stare de start / stop pentru
comanda releului. n cazul n care se apas alt buton buzzerul va emite un semnal sonor de
avertizare. Emiterea semnalului sonor se bazeaz pe procedura playTone() utilizat i n cadrul
lucrrii 9.
Starea de start presupune alternare de comand 0 / 1 pentru releu, starea de stop este o
stare de repaus. Codificare strii de funcionare a programului se bazeaz pe variabila stat. n
cazul schemei propuse releul comand dou leduri nu este vorba efectiv de comand de
7
Laborator Sisteme cu Microprocesoare Integrate
Departamentul de Automatic i Informatic Industrial
8
Laborator Sisteme cu Microprocesoare Integrate
Departamentul de Automatic i Informatic Industrial
n cadrul programului trebuie personalizat codul butonului ce declaneaz tranziia start / stop
n funcie de telecomanda folosit (butonul Power sau un alt buton).
#include <IRremote.h>
const int receiver = 5;
IRrecv irrecv(receiver);
decode_results results;
const byte releuPin = 6;
volatile byte stat = 0;
const int buzzerPin = 4;
void setup()
{ irrecv.enableIRIn();
pinMode(releuPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
}
void loop() {
if (stat) {
digitalWrite(releuPin,HIGH);
delay(1000);
digitalWrite(releuPin,LOW);
delay(1000);
}
if (irrecv.decode(&results))
{
if (results.value==0x20DF807F) stat=!stat;
else playTone(2000,500);
irrecv.resume(); // receive the next value
}
}
9
Laborator Sisteme cu Microprocesoare Integrate
Departamentul de Automatic i Informatic Industrial
Referine online
10