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

Sistema Automático de Controle de Portão Ferroviário - Circuito e Código Fonte

Circuito controlador de portão ferroviário automático de alta velocidade usando Arduino e sensores ultrassônicos

Neste tutorial, aprenderemos como projetar um sistema de controle automático de portão ferroviário de alta velocidade simples e eficiente. Esta é uma abordagem relativamente simples para este projeto, mas você pode tomar isso como um bloco de construção básico e, em modificações posteriores, também podemos rastrear a velocidade do trem com o qual ele passa e muito mais. Mas antes de ir direto para o 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 os esforços/intervenções humanas. Neste tutorial vamos explicar como automatizar um portão ferroviário com Arduino usando servo motor junto com o software Proteus.

A complexidade da automação pode variar de um controle básico “ligar/desligar” a algoritmos multivariáveis ​​altamente complexos. Os sistemas de controle para fins de automação podem ser em malha aberta ou em malha fechada, o que significa que podem funcionar com um único parâmetro de entrada ou em resposta à saída alimentada 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 o risco de acidentes devido a erros induzidos por humanos, é muito importante deixarmos essas tarefas serem tratadas por essas máquinas inteligentes.

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

Prós

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

Contras

  1. Suscetível a ameaças de segurança
  2. O custo de desenvolvimento pode exceder a previsão
  3. Alto custo de configuração
  4. Causa do 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 estamos tentando automatizar um portão ferroviário para abrir e fechar sempre que o circuito detectar um trem ao longo da via e também iniciaremos uma campainha ou um alarme representando a velocidade do trem é superior a um determinado limite e, para conseguir isso, vamos usar os dois componentes eletrônicos amplamente utilizados, ou seja, Arduino e servo motor.

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 o sensor IR módulo e depende de nossa escolha, o que queremos usar e o que está prontamente disponível para nós.

Componentes necessários para o controlador de portão ferroviário

  1. Arduino UNO
  2. Sinalizador
  3. Sensor ultrassônico (HC-SR04)
  4. Servomotor

Software necessário:

  1. Arduíno IDE
  2. Proteu

Diagrama de circuito do controlador de portão ferroviário 


Descrição do componente

Arduino UNO

Arduino é basicamente uma placa de desenvolvimento que é de código aberto e utiliza principalmente o microcontrolador Microchip ATmega328P e é fabricada pela Arduino.cc. A placa vem com um conjunto de pinos de entrada/saída compostos de digitais e analógicos que podem ser conectados 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 programáveis ​​com a ajuda de um IDE (Ambiente de Desenvolvimento Integrado) que vem junto que é o Arduino IDE. O programado é gravado através de um cabo USB tipo B. Os métodos de energização da placa podem ser pelo cabo USB ou conectando uma fonte de 9 volts dc. A faixa de tensão aceitável varia de 7 a 20 volts. Pelo ponto de vista de design e funcionamento, não é muito diferente de seus outros membros da família, como o Arduino Nano e o Arduino Leonardo.

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


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 a distância que o objeto está localizado de um determinado ponto de referência. Possui basicamente 4 pinos;

Como funciona o ultrassom? O transmissor (trig) envia um sinal sonoro de alta frequência que é então refletido pelo objeto e então o sinal refletido é então recebido no receptor (eco). Portanto, a velocidade do som no ar é conhecida por nós, podemos calcular a distância. Este sensor é extremamente popular entre os criadores de Arduino que o usam em seus projetos diariamente e para acionar esse sensor precisamos de um pulso alto de 10 microssegundos ou mais.

Recursos do sensor ultrassônico:-

Post Relacionado:Sistema Automático de Rega e Irrigação da Planta – Circuito, Código e Relatório do Projeto


Servomotor

Estes são um tipo especial de motores que são empregados para movimentos muito específicos em um determinado ângulo. É um atuador rotativo ou linear que permite um controle preciso em determinadas posições angulares ou lineares. O servomotor não é uma entidade única, mas uma combinação de um motor adequado junto com um sensor que fornece o feedback da posição atual do motor.

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

Esses motores têm um pouco de semelhança com os motores de passo que representam o controle de malha aberta. Os motores de passo têm etapas embutidas nas quais giram, mas com a falta de um sistema de feedback, seu uso é limitado a uma aplicação específica para a qual foram projetados e fabricados.

Essa falta de feedback é o que diferencia um servo motor desses motores de passo e dá a eles uma vantagem, pois são dinâmicos e podem ser personalizados de acordo com a tarefa em mãos com um pouca alteração na programação. Um módulo controlador dedicado geralmente é fornecido com o servomotor pelo fabricante.

Mecanismo – É basicamente um servomecanismo de malha fechada que utiliza o 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 é emparelhado com o motor para fornecer o feedback de posição e velocidade ao controle, o 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 se mover em qualquer direção para finalmente reduzir o sinal de erro a zero. Quando esta condição é alcançada, a saída desejada é alcançada. Os servomotores aprimorados e sofisticados possuem um codificador óptico rotativo no eixo de saída para medir sua velocidade.


Sinalizador

A campainha pode ser de natureza mecânica, eletrônica, eletromecânica e piezoelétrica. Geralmente utilizamos o eletrônico em fornos, game shows e eletrodomésticos etc. Esses buzzers possuem circuito interno. O som produzido é devido ao movimento de um disco. O disco é ferromagnético por natureza. É um dispositivo acionado por corrente que tem uma fonte de tensão como entrada para ele.


Trabalho do Controlador Automático de Portão Ferroviário

Neste circuito usamos sensores ultrassônicos e servomotores para replicar o funcionamento de uma travessia ferroviária. Ambos os sensores são acionados com a ajuda de pinos de gatilho conectados à placa Arduino e a distância é calculada. O funcionamento adicional do circuito depende completamente da distância medida.

Se a pista estiver livre, os servomotores não farão nada, mas se um trem chegar em ambos os lados da pista, a distância medida por um dos sensores variará da distância anterior. Desta forma, seremos informados sobre a chegada do trem e em pouco tempo, o Arduino colocará seus pinos digitais 7 e 8 em HIGH.

Esses pinos são conectados com os dois servomotores e então o servo cobrirá uma distância angular de 90 o e, portanto, o portão será fechado para bloquear o caminho para os veículos. Quando o trem se afastar do outro sensor, o Arduino será notificado sobre a partida do trem e os servomotores voltarão a atingir sua posição anterior para abrir o portão.

Pensando na segurança das pessoas, adicionamos mais um recurso a este circuito e trata-se de alertá-los no caso de um trem de alta velocidade. Isto é conseguido calculando o tempo entre as transições de dois sensores em um ciclo. Se o tempo for inferior a um determinado valor, a campainha emitirá um som de zumbido para alertar as pessoas nas proximidades do cruzamento.

Código-fonte e explicação do projeto

Neste esboço, definimos cinco variáveis ​​do tipo inteiro e quatro do tipo longo. As variáveis ​​tr1, tr2, eh1 e eh2 são usadas para enviar pulso e receber valor de tempo em microssegundos enquanto as variáveis ​​val1, val2, dis1 e dis2 são usadas para armazenar valores de tempo em microssegundos e distância em cm. A taxa de transmissão é definida em 9600 bits/s e é responsável pela comunicação entre a placa e o monitor serial.

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

As funções incluídas na configuração void() serão executadas apenas uma vez durante a execução e sua tarefa é definir a taxa de transmissão e o 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);
}

De acordo com o funcionamento necessário, medimos continuamente a distância acionando o sensor ultrassônico e a distância calculada é definida como o parâmetro da declaração condicional. Se a condição for verdadeira, a variável “pos” incrementa seu valor para acionar os servomotores e quando a condição for considerada incorreta, a variável “pos” diminui seu valor para trazer os servomotores de volta à sua posição anterior.

Há mais uma declaração condicional que verifica se dois sensores estão detectando o objeto rapidamente, então ele definirá o pino 11 alto para alimentar a campainha para alertar as pessoas. Todos esses processos são englobados em void loop() e são repetidos até que o Arduino seja resetado ou o fornecimento seja interrompido.

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 o Proteus para simulação: Na IDE do seu Arduino clique em File>Preferences e depois em “Show verbose output” verifique as opções de compilação e upload. E, ao compilar o código na janela abaixo selecione e copie o local do arquivo hexadecimal e no Proteus dê um duplo clique no Arduino e cole o local do arquivo na opção Arquivo de programa e clique em OK. Agora seu circuito estará pronto para simulação no Proteus.

Projetos relacionados:


Tecnologia industrial

  1. Porta NOR Trava S-R
  2. Falhas prováveis ​​em sistemas comprovados
  3. TTL NOR e portas OR
  4. Circuitos de controle do motor
  5. Circuito do sistema de abertura automática de porta detectado por movimento e funcionamento
  6. Sistema de Controle M-TECH CNC
  7. Controle Automático de Trem
  8. Sistema de alarme Arduino:SERENA
  9. Arduino Control Center
  10. Monitoramento em nuvem, um sistema de controle remoto