Você está na página 1de 15

Outras maneiras de programar

o Arduino – Ladder1
Arduino  30 de dezembro de 2019  Mauricio Gavina

Nesse artigo, conheceremos sobre a lógica Ladder, sua origem e suas


aplicações. Também vamos aprender uma forma de adequar o nosso
querido Arduino a uma ferramenta de aprendizagem Ladder.

Se você se pergunta qual a importância de saber programar em Ladder,


primeiro deve entender que essa lógica é vastamente utilizado na
indústria, logo, se você tem essa pretensão, esse aprendizado é
indispensável.

Em segundo lugar, no universo maker, você vai se deparar com casos e


casos, o que quero dizer é que certas tecnologias tornarão seu trabalho
mais fácil em determinada situação e muito difícil em outras.

Aprender Ladder para o Arduino é uma ótima habilidade para se colocar


no seu arsenal de conhecimento.
Materiais Necessários
 1x Arduino Uno
 1x LED
 2x Chave Táctil
 1x Protoboard
 1x Resistor 220 Ohms (pelo menos)
 2x Resistor 10K Ohms
 10x Jumpers

Programas necessários para usar


Ladder no Arduino
LDmicro – Para programação em ladder

AVRdudess – Para gravação do código no Arduino

Arquitetura do Arduino
Como pré-requisito, precisamos revisar alguns conceitos sobre o Arduino.
O Arduino é uma placa de prototipagem – pelo menos a parte física do
projeto Arduino é – e o seu ponto vital é o microcontrolador. O chip que se
encontra no centro da placa é responsável por todo o processamento do
código que escrevemos. Os outros elementos da placa são acessórios que
facilitam a nossa vida maker, como uma interface USB, regulador de
tensão, led onboard, cristal oscilador e tantas outras facilidades.

A maneira como a placa foi construída abstrai, inclusive, a numeração e


identificação dos pinos do microcontrolador. Isso é feito separando as
entradas analógicas de um lado e as digitais do outro lado e enumerando-
as de maneira lógica e de fácil entendimento. Veja o diagrama da pinagem
real do microcontrolador ATmega328p. Iremos precisar utilizar os nomes
dos pinos originais quando formos trabalhar com o Ladder no Arduino.
O Ladder
Quem está envolvido de alguma forma com a indústria, seja trabalhando
ou estudando, com certeza já deve ter ouvido falar da lógica Ladder.
Ladder, em tradução livre, quer dizer escada, e a razão para usarmos esse
nome está na história da implementação do controle automático nas
indústrias.

Por um tempo, sistemas automáticos eram controlados por relés. Relés


são dispositivos eletromecânicos e uma vez que sua parte mecânica se
quebre, a parte elétrica é destruída pela eletricidade que ele está
seccionando. Relés são grandes, usam bastante energia e geram muito
calor no processo.

Buscando na história, por um bom tempo, o único sistema automático que


as pessoas tiveram acesso foi o elevador. Atualmente, o elevador é uma
aplicação simples com fundamentos bem conhecidos, no entanto, no
passado, um sistema de controle baseado em relés era um problema sério.

Para entender o motivo do nome, precisamos olhar a maneira como


documentamos a lógica de controle via relé. A escada, ladder, é o desenho
da lógica de controle, a ilustração de como os relés são
conectados. Estas convenções permanecem em uso até hoje.

Aqui está um desenho simplificado de um circuito de controle, não se


assuste! A convenção é que na parte superior temos representado a fonte
do nosso projeto, a esquerda a linha de fase e a direita a linha de neutro.
Os símbolos à esquerda são as entradas e à direita são as saídas, que
chamamos de bobinas. Podemos concluir que a energia está “passando”
da esquerda para a direita e que cada bobina se encontra um degrau
separado.

Falando sobre as entradas, podemos ter dois estados: normalmente-


fechados e normalmente-abertos. Normalmente-aberto, quer dizer que
quando o “relé” não está energizado o contato está aberto, ou seja, não
está conduzindo eletricidade. Normalmente-fechado é o oposto, quando
não energizada, a entrada está conduzindo.
Vamos analisar um exemplo simples:

Se o motor está pronto para funcionar e pressionamos o botão para ligá-lo,


nós queremos que o motor funcione continuamente até que pressionamos
o botão para desligá-lo.

Vamos representar a sentença acima em lógica ladder:

Algo que neste momento precisamos ter em mente é que entradas


representadas no diagrama podem não ser entradas reais. Veja, quando o
motor está pronto para funcionar o contato, ele é “fechado” e quando
apertamos o botão ligar, também “fechamos” seu contato permitindo a
energia seguir o seu fluxo. Perceba que o botão de desligar é
normalmente-fechado, ou seja, está naturalmente conduzindo, assim, o
motor está funcionando. Agora fazemos um link entre essa saída e o
contato que mantém o motor funcionando. Uma vez que a bobina é
acionada o contato é fechado pois eles se relacionam, nós podemos criar
esse vínculo se quisermos. Por fim, quando queremos parar o motor,
apertamos o botão para desligar, que “abre” o contato, interrompendo o
programa.

O circuito que acabamos de comentar em lógica ladder está em milhares


de painéis de controle de motores por todo o mundo. Certamente, são
acrescentados mais itens ao programa, mas o circuito básico e o
entendimento é o mesmo.

Como programar em Ladder para o


Arduino
Existe um compilador chamado LDmicro, ele é usado para programar
microcontroladores pic e avr.

Como todos nós sabemos, o Arduino é uma placa de prototipagem que tem
como base um microcontrolador avr, o ATmega328.

Assim, conseguimos, com poucas modificações, e cumprindo alguns


passos, programar nosso querido Arduino com a linguagem ladder.
Assim como os outros compiladores, ele gera o arquivo .hex que
posteriormente é usado para gravação utilizando gravadores de pic ou avr.

Os seguintes microcontroladores são suportados:

• PIC16F877
• PIC16F876
• PIC16F628
• ATmega64
• ATmega128

Como você pode ter percebido o ATmega328 não está listado, porém a
versão do LDmicro que vamos usar é modificada e nela foram
acrescentados vários outros microcontroladores, inclusive o que
desejamos.

Em Settings > Microcontrollers selecionamos o ATmega328 e


posteriormente em Settings > MCUparameters escrevemos o valor
do Crystal Frequency para 16.
Em Instructions encontramos todos os comandos básicos da linguagem
ladder, inclusive a entrada como insert contacts e a bobina de saída
como insert coil. Ao clicarmos sobre o elemento podemos alterar seu
estado, como por exemplo, normalmente-fechado ou normalmente-aberto.
Repare que ao incluirmos entradas e saídas, o painel abaixo do ambiente
de escrita ladder indica e detalha o que foi escrito, vamos nos atentar a
essa janela. Os elementos com a legenda “X”, por convenção nossa,
sempre indicarão entradas e os elementos com a legenda “Y”
indicarão saídas. Ao lado do nome, temos o tipo de elemento, entrada ou
saída. Mais adiante, quando falarmos sobre simulação, veremos como
funciona o estado. Já na opção “pino no processador”, selecionamos as
linhas e determinamos a qual pino físico do microcontrolador o nosso
elemento estará conectado. Para fazer o último passo utilizaremos a
informação sobre a arquitetura do Arduino que vimos no inicio do artigo.

Veja, na parte do “pino do processador” vamos escolher o pino do


processador que se relaciona com o pino da placa Arduino, por exemplo o
pino PB1 do microcontrolador é o pino 9 e o PC0 é o pino A0 do Arduino .
Agora podemos fazer a simulação, e para tal, basta clicar em simulação e
posteriormente em simulação em tempo real. Essa simulação permitirá ao
usuário ver a lógica ladder funcionando no programa e conferir a alteração
dos estados das bobinas no painel de cor branca na parte de baixo do
programa.
Exemplo da lógica Ladder para o
Arduino
Vamos repetir o programa de acionamento de um motor que vimos na
explicação acima, porém, nesse momento usaremos um LED.

Segue o circuito no fritzing:


Podemos interpretar o código ladder nessa aplicação da mesma forma
como interpretamos o exemplo no inicio desse artigo, com a exceção do
contato virtual “Pronto para funcionar”. No nosso exemplo cada contato
corresponde a uma entrada digital no mundo real, mais precisamente um
botão. E a saída corresponde a um LED no mundo real. Assim que
apertamos o botão “Ligar” o LED é acionado, bem como o seu respectivo
contato, assim mesmo que pressionamos o botão Ligar novamente nada
acontece. Em contrapartida, pressionando o botão “Desligar”, ele
interrompe o circuito, visto que está normalmente fechado, quando
pressionado ele abre o circuito, e assim desligamos o LED.

Agora, precisamos realizar uma simulação para nos assegurar que está
tudo certo e posteriormente podemos compilar. Para compilar basta ir na
barra de ferramentas e clicar em Compile. Salve o arquivo .hex onde achar
mais conveniente.

Atenção! o Arduino não está pronto para receber o nosso código!


Abra o Avrdudess já instalado anteriormente e siga os passos como na
imagem abaixo:

1. Selecione Arduino em Programmer, depois a porta de


comunicação do Arduino com o nosso computador, normalmente
essa porta é o prefixo COM com um numeral ao final que varia de 1
a 9, Baud rate 115200.
2. Em MCU o ATmega328p deve estar selecionado.
3. Bem como em Presets a placa Arduino Uno.
4. Em Flash, clique no botão com 3 pontos e selecione o programa
que foi compilado no LDMicro.
5. Por fim, clique em programar!
Voilà!!
Construímos uma aplicação em Arduino com apenas uma linha de
código e alguns cliques de mouse para configuração do ambiente de
desenvolvimento.

Veja como nesse caso foi mais fácil usar a solução em ladder do que
programar em Arduino C na IDE.

Somente a função Setup na IDE já teria mais linhas de código. Segue o


vídeo explicativo para que não fique nenhuma dúvida, mas se ficar não
deixe de perguntar nos comentários!

Na prática, no ambiente industrial onde uma linha de produção parada


pode custar, por exemplo, 5.000 dólares por minuto, sem exageros, a
lógica ladder se mostra uma ferramenta muito eficiente para resolução
rápida de problemas.

Isso se deve, principalmente, a possibilidade de realizar a simulação do


sistema e supervisionar a execução do programa degrau por degrau.

Como na indústria, podemos nos beneficiar das facilidades da lógica


ladder em projetos onde entradas e saídas digitais são norma.

Na presença de entradas ou saídas analógicas, se desejamos realizar


cálculos matemáticos complexos ou se o nosso programa conter loops
devemos optar por linguagens de programação textuais.

Você também pode gostar