Optoacopladores

Descrición

cny70-2
[tecnoloxia.org CC By-SA]
Os sensores ópticos reflexivos, tamén coñecidos como optoacopladores, consisten na acción conxunta dun díodo emisor de luz (normalmente infravermella IR) e un fototransistor ou fotodíodo que detecta a luz do LED despois de rebotar sobre un obxecto.

Trátase dun sensor analóxico que nos dá un valor de voltaxe que varía en función da intensidade da luz rebotada, pero tamén se pode utilizar de maneira dixital utilizando un circuíto específico.

As súas aplicacións son diversas, pois poden usarse como sensores de proximidade de curto alcance, como sensores de presencia, para a detección de cores, en robots segue-liñas, etc.

Son diversos os sensores ópticos reflexivos que soen utilizarse con Arduíno. Nesta sección veremos os optoacopladores TCRT5000 ou CNY70 e os módulos para Arduíno TCRT5000 e FC-51. Poderías utilizar tamén un díodo IR e un fototransistor por separado se dispós deles.

TCRT5000
1mm → 10mm
analóxico
sensorir_tcrt5000
CNY70
0 → 5mm
analóxico
sensorir_cny70
Módulo TCRT5000
1mm → 10mm
analóxico/dixital
moduloir_trct5000

Módulo IR FC-51
2cm → 30cm
dixital
moduloir_fc-51

Montaxe

Selecciona a lapela correspondente ao sensor que vaias usar

1. TCRT5000

O sensor TRCT5000 detecta obxectos a curta distancia (0 → 10mm) e é quen de distinguir distintas cores. Utilízase moito para distinguir entre branco e negro nos robots seguidores de liña, pero pódese utilizar tamén como detector de presencia.

A conexión realízase segundo os seguintes esquemas (un ou outro). O sinal emitido é analóxico, polo que se conectará a unha entrada analóxica do Arduíno, por exemplo A0.

sensorir_tcrt5000 sensorir_tcrt5000_conexion

[tecnoloxia.org CC By-SA]

2. CNY70

O sensor CNY70 detecta obxectos a curta distancia (0 → 5mm) e pode distinguir distintas cores. Utilízase moito para distinguir entre branco e negro nos robots seguidores de liña, pero pódese utilizar tamén como detector de presencia.

A conexión realízase segundo o seguinte esquema. O sinal emitido é analóxico, polo que se conectará a unha entrada analóxica do Arduíno, por exemplo A0.

cny70

sensorir_cny70_conexion
[tecnoloxia.org CC By-SA]

3. TCRT5000

moduloir_trct5000A distancia de detección do módulo TCRT5000  é moi curta (1→10 mm). Soe utilizarse en robots seguidores de liñas, pois pode distinguir entre branco e negro, e tamén como detector de presencia.

Ten dúas saídas. Podes conectar unha ou a outra en función das necesidades do teu proxecto:

  • A0: Sinal analóxico (por exemplo pin A0) Permite distinguir intensidades de luz en función do valor obtido.
  • Do: Sinal dixital (por exemplo pin dixital 7) O valor obtido será LOW cando detecte un obxecto (ou a luz reflicta sobre branco) e HIGH cando non (ou a luz reflicta sobre negro) .

Movendo o cursor do potenciómetro podes axustar a distancia de detección.

reflective-sensor-pin-outs
[from qqtrading.com.my]

4. IR FC-51

moduloir_fc-51

O módulo IR FC-51 detecta obxectos a maior distancia có TCRT5000 (2cm → 30cm).

A saída OUT é dixital, e conectarémola a unha entrada dixital do Arduíno, por exemplo ao pin dixital 7.

O valor obtido será LOW cando detecte un obxecto e HIGH cando non.

Movendo o cursor do potenciómetro podes axustar a distancia de detección.

arduino-ir-collision-detection-module-pin-outs
[from qqtrading.com.my]

Programas

Os programas son os mesmos para calquera dos sensores, distinguindo entre se o sinal do sensor é analóxico ou dixital. Selecciona a lapela correspondente ao que vaias usar.

1. Lectura analóxica

1. Lectura analóxica.

Válido para calquera dos sensores anteriores agás o módulo IR FC-51 que é dixital.

Neste programa imos mostrar na consola os valores lidos polo sensor nunha entrada analóxica. Pon o sensor nunha posición fixa e observa os valores lidos en diferentes casos: No baleiro sen nada diante e coa presenza de obxectos de diferentes cores e a diferentes distancias.

// Lectura analóxica dun optoacoplador 

// Declaración de variables

int sensor= A0;       // Sinal do sensor no pin analóxico A0
int valor;            // Valor lido no pin analóxico A0

// Configuración

void setup() {
  Serial.begin(9600);
  while(!Serial);
}

// Programa

void loop() {
  
  valor = analogRead(sensor);
  Serial.println(valor);
  delay(100);        
  
}

Agora imos facer que uns LEDs se acendan ou apaguen en función do valor lido polo sensor. Axusta o rango segundo sexa o sensor utilizado e os valores obtidos ante a presenza de obxectos de diferentes cores ou distancias.

// Lectura analóxica dun optoacoplador con LEDs de indicación

// Declaración de variables

int led1 = 13; 
int led2 = 12;        
int sensor= A0;       // Sinal do sensor no pin analóxico A0
int valor;            // Valor lido no pin analóxico A0

// Configuración

void setup() {
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  Serial.begin(9600);
  while(!Serial);
}

// Programa

void loop() {
  
  valor = analogRead(sensor);
  Serial.println(valor);

  
  if(valor<200){
    digitalWrite(led1, HIGH);
    digitalWrite(led2, LOW);
  }
  else {
    digitalWrite(led2, HIGH);
    digitalWrite(led1, LOW);
  }
  
  delay(100);        
  
}

2. Lectura dixital

2. Lectura dixital.

Válido para os módulos TCRT5000 e IR FC-51. Tamén se podería usar nos sensores TCRT5000 e CNT70, pero necesitariamos outro circuíto cun potenciómetro que nos permitise axustar a sensibilidade, polo que nestes casos é máis práctico utilizar o sinal analóxico. No caso dos módulos, a sensibilidade pódese axustar movendo o cursor do potenciómetro.

Imos facer un programa que indica se o módulo IR FC-51 detecta un obxecto ou non, ou, co módulo TCRT5000 apuntando cara ao chan a unha distancia fixa, se detecta branco ou negro. En ambos casos teremos a saída dixital do módulo conectado ao pin dixital 7 do Arduíno.

// Lectura dixital dun optoacoplador 

// Declaración de variables

int LED = 13;           // LED conectado no pin 13
int sensorPin = 7;      // Sensor conectado ao pin 7 
int deteccion;          // Variable de lectura da entrada dixital do sensor

// Configuración

void setup() {
  pinMode(LED, OUTPUT);
  Serial.begin(9600);
  while(!Serial);
}

// Programa

void loop() {
  
  deteccion = digitalRead(sensorPin);
  
  if (deteccion == LOW) {
    Serial.println("Obstaculo!");
    digitalWrite(LED, HIGH);
  } 
  else {
    digitalWrite(LED, LOW);
  }
  delay(100);
  
}

Propostas

  • Detección: Pon o sensor nunha posición fixa e observa os valores lidos no baleiro sen nada diante e coa presenza dun obxecto a unha distancia determinada (curta). Despois fai que cando detecte a presenza do obxecto soe unha alarma cun zumbador.
  • Cores: Pon o sensor nunha posición fixa e observa os valores lidos coa presenza de obxectos de diferentes cores e a unha distancia determinada (curta). Deberá acenderse un LED cando note presenza, e na consola deberá mostrarse se o obxecto detectado é branco, negro ou verde.
  • Contador: Incorpora un contador que vaia contando os obxectos que se detectan despois de reiniciar o programa (incorpora un pulsador para o reset). No caso de que sexan obxectos de diferentes cores, fai que conte cantos obxectos de cada cor se van detectando.
  • MeArm: As prácticas anteriores (cores e contador) poden servir para incorporar a un programa clasificador de pezas de cores co brazo robótico meArm.

 


Deixa un comentario