Outras maneiras de programar o Arduino – Ladder 18

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.

Imagem 1 - Circuito com Arduino

Materiais Necessários

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.

Imagem 2 - Pinos ATmega328p

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.

Imagem 3 -Normalmente fechado e normalmente aberto

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.

Imagem 4 - Esquemático Ladder

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.

Imagem 5 - Ladder para Arduino

Imagem 6 - Ladder para Arduino

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.

Imagem 6 - Ladder para Arduino

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.

Imagem 7 - Ladder para Arduino

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:

Imagem 8 - Circuito com Arduino

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.

Imagem 9 - Programando

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!

Imagem 10 - Configurações

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.

Obrigado por chegar até aqui! Ainda temos muito território a desbravar! Vamos continuar aprendendo sobre Ladder, mas não só isso! Nos próximos artigos dessa série vamos montar um hardware mais robusto, baseado em Arduino, nos aproximando de um PLC. Também vamos aprender sobre supervisórios e até mesmo criar uma mini planta industrial. Se você quer ver isso se realizar mostre seu apoio nos comentários!

Se inscreva na newsletter da MakerHero para continuar recebendo conteúdos que vão ajudar a melhorar as suas habilidades com Arduino. Siga nas redes sociais e não deixe de conferir as novidades do blog!

Faça seu comentário

Acesse sua conta e participe

18 Comentários

  1. Boa noite, legal.

  2. cara gostei muito a meses que venho pesquisando sobre arduino programar em ladder e conseguir aqui nesse site parabéns espero mas novidades.

    1. Eliseu,

      Que bom que curtiu!!

      Abraços!
      Diogo – Equipe MakerHero

  3. Boa tarde, quando eu faço o download a entrada fica com 5v direto.
    Sabe o que pode star acontecendo ?

  4. Não estou conseguindo instalar o AVRdudess.
    Fiz o download da pasta mas o programa não executa.

  5. Olá muito bom o conteúdo

  6. onde consigo a versao ldmicro para o ATmega328 do arduino?

  7. Vou experimentar… Gostei da idéia

  8. Olá, pra controlar dois motores de passo pelo Ld micro, como faria?

  9. OLA MUITO LEGAL ARTIGO POREM QUANDO USAMOS UM MODULO DE RELE ACOPLADO COM 4 SAIDAS NAO FUNCIONA , NAO SEI PORQUE JA TENTEI DE TUDO , NAO SEGURA BOBINA SET, E O SINAL ALTO, E COMPLICADO….

  10. O Programa avrdudess pede para instalar o Net.Frameworks, que não instala. Daí deu ruim.

    Parabéns bom artigo

  11. Muito bom…

    A explicação bem completa e bem clara,,, PARABÉNS continuem assim…

  12. Boa tarde,

    Muito bom!

    Tentei utilizar o mesmo processo para um arduino mega 2560 porém não obtive exito.

    att,

    Edson

    1. Edson,

      Você alterou no LDmicro para o controlador ATmega2560?

      Abraços, e cuide-se com o COVID-19!
      Diogo – Equipe MakerHero

      1. Boa tarde,

        Alterei para o controlador ATmega2560 e mesmo assim não consegui.

        Chequei a porta utilizada inclusive.

  13. Parabéns pelo tutorial, muito instrutivo. Faço automação industrial e tenho muito interesse em conectar o arduíno na automação, você me ajudou muito nisso, obrigado.

    1. Fabio,

      Que bom que curtiu! Ficamos extremamente felizes 😀

      Abraços!
      Diogo – Equipe MakerHero

  14. Olá Mauricio

    Parabéns pelo artigo. Eu sou professor do ensino profissional e uso o Ldmicro para ensinar aos alunos programação em linguagem Ladder. O ideal era que cada aluno tivesse acesso a um CLP, infelizmente essa realidade não é possível. O custo dos CLPs são elevados, aqui no Brasil. Entretanto, a criatividade me levou a utilizar a linguagem Ladder + Arduino Nano, implementando assim um pequeno CLP. Não é a melhor opção mas é a que temos para solucionar esse problema.
    Achei muito interessante o seu artigo e espero que continue publicando sobre Ladder + Arduino. Valeu!!!