Open top menu
sexta-feira, março 01, 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.







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


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.





Vamos ver um 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
Different Themes
Written by Lovely

Aenean quis feugiat elit. Quisque ultricies sollicitudin ante ut venenatis. Nulla dapibus placerat faucibus. Aenean quis leo non neque ultrices scelerisque. Nullam nec vulputate velit. Etiam fermentum turpis at magna tristique interdum.

Postagem mais recente
This is the last post.

23 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