O que é um receptor IR? Instalamos um receptor IR adicional no receptor de satélite. Diagrama de conexão do receptor IR

diagrama da revista "Jovem Técnico".

Uma direção interessante na radioeletrônica, que complementou essa eletrônica com novas vantagens da luz “invisível” (luz infravermelha). Então proponho um circuito de receptor e transmissor simples (por exemplo) baseado em raios infravermelhos. Base: amplificador operacional k140ud7 (tenho ud708 aqui), emitindo e recebendo fotodiodos IR, ULF (k548un1a (b,c - índices) - para dois canais) (embora onde “ligar” o segundo canal do amplificador fique a critério você decide - o circuito do transmissor é projetado para um canal, ou seja, mono). Fonte de alimentação para o dispositivo: geralmente recomendo com estabilização de corrente decente (caso contrário, o adaptador “dândi” irrita o fundo da “rede”). Método: o sinal modulado em amplitude do transmissor é amplificado pelo receptor 1000 vezes.

Como funciona o dispositivo. Sugiro que você assista a um pequeno vídeo testando o controle remoto IR “de ouvido”. Você pode verificar rapidamente a funcionalidade e a intensidade do sinal pelo som.

Circuito receptor IR e transmissor IR

Na montagem, os capacitores C1 e C2 devem ficar o mais próximo possível do amplificador! Você pode conectar fones de ouvido de alta impedância à saída (os de baixa impedância requerem um ULF separado). Fotodiodo FD7 (tenho FD263: “tablet” com lente de foco); Resistores de 0,125 W: R1 e R4 definem o fator de amplificação do sinal em 1000 vezes. A configuração do receptor é simples: o fotodiodo é direcionado para uma fonte de radiação IR, por exemplo, uma lâmpada 220V-50Hz: o filamento será ligado com frequência de 50Hz ou o controle remoto da TV (vídeo, etc.) A sensibilidade do receptor é alta: normalmente recebe sinais refletidos nas paredes.

O transmissor possui LEDs IR AL107a: qualquer um serve. R2 2 kOhm, C1 1000μFx25V, C2 200μFx25V, qualquer transformador também. Embora seja perfeitamente possível fazer sem um transformador - forneça um sinal de áudio amplificado ao capacitor C2.

Diagrama do dispositivo

Circuito receptor IR com ULF

Recentemente, por necessidade, montei um receptor IR para testar controles remotos IR (TVs e DVDs). Após finalizar o circuito, instalei um ULF TDA7056 mono. Este amplificador possui boas características de ganho de cerca de 42 dB; opera na faixa de tensão de 3V a 18V, o que permitiu que o receptor IR funcionasse mesmo na tensão de 3V; A faixa de ganho TDA de 20 Hz a 20 kHz (UD708 passa até 800 kHz) é suficiente para usar o receptor como acompanhamento de áudio; possui proteção contra curto-circuito em todas as “pernas”; proteção contra “superaquecimento”; coeficiente de autointerferência fraco. No geral, gostei deste ULF compacto e confiável (nosso preço é de 90 rublos).
Há uma descrição detalhada para isso. A Figura 1 mostra um exemplo de uso de um amplificador.


Foto TDA7056


Figura 1. Circuito amplificador com TDA7056

O resultado foi um receptor IR, Fig. 2, que opera na faixa de tensão de 3V a 12V. Eu recomendo usar baterias ou baterias recarregáveis ​​para alimentar o receptor. Ao usar uma fonte de alimentação, é necessária uma fonte estabilizada, caso contrário será ouvido o fundo da rede de 50 Hz, que amplifica o UD708. Se o dispositivo estiver localizado perto de uma fonte de tensão de rede ou de emissões de rádio, poderão ocorrer interferências. Para reduzir a interferência, é necessário incluir o capacitor C5 no circuito. O TDA7056 foi projetado para um alto-falante de saída de 16 Ohm, infelizmente não tenho um. Tive que usar um alto-falante de 4 ohms e 3 watts, que foi conectado por meio de um resistor de um watt e 50 ohms. A resistência da bobina do alto-falante muito baixa causa excesso de potência e superaquece o amplificador. Em geral, devido ao resistor adicional, o ULF não aquece, mas fornece um ganho bastante aceitável.

Um receptor de comando de controle remoto IR para controlar eletrodomésticos pode ser facilmente feito usando um contador decimal CD4017, um temporizador NE555 e um receptor infravermelho TSOP1738.

Usando este circuito receptor IR, você pode controlar facilmente seus eletrodomésticos usando o controle remoto da TV, DVD player ou usando o circuito de controle remoto descrito no final do artigo.

Circuito receptor IR para controle remoto

Os pinos 1 e 2 do receptor IR TSOP1738 são usados ​​para alimentá-lo. O resistor R1 e o capacitor C1 são projetados para operação estável e supressão de vários ruídos no circuito de alimentação.

Quando os raios IR com uma frequência de 38 kHz incidem no receptor IR TSOP1738, um nível de baixa tensão aparece em sua saída 3, e quando os raios IR desaparecem, um nível alto aparece novamente. Este pulso negativo é amplificado pelo transistor Q1, que passa o sinal de frequência amplificado para a entrada do contador decimal CD4017. Os pinos 16 e 8 dos contadores destinam-se a alimentá-lo. O pino 13 está conectado ao terra, possibilitando assim o seu funcionamento.

A saída de Q2 (pino 4) é conectada ao pino de reset (pino 15) para fazer o CD4017 operar em modo multivibrador biestável. Durante o primeiro pulso, log1 aparece em Q0, o segundo sinal de clock faz com que log1 apareça em Q1 (Q0 fica baixo) e no terceiro sinal ele gera log1 em Q0 novamente (Q2 está conectado a MR, então o terceiro sinal de clock é redefinido o contador).

Vamos supor que o contador foi zerado (Q0 é alto e o restante é baixo). Quando você pressiona o botão do controle remoto, o sinal do relógio afeta o contador, o que leva a um nível alto em Q1. Assim, o LED D1 acende, o transistor Q2 liga e o relé é acionado.

Ao pressionar novamente o botão do controle remoto, o log 1 aparece no pino Q0, o relé desliga e o LED D2 acende. O LED D1 indica quando o dispositivo está ligado e o LED D2 indica quando o dispositivo está desligado.

Você pode usar o controle remoto da sua TV para controle ou montar um controle separado conforme diagrama abaixo.

  • Tensão de entrada: 2,7 ... 5,5 V
  • Consumo de corrente: 0,65 ... 1,05 mA (em Vcc = 5V) nominalmente 0,9 mA
  • Frequência da portadora: 38 kHz
  • Comprimento de onda da luz: 850 ... 1050 nm (passou pelo filtro mais de 80%)
  • Sensibilidade: 0,17… 30.000 mW/m2 (para potência de fluxo luminoso)
  • Distância de recepção: até 45 m
  • Temperatura operacional: -25 … 85 °C
  • Ângulo direcional: ±45°

Todos os módulos da linha "Trema" são confeccionados no mesmo formato

Conexão:

O módulo se conecta a qualquer pino digital do Arduino. O kit inclui um cabo para conexão rápida e fácil ao Trema Shield.

É conveniente conectar o módulo de 3 maneiras, dependendo da situação:

Método 1: Usando um cabo com fio e Piranha UNO


A biblioteca usa um segundo temporizador de hardware,

NÃO EMITE SINAIS PWM PARA 3 OU 11 SAÍDAS!

Leia mais sobre como instalar a biblioteca em nosso...

Informações adicionais sobre como trabalhar com o módulo:

Pacotes: Quase todos os controles remotos enviam não apenas um pacote de informações (indicando o tipo de dispositivo e o código do botão pressionado), mas também pacotes repetidos, informando ao dispositivo que o botão está pressionado. Assim, o dispositivo receptor pode responder ao pressionar o botão uma vez ou durante todo o tempo em que ele for pressionado.

Por exemplo: ao pressionar e segurar um botão com um número de canal de TV, a TV mudará para esse canal apenas uma vez. Ao pressionar e segurar o botão de aumentar o volume, a TV irá aumentá-lo enquanto você mantiver o botão pressionado.

Número de pacotes de informações A maioria dos controles remotos possui um, mas alguns dispositivos, como aparelhos de ar condicionado, usam 2, 3 ou mais pacotes de informações.

Conteúdo do pacote: O pacote de informações contém informações sobre o código do fabricante, tipo de dispositivo, código do botão pressionado, etc. Pacotes repetidos podem coincidir parcial ou totalmente com um pacote de informação, copiar seus bits com inversão ou não transportar nenhuma informação, representando uma sequência de vários bits idênticos para cada pacote repetido.

Duração das pausas entre pacotes: geralmente não excede 200ms.

Protocolos de transferência de dados: determine os seguintes parâmetros básicos:

  • frequência portadora;
  • método de codificação da informação, duração dos pulsos e pausas dos bits transmitidos;
  • número de pacotes de informações:
  • composição do pacote de informações e pacotes de repetição;
  • duração das pausas entre pacotes;
  • presença e forma dos sinais Start, Stop e Toggle;

Frequência da operadora: para a maioria dos controles remotos é 38 kHz; é nesta frequência que o receptor Trema IR está sintonizado.

Codificação de informações: Este é o princípio de transmissão de bits de dados. Destacamos três tipos principais de codificação, em que cada bit é transmitido em uma sequência de um pulso e uma pausa:

  • codificação do comprimento do pulso - primeiro é transmitido um pulso, cuja duração depende do valor do bit transmitido, depois segue uma pausa, cuja duração não depende do valor do bit. Por exemplo: no protocolo SIRC (Sony), a duração do pulso para o bit “1” = 1200 µs, e para o bit “0” = 600 µs, a duração das pausas é sempre 600 µs. Desta forma, você pode distinguir “1” de “0” pela duração do pulso.
  • codificação de pausas longas - primeiro é transmitido um pulso, cuja duração não depende do valor do bit transmitido, depois segue uma pausa, cuja duração depende do valor do bit. Por exemplo: no protocolo NEC, a duração da pausa para o bit “1” = 1687,5 µs, e para o bit “0” = 562,5 µs, a duração do pulso é sempre 562,5 µs. Assim, você pode distinguir “1” de “0” pela duração da pausa.
  • codificação bifásica - a duração do pulso é igual à duração da pausa e sua sequência determina o tipo de bit transmitido. Por exemplo: no protocolo RS5 (Philips), para o bit "1" um pulso segue uma pausa, e para o bit "0" uma pausa segue um pulso. Para o protocolo NRC (Nokia), ao contrário, para o bit “1” uma pausa segue um pulso, e para o bit “0” um pulso segue uma pausa.

Sinais de início, parada e alternância: de acordo com o nome, estão localizados no início, final ou meio da embalagem.

Parar: Ao codificar uma pausa longa, é impossível determinar o valor do último bit do pacote, pois o pacote é seguido por uma pausa longa, e o último bit será sempre definido como “1”, então o sinal Stop é adicionado ao pacote, que é um pulso que não carrega nenhuma informação.

Começar: Com a codificação bifásica, é necessário um sinal de início, pois é impossível iniciar a transmissão de um pacote a partir de uma pausa.

Alternar:É um bit que muda de valor a cada novo pressionamento de botão, utilizado nos protocolos RS5, RS5X, RS6 (Philips), onde pacotes repetidos repetem completamente os dados do pacote de informações. Dessa forma, o dispositivo receptor pode diferenciar entre segurar o botão e pressioná-lo novamente.

Exemplos:

A verificação da disponibilidade dos dados recebidos do controle remoto IR é realizada pela função check(). Esta função responde ao pressionar os botões do controle remoto IR, mas se chamada com o parâmetro verdadeiro, também responderá ao segurar os botões.

Lendo dados de qualquer controle remoto, respondemos apenas ao pressionamento de botões:

#incluir // Conecta a biblioteca para trabalhar com o receptor IR iarduino_IR_RX IR(7); // Declara um objeto IR, indicando o pino ao qual o receptor IR está conectado void setup())( Serial.begin(9600); // Inicia a transferência de dados para o monitor da porta serial, a uma velocidade de 9600 bps IR.begin (); // Inicia o trabalho com o receptor IR) void loop())( if(IR.check())( // Se o buffer contém dados recebidos do controle remoto (o botão foi pressionado) Serial.println(IR .data, HEX); // Mostra o código do botão pressionado Serial.println(IR.length); // Mostra o número de bits no código ) )

Neste esboço, a função check() é chamada sem argumentos, o que significa que ela responde apenas ao pressionamento de botões no controle remoto IR.

Lendo dados de qualquer controle remoto, respondemos ao pressionar os botões:

#incluir // Conecta a biblioteca para trabalhar com o receptor IR iarduino_IR_RX IR(6); // Declara um objeto IR, indicando o pino ao qual o receptor IR está conectado void setup())( Serial.begin(9600); // Inicia a transferência de dados para o monitor da porta serial, a uma velocidade de 9600 bps IR.begin (); // Inicia o trabalho com o receptor IR) void loop())( if(IR.check(true))( // Se o buffer contém dados recebidos do controle remoto (o botão é pressionado) Serial.println (IR.data, HEX); // Mostra o código do botão pressionado Serial.println(IR.length); // Mostra o número de bits no código ) )

Neste esboço, a função check() é chamada com o parâmetro true, o que significa que ela reage ao pressionar e segurar os botões do controle remoto IR.

Lendo dados de qualquer controle remoto, indicando como responder a quais botões.

#incluir // Conecta a biblioteca para trabalhar com o receptor IR iarduino_IR_RX IR(6); // Declara um objeto IR, indicando o pino ao qual o receptor IR está conectado // bool flgKey1 = false; uint32_t codKey1 = 0xFF30CF; // Define o sinalizador de clique e o código do botão 1 bool flgKey2 = false; uint32_t codKey2 = 0xFF18E7; // Define o sinalizador de clique e o código do botão 2 bool flgKey3 = false; uint32_t codKey3 = 0xFF7A85; // Define o sinalizador de clique e o código do botão 3 bool flgKey = false; uint32_t tmrKey = 0; // Define um sinalizador que permite a saída de dados para o monitor e o horário do último botão pressionado. // void setup())( // Serial.begin(9600); // Inicia a transferência de dados para o monitor da porta serial, a uma velocidade de 9600 bps IR.begin(); // Inicia o trabalho com o receptor IR) / // / / void loop())( // if(IR.check(true))( // Se o buffer contém dados recebidos do controle remoto (o botão é pressionado), então... if(millis() -200 > tmrKey)( / / Se passaram mais de 200 ms desde o último comando recebido, então flgKey1=false; // Consideramos que o botão 1 não está pressionado flgKey2=false; // Consideramos que o botão 2 não está pressionado flgKey3=false; // Consideramos que o botão 3 não está pressionado) tmrKey = millis(); flgKey=true; // Salva o tempo da última reação ao controle remoto e permite a saída de dados if(IR.data==codKey1 )( if(flgKey1)(flgKey=false;) flgKey1=true; )else(flgKey1= false;) // Proibimos a saída de dados do botão 1 quando ele é pressionado if(IR.data==codKey2)( if (flgKey2)(flgKey=false;) flgKey2=true; )else(flgKey2=false;) // Proibimos a saída do botão de dados 2 enquanto o seguramos if(IR.data==codKey3)( if(flgKey3)(flgKey =falso;) flgKey3=verdadeiro; )else(flgKey3=false;) // Proíbe a saída de dados do botão 3 quando ele é pressionado if(flgKey)( // Se a saída de dados for permitida, então... Serial.println(IR.data, HEX); // Exibe o código dos botões pressionados Serial.println(IR.length); // Exibe o número de bits no código ) // ) // ) //

Neste esboço, a função check() é chamada com o parâmetro true, o que significa que ela responde ao pressionar e segurar os botões do controle remoto IR. Mas os dados são enviados para o monitor da porta serial somente quando o sinalizador flgKey está definido, que é redefinido quando os botões com os códigos 0xFF30CF, 0xFF18E7 e 0xFF7A85 são pressionados. Acontece que o esboço reage a 3 botões apenas quando pressionados e aos botões restantes quando pressionados e mantidos pressionados.

Lendo dados apenas dos controles remotos que operam de acordo com o protocolo especificado:

#incluir // Conecta a biblioteca para trabalhar com o receptor IR iarduino_IR_RX IR(5); // Declara um objeto IR, indicando o pino ao qual o receptor IR está conectado void setup())( Serial.begin(9600); // Inicia a transferência de dados para o monitor da porta serial, a uma velocidade de 9600 bps IR.begin (); // Inicia o trabalho com o receptor IR IR.protocol("Ae`` `|LJ` @@@@BPBp"); // Especifique o protocolo de transferência de dados ao qual responder ) void loop())( if (IR.check( true))( // Se o buffer contém dados recebidos do controle remoto (o botão é pressionado) Serial.println(IR.data, HEX); // Exibe o código do botão pressionado Serial. println(IR.length); // Mostra o número de bits no código) )

Neste esboço, no código setup(), é indicado o protocolo de transferência de dados, que raramente coincide entre diferentes fabricantes de controles remotos IR. Isso significa que a função check() no código loop() responderá apenas aos controles remotos IR que suportam o protocolo especificado.

Obtendo o protocolo de transferência de dados e o tipo de codificação:

#incluir // Conecta a biblioteca para trabalhar com o receptor IR iarduino_IR_RX IR(4); // Declara um objeto IR, indicando o pino ao qual o receptor IR está conectado void setup())( Serial.begin(9600); // Inicia a transferência de dados para o monitor da porta serial, a uma velocidade de 9600 bps IR.begin (); // Inicia o trabalho com o receptor IR) void loop())( if(IR.check())( // Se o buffer contém dados recebidos do controle remoto (o botão foi pressionado) Serial.println(IR .protocol()); // Gera a string do protocolo de transferência de dados ) )

Este exemplo descreve como obter o protocolo de transferência de dados para controles remotos IR. O artigo descreve como transmitir códigos de botão usando o protocolo especificado.

Desta forma, você pode criar um esboço do transmissor IR para simular os sinais de vários controles remotos IR. Como resultado, os dispositivos responderão ao transmissor IR como se estivessem respondendo ao seu próprio controle remoto IR.

Descrição das principais funções da biblioteca:

Conectando a biblioteca:

#incluir //Conecte a biblioteca para trabalhar com o receptor IR. iarduino_IR_RX IR(PIN_NO[,INVERTER]); // Declara um objeto IR, indicando o número do pino ao qual o receptor IR está conectado. // O segundo parâmetro, do tipo bool, pode indicar que os dados do receptor estão invertidos.

Função começar();

  • Objetivo: inicialização do trabalho com o receptor IR
  • Sintaxe: início();
  • Opções: Não.
  • Valores de retorno: Nenhum.
  • Nota: Chamado uma vez no código de configuração.
  • Exemplo:
IR.begin(); // Inicia o trabalho com o receptor IR

Verificação de função();

  • Objetivo: Verificar a disponibilidade dos dados recebidos do controle remoto.
  • Sintaxe: verificar([HOLD]);
  • Opções:
    • HOLD - um parâmetro opcional, tipo bool - indicando que é necessário responder ao segurar os botões do controle remoto.
  • Valores de retorno: bool - se os dados do controle remoto foram aceitos ou não.
  • Nota: Se a função for chamada sem parâmetro ou for falsa, a função só responderá aos sinais do controle remoto quando seus botões forem pressionados e, se você especificar verdadeiro, a função responderá ao pressionar e segurar o botões de controle remoto.
  • Exemplo:
if(IR.check())( ... ;) // Se os dados forem recebidos do controle remoto, quando você pressiona seu botão if(IR.check(true))( ... ;) // Se os dados forem recebido do controle remoto, ao segurar o botão

Função protocolo();

  • Finalidade: Receber, configurar ou redefinir o protocolo de transferência de dados.
  • Sintaxe: protocolo([PARÂMETRO]);
  • Obtendo o protocolo: Se a função for chamada sem parâmetro, ela retornará uma string de 25 caracteres + o caractere de fim de linha. Os bits desta linha carregam informações sobre o tipo de protocolo de transferência de dados do controle remoto cujos dados foram recebidos pela última vez. Esta linha pode ser usada para definir o protocolo para o transmissor IR ou receptor IR (veja abaixo).
  • Configurando o protocolo: Se a função for chamada com um parâmetro na forma de uma string de 25 caracteres de protocolo + o caractere de fim de linha, depois disso, a função chek() responderá apenas aos controles remotos que atendem aos dados especificados protocolo de transferência.
  • Redefinição de protocolo: Se a função for chamada com o parâmetro IR_CLEAN, a função chek() responderá novamente aos sinais de qualquer controle remoto.
  • Recebendo parâmetros de protocolo: Se a função for chamada com um parâmetro int, de 0 a 17, ela retornará não uma string de protocolo, mas um valor int com um dos parâmetros do protocolo de transferência de dados do console cujos dados foram recebidos pela última vez :
    • 0 - tipo de codificação:
      • IR_UNDEFINED - o tipo de codificação é indefinido;
      • IR_PAUSE_LENGTH - codificação de pausa longa;
      • IR_PULSE_LENGTH - codificação por pulso longo (largura) (PWM);
      • IR_BIPHASIC - codificação bifásica;
      • IR_BIPHASIC_INV - codificação bifásica com bits invertidos;
      • IR_NRC – os pacotes repetidos são idênticos, mas o primeiro e o último pacote são especiais;
      • IR_RS5 - codificação PHILIPS com bit de alternância;
      • IR_RS5X - codificação PHILIPS com bit de alternância;
      • IR_RS6 - Codificação PHILIPS com bit de alternância.
    • 1 - frequência portadora de transmissão de dados (em kHz);
    • 2 - número declarado de bits de informação em 1 pacote;
    • 3 - número declarado de bits de informação no pacote repetido;
    • 4 - duração da pausa entre pacotes (em ms);
    • 5 - duração do pulso no bit inicial (em μs);
    • 6 - duração da pausa no bit inicial (em μs);
    • 7 - duração do pulso em stop bit (em μs);
    • 8 - duração da pausa no bit de parada (em μs);
    • 9 - duração do pulso no bit de reinicialização ou alternância (em μs);
    • 10 - duração da pausa no bit de reinicialização ou alternância (em μs);
    • 11 - posição do bit de reinicialização ou alternância no pacote (número do bit);
    • 12 - duração máxima do pulso em bits de informação (em μs);
    • 13 - duração mínima do pulso em bits de informação (em μs);
    • 14 - duração máxima da pausa em bits de informação (em μs);
    • 15 - duração mínima da pausa em bits de informação (em μs);
    • 16 - flag de presença do bit inicial (verdadeiro/falso);
    • 17 - flag de presença do bit de parada (verdadeiro/falso);
    • 18 - sinalizador para presença do bit de reinicialização ou alternância (verdadeiro/falso);
    • 19 - tipo de pacote repetido (0-nenhum, 1-com bits invertidos, 2-idêntico a informativo, 3-único);
  • Valores de retorno: Depende da presença e tipo do parâmetro.
  • Nota: Se um protocolo foi definido anteriormente, a tentativa de recuperar o protocolo ou os parâmetros do protocolo retornará os valores do protocolo definido anteriormente, e não o protocolo de transferência de dados do console cujos dados foram recebidos pela última vez.
  • Exemplo:
IR.protocol("AeQQV~zK]Kp^KJp[@@@@@@@Bp"); // Defina o protocolo. Agora o receptor receberá dados apenas dos controles remotos da TV ELENBERG. IR.protocolo(IR_CLEAN); //Redefinir o protocolo instalado anteriormente. Agora o receptor responderá novamente a qualquer controle remoto. if(IR.check())( Serial.println(IR.protocol()); ) // Obtenha o protocolo. Assim que o receptor receber os dados, uma sequência de 25 caracteres do protocolo será exibida no monitor. if(IR.check())( Serial.println(IR.protokol(12)); ) // Obtenha um dos parâmetros do protocolo. Assim que o receptor receber os dados, o monitor exibirá a duração máxima do pulso do bit de informação em microssegundos.

Variável de dados

  • Valor: Retorna o código do botão recebido do controle remoto;
  • Tipo de dados: uint32_t.
if(IR.check())( Serial.println(IR.data); ) // Imprime o código do botão pressionado se for aceito

variável de comprimento

  • Valor: Retorna o tamanho do código do botão, em bits;
  • Tipo de dados: uint8_t.
if(IR.check())( Serial.println(IR.length); ) // Imprime o tamanho do código do botão pressionado, se aceito

variável key_press

  • Significado: Retorna um sinalizador indicando que o botão do controle remoto está sendo pressionado em vez de mantido;
  • Tipo de dados: bool.
if(IR.check(true))( if(IR.key_press)(Serial.println("PRESS");) // O texto será impresso 1 vez quando o botão for pressionado else (Serial.println("HOLD " );) // O texto será exibido continuamente enquanto o botão estiver pressionado)

Aplicativo:

  • controle de robôs, modelos móveis, voadores e flutuantes, equipamentos domésticos e especializados.
  • ligar/desligar iluminação, aquecimento, ventilação, irrigação, etc.
  • abrir/fechar portas, persianas, janelas de sótão, respiradouros, etc.

O receptor IR é um dispositivo padrão que se conecta à porta COM (RS-232) e serve para controlar remotamente o robô.

Um dos possíveis circuitos receptores IR. Qualquer receptor infravermelho de 5 volts usado em equipamentos domésticos (TVs) será adequado para o receptor IR. Por exemplo: TSOP1836, IS1U60L, GP1U52X, SFH506-36 ou nosso TK1833 doméstico. O estabilizador de tensão KREN5A é necessário para alimentar o receptor IR com tensão de 5 V, pois 12 volts são fornecidos pelo 7º pino da porta COM. O resistor pode ser selecionado na faixa de 3-5 kOhm, capacitor 4,7-10 μF. Qualquer diodo de baixa potência.

No diagrama acima, o sinal de saída é fornecido a 1 pino da porta COM (DCD). Este contato não é usado por um mouse padrão para uma porta COM, então se você não tiver porta COM livre suficiente, este circuito pode ser usado em paralelo com um mouse (mas não com um modem)! O sinal de saída pode ser enviado não apenas para o DCD, mas também para outros pinos, como CTS ou DSR. Todos esses parâmetros podem ser configurados em um programa que funciona no receptor IR. Existem diversas opções de programas, o mais comum é o WinLIRC. Também posso recomendar o uso do programa Girder.

Pinagem e aparência dos principais elementos do circuito

Da esquerda para a direita - dois tipos de receptores IR de 5 volts e um chip estabilizador de tensão KREN5A.

Pinagem da porta COM

Pinagem e descrição dos contatos da porta COM (25 pinos).

O receptor IR desempenha um papel importante em nossa vida cotidiana. Com a ajuda deste microcircuito, podemos controlar eletrodomésticos modernos, uma TV, um aparelho de som, um rádio de carro e um ar condicionado. Isso nos permite fazer isso, o controle remoto (RC), vamos dar uma olhada mais de perto em seu funcionamento, circuito, finalidade e testes. No artigo, como verificar você mesmo o receptor IR.

O que é um receptor IR e como funciona?

Este é um circuito integrado, sua tarefa direta e principal é receber e processar o sinal infravermelho, que é emitido pelo controle remoto. Este sinal é usado para controlar o equipamento.

Este microcircuito é baseado em um fotodiodo de pino, um elemento especial, com uma junção p-n e uma região i entre eles, um análogo da base de um transistor, como em um sanduíche, então aqui está a abreviatura pino, um elemento único em seu próprio caminho.

Ele é ligado ao contrário e não permite a passagem de corrente elétrica. O sinal IR entra na região i e conduz corrente, convertendo-a em tensão.


Os próximos estágios são um filtro integrador, um detector de amplitude e, na linha de chegada, os transistores de saída os aguardam.

Via de regra, não faz sentido comprar um novo receptor IR em uma loja, pois ele pode ser facilmente dessoldado de várias placas eletrônicas. Se você estiver montando um dispositivo para verificar o controle remoto a partir de materiais improvisados, sem saber a marcação exata do dispositivo, poderá determinar a pinagem por conta própria.


Precisaremos de um multímetro, uma fonte de alimentação ou várias baterias, fios de conexão, a instalação pode ser feita pendurada.

Ele tem três saídas, uma é GND, mais 5 volts são fornecidos para a segunda, e o sinal de saída sai da terceira. Conectamos a energia à primeira e segunda pernas, respectivamente, e removemos a tensão da terceira.


Ele está aguardando um sinal do controle remoto e no multímetro vemos cinco volts. Começamos a mudar de canal ou pressionar outros botões apontando o controle remoto para ele.

Se estiver funcionando, a tensão cairá cerca de 0,5-1 volt. Se tudo acontecer como está escrito aqui, o dispositivo está funcionando, caso contrário o elemento está com defeito.

Como determinar a pinagem de um receptor infravermelho

Por exemplo, peguei um microcircuito completamente desconhecido para mim, que estava em uma caixa com elementos, o “menos” foi determinado pelo ponto que fica na parte traseira do elemento, o “mais” foi determinado experimentalmente através de um resistor. Não arrisquei nada, pois inicialmente ele era trabalhador, não havia esperança.

Para determinar a pinagem do receptor IR, se ele estiver soldado na placa, observe, pode haver marcações nos pinos. Se nada estiver escrito ali, inspecione o próprio elemento, procure seu nome e depois procure na Internet características e dados, essa é uma forma muito competente de fazer as coisas. Seguindo as instruções sobre como verificar você mesmo o receptor IR.

diagrama da revista "Jovem Técnico".

Uma direção interessante na radioeletrônica, que complementou essa eletrônica com novas vantagens da luz “invisível” (luz infravermelha). Então proponho um circuito de receptor e transmissor simples (por exemplo) baseado em raios infravermelhos. Base: amplificador operacional k140ud7 (tenho ud708 aqui), emitindo e recebendo fotodiodos IR, ULF (k548un1a (b,c - índices) - para dois canais) (embora onde “ligar” o segundo canal do amplificador fique a critério você decide - o circuito do transmissor é projetado para um canal, ou seja, mono). Fonte de alimentação para o dispositivo: geralmente recomendo com estabilização de corrente decente (caso contrário, o adaptador “dândi” irrita o fundo da “rede”). Método: o sinal modulado em amplitude do transmissor é amplificado pelo receptor 1000 vezes.

Como funciona o dispositivo. Sugiro que você assista a um pequeno vídeo testando o controle remoto IR “de ouvido”. Você pode verificar rapidamente a funcionalidade e a intensidade do sinal pelo som.

Circuito receptor IR e transmissor IR

Na montagem, os capacitores C1 e C2 devem ficar o mais próximo possível do amplificador! Você pode conectar fones de ouvido de alta impedância à saída (os de baixa impedância requerem um ULF separado). Fotodiodo FD7 (tenho FD5.. uma espécie de “tablet” com lente de foco - não lembro o nome exato); Resistores de 0,125 W: R1 e R4 definem o fator de amplificação do sinal em 1000 vezes. A configuração do receptor é simples: o fotodiodo é direcionado para uma fonte de radiação IR, por exemplo, uma lâmpada 220V-50Hz: o filamento será ligado com frequência de 50Hz ou o controle remoto da TV (vídeo, etc.) A sensibilidade do receptor é alta: normalmente recebe sinais refletidos nas paredes.

O transmissor possui LEDs IR AL107a: qualquer um serve. R2 2 kOhm, C1 1000μFx25V, C2 200μFx25V, qualquer transformador também. Embora seja perfeitamente possível fazer sem um transformador - forneça um sinal de áudio amplificado ao capacitor C2.

Diagrama do dispositivo

Recentemente, por necessidade, montei um receptor IR para testar controles remotos IR (TVs e DVDs). Após finalizar o circuito, instalei um ULF TDA7056 mono. Este amplificador possui boas características de ganho de cerca de 42 dB; opera na faixa de tensão de 3V a 18V, o que permitiu que o receptor IR funcionasse mesmo na tensão de 3V; A faixa de ganho TDA de 20 Hz a 20 kHz (UD708 passa até 800 kHz) é suficiente para usar o receptor como acompanhamento de áudio; possui proteção contra curto-circuito em todas as “pernas”; proteção contra “superaquecimento”; coeficiente de autointerferência fraco. No geral, gostei deste ULF compacto e confiável (nosso preço é de 90 rublos).
Há para ele com. A Figura 1 mostra um exemplo de uso de um amplificador.


Foto TDA7056



Figura 1. Circuito amplificador com TDA7056

O resultado foi um receptor IR, Fig. 2, que opera na faixa de tensão de 3V a 12V. Eu recomendo usar baterias ou baterias recarregáveis ​​para alimentar o receptor. Ao usar uma fonte de alimentação, é necessária uma fonte estabilizada, caso contrário será ouvido o fundo da rede de 50 Hz, que amplifica o UD708. Se o dispositivo estiver localizado perto de uma fonte de tensão de rede ou de emissões de rádio, poderão ocorrer interferências. Para reduzir a interferência, é necessário incluir o capacitor C5 no circuito. O TDA7056 foi projetado para um alto-falante de saída de 16 Ohm, infelizmente não tenho um. Tive que usar um alto-falante de 4 ohms e 3 watts, que foi conectado por meio de um resistor de um watt e 50 ohms. A resistência da bobina do alto-falante muito baixa causa excesso de potência e superaquece o amplificador. Em geral, devido ao resistor adicional, o ULF não aquece, mas fornece um ganho bastante aceitável.



Figura 2. Circuito receptor IR com ULF



Foto do receptor IR

Nesta lição, veremos como conectar um receptor IR ao Arduino. Diremos qual biblioteca deve ser usada para um receptor IR, demonstraremos um esboço para testar a operação de um receptor infravermelho a partir de um controle remoto e analisaremos comandos em C++ para receber um sinal de controle.

Dispositivo receptor IR. Princípio da Operação

Os receptores de radiação infravermelha são amplamente utilizados na tecnologia eletrônica devido ao seu preço acessível, simplicidade e facilidade de uso. Esses dispositivos permitem controlar dispositivos por meio de um controle remoto e podem ser encontrados em quase todos os tipos de equipamentos.

O princípio de funcionamento de um receptor IR. Processando o sinal do controle remoto

O receptor IR no Arduino é capaz de receber e processar um sinal infravermelho na forma de pulsos de uma determinada duração e frequência. Normalmente, um receptor IR tem três pernas e consiste nos seguintes elementos: um fotodiodo PIN, um amplificador, um filtro passa-banda, um detector de amplitude, um filtro integrador e um transistor de saída.

Sob a influência da radiação infravermelha em um fotodiodo, que possui entre p E n regiões criaram uma região adicional de semicondutores ( eu-região), a corrente começa a fluir. O sinal vai para um amplificador e depois para um filtro passa-banda, que protege o receptor de interferências. A interferência pode ser causada por qualquer eletrodoméstico.

O filtro passa-banda está configurado para uma frequência fixa: 30; 33; 36; 38; 40 e 56 quilohertz. Para que o sinal do controle remoto seja recebido pelo receptor IR do Arduino, o controle remoto deve estar na mesma frequência em que o filtro no receptor IR está configurado. Após o filtro, o sinal segue para um detector de amplitude que integra o filtro e o transistor de saída.

Como conectar um receptor IR ao Arduino

As caixas dos receptores infravermelhos contêm um filtro óptico para proteger o dispositivo de campos eletromagnéticos externos; elas são feitas de um formato especial para focar a radiação recebida em um fotodiodo. Para conectar o receptor IR ao Arduino UNO, são utilizadas três pernas, que são conectadas às portas - GND, 5V e A0.

Para esta lição precisaremos dos seguintes detalhes:

  • Placa Arduino Uno;
  • Tábua de pão;
  • Cabo USB;
  • Receptor infravermelho;
  • Controle remoto;
  • 1 LED;
  • 1 resistor 220 Ohm;
  • Fios "pasta-pasta" e "pasta-fêmea".

Diagrama de conexão do receptor IR à porta analógica do Arduino

Conecte o receptor IR conforme o diagrama e os LEDs aos pinos 12 e 13 e carregue o esboço.

#incluir // conecta a biblioteca para o receptor IR IRrecv irrecv(A0); // indica o pino ao qual o receptor IR está conectado resultados de decode_resultados; void setup () // configuração do procedimento ( irrecv.enableIRIn (); //começa a receber um sinal infravermelho pinMode(13, SAÍDA); //pino 13 será a saída pinMode(12, SAÍDA); //pino 12 será a saída pinMode(A0,INPUT); // o pino A0 será a entrada (eng. “intput”) Serial.begin(9600); // conecta o monitor da porta) void loop () // loop de procedimento ( if (irrecv.decode (&results)) // se os dados chegaram, execute os comandos(Serial .println(resultados.valor); // envia os dados recebidos para a porta //liga e desliga os LEDs, dependendo do sinal recebido if (resultados.valor == 16754775) ( digitalWrite (13, HIGH); ) if (resultados.valor == 16769055) ( digitalWrite (13, LOW); ) if (resultados.valor == 16718055) ( digitalWrite (12, HIGH); ) if (resultados.valor == 16724175) ( digitalWrite (12, LOW); ) irrecv.resume (); //recebe o próximo sinal no receptor IR } }

Explicações para o código:

  1. A biblioteca IRremote.h contém um conjunto de comandos e permite simplificar o esboço;
  2. A instrução decode_results atribui os resultados do nome da variável aos sinais recebidos do controle remoto.

O que prestar atenção:

  1. Para poder controlar a inclusão do LED, é necessário ligar o monitor da porta e descobrir qual sinal é enviado por este ou aquele botão do controle remoto;
  2. Os dados obtidos devem ser inseridos no esboço. Altere o código de oito dígitos no esboço após o sinal de igual duplo if (resultados.valor == 16769055) para o seu próprio.

Dispositivo receptor IR, operação e teste

Os receptores IR de radiação infravermelha tornaram-se difundidos em televisores, equipamentos domésticos, médicos e outros equipamentos. Eles podem ser vistos em quase qualquer tipo de equipamento eletrônico e são controlados por controle remoto.


operação e diagrama de blocos do receptor IR

Normalmente, um microconjunto de receptor IR possui três ou mais pinos. Um é comum e está conectado à fonte de alimentação menos GND, o outro para o mais Vs, e o terceiro é a saída do sinal recebido Fora.

Ao contrário de um fotodiodo IR padrão, um receptor IR é capaz não apenas de receber, mas também de processar um sinal infravermelho na forma de pulsos de frequência fixa e duração especificada. Isto protege o dispositivo contra alarmes falsos, radiação de fundo e interferência de outros eletrodomésticos que emitem na faixa de infravermelho. Lâmpadas fluorescentes economizadoras de energia com circuito de reator eletrônico podem criar interferência bastante forte para o receptor.

A micromontagem de um receptor de radiação IR típico inclui: fotodiodo PIN, amplificador variável, filtro passa-banda, detector de amplitude, filtro integrador, dispositivo de limite, transistor de saída

Um fotodiodo PIN pertence à família dos fotodiodos, nos quais outra região de seu próprio semicondutor (região i) é criada entre as regiões n e p - esta é essencialmente uma camada de semicondutor puro sem impurezas. É isso que confere ao diodo PIN suas propriedades especiais. No estado normal, nenhuma corrente flui através do fotodiodo PIN, pois ele está conectado ao circuito na direção oposta. Quando pares elétron-buraco são gerados na região i sob a influência da radiação infravermelha externa, a corrente começa a fluir através do diodo. Que então vai para um amplificador variável.

Em seguida, o sinal do amplificador vai para um filtro passa-banda que protege contra interferências na faixa IR. O filtro passa-banda é definido para uma frequência estritamente fixa. Normalmente, são usados ​​filtros definidos para uma frequência de 30; 33; 36; 36,7; 38; 40; 56 e 455 quilohertz. Para que o sinal emitido pelo controle remoto seja recebido pelo receptor IR, ele deve ser modulado com a mesma frequência para a qual o filtro está configurado.

Após o filtro, o sinal vai para um detector de amplitude e um filtro integrador. Este último é necessário para bloquear rajadas curtas de sinal único que podem surgir devido à interferência. Em seguida, o sinal vai para o dispositivo de limite e para o transistor de saída. Para uma operação estável, o ganho do amplificador é ajustado por um sistema de controle automático de ganho (AGC).

Os invólucros dos módulos IR são feitos de um formato especial que facilita o foco da radiação recebida na superfície sensível da fotocélula. O material da caixa transmite radiação com um comprimento de onda estritamente definido de 830 a 1100 nm. Assim, o dispositivo utiliza um filtro óptico. Para proteger os elementos internos de influências externas. campos, uma tela eletrostática é usada.

Verificando o receptor IR

Como o receptor de sinal IR é um microconjunto especializado, para garantir seu funcionamento é necessário aplicar uma tensão de alimentação ao microcircuito, geralmente de 5 volts. O consumo atual será de cerca de 0,4 - 1,5 mA.

Se o receptor não receber sinal, então nas pausas entre as rajadas de pulsos a tensão em sua saída corresponde praticamente à tensão de alimentação. Está entre GND e a saída do sinal de saída pode ser medida usando qualquer multímetro digital. Recomenda-se também medir a corrente consumida pelo microcircuito. Se exceder o padrão (consulte o livro de referência), provavelmente o microcircuito está com defeito.

Portanto, antes de iniciar o teste do módulo, certifique-se de determinar a pinagem de suas saídas. Normalmente, essas informações são fáceis de encontrar em nosso megadiretório de fichas técnicas de eletrônicos. Você pode baixá-lo clicando na imagem à direita.

Vamos verificar no chip TSOP31236, sua pinagem corresponde à figura acima. Conectamos o terminal positivo da fonte de alimentação caseira ao terminal positivo do módulo IR (Vs) e o terminal negativo ao terminal GND. E conectamos o terceiro pino OUT à ponta de prova positiva do multímetro. Conectamos a ponta de prova negativa ao fio GND comum. Mude o multímetro para o modo de tensão CC em 20 V.

Assim que pacotes de pulsos infravermelhos começarem a chegar ao fotodiodo do microconjunto IR, a tensão em sua saída cairá várias centenas de milivolts. Nesse caso, será claramente visível como o valor na tela do multímetro diminui de 5,03 volts para 4,57. Se soltarmos o botão do controle remoto, a tela exibirá novamente 5 volts.

Como você pode ver, o receptor de radiação IR responde corretamente ao sinal do controle remoto. Isso significa que o módulo está OK. De forma semelhante, você pode verificar quaisquer módulos em um design integrado.

Um controle remoto infravermelho é uma das maneiras mais fáceis de interagir com dispositivos eletrônicos. Assim, quase todas as casas possuem vários desses dispositivos: uma TV, um aparelho de som, um reprodutor de vídeo, um ar condicionado. Mas o uso mais interessante de um controle remoto infravermelho é o controle remoto de um robô. Na verdade, nesta lição tentaremos implementar este método de controle usando o popular controlador Arduino Uno.

1. Controle remoto infravermelho

O que é necessário para ensinar um robô a obedecer a um controle remoto infravermelho (IR)? Primeiro, precisamos do próprio controle remoto. Você pode usar um controle remoto comum de TV ou comprar um controle remoto em miniatura para o rádio do seu carro. Esses tipos de controles remotos são frequentemente usados ​​para controlar robôs. Este controle remoto possui 10 botões digitais e 11 botões para manipulação de música: volume, retroceder, reproduzir, parar, etc. Mais do que suficiente para nossos propósitos.

2. Sensor infravermelho

Em segundo lugar, para receber um sinal do controle remoto, precisamos de um sensor IR especial. Em geral, podemos detectar radiação infravermelha com um fotodiodo/fototransistor convencional, mas diferentemente dele, nosso sensor IR percebe o sinal infravermelho apenas a uma frequência de 38 kHz (às vezes 40 kHz). É essa propriedade que permite ao sensor ignorar muitos ruídos estranhos de luz provenientes de lâmpadas de iluminação e do sol. Para este tutorial usaremos o popular sensor IR VS1838B, que possui as seguintes características:
  • frequência portadora: 38 kHz;
  • tensão de alimentação: 2,7 - 5,5 V;
  • consumo de corrente: 50 µA.
Outros sensores podem ser utilizados, por exemplo: TSOP4838, TSOP1736, SFH506.

3. Conexão

O sensor possui três terminais (três pernas). Se você olhar para o sensor do lado do receptor de sinal IR, conforme mostrado na figura,
  • então à esquerda haverá uma saída para o controlador,
  • no centro - contato de potência negativo (terra),
  • e à direita - o contato positivo de potência (2,7 - 5,5V).
Diagrama esquemático de conexão Aparência do layout

4. Programa

Depois de conectar o sensor IR, escreveremos um programa para Arduino Uno. Para fazer isso, usaremos a biblioteca padrão IRremoto, que foi projetado especificamente para simplificar o trabalho de recepção e transmissão de sinais IR. Utilizando esta biblioteca, receberemos comandos do controle remoto e, para começar, basta exibi-los na janela do monitor da porta serial. Este programa será útil para entendermos qual código cada botão fornece. #include "IRremote.h" IRrecv irrecv(2); // indica o pino ao qual o receptor está conectado decode_results results; void setup() ( Serial.begin(9600); // define a velocidade da porta COM irrecv.enableIRIn(); // começa a receber ) void loop() ( if (irrecv.decode(&results)) ( // if os dados chegaram Serial .println(results.value, HEX); // imprime os dados irrecv.resume(); // aceita o seguinte comando ) ) Carrega o programa no Arduino. Depois disso, tentamos receber comandos do controle remoto. Abra o monitor da porta serial (Ctrl+Shift+M), pegue o controle remoto e aponte-o para o sensor. Ao pressionar diferentes botões, observamos os códigos correspondentes a esses botões na janela do monitor. Problema ao carregar o programa Em alguns casos, ao tentar carregar um programa no controlador, pode aparecer um erro: TDK2 não foi declarado em seu escopo Para consertar, basta excluir dois arquivos da pasta da biblioteca. Vamos para o explorador. Vá para a pasta onde o aplicativo Arduino IDE está instalado (provavelmente “C:\Program Files (x86)\Arduino”). Em seguida, para a pasta da biblioteca: …\Arduino\libraries\RobotIRremote e exclua os arquivos: IRremoteTools.cpp E IRremoteTools.h. Em seguida, reiniciamos o IDE do Arduino e tentamos carregar o programa no controlador novamente.

5. Controle o LED usando o controle remoto IR

Agora que sabemos quais códigos correspondem aos botões do controle remoto, tentamos programar o controlador para ligar e desligar o LED quando os botões de volume forem pressionados. Para isso precisamos de códigos (podem variar dependendo do controle remoto):
  • FFA857 – aumenta o volume;
  • FFE01F - diminui o volume.
Como LED, usamos o LED embutido no pino nº 13, portanto o diagrama de conexão permanecerá o mesmo. Portanto, o programa: #include "IRremote.h" IRrecv irrecv(2); // indica o pino ao qual o receptor está conectado decode_results results; void setup() ( irrecv.enableIRIn(); // inicia o recebimento ) void loop() ( if (irrecv.decode(&results)) ( // se os dados chegaram switch (results.value) ( ​​​​case 0xFFA857: digitalWrite( 13, HIGH); break; case 0xFFE01F: digitalWrite(13, LOW); break; ) irrecv.resume(); // aceita o seguinte comando ) ) Carregue no Arduino e teste. Clique volume+— o LED acende. Clique vol-- sai. Agora, sabendo como tudo funciona, você pode controlar motores de robôs ou outros dispositivos microeletrônicos caseiros em vez de um LED!