Você está na página 1de 10

CLP Shield com Arduino

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
Processos, Sistemas 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
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.

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.
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);
}

Você também pode gostar