Fotodíodo, Fototransistor e Sensor de IV com o Arduino
Tabela de Conteúdo
Descrição:
Fotodíodo, fototransistor, e o Sensor de INFRAVERMELHOS com Arduino– Um fotodíodo é um dispositivo que, quando é excitada pela luz, produz no circuito uma corrente proporcional de fluxo (e mensurável). Desta forma, eles podem ser feitos servem como sensores de luz, embora, embora seja verdade que existem fotodiodos especialmente sensíveis à luz visível, a grande maioria é especialmente na luz infravermelha.
deve – se levar em consideração que, apesar de ter um comportamento de aparência semelhante ao LDRs, uma diferença muito importante destes (além da sensibilidade a outros comprimentos de onda) é o tempo de resposta às mudanças da escuridão para a iluminação, e vice-versa, que nos fotodiodos é muito menor.
como diodos padrão, os fotodiodos têm um ânodo e um cátodo, mas tenha cuidado, para que funcione como quisermos, um fotodiodo deve sempre ser conectado ao circuito em polaridade reversa. Claro, o mesmo que com diodos comuns, normalmente o ânodo é mais longo que o cátodo (se eles são de comprimento igual, o cátodo deve ser marcado de alguma forma).
sua operação interna é a seguinte: quando o fotodiodo é polarizado em direto, a luz que cai sobre ele não tem um efeito apreciável e, portanto, tanto o dispositivo se comporta como um diodo comum. Quando polarizado ao contrário e nenhuma radiação de luz o atinge, ele também se comporta como um diodo normal, uma vez que os elétrons que fluem pelo circuito não têm energia suficiente para passar por ele, então o circuito permanece aberto. Mas no momento em que o fotodiodo recebe radiação de luz dentro de uma faixa de comprimento de forma de onda, os elétrons recebem energia suficiente para serem capazes de “pular” a barreira do fotodiodo reverso e continuar em seu caminho.
Example1: como verificar o comportamento do fotodiodo
para testar seu comportamento, podemos usar o circuito abaixo. Este circuito é idêntico ao que vimos com o LDRs, substituindo-os por um fotodiodo (que é identificado por um novo símbolo que não tínhamos visto até agora). O valor do divisor de tensão vai depender da quantidade de luz (infravermelho) presentes no ambiente: maior resistências melhorar a sensibilidade, quando há apenas uma fonte de luz e baixa resistências melhorar quando há muitos (o próprio sol ou a lâmpadas são fontes de infravermelho); um valor de 100 KΩ pode ser bom para começar. Observe também que é o cátodo do fotodiodo (o terminal mais curto, lembre-se) aquele que se conecta à fonte de alimentação.
a operação deste circuito é a seguinte: enquanto o fotodiodo não detectar luz infravermelha, através da entrada analógica da placa Arduino (neste caso, o número 0) uma tensão de 0V será medida porque o circuito atuará como um circuito aberto. À medida que a intensidade da luz no fotodiodo aumenta, aumentará o número de elétrons que passam por ele (ou seja, a intensidade da corrente). Isto implica que, como o “pull-down” resistência é fixo, por Lei de Ohm a tensão medida no pino de entrada analógico também irá aumentar, até um momento em que, ao receber uma grande quantidade de luz o fotodíodo não causa mal algum tipo de resistência para a passagem dos elétrons e, portanto, a placa Arduino lê um máximo de tensão de 5V.
Nós adicionamos um LED conectado ao pino de saída de PWM # 5 tal como fizemos quando vimos os LDRs ter uma forma visível (trocadilho intencional) de detectar a incidência de luz infravermelha no fotodíodo. Como você pode observar no código usado( mostrado abaixo), fizemos a intensidade de brilho do LED da quantidade de luz infravermelha detectada pelo fotodiodo: quanto mais radiação infravermelha recebida, mais brilhante será o LED.
Programação:
1
2
3
4
5
6
7
8
9
10
11
12
|
int photodiode_value;
int bright_LED; Como baixar e instalar o Windows 10 no Windows 10.começar(9600);
}
void loop(void) {
photodiode_value = analogRead(0);
Serial.println(photodiode_value);
bright_LED = mapa(photodiode_value, 0, 1023, 0, 255);
analogWrite(5, bright_LED);
atraso(100);
}
|
Programação explicação:
Primeiro de tudo Para receber o fotodíodo valor que definir a variável do tipo inteiro
1
|
int photodiode_value;
|
Então eu definir variável do tipo inteiro para o diodo emissor de valor “o Valor enviado para o LED”
1
|
int bright_LED;
|
na função void loop, primeiro recebo o valor usando a função analogRead e armazeno esses valores na variável photodiode_value e, em seguida, uso serial.println para imprimir valores no serial monitor
1
2
3
|
photodiode_value = analogRead(0);
Serial.println (photodiode_value);
|
O brilho do DIODO emissor de luz é proporcional à quantidade de luz infravermelha recebido
1
2
3
|
bright_LED = mapa(photodiode_value, 0, 1023, 0, 255);
analogWrite(5, bright_LED);
|
fototransistor:
outro tipo de sensores de luz além dos fotodiodos são chamados de fototransistores, ou seja, transistores sensíveis à luz (também normalmente infravermelhos). Sua operação é a seguinte: quando a luz cai em sua base, ela gera uma corrente que leva o transistor a um estado condutor. Portanto, um fototransistor é igual a um transistor comum com a única diferença de que a corrente de base Ib depende da luz recebida. Na verdade, existem fototransistores que podem funcionar de ambas as maneiras: como fototransistores ou como transistores comuns com uma determinada corrente de base específica Ib.
o fototransistor é muito mais sensível que o fotodiodo (devido ao efeito do ganho do próprio transistor), uma vez que as correntes que podem ser obtidas com um fotodiodo são realmente limitadas. Na verdade, você pode entender um fototransistor como uma combinação de fotodíodo e amplificador, então, na verdade, se queremos construir um caseiro fototransistor, seria o suficiente para adicionar um transistor comum um fotodíodo, ligando o catodo do fotodíodo para o coletor do transistor e o ânodo para a base. Nesta configuração, a corrente entregue pelo fotodiodo (que circularia em direção à base do transistor) seria amplificada β vezes.
em muitos circuitos, podemos encontrar um fototransistor a uma curta distância de um LED emissor de infravermelho de comprimento de onda compatível. Este par de componentes é útil para detectar a interposição de um obstáculo entre eles (devido à interrupção do feixe de luz) e, portanto, agir como interruptores ópticos. Eles podem ser usados em uma infinidade de aplicações, como em detectores da passagem de um cartão de crédito (em um Caixa eletrônico) ou na introdução do papel (em uma impressora) ou como tacômetros, entre muitos outros. Um tacômetro é um dispositivo que conta giros por minuto feitas por um obstáculo sujeito a uma roda ou lâmina que gira (geralmente devido à operação de um motor); é o que é, ele é usado para medir a velocidade de rotação de um objeto.
o fototransistor consiste em dois terminais correspondentes ao ânodo e cátodo do LED e dois terminais correspondentes ao coletor e emissor de um fototransistor NPN. Em geral, queremos conectar os terminais do LED a um circuito fechado continuamente alimentado (ânodo à fonte, cátodo à terra), o terminal coletor do interruptor fotográfico a uma fonte de energia e o terminal emissor do interruptor fotográfico a uma entrada digital de nossa placa Arduino, para poder detectar assim a aparência da corrente quando a iluminação é recebida. Por outro lado, tanto esta entrada de placa Arduino como o emissor deve ser aterrado para através do mesmo resistor pull-down, para obter leituras mais estáveis (um valor típico de 10 KΩ pode funcionar, mas dependendo do circuito pode ser precisa de valores mais elevados).
também podemos encontrar o par de fototransistores LED infravermelho mais em alguns componentes chamados “optoacopladores”ou ” optoisolator”. A representação esquemática geralmente é assim:
em termos gerais, um optoacoplador atua como um circuito fechado quando a luz vem do LED para a base do transistor e abre quando o LED está desligado. Sua principal função é controlar e, ao mesmo tempo, isolar duas partes de um circuito que normalmente funcionam em tensões diferentes (assim como um transistor comum, mas de uma maneira um tanto mais segura). Fisicamente, geralmente são chips que oferecem pelo menos quatro pinos (o mesmo que os interruptores fotográficos): dois correspondentes aos terminais do LED e dois correspondentes ao coletor e emissor do fototransistor (embora possam ter mais um pino correspondente à base se permitido controlar a intensidade que flui através dele também como padrão). Exemplos de optoacopladores são o 4N35 ou o CNY75, fabricado por várias empresas.
o par led-fototransistor também é útil para detectar objetos localizados a pequenas distâncias dele. Estudaremos isso na seção correspondente aos sensores de distância.
Como fazer o controle Remoto usando o sensor de INFRAVERMELHOS:
imediata utilidade prática de um emissor infravermelho-par receptor (como um LED e um fotodíodo / fototransistor), localizado a uma certa distância é o envio de “mensagens” entre eles. Ou seja, como a luz infravermelha não é visível (e, portanto, não “incomoda”), pulsos de certa duração podem ser emitidos e / ou frequências que podem ser recebidas e processadas a vários metros de distância sem deixá-la “ser notada.”O dispositivo que os recebe deve então ser programado para executar ações diferentes, dependendo do tipo de leitura de pulso.
de fato, qualquer dispositivo que funcione com um” controle remoto “funciona de maneira semelhante porque em sua parte frontal eu tenho que ter um sensor sensores infravermelhos (também chamados de sensores” IR”, do inglês” infra-vermelho”) que recebem os sinais infravermelhos emitidos pelo controle remoto. E o que está dentro disso é basicamente um LED que emite pulsos de luz infravermelha seguindo um certo padrão que sinaliza para o dispositivo a ordem a ser realizada: há um código de piscar para ligar a TV, outro para mudar de canal, etc.
acima falamos sobre “sensores IR” e não sobre fotodiodos / fototransistores porque os primeiros são um pouco mais sofisticados. Especificamente, os sensores IR não detectam nenhuma luz infravermelha, mas apenas isso (graças à incorporação de um filtro de passagem de banda interna e um demodulador) é modulado por uma onda portadora com uma frequência de 38 KHz + 3 KHz. Isso basicamente significa que apenas os sinais cuja informação é transportada por uma forma de onda de 38 KHz serão lidos. Isso é para evitar que os sensores de infravermelho fiquem “loucos” quando recebem a luz infravermelha que existe vindo de todos os lados (sol, luz elétrica … dessa forma, eles respondem apenas a muito concreto já padronizado.
outra diferença com fotodiodos / fototransistores é que os sensores IR oferecem uma resposta binária: se detectarem um sinal IR de 38 KHz, o valor que você pode ler deles na maioria dos casos é baixo (0 V) e, se não detectarem nada, sua leitura dá um valor alto (5 V). Esse comportamento é o que geralmente é chamado de ” baixo ativo ou “baixo ativo”.
exemplos de sensores IR podem ser TSOP32838 ou GP1UX311QS. As características As mais proeminentes têm que sua escala da sensibilidade está entre comprimentos de onda de 800nm a 1100nm com uma resposta máxima em 940nm e precisando ao redor 5V e 3 miliampères de operar-se.
o chip TSOP32838 oferece três pinos: voltado para o hemisfério traseiro, o pino mais à esquerda é a saída digital fornecida pelo sensor, o pino do meio deve ser aterrado e o pino mais à direita deve ser aterrado. conecte-se à fonte de alimentação (entre 2,5 V e 5,5 V).
Example2:
como ligar o led com controle remoto usando Arduino e, TSOP32838 sensor IR:
para testar sua operação, poderíamos projetar um circuito como o seguinte. O divisor de tensão para o LED pode estar entre 200 e 1000 ohms.
a ideia é ligar brevemente o LED quando o sensor IR detectar um sinal infravermelho. Mas tenha cuidado, não apenas qualquer sinal infravermelho é válido, mas apenas isso modulado em 38 KHz. Portanto, para testar este circuito, não podemos usar qualquer LED infravermelho: devemos usar um controle remoto botão que temos na mão (a partir de uma televisão, um leitor de DVD, um computador, etc.). Uma vez carregado na placa Arduino o esboço apresentado a seguir, se apontarmos esse controle remoto no sensor IR e pressionarmos alguns de seus botões, devemos ver o LED acender. Desta forma, usaremos o sensor IR como se fosse um interruptor, que ilumina o LED enquanto detecta esse sinal e o desliga quando não é mais detectado.
a saída do sensor é conectada à entrada digital pin2 da placa Arduino e o LED é conectado à sua saída digital pin12):
Programação:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
int irPin=2;
int ledPin=12;
void setup() {
pinMode(irPin,ENTRADA);
pinMode(ledPin,OUTPUT);
}
void loop() {
se(pulseIn(irPin,BAIXO) > 0) {
delay(100);
digitalWrite(ledPin,HIGH);
atraso(200);
digitalWrite(ledPin,LOW);
}
}
|
Programação explicação:
Primeira definição de variável do tipo inteiro para o sensor de INFRAVERMELHOS e led
1
2
3
|
int irPin=2;
int ledPin=12;
|
em função do programa de configuração, eu definir o sensor INFRAVERMELHO, como entrada e diodo emissor de luz como de saída
1
2
3
|
pinMode(irPin,ENTRADA);
pinMode(ledPin,OUTPUT);
|
uma vez que o sinal emitido pelo sensor é normalmente ALTA, quando o botão de um controle remoto é pressionado, muda para BAIXO. O que a função pulseIn () é pausar o esboço até que um sinal seja detectado baixo, cuja duração realmente não nos interessa, mas logicamente será sempre maior que zero. Portanto, se a condição do if significa que um botão em um controle remoto foi pressionado
1
|
se(pulseIn(irPin,BAIXO) > 0) {
|
é necessário esperar um certo tempo (o que vai depender específicas do modelo do controle remoto) após a detecção do primeiro sinal de BAIXA porque cada botão produz várias oscilações entre valores ALTOS e BAIXOS. Embora fisicamente ele não tenha nada para ver, podemos entender isso Esperando como se fosse uma maneira de evitar um “salto” (fenômeno estudado quando tratamos os botões). Uma vez decorrido esse tempo de espera, o sinal do sensor deve ter retornado ao seu estado de repouso (alto valor).
1
|
atraso(100);
|
Nós mantemos o LED por alguns milissegundos. Durante esse tempo, o esboço não será capaz de detectar outras teclas do controle remoto. Também poderíamos ter enviado uma mensagem para o” Monitor Serial ” notificando a pulsação.
1
2
3
4
5
6
7
8
9
|
digitalWrite(ledPin,HIGH);
atraso(200);
digitalWrite(ledPin,LOW);
}
}
|
Exemplo3:
como receber o comando de controle remoto no serial monitor usando TSOP32838 Sensor de IV com o Arduino:
Primeiro de tudo, baixe a biblioteca necessária para o sensor de INFRAVERMELHOS
Arduino IRremote biblioteca
diagrama de Circuito:
Programação:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
#include <IRremote.h>
int receiverPin = 11;
IRrecv irrecv(receiverPin);
decode_results results; Como baixar e instalar o Windows 10 no Windows 10.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.começar(9600);
irrecv.enableirina();
}
se você não tem certeza de como fazer isso.decodificar (& resultados)!=0) {
if (resultados.descode_type = = nec) {
Serial.impressão (“NEC: “);
} mais se (resultados.como baixar e instalar Minecraft.impressão (“SONY: “);
} mais se (resultados.como baixar e instalar Minecraft.impressão (“RC5: “);
} mais se (resultados.como baixar e instalar Minecraft.impressão (“RC6: “);
} mais se (resultados.descode_type = = desconhecido) {
Serial.imprimir (“desconhecido: “);
}
Serial.println (resultados.valor, HEX);
irrecv.continuar();
}
}
|
Programação explicação:
Primeiro, eu importar a biblioteca necessária
1
|
#include <IRremote.h>
|
Então eu definir digital pino de entrada para receptor
1
|
int receiverPin = 11;
|
Então eu criar um objeto chamado “irrecv” do tipo IRrecv
1
|
IRrecv irrecv(receiverPin);
|
Então eu declaro uma variável de um tipo especial, “decode_results”.
1
|
decode_results resultados;
|
Então eu Inicie o receptor no vazio função de passo
1
|
irrecv.enableirina();
|
então, em void loop, procuro ver se algum padrão ir modulado foi detectado. Se assim for, eu a li e eu mantê-lo inteiramente em especial a variável “resultados”, em número hexadecimal formulário
1
|
se (irrecv.decodificar (& resultados)!=0) {
|
Então eu olhar para que tipo de padrões de negociação é, se se trata de uma reconhecida pela biblioteca
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
se (os resultados.descode_type = = nec) {
Serial.impressão (“NEC: “);
} mais se (resultados.como baixar e instalar Minecraft.impressão (“SONY: “);
} mais se (resultados.como baixar e instalar Minecraft.impressão (“RC5: “);
} mais se (resultados.como baixar e instalar Minecraft.impressão (“RC6: “);
} mais se (resultados.descode_type = = desconhecido) {
Serial.impressão (“desconhecido: “);
}
|
E então eu mostrar o recebeu padrão (em formato hexadecimal) no canal serial
1
|
Serial.println (resultados.valor, HEX);
|
uma Vez que o padrão tem sido decodificada, reativar a escuta para detectar o mais próximo possível do padrão de
1
2
3
|
irrecv.continuar();
}
|
Exemplo4:
como fazer o controle remoto usando TSOP32838 Sensor de IV com o Arduino:
Primeiro de tudo, baixe a biblioteca necessária para o sensor de INFRAVERMELHOS
Arduino IRremote biblioteca
Utilizar o mesmo circuito como a que eu usei no projeto anterior
diagrama de Circuito:
Programação:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
#include <IRremote.h>
int receiverPin = 11;
IRrecv irrecv(receiverPin);
decode_results resultados;
void setup(){
Serial.começar(9600);
irrecv.enableIRIn();
}
void loop(){
int i;
se (irrecv.decodificar (& resultados)!=0) {
ação();
para (i=0; i<2; I++) {
irrecv.currículo();
}
}
}
ação void () {
switch (resultados.value) {
case 0x37EE: Serial.println(“Favorites”); break;
case 0xA90: Serial.println(“On/off”); break;
case 0x290: Serial.println(“Mute”); break;
case 0x10: Serial.println(“1”); break;
case 0x810: Serial.println(“2”); break;
case 0x410: Serial.println(“3”); break;
case 0xC10: Serial.println(“4”); break;
case 0x210: Serial.println(“5”); break;
case 0xA10: Serial.println(“6”); break;
case 0x610: Serial.println(“7”); break;
case 0xE10: Serial.println(“8”); break;
case 0x110: Serial.println(“9”); break;
case 0x910: Serial.println(“0”); break;
case 0x490: Serial.println(“Increase volume”); break;
case 0xC90: Serial.println(“Decrease volume”); break;
case 0x90: Serial.println(“Increase channel”); break;
case 0x890: Serial.println(“Decrease channel”); break;
default: Serial.println(“Other button”);
}
delay(500);
}
|
Leave a Reply