Projeto Elevador Arduino – Um sistema de automação com controle PWM

O Projeto Elevador Arduino foi desenvolvido com o intuito de explorar as funcionalidades do Elevador MDF, um produto interessante para quem deseja desenvolver as suas habilidades em programação e desenvolvimentos mecânicos. A sua montagem é bastante simplificada e o seu código possui alguns desafios bastante interessantes para os que desejam desenvolvê-lo.

Elevador Arduino Completo para Automação

Elevador Arduino Completo para Automação

Neste projeto, desenvolve-se o esquema de ligação e código de um elevador que tem como intuito reconhecer um dado andar solicitado e deslocar-se até este, um projeto que necessita de funções simultâneas entre motor, sensor de posição e botões de localização.

Como sensor base para o reconhecimento de posição do Projeto Elevador Arduino, utilizou-se um Módulo Reed Switch que em conjunto com um imã de neodímio fixado no case de deslocamento tinha a função de identificar o andar em que se encontrava e interagir com os demais componentes do projeto.

 

Teste Prático do Elevador Arduino

 

Driver Duplo Ponte H para Motor DC

A base de funcionamento do Projeto Elevador Arduino é o Motor DC responsável por deslocar o case para cima e para baixo, porém como sabemos, este não pode ser conectado diretamente ao Arduino e para auxiliar em procedimentos como controle de velocidade e inversão de direção está normalmente associados a Drivers como o modelos L9110s.

Pinos do Driver Duplo Ponte H utilizado no Projeto Elevador Arduino

Pinos do Driver Duplo Ponte H utilizado no Projeto Elevador Arduino

A conexão dos motores é extremamente simples, como não possuem uma polaridade estabelecida de instalação, podem ser conectados da melhor maneira à qual se adaptam ao projeto. Lembrando que a troca de polos resulta apenas na inversão da direção de movimento do motor.

Quanto aos pinos de alimentação, estes podem estar associados aos 5V do Arduino, porém como a corrente dos motores geralmente é maior que a fornecida pelo microcontrolador, é necessária a inclusão de uma fonte de alimentação externa. Podendo ser alimentado com 5V, os motores utilizam a mesma tensão necessária para alimentação através do pino Vin, um recurso que iremos utilizar.

Esquema elétrico para alimentação do Arduino, Módulo L9110s e Motor DC

Esquema elétrico para alimentação do Arduino, Módulo L9110s e Motor DC

Como vemos, o esquema de ligação do módulo de alimentação é bastante simples, porém algumas observações podem ser consideradas, no desenvolvimento do projeto foram soldados ao Jack P4 positivo (VCC) e negativo (GND) um jumper fêmea para alimentação do módulo e um jumper macho para alimentação do Arduino, veja:

Jumpers soldados ao Jack P4 para Alimentação dos Módulos

Jumpers soldados ao Jack P4 para Alimentação dos Módulos

Quanto aos pinos de controle do Drive Utilizado no Projeto Elevador Arduino, estes podem ser atribuídos a qualquer pino PWM do microcontrolador de acordo com o projeto que esteja sendo desenvolvido.

 

Comunicação PWM

A Modulação por Largura de Pulso é a tradução da sigla PWM (Pulse Width Modulation) é uma técnica que possibilita ao Arduino uma saída analógica através de meios digitais, bastante utilizado para o controle de intensidade de LEDs e também controle de rotação de motores DC.

Os pinos digitais do Arduino fornecem uma senoidal de onda quadrada com 5V em nível HIGH (alto) e 0V em nível LOW (baixo), o que torna impossível a redução de tensão para valores entre seus mínimos e máximos através dos pinos digitais, desta maneira é necessário alterar o tempo entre os níveis de onda do pino para obter tal controle, ou seja, se alternarmos o estado de funcionamento rápido o suficiente, a velocidade do motor será alterada, por exemplo.

O ciclo de trabalho da comunicação PWM é definido pela porcentagem de tempo em que o sinal está em HIGH, ou seja, para um ciclo de trabalho de 50%, a senoidal ficará meio segundo em nível alto e meio segundo em nível baixo. Na imagem abaixo vemos através do exemplo de 40% as inscrições “T on” e “T off”, que representam consequentemente Tempo ligado e Tempo desligado.

Gráfico do ciclo de trabalho de uma senoidal com controle PWM

Gráfico do ciclo de trabalho de uma senoidal com controle PWM

Para facilitar o funcionamento dos pinos digitais como elementos de controle PWM, o Arduino possui uma função incorporada, a “analogWrite ();” que aceita valores entre 0 e 255 para determinar a porcentagem de funcionamento da onda, de uma maneira simplificada:

Em projetos com motores também é utilizado um tipo diferenciado de função para delimitação da velocidade, é a vSpeed, presente no desenvolvimento do presente projeto, os valores atribuídos a mesma por sua vez, seguem o mesmo padrão citado acima.

Diferentes modelos de Arduino possuem diferentes pinos específicos para controle PWM, no Arduino UNO, por exemplo, os pinos que suportam este controle são os 3, 5, 6, 9, 10 e 11 e estão representados por um “~” antes do numeral. A frequência de saída dos pinos PWM é normalmente de 490Hz, com exceção dos pinos 5 e 6 que possuem uma frequência de aproximadamente 980Hz.

Arduino UNO com seus respectivos pinos PWM

Arduino UNO com seus respectivos pinos PWM

Desta maneira, ao desenvolvermos projetos que necessitam de controle PWM, sempre devemos atribuir estes equipamentos aos pinos demonstrados na imagem acima, caso contrário as funções desejadas não serão executadas de acordo com as necessidades do projeto.

 

Produtos Utilizados no Projeto Elevador Arduino

Abaixo seguem todos produtos utilizados no desenvolvimento do projeto, os quais pode ser adquiridos de forma avulsa conforma listagem. Se você quiser, pode adquirir a versão do Elevador com Arduino Completo, o qual já possui todas as peças necessárias para montagem.

– 1 Arduino Uno R3 + Cabo USB;

– 1 Estrutura em MDF para Elevador com Arduino EA50;

– 1 Fonte de Alimentação Chaveada 5VDC 1A;

– 1 Driver Duplo Ponte H de motor DC ou Passo L9110s;

– 4 Módulo Sensor Magnético para Arduino;

– 4 Chave Push Button PBS-102 104 Preta NF 1A;

– 1 Jack P4 Plástico (2,1×5,5mm) para Paineis e Chassis;

– 1 Motor DC 3-6V 80RPM com Caixa de Redução 120:1;

– 1,5 Metros de Cabo flexível TiaFlex 5m – 0,14mm²;

– 0,5 Metros de Fio de Nylon 0,25mm;

– 1 Protoboard 50 Pontos para Montagem de Projetos;

– 1 Imã De Neodímio N50 Super Forte 10mm X 4mm;

– 8 Parafuso M3 x 6mm Metálico;

– 2 Parafuso Philips M3 x 25mm Metálico;

– 2 Porca M3 x 2,4mm Metálica;

– 26 Jumper Premium para Protoboard Macho-Fêmea 20 cm;

– 2 Jumper Premium para Protoboard Macho-Macho 30 cm.

 

Esquema de Ligação do Projeto Elevador Arduino

Para o Projeto Elevador Arduino, a quantia de equipamentos destaca-se uma vez que cada andar precisa de um elemento de indicação e um sensor de posição, a quantia de pinos utilizados do Arduino quase atinge o seu máximo, porém com exceção dos pinos do motor que necessitam serem conectados em lugares com suporte PWM, os demais equipamentos podem ser posicionados de acordo com o projeto.

Projeto Elevador Arduino com Central de Distribuição de Energia

Projeto Elevador Arduino com Central de Distribuição de Energia

Mesmo com uma quantia elevada de equipamentos e pinos utilizados pelo Arduino, o esquema de ligação não apresenta grandes dificuldades, fazendo-se necessária apenas a utilização de uma protoboard para uma central de distribuição de energia responsável por alimentar os Módulos Reed Switch e diminuir a necessidade de jumpers extensos.

Esquema de Ligação do Projeto Elevador Arduino

 

Como vimos, os botões possuem seus pinos de referencia GND todos interligados e com apenas um fio saindo ao final, isto elimina a necessidade de outra protoboard e facilita a organização do projeto.

Outro detalhe bastante importante quanto a utilização deste botão, é que para sua utilização seria necessária a utilização de um resistor Pull Up, com o mesmo propósito anterior porém, utilizamos a função interna do Arduino que possibilita através de código eliminar a necessidade dos resistores.

 

Dicas para instalação de Componentes

Ao tratar-se de um produto com diversos equipamentos e com distâncias e limitações parcialmente visíveis, existem algumas dicas que podemos dar para facilitar a instalação e o funcionamento adequado do nosso projeto, além de melhor a sua parte estética.

Uma das principais facilidades que podem ser desenvolvidas neste projeto está na instalação dos botões para indicação de andar, para eliminar a necessidade de instalar um botão para cada um dos seus pinos, podemos realizar a soldagem de todos os pinos comuns e utilizar apenas uma porta do Arduino, para os pinos de sinal porém, é necessária a atribuição de jumpers individuais, veja:

Exemplo de ligação para os botões Indicadores de Andar

Exemplo de ligação para os botões Indicadores de Andar

Um fator que vale destacar é quanto a ligação dos Módulos Reed Switch mais elevados, infelizmente não ancontra-se Jumpers Premium em tamanho suficiente para satisfazer as necessidades, então recomenda-se utilizar dois dos modelos Macho-Fêmea em uma espécie de extensão, como podemos observar na imagem abaixo e salientar também o posicionamento e utilização da central de distribuição de energia via protoboard.

Exemplo de emenda utilizada para extensão de Jumper Macho-Fêmea

Exemplo de emenda utilizada para extensão de Jumper Macho-Fêmea

Outras dicas podem ser úteis quanto a organização dos cabos, abaixo do Arduino no seu case de fixação, temos disponível um orifício que pode ser utilizado para a passagem de fios, pode-se atribuir abraçadeiras para agrupamento de cabos como podemos ver na imagem acima e também realizar a passagem do fio do motor atrás do Módulo Reed Switch como visto na mesma imagem. A organização é a chave para o desenvolvimento de um projeto com acabamento de qualidade.

 

Código de Funcionamento do Projeto Elevador Arduino

Uma facilidade que encontramos no Projeto Elevador Arduino é a capacidade de executar todas as suas funções sem a necessidade de bibliotecas, todos os seus comandos são comandos padrões do Software Arduino. A linguagem utilizada é basante simples e de fácil compreensão, veja:

As variáveis e funções do Projeto Elevador Arduino dificilmente sofrem alteração uma vez que suas ações são fixas e continuadas, porém para quem deseja, é possível realizar a alteração da velocidade do motor através  da seguinte definição:

Ao alterar no início este valor, todos os locais com definição de velocidade serão ajustados automaticamente para o valor expresso. Vale ter cuidado com velocidades muito baixas que podem ser insuficiente uma vez que o motor está atribuído a uma carga com torque parcialmente elevado.

 

Conclusão

O projeto é facilmente desenvolvido, alguns fatores quanto a instalação dos seus componentes podem ser um pouco confusos uma vez que são diversos conectores envolvidos, porém o código está pronto para uso e com todas as funções prontas, não sendo necessário qualquer tipo de alteração.

Com uma finalidade didática e totalmente interativa, o Projeto Elevador Arduino mostra-se bastante interessante uma vez que para os que aceitarem o desafio, a programação possui uma lógica bastante complexa para realizar corretamente todas as suas funções, excelente para desenvolver os conhecimentos prévios.

Além disto, o Elevador Arduino é um projeto que possibilita diversas outras melhorias, como a inclusão de displays, LEDs, Buzzers e até mesmo dispositivos de reprodução MP3 como o que encontramos no seguinte projeto:

www.usinainfo.com.br/blog/projeto-arduino-com-mp3-arduino-dfplayer-mini-em-um-elevador-com-sistema-de-audio-indicador-de-andar/

Existem muitas melhorias para incrementar no Projeto Elevador Arduino, vai da criatividade de quem estiver realizando o projeto, se você montou este elevador, teve alguma dificuldade ou tem alguma dica para os demais, não se esqueça de comentar e deixar sua opinião logo abaixo.

Categorias
Arduino

Mecânico de Manutenção com Experiência em Sistemas Embarcados, Automação e Desenvolvimento de Projetos; Graduado nos Cursos de Matemática - URI e Física - UFFS.
25 Número de Comentários
  • Alcindo Kehl
    14 março 2020 at 00:19
    Deixe seu Comentário

    Boa noite, encontrei um erro na linha 98 onde if (andar !=4) está sem o parenteses sendo if (andar() !=4), com os parenteses, para dar certo…

    Mas mesmo assim não consigo fazer o programa rodar corretamente. Os botões não reconhecem os andares.

    Podes me ajudar?

  • Jose luis
    21 maio 2020 at 17:41
    Deixe seu Comentário

    ola boa tarde
    eu baixei a programaçao.
    apenas tentei fazer a compilaçao antes mesmo de tentar entender e resulta em diversos erros que nao consegui achar.
    error: stray ‘\302’ in program

    tentei descobri que erro é este e nao achei referencia.
    fui comentado as linhas e vao aparecendo outras.
    o que esta acontecendo ? podem me ajudar ?

    • Matheus Gebert Straub
      26 maio 2020 at 16:22
      Deixe seu Comentário

      Boa Tarde Jose! Este erro acontece em alguns momentos quando copiamos o código da internet, é possível que haja algum caractere inválido ou algo do tipo, tente copiar o código e passar o mesmo pelo bloco de notas antes de inseri-lo na IDE Arduino.

      • Hygor
        24 maio 2022 at 05:29
        Deixe seu Comentário

        na fiz tudo isso e ainda nao esta funcionando ele não reconhece os botao pode me ajudar?

        • Daniel Lemos da Rosa
          31 maio 2022 at 17:29
          Deixe seu Comentário

          Boa tarde Hygor, realmente havia problemas no código, corrigimos no dia de hoje, 31/05/22.

  • Israel
    19 agosto 2020 at 13:38
    Deixe seu Comentário

    Boa tarde! Montei exatamente como está no tutorial, más ao acionar os botões nada acontece. Alguém poderia me ajudar?

    • Matheus Gebert Straub
      8 outubro 2020 at 14:49
      Deixe seu Comentário

      Boa Tarde Israel! Ao configurar o código, tudo estava ok? Não encontrou nenhum erro na hora de gravar? Verifique a instalação dos pinos e também a alimentação do dispositivo se estão ok, principalmente a soldagem no conector P4, que possui 3 pinos e em apenas dois destes irá funcionar.

      • agnaldo
        2 fevereiro 2022 at 09:51
        Deixe seu Comentário

        bom dia , digitei todos os codigos conferi linha por linha , foi identificado umn erro na linha 116 ( parado();
        pergunta qual é o erro ai?
        desde ja grato

  • Val
    3 outubro 2020 at 23:33
    Deixe seu Comentário

    Excellent 😍

  • agnaldo costa
    5 novembro 2021 at 10:57
    Deixe seu Comentário

    bom dia, onde encontro o esquema de ligação dos componentes?
    sou iniciante desde ja grato

    • Matheus Gebert Straub
      25 novembro 2021 at 17:40
      Deixe seu Comentário

      Olá Agnaldo! Nesta mesma página você encontra tudo o que é necessário para a conclusão do seu projeto, tanto código quanto esquema de ligação.

  • CAIO
    5 novembro 2021 at 18:35
    Deixe seu Comentário

    fiz a montagem td ok, porem o motor fica girando d, as vzes ele muda a rotacao.

    • Matheus Gebert Straub
      25 novembro 2021 at 17:38
      Deixe seu Comentário

      Olá Caio! Parece que o elevador não está identificando o imã através dos sensores magnéticos, sugiro verificar se os sensores estão acionando com a aproximação do imã.

  • Jonathan
    17 novembro 2021 at 09:42
    Deixe seu Comentário

    Bom dia, montei conforme manual e o trabalho. Rodou mais ele não entende o terrio só fica no 1° andar aí faz 2° e 3° e volta pro primeiro. Não vai pro terrio.

    • Matheus Gebert Straub
      25 novembro 2021 at 17:22
      Deixe seu Comentário

      Olá Jonathan! Recomendo verificar a posição do sensor no Arduino, se não está invertida a instalação, acredito que esse possa ser o problema.

  • agnaldo
    4 janeiro 2022 at 15:16
    Deixe seu Comentário

    Boa tarde, nunca programei a placa de srduino no caso o elevador tem que colocar ridos esse comandos na placa?
    Desde ja grato , sou o que se chama de marinheiro de primeira viagem

  • agnaldo
    7 janeiro 2022 at 16:18
    Deixe seu Comentário

    Boa tarde , como é feito os trilhos para a cabine? eu fiz todo em mdf que tinha aqui mas o trilho não tive ideia de como fazer
    grato pela ajuda

  • agnaldo
    14 janeiro 2022 at 17:11
    Deixe seu Comentário

    boa tarde, liguei a placa mas o elevador não funcionou , o qUE sera? a placa liga , ja testei os cabos , tudo em ordem
    o que pode ser?

    • Daniel Lemos da Rosa
      31 maio 2022 at 17:41
      Deixe seu Comentário

      Boa tarde Agnaldo, havia um erro no código, revisamos no dia de hoje, já esta corrigido.

  • agnaldo
    29 janeiro 2022 at 11:12
    Deixe seu Comentário

    bom dia , copiei os códigos mas esta aparecendo um erro na linha 35 PINMODE(MOTORB1, OUTPUT); ja olhei e esta correto ( falo como copiei ) aparece a informação EXIT STATUS 1 PIMODE WAS NOT DECLARED IN THIS SCOPE e ai oque fazer?????

  • Rogério Ribeiro da Silva
    30 abril 2022 at 18:52
    Deixe seu Comentário

    Boa noite, ainda tem este kit elevador para venda?

  • Gustavo
    21 maio 2022 at 19:42
    Deixe seu Comentário

    Vcs poderiam revisar o codigo de funcionamento do elevador, pq mesmo copiando o código e colando no bloco de notas está dando erro stray ‘\302’ in program.

    • Daniel Lemos da Rosa
      31 maio 2022 at 17:36
      Deixe seu Comentário

      Boa tarde Gustavo, realmente havia problemas no código, corrigimos no dia de hoje, 31/05/22.

    Deixe seu Comentário

    *

    *

    Sobre nós

    Hoje a Usinainfo é um dos maiores ecommerces de Ferramentas, Peças para Eletrônica, Componentes Eletrônicos, Sensores e Arduino do Brasil, contando com uma grande diversidade de produtos na linha de eletrônica.

    Sugestões

    Artigos Relacionados