Postagem em destaque

Controle PID de Potência em Corrente Alternada - Arduino e TRIAC - Parte I

Este post é o primeiro de uma série de seis que escrevi tratando de controle de potência e PID (controle proporcional, integral e derivativo...

sexta-feira, 26 de julho de 2013

Sensor refletivo com filtro polarizado e Aduino - usando pullup interno

Dia desses apareceu uma turma de alunos com um projeto de um detetor que, funcionando em cima de uma esteira, detectasse num engradado de cerveja onde não houvesse garrafas. A partir daí, o sistema vai colocar garrafas para completar o engradado.

Começamos a trabalhar no projeto do jeito que eu normalmente faço: um curso de Arduino & programação e a partir daí começamos a estudar os detalhes do projeto. Avaliamos o uso de sensores de ultrassom para detectar as posições vazias e parece que vai dar certo. Parece que vão servir, eu avaliei os dois tipos de sensores que analisei em um post anterior.

Outro teste que fizemos foi com um sensor reflexivo com vidro polarizado. Esse sensor será usado para detectar a passagem das caixas pela esteira. Aqui  informações sobre ele.

É um sensor feito para a indústria, robusto e pode ser alimentado com 12 a 240 Vcc ou Vca.
Ligamos o bicho numa fonte de 24 Vcc e ele funcionou. Liguei então o relé ao Arduino. Normalmente, eu faria isso ligando o relé através de um circuito pull down, conforme explico aqui em outro post. Acontece que dia desses eu descobri que o Arduino tem internamente resistores PULLUP, então resolvi testar essa feature. E não é que funcionou?

Sensor de frente:



 De lado:



De cima, mostrando LEDs de controle (POWER e acionamento) e dip-switch de configuração.



















Aqui, o dito ligado ao Arduino. A conexão é simples: conecta-se um pino digital do Arduino a um fio do relé e o outro fio ao terra do Arduino, ou seja, não tem mais o resistor pull down. E a fonte industrial de 24V, claro, para alimentar o sensor.



Abaixo, o fonte do programa de testes:

void setup()
{
  pinMode(5,INPUT_PULLUP);
  Serial.begin(9600);
}

void loop()
{
  Serial.println(digitalRead(5));
}


Observe a definição do pinMode como INPUT_PULLUP, que indica que, além de usar o pino como INPUT deve ser ligado o resistor de pullup.

O efeito do resistor é o seguinte: se o relé está aberto, ou seja, o pino do Arduino não está conectado ao terra, o resistor "pull up" (empurra prá cima) o valor da porta, ou seja, ela será levada a 5V. Assim, quando o o sensor não estiver detectando nada, já que ele é normalmente aberto, o Serial.println irá imprimir o valor 1, correspondente aos 5V lidos no pino. Quando o sensor detectar algo entre ele e o espelho ele fechará o relé, conectando o pino 5 à terra, ou seja, a porta lerá 0V, ou o valor zero.

Por fim, vídeo do sensor funcionando. Essa é uma prova de que o Arduino pode perfeitamente ser conectado a sensores usados pela indústria, não só sensores de "brinquedo" ou desenhados especificamente para ele.