Open top menu
sexta-feira, 1 de março de 2013


No post de hoje vou mostrar o projeto de um CLP Shield, com ele é possível monitorar entradas e acionar saídas de acordo com a lógica programada, a placa desenvolvida permite conectar diretamente o Arduino Uno, facilitando a montagem, troca de componentes e conexões.

O projeto foi desenvolvido para uso do Arduino UNO, portando sua quantidade de IOs é limitada, o uso em conjunto com outro shield como relógio, ethernet, lcd implicará no funcionamento do circuito e deverá ser adaptado.

Shield e Arduino Uno

Vamos entender o que é uma CLP
O CLP foi idealizado pela necessidade de poder se alterar uma linha de montagem sem que tenha de fazer grandes modificações mecânicas e elétricas.
O CLP nasceu praticamente dentro da industria automobilística, especificamente na Hydronic Division da General Motors, em 1968, sob o comando do engenheiro Richard Morley e seguindo uma especificação que refletia as necessidades de muitas indústrias manufatureiras.
A idéia inicial do CLP foi de um equipamento com seguintes características resumidas:
  • 1. Facilidade de programação;
  • 2. Facilidade de manutenção com conceito plug-in;
  • 3. Alta confiabilidade;
  • 4. Dimensões menores que painéis de Relês, para redução de custos;
  • 5. Envio de dados para processamento centralizado;
  • 6. Preço competitivo;
  • 7. Expansão em módulos;
  • 8. Mínimo de 4000 palavras na memória.
Podemos didaticamente dividir os CLP's historicamente de acordo com o sistema de programação por ele utilizado:
  • 1ª Geração: Os CLP's de primeira geração se caracterizam pela programação intimamente ligada ao hardware do equipamento. A linguagem utilizada era o Assembly que variava de acordo com o processador utilizado no projeto do CLP, ou seja, para poder programar era necessário conhecer a eletrônica do projeto do CLP. Assim a tarefa de programação era desenvolvida por uma equipe técnica altamente qualificada, gravando-se o programa em memória EPROM, sendo realizada normalmente no laboratório junto com a construção do CLP.
  • 2ª Geração: Aparecem as primeiras “Linguagens de Programação” não tão dependentes do hardware do equipamento, possíveis pela inclusão de um “Programa Monitor “ no CLP, o qual converte (no jargão técnico, “compila”), as instruções do programa, verifica o estado das entradas, compara com as instruções do programa do usuário e altera o estados das saídas. Os Terminais de Programação (ou maletas, como eram conhecidas) eram na verdade Programadores de Memória EPROM. As memórias depois de programadas eram colocadas no CLP para que o programa do usuário fosse executado.

  • 3ª Geração: Os CLP's passam a ter uma Entrada de Programação, onde um Teclado ou Programador Portátil é conectado, podendo alterar, apagar, gravar o programa do usuário, além de realizar testes (Debug) no equipamento e no programa. A estrutura física também sofre alterações sendo a tendência para os Sistemas Modulares com Bastidores ou Racks.
  • 4ª Geração: Com a popularização e a diminuição dos preços dos microcomputadores (normalmente clones do IBM PC), os CLP's passaram a incluir uma entrada para a comunicação serial. Com o auxílio dos microcomputadores a tarefa de programação passou a ser realizada nestes. As vantagens eram a utilização de várias representações das linguagens, possibilidade de simulações e testes, treinamento e ajuda por parte do software de programação, possibilidade de armazenamento de vários programas no micro, etc.
  • 5ª Geração: Atualmente existe uma preocupação em padronizar protocolos de comunicação para os CLP's, de modo a proporcionar que o equipamento de um fabricante “converse” com o equipamento outro fabricante, não só CLP's, como Controladores de ProcessosSistemas Supervisórios, Redes Internas de Comunicação e etc., proporcionando uma integração a fim de facilitar a automação, gerenciamento e desenvolvimento de plantas industriais mais flexíveis e normalizadas, fruto da chamada Globalização. Existem Fundações Mundiais para o estabelecimento de normas e protocolos de comunicação. A grande dificuldade tem sido uma padronização por parte dos fabricantes.

Fluxo de funcionamento
Fontes utilizadas para pesquisa
http://www.ejm.com.br/download/Introducao%20CLP.pdf
http://pt.wikipedia.org/wiki/Controlador_l%C3%B3gico_program%C3%A1vel


Principais recursos
5 Entradas digitais optoacopladas.
6 Entradas analógicas.
8 Saídas por Relé.
1 Conexão serial .
1 Saída regulada 5V x 1A.

Lista de componentes
1- Arduino Uno.
5 - Fotoacopladores TIL111 com soquete.
1 - ULN2803 com soquete.
19 - Resistores 1K 1/8W  (marrom preto vermelho).
6 - Resistrores 10K 1/8W  (marrom preto laranja).
1- Placa de fenolite cobreada face simples 15cm x 15cm.
9 - Leds 5mm (8 para monitoramento das saídas e 1 para indicação de alimentação do circuito.
1- Regulador de tensão LM7809 com dissipador.
1- Regulador de tensão LM7805 com dissipador.
8 - Relés 12V 15A 1 polo 2 posições.
1 - Barra de pinos macho, serão usado 28 pinos.
9 - Bornes de encaixe TC 3 Vias para saída dos relés.
10 - Bornes de encaixe TC 2 Vias para entradas digitais, analógicas e alimentação.
4 - Espaçador de placa ECI-9,4 (opcional).
1 - Fonte de alimentação 12V 1A.


Placa de circuito impresso
Foi usado o processo de transferência térmica de tonner para confeção da placa de circuito impresso, no post construindo-um-rele-shield mostrei como funciona, então lembre-se, o circuito será espelhado na placa, se for usar outro processo, verifique se o circuito não ficará invertido.

Downloado do arquivo CLPShield no formato ExpressPCB

Versão alternativa do link para download via DropBox clique aqui

Dependendo da marca do relé, sua largura pode ter uma mínima variação e ficará apertado na placa, verifique e se necessário, afaste nas placas os relés.

Antes da corrosão da placa sugiro verificar se o tamanho e largura do pinos dos bornes comprados estão alinhados com as ilhas da placa, se necessário ajustem o alinhamento.

Componentes e conexões
Detalhes da solda dos componentes
Componentes

Como Funciona
A placa é alimentada por uma fonte de 12V, usa reguladores de tensão para alimentação do Arduino e para acionamento das entradas analógicas e digitais, No post construindo-um-rele-shield usamos um transistor para acionamento do relé, como na CLP Shield acionaremos 8 relés, vamos usar um circuito integrado para simplificar nossa montagem, mas nada impediria de usarmos os transistores. Usaremos optoacopladorers para isolarmos as entradas digitais do arduino e leds para monitoramento do acionamento das saídas.

Vamos conhecer os principais componentes do circuito.

LM7809
Regulador de tensão com entrada variável.
Saída constante de 9V
Máxima corrente na saída de 1A.
Encapsulamento com dissipador de calor (modelo TO-220).
Funciona de -40 a 125 graus.

Usado no circuito para alimentação do arduino.



1- Alimentação de entrada
2- GND
3- Saída 9V


LM7805
Regulador de tensão com entrada variável.
Saída constante de 5V
Máxima corrente na saída de 1A.
Encapsulamento com dissipador de calor (modelo TO-220).
Funciona de -40 a 125 graus.

Usado no circuito para acionamento das entradas analógicas e digitais.






1- Alimentação de entrada
2- GND
3- Saída 5V


ULN7809
O CI ULN2803 tem 8 entradas que podem controlar até 8 saídas, trabalha com correntes máximas de 500mA e tensão de até 50v. Internamente cada driver é composto por um transistor Darlington polarizados com resistores e diodos de proteção. Usado no circuito para acionar os relés.






FotoAcoplador TIL111
OptoAcopladores proporcionam a isolação de sinais em uma grande variedade de aplicações. Eles comutam ou transmitem sinais e informações ao mesmo tempo que isolam diferentes partes de um circuito.


Testando a placa
Para testar a placa vamos usar uma fonte de 12V, um giga de testes de chaves liga desliga e um shield de LDR, detalhes da ligação do LDR foram apresentados no post testando-nosso-rele-shield.





Vídeo do teste


Programa utilizado para o teste
/*
Sergio de Miranda e Castro Mokshin
01/02/2013
Todos os direitos reservados
 */

int EntradaDigital1 = 12;
int EntradaDigital2 = 11;
int EntradaDigital3 = 10;
int EntradaDigital4 = 9;
int EntradaDigital5 = 8;

int Saida1 = 0;
int Saida2 = 1;
int Saida3 = 2;
int Saida4 = 3;
int Saida5 = 4;
int Saida6 = 5;
int Saida7 = 6;
int Saida8 = 7;


int sensorLDRPin = A0;
int constanteAjuste = 400;


void setup() {              

  pinMode(EntradaDigital1, INPUT);  
  pinMode(EntradaDigital2, INPUT);  
  pinMode(EntradaDigital3, INPUT);  
  pinMode(EntradaDigital4, INPUT);  
  pinMode(EntradaDigital5, INPUT);  

  pinMode(Saida1, OUTPUT);  
  pinMode(Saida2, OUTPUT);  
  pinMode(Saida3, OUTPUT);  
  pinMode(Saida4, OUTPUT);  
  pinMode(Saida5, OUTPUT);  
  pinMode(Saida6, OUTPUT);  
  pinMode(Saida7, OUTPUT);  
  pinMode(Saida8, OUTPUT);    


  digitalWrite(Saida1, LOW);
  digitalWrite(Saida2, LOW);
  digitalWrite(Saida3, LOW);
  digitalWrite(Saida4, LOW);
  digitalWrite(Saida5, LOW);
  digitalWrite(Saida6, LOW);
  digitalWrite(Saida7, LOW);
  digitalWrite(Saida8, LOW);

}

void loop() {

 digitalWrite(Saida1, digitalRead(EntradaDigital1));
 digitalWrite(Saida2, digitalRead(EntradaDigital2));
 digitalWrite(Saida3, digitalRead(EntradaDigital3));
 digitalWrite(Saida4, digitalRead(EntradaDigital4));
 digitalWrite(Saida5, digitalRead(EntradaDigital5));



  int leituraSensorLDR = 0;
  leituraSensorLDR = analogRead(sensorLDRPin);

  if (leituraSensorLDR >= constanteAjuste) {
    digitalWrite(Saida6, LOW);
    digitalWrite(Saida7, HIGH);  
    digitalWrite(Saida8, LOW);  
  }
  else
  {
    digitalWrite(Saida6, HIGH);    
    digitalWrite(Saida7, LOW);    
    digitalWrite(Saida8, HIGH);        
  }


}
Tagged

43 comentários :

  1. Cara ficou muito bom, vc simulou no protheus no orcad

    ResponderExcluir
  2. Meus parabéns , preciso desenvolver algo bem semelhante, será que vc podia me dar uma dica de como vc desenvolver.

    ResponderExcluir
  3. Preciso desenvolver um projeto que contenha 8 entradas digitais e 4 saidas a relé,e o arduino precisa ficar bem do jeito que vc colocou, quais são os procedimentos que vc usou para desenvolver essa placa, usou algum programa o que vc poder me ajudar eu agradeço.

    ResponderExcluir
    Respostas
    1. Douglas, Esse projeto pode servir de base para o seu, ele possui 5 entradas digitais, 8 saidas com relés e 4 entradas analógicas. Se programar para ler na entrada análogica 0V ou 5V você consegue facilmente simular uma entrada digital. De uma olhada nos posts de montagem do relé shield e da placa de comando do RaspBerry que tem algumas dicas de montagem da placa. Instale o programa ExpressPCB para impressão ou alteração do layout.

      Excluir
  4. Muito legal!
    Não há necessidade de doido nos relés?
    Eu fiz algo bem parecido no meu TCC, mas tive grandes problemas com interferências nos relés. Eles acionavam sozinhos.



    ResponderExcluir
    Respostas
    1. Alexei, Boa noite!

      Como estou usando o ULN2803 ele já possui os diodos internamente, não é necessário incluir no circuito, agora se for usar um transistor para chaveamento deve usar o diodo, no post de construção do relé shield ele é usado no circuito.

      Excluir
  5. Cara se vc tiver apostilas ou tutoriais de qual o procedimento vc usou para desenvolver essa placa e puder me passar eu agradeço, pois pretendo desenvolver uma placa parecida.

    ResponderExcluir
  6. digo hardware bem parecido, so que minha programação será diferente, será para uso especifico.

    ResponderExcluir
  7. Cara, tem como programar em Ladder no arduino? Se usa qual conversor?

    ResponderExcluir
    Respostas
    1. Pelo que ví na internet parece que é possível, existem algumas ferramentas, mas nunca me interessei e tentei.

      Excluir
  8. Bom dia! Você não vende a placa sem os componentes? Somente para fins didáticos.

    ResponderExcluir
    Respostas
    1. Carlos, a placa possui trilhas finas e ilhas pequenas, na fenolite tem que soldar corretamente senão elas são danificadas, dessa forma fica inviável a comercialização. Estou estudando em encomendar um lote e colocar algumas a venda.
      Abs

      Excluir
  9. Você por acaso teria o projeto da placa (desenho) feito no Protheus? Teria como disponibilizar (se sim)?

    ResponderExcluir
  10. Muito bom seu clp, mas o mais interessante de tudo isso foi a programação que utiliza o poder de varredura de muitas entradas. O que eu acho mais dificil é programar em c++ no arduino esse processo multi tarefa e voce utilizou poucas palavras e funcionou. eu estava tentando programar isso desde do dia que comprei a placa uno. já estava desistindo dessa forma de programação.

    ResponderExcluir
  11. show mano bem interresante seu CLP
    parabéns parceiro.

    ResponderExcluir
  12. tens o projeto no protheus podes disponibilizar?

    parabéns ficou ótimo....

    ResponderExcluir
  13. Boa noite , qual foi o programa utilizado para fazer o desenho da placa?

    ResponderExcluir
  14. Olá Sergio, posso utilizar um Arduino Mega com Shield de rede? sabe me dizer se ele encaixa no esquema apresentado ?

    ResponderExcluir
    Respostas
    1. Boa Noite Virgilio!
      O Arduino Uno com o Shield de Ethernet não é compatível porque todas as IOs do Arduino Uno estão conectadas com a CLP, ocorrerá um conflito entre a Shield CLP e a Shield Ethernet.
      Com um Arduino Mega você não teria problelma, mas terá que jumpear com fios as IOs disponíveis do Arduino Mega com o Shield CLP.

      Excluir
  15. Boa noite Sérgio de Miranda,
    Tem como vc me enviar o arquivo do Express PCB para mim desta placa?
    Pois preciso muito, a sua placa é exatamente o que eu preciso...me de esta ajuda por favor.
    se puder, me envie para: fpower.filipe@gmail.com
    Pois o link para download do arquivo nesta página encontra-se indisponível no google drive.
    até breve, boa noite !

    ResponderExcluir
    Respostas
    1. Boa Noite Filipe,
      O link está OK, procure o texto abaixo, a palavra "CLPShield" é o link para download, ao clicar, aparecerá uma mensagem informando que não tem visualização, mas clique no botão para download do arquivo.

      Texto> "Downloado do arquivo CLPShield no formato ExpressPCB"

      Esse no layot do site está conflitando os layouts links

      Excluir
  16. Sergio de Miranda, boa tarde meu caro,
    Quando lhe mandei essa msg, vi que seu link arremetia pro download, mas chegando lá vc vê o botão azul de download clica nele, mas este botão azul não está ativado...e como se não tivesse nenhum link..é semelhante a clicar varias vezes nesse desenho aqui da página (as trilhas de placa) se clicar lá nada acontece....me entende ?

    ResponderExcluir
    Respostas
    1. Filipe, eu coloquei um link alternativo para o dropbox, verifique se consegue baixar, se não, me envie um email que eu respondo com o arquivo.

      Excluir
  17. Tem alguma dica de como eu posso inserir um ethernet shield nele?

    ResponderExcluir
    Respostas
    1. Gustavo,

      Você não pode usar os pinos que o ethernet shield conecta no arduino.

      Arduino communicates with both the W5100 and SD card using the SPI bus (through the ICSP header). This is on digital pins 10, 11, 12, and 13 on the Uno and pins 50, 51, and 52 on the Mega. On both boards, pin 10 is used to select the W5100 and pin 4 for the SD card. These pins cannot be used for general I/O. On the Mega, the hardware SS pin, 53, is not used to select either the W5100 or the SD card, but it must be kept as an output or the SPI interface won't work.

      Excluir
  18. Sergio, Muito bom o seu projeto! Parabéns! Uma pergunta, tem como colocar uma pequena ihm, para que o operador possa alterar alguns parâmetros?

    ResponderExcluir
    Respostas
    1. Obrigado, Niko. Esse projeto já utiliza todas as IOs, a lógica de operação deve ser gravada.

      Excluir
  19. Como faco para colocar display lcd neste curcuito e da para supervisionar ele no scadabr

    ResponderExcluir
  20. Como faco para colocar display lcd neste curcuito e da para supervisionar ele no scadabr

    ResponderExcluir
  21. opa. Muito bom hein. Me responde uma coisa, esse relé é 110-220 ou somente 110? o mesmo projeto poderia utilizar um rele 20A?

    agradeço
    rafael

    ResponderExcluir
  22. há possibilidade de criar algo parecido para um arduino mega? com mais I/O´s? É Possivel o uso de termopares J e K ? estou um pouco perdido com isso...

    ResponderExcluir
  23. Boa noite! Esse CLP Shield pode acionar circuitos em 220Vac?

    ResponderExcluir
  24. olá Sérgio, sou iniciante no Arduino, mas conheço bem CLP
    muito bom seu projeto, quero saber se, além de utilizar as entradas de acinamento há possibilidade de adaptar o modulo Ethernet Shield w5100 e ter a opção de acionar saidas com o ANDROID.

    ResponderExcluir
  25. Boa tarde, pode informar as medidas da placa ?

    ResponderExcluir