Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Tecnologia industrial

Controlador Automático de Cancela Ferroviária: Circuito Arduino & Código Fonte

Circuito de Controlador Automático de Cancela Ferroviária de Alta Velocidade Usando Arduino e Sensores Ultrassônicos

Neste tutorial, aprenderemos como projetar um sistema simples e eficiente de controlador automático de cancela ferroviária de alta velocidade. Esta é uma abordagem relativamente simples para este projeto, mas pode considerar como bloco de construção básico e em modificações futuras também podemos rastrear a velocidade do trem com que passa e muito mais. Mas antes de pular direto ao tutorial, precisamos ter uma ideia sobre o que é automação e o que exatamente se pode esperar dela.

Automação basicamente significa criar um método para reduzir ou eliminar esforços/intervenção humana. Neste tutorial, explicaremos como automatizar uma cancela ferroviária com Arduino usando motor servo junto com o software Proteus.

A complexidade da automação pode variar de um controle básico "liga/desliga" a algoritmos multivariáveis altamente complexos. Os sistemas de controle para automação podem ser de malha aberta ou fechada, significando que podem funcionar com um único parâmetro de entrada ou em resposta à saída realimentada como entrada, como no caso de sistemas de malha fechada. A automação na indústria ferroviária é uma necessidade importante pois estamos entrando na era avançada e para reduzir riscos de acidentes devido a erros humanos, é muito importante que estas tarefas sejam realizadas por máquinas inteligentes.

Como no caso de toda tecnologia, a automação também tem seus prós e contras:

Prós

  1. Aumento de produtividade
  2. Qualidade previsível (Melhoria da Qualidade)
  3. Robustez aumentada
  4. Grande consistência de saída
  5. Redução de custos com mão de obra humana
  6. Altamente preciso
  7. Reduz esforços humanos em trabalhos monótonos

Contras

  1. Susceptível a ameaças de segurança
  2. Custo de desenvolvimento pode exceder a previsão
  3. Alto custo de implementação
  4. Causa de desemprego em muitos setores

Os prós mencionados superam em muito os contras e é por isso que o mundo inteiro está entrando na era da automação.

Neste tutorial, tentamos automatizar uma cancela ferroviária para abrir e fechar sempre que o circuito detectar um trem ao longo do trilho e também iniciar um buzzer ou alarme indicando que a velocidade do trem é superior a um limite específico. Para isso, usaremos dois componentes eletrônicos muito usados: Arduino e motor servo.

O sensor que vamos usar neste tutorial é o sensor ultrassônico, mas não é obrigatório usar este sensor; também podemos fazer uma versão diferente deste projeto usando módulo sensor IR e depende da nossa escolha, o que queremos usar e o que está prontamente disponível.

Componentes Necessários para Controlador de Cancela Ferroviária

  1. Arduino UNO
  2. Buzzer
  3. Sensor Ultrassônico (HC-SR04)
  4. Motor Servo

Software Necessário:

  1. Arduino IDE
  2. Proteus

Diagrama de Circuito do Controlador de Cancela Ferroviária

Controlador Automático de Cancela Ferroviária: Circuito Arduino & Código Fonte

Descrição dos Componentes

Arduino UNO

Arduino é basicamente uma placa de desenvolvimento open source que utiliza principalmente o microcontrolador Microchip ATmega328P e é fabricada pela Arduino.cc. A placa vem com um conjunto de pinos de entrada/saída compreendendo digitais e analógicos que podem ser interfaceados a diferentes placas de expansão e circuitos externos.

A placa vem com 14 pinos digitais junto com 6 pinos analógicos que são utilizados ou tornados programáveis com a ajuda de uma IDE (Ambiente de Desenvolvimento Integrado) que vem junto, o Arduino IDE. O programa é gravado via cabo USB tipo B. Métodos de alimentação da placa podem ser pelo cabo USB ou conectando alimentação 9V CC. Faixa de tensão aceitável varia de 7 a 20 volts. Do ponto de vista de design e funcionamento, não é muito diferente de seus outros familiares, Arduino Nano e Arduino Leonardo.

STK500 ainda é o protocolo original para Uno comunicar. A principal diferença de seus predecessores é que não usa o chip conversor USB-para-serial FTDI. Pelo contrário, usa ATmega 16U2 (Atmega8U2 até versão R2) que é programado como conversor USB-para-serial.

Controlador Automático de Cancela Ferroviária: Circuito Arduino & Código Fonte

Sensor Ultrassônico (HC-SR04)

O sensor ultrassônico é o sensor básico que usamos para determinar a distância de um objeto. De outra forma, podemos dizer que é usado para medir o quão longe o objeto está localizado de um ponto de referência particular. Tem basicamente 4 pinos;

Como o ultrassônico funciona? O transmissor (trig) envia um sinal sonoro de alta frequência que é refletido pelo objeto e o sinal refletido é recebido no receptor (echo). Como a velocidade do som no ar é conhecida, podemos calcular a distância. Este sensor é extremamente popular entre entusiastas de Arduino que o usam em projetos diariamente e para acionar este sensor precisamos de um pulso alto de 10 microssegundos ou mais.

Características do sensor ultrassônico:

Artigo Relacionado: Sistema Automático de Rega & Irrigação de Plantas – Circuito, Código & Relatório de Projeto

Controlador Automático de Cancela Ferroviária: Circuito Arduino & Código Fonte

Motor Servo

Estes são um tipo especial de motores empregados para movimento muito específico em um ângulo particular. É um atuador rotativo ou linear que permite controle preciso em certas posições angulares ou lineares. Motor servo não é uma entidade única, mas uma combinação de um motor adequado junto com um sensor que dá o feedback da posição atual do motor.

Para usar este motor servo, vários outros módulos avançados devem ser usados, pois não é similar em termos de facilidade de uso ao motor CC. Estes motores são basicamente usados em robótica e indústrias de manufatura em larga escala.

Estes motores têm pequena semelhança com motores de passo que representam controle de malha aberta. Motores de passo têm passos embutidos nos quais giram, mas com a falta de sistema de feedback, seu uso é limitado a uma aplicação específica para a qual foram projetados e fabricados.

Esta falta de feedback é o que diferencia o motor servo destes motores de passo e dá vantagem, pois são dinâmicos e podem ser personalizados conforme a tarefa com pequena alteração na programação. Um módulo controlador dedicado é geralmente fornecido com o motor servo pelo fabricante.

Mecanismo – É basicamente um servomecanismo de malha fechada que utiliza sistema de feedback para atualizar o movimento e a posição final do rotor. A entrada para o controle do motor pode ser analógica ou digital.

Um codificador de algum tipo é acoplado ao motor para dar feedback de posição e velocidade ao controle que gera um sinal de erro até que a saída desejada não seja alcançada. E para reduzir este sinal de erro, o motor pode mover em qualquer direção para finalmente reduzir o sinal de erro a zero. Quando esta condição é alcançada, a saída desejada é atingida. Servomotores avançados e sofisticados têm codificador óptico rotativo no eixo de saída para medir sua velocidade.

Controlador Automático de Cancela Ferroviária: Circuito Arduino & Código Fonte

Buzzer

Buzzer pode ser de natureza mecânica, eletrônica, eletromecânica e piezoelétrica. Geralmente usamos o eletrônico em fornos, shows de jogos e eletrodomésticos. Estes buzzers têm circuito interno. O som produzido é devido ao movimento de um disco. O disco é ferromagnético. É um dispositivo controlado por corrente que tem fonte de tensão como entrada.

Controlador Automático de Cancela Ferroviária: Circuito Arduino & Código Fonte

Funcionamento do Controlador Automático de Cancela Ferroviária

Neste circuito usamos sensores ultrassônicos e motores servo para replicar o funcionamento de uma passagem de nível. Ambos sensores são acionados com a ajuda dos pinos de gatilho ligados à placa Arduino e a distância é calculada. O funcionamento do circuito depende completamente da distância medida.

Se o trilho está livre, os motores servo não farão nada, mas se um trem chegar em qualquer lado do trilho, a distância medida por um dos sensores variará da distância anterior. Dessa forma, seremos informados sobre a chegada do trem e imediatamente, o Arduino definirá seus pinos digitais 7 e 8 como ALTO.

Estes pinos estão ligados aos dois motores servo e então o servo percorrerá uma distância angular de 90° e a cancela fechará para bloquear o caminho para veículos. Quando o trem se afastar do outro sensor, ele notificará o Arduino sobre a partida do trem e os motores servo voltarão à posição anterior para abrir a cancela.

Considerando a segurança das pessoas, adicionamos mais uma característica a este circuito: alertá-las em caso de trem de alta velocidade. Isso é conseguido calculando o tempo entre as transições dos dois sensores num ciclo. Se o tempo for menor que um certo valor, o buzzer fará um som para alertar pessoas nas proximidades da passagem.

Código Fonte do Projeto & Explicação

Neste sketch, definimos cinco variáveis do tipo inteiro e quatro do tipo long. Variáveis tr1, tr2, eh1 e eh2 são usadas para enviar pulso e receber valor de tempo em microssegundos, enquanto variáveis val1, val2, dis1 e dis2 armazenam valores de tempo em microssegundos e distância em cm. Taxa de transmissão (baud rate) definida para 9600 bits/seg, responsável pela comunicação entre placa e monitor serial.

const int tr1 = 13, eh1 = 12, tr2 = 3, eh2 = 2;; int bz = 11; unsigned long val1, dis1, val2, dis2; #include <Servo.h> Servo myservo1; Servo myservo2; int pos=-1; 

Funções incluídas no void setup() rodarão apenas uma vez durante execução e sua tarefa é definir taxa de transmissão e modo do pino como entrada ou saída.

void setup() { // put your setup code here, to run once: pinMode(tr1, OUTPUT); pinMode(tr2, OUTPUT); pinMode(bz, OUTPUT); pinMode(eh1, INPUT); pinMode(eh2, INPUT); myservo1.attach(8); myservo2.attach(7); Serial.begin(9600); } 

Conforme o funcionamento requerido, medimos continuamente a distância acionando o sensor ultrassônico e a distância calculada é definida como parâmetro da condição. Se a condição for verdadeira, a variável "pos" incrementa seu valor para acionar os motores servo e quando a condição for falsa, a variável "pos" decrementa seu valor para trazer os motores servo de volta à posição anterior.

Há mais uma condição que verifica se dois sensores estão detectando o objeto rapidamente, então definirá o pino 11 alto para alimentar o buzzer e alertar as pessoas. Todos estes processos estão no void loop() e se repetem até o Arduino ser reiniciado ou a alimentação parada.

void loop() { // put your main code here, to run repeatedly: digitalWrite(tr1, LOW); delayMicroseconds(2); digitalWrite(tr1, HIGH); delayMicroseconds(10); digitalWrite(tr1, LOW); val1 = pulseIn(eh1, HIGH); dis1 = (val1 * 0.0343) / 2; digitalWrite(tr2, LOW); delayMicroseconds(2); digitalWrite(tr2, HIGH); delayMicroseconds(10); digitalWrite(tr2, LOW); val2 = pulseIn(eh2, HIGH); dis2 = (val2 * 0.0343) / 2; Serial.println("distance is "); Serial.println(dis1); Serial.println(dis2); if(dis1 < 100 || dis2 < 100) { if(pos==-1){ for (pos = 0; pos <= 90; pos += 1) { myservo1.write(pos); myservo2.write(pos); delay(15);} } delay(1000); digitalWrite(tr1, LOW); delayMicroseconds(2); digitalWrite(tr1, HIGH); delayMicroseconds(10); digitalWrite(tr1, LOW); val1 = pulseIn(eh1, HIGH); dis1 = (val1 * 0.0343) / 2; digitalWrite(tr2, LOW); delayMicroseconds(2); digitalWrite(tr2, HIGH); delayMicroseconds(10); digitalWrite(tr2, LOW); val2 = pulseIn(eh2, HIGH); dis2 = (val2 * 0.0343) / 2; if(dis1 < 100 || dis2 < 100) {digitalWrite(bz, HIGH); Serial.println("distance2 is "); Serial.println(dis1); Serial.println(dis2);} } else if(dis1 >= 100 && dis2 >= 100) { if(pos==91){ for (pos = 90; pos >= 0; pos -= 1) { myservo1.write(pos); myservo2.write(pos); delay(15); } } digitalWrite(bz, LOW); delay(200); } } 

Interface do Arquivo Hex com Proteus para Simulação: No seu Arduino IDE clique em Arquivo>Preferências e depois em "Show verbose output" marque ambas opções compilação e upload. E, após a compilação do código na janela abaixo, selecione e copie a localização do arquivo hex e no Proteus clique duas vezes no Arduino e cole a localização do arquivo na opção Program file e clique em OK. Agora seu circuito estará pronto para simulação no Proteus.

Projetos Relacionados:

Tecnologia industrial

  1. Latch SR com Portas NOR: Construção e Entendimento de Memória Digital
  2. Modos Comuns de Falha em Sistemas Elétricos Comprovados
  3. Entendendo Portas NOR e OR TTL: Análise de Circuito e Conversão
  4. Circuitos Avançados de Controle de Motor: Travamento, Parada e Técnicas de Atraso de Tempo
  5. Sistema Automático de Abertura de Porta com Sensor PIR: Circuito, Funcionamento e Aplicações
  6. M-TECH: Sistema Avançado de Controle CNC para Roteadores Apollo
  7. Controle Automático de Trem DIY com Arduino – Simples, Confiável e Personalizável
  8. SERENA: Sistema de Alarme Personalizado Arduino Mega 2560 com Touchscreen TFT LCD
  9. Central de Controle de Potência Arduino: N-FET, P-FET, Relé e Kit RTC
  10. Monitoramento na Nuvem: Sistema de Controle Remoto para Gestão de Ativos em Tempo Real