Trabalhando com um sensor e um motor, posso usar os dois ou devo usar uma blindagem do motor?

11

Atualização: Atualmente, estou mudando algumas coisas com o projeto. Eu segui alguns conselhos seus. Eu mudei de um motor de passo para um servo RC (controlado por PWM) e se eu tiver algum problema e não conseguir descobrir, vou perguntar. Obrigado pela ajuda!

Estou trabalhando em um projeto com um amigo e é nossa primeira vez usando um Arduino. Estamos usando um Arduino para pegar dados de um sensor (acelerômetro) e depois ligar o motor (6V, CC).

Estou pesquisando e parece que a energia do Arduino pode não ser suficiente para o motor e o sensor ao mesmo tempo. Talvez uma espécie de atraso pudesse funcionar (isso seria possível?).

Estou pensando em usar uma blindagem do motor . Ainda poderei controlar o acelerômetro junto com o motor?

Estou tentando usar uma única fonte externa de energia (máximo: 6 pilhas AA; estou tentando limitar a quantidade de pilhas, pois estamos tentando mantê-la portátil), então existe uma maneira de usar uma fonte desde o O Arduino e a blindagem do motor precisam de duas fontes de alimentação diferentes (no meu entendimento).

Om23
fonte
Você ainda deve poder usar seus outros pinos. Este escudo motor funcionará como um irmão poderoso e ouvirá o que o pino diz e fará exatamente isso, é claro, com muita energia, ele é o irmão maior! Você poderia editar sua pergunta para ser mais específico sobre a quantidade de pilhas AA que vai usar?
Abdullah kahraman
Ok, eu atualizei o número de baterias. Você acha que um motor de passo seria um substituto melhor, já que ouvi dizer que eles funcionam muito bem com o Arduinos?
Om23
@ Om23 A escolha de stepper, servo, corrente contínua escovada ou corrente contínua sem escova seria determinada pela finalidade que o motor deve cumprir e (por exemplo, para motores BLDC) o hardware disponível para controlar o motor. Pode ser uma nova pergunta interessante, para determinar qual motor é melhor usado para quais dos vários propósitos possíveis você pode pensar. Não tendo a certeza de que essa pergunta é ideal para o site do Arduino, talvez alguém possa entrar em contato com isso.
Anindo Ghosh 11/04

Respostas:

12

Problema 1 : Dirigindo um motor diretamente de um Arduino

Não é aconselhável dirigir um motor diretamente pelos pinos do Arduino por vários motivos:

  • Corrente de carga , especialmente nas condições de partida e parada do motor. Como corretamente apontado na pergunta, os pinos do Arduino podem simplesmente não ser classificados para fornecer corrente suficiente. O Arduino pode esquentar ou até ser danificado pelo consumo prolongado de corrente alta.
    Embora cada pino Arduino para Arduinos baseados em ATmega seja classificado para 40 mA, eu pessoalmente prefiro manter qualquer carga sustentada abaixo de 30 mA, seu apetite por risco pode ser diferente. Sem ver a folha de dados do motor em questão, é impossível supor quanta corrente o motor requer
  • Back-EMF do motor, tanto durante o desligamento do motor quanto possivelmente durante a comutação do motor - À medida que um motor CC gira, as escovas de contato "comutam" entre anéis divididos, pelo menos nos tipos tradicionais de motores CC escovados, gerando pouquíssimos faíscas de cada vez.
    Back EMF é basicamente voltagem reversa gerada pelas bobinas do motor (ou qualquer carga indutiva no desligamento), transientes (espigões) que podem momentaneamente exceder em muito a faixa de tensão aceitável que os pinos do microcontrolador podem tolerar.
    Back EMF continua a ser um risco, embora diminuído, mesmo se um diodo rápido estiver conectado em polarização reversa através dos fios do motor, uma prática altamente recomendada.
  • Portanto, é altamente recomendável um isolamento de algum tipo entre o Arduino e o acionamento do motor. Para simplificar a implementação, isso seria uma blindagem do motor.
    Se você estiver familiarizado com a eletrônica básica, isso também pode ser alcançado conectando diretamente um IC de driver de motor adequado e diodos de retorno. ( Edit : Isso é excelentemente descrito na resposta de Manishearth )
    O driver do motor, seja um escudo ou um CI, deve ser alimentado independentemente do Arduino, mas com as duas linhas de aterramento da fonte de energia conectadas. Veja mais abaixo.

Edição 2 : Controlando o acelerômetro e a blindagem do motor simultaneamente

  • Sim, o acelerômetro pode ser controlado e lido no Arduino com a blindagem do motor no lugar, garantindo que os pinos selecionados para acessar o acelerômetro não sejam realmente utilizados pela blindagem do motor. Todos estariam conectados ao escudo, mas sem nenhuma função ou conexão interna dentro do escudo. A documentação para o escudo selecionado normalmente fornece essas informações.
    Por conveniência, procure uma blindagem do motor com cabeçalhos empilháveis, ou seja , com os pinos do cabeçalho do Arduino replicados na blindagem do motor para conectar hardware adicional, no seu caso o acelerômetro. Nem todos os escudos fornecem cabeçalhos empilháveis. Assim, complica o uso dos pinos não utilizados pela blindagem, necessitando de soldagem dos fios nas placas de cabeçalho relevantes no PCB, ou em algum arranjo desse tipo.
    Com a chance de que a blindagem do motor selecionada use todos os pinos do GPIO, como pode ser o caso das blindagens para acionar vários motores, você pode ter um problema. Como apenas 1 motor deve ser acionado, evite blindagens multimotor que não deixem pinos GPIO não utilizados suficientes.

Problema 3 : Distribuição de energia entre o Arduino e a blindagem do motor

  • O problema com o arranjo sugerido de 6 x AA (máximo nominal de 9 Volts) é que, embora forneça tensão suficiente para o conector de entrada DC disponível em muitos Arduinos (geralmente classificados para entrada de 7 a 12 Volts), é muito alto para o motor ser expulso diretamente dele.
  • Existem, no entanto, várias blindagens de motor que aceitam uma entrada de energia direta (por exemplo, 7 a 25 Volts) e, em seguida, fornecem 5 Volts bem regulados ao Arduino ao qual estão conectados. Portanto, o Arduino não precisa ser alimentado separadamente e também não deve ser. Este é absolutamente o único tipo de blindagem do motor que se deve comprar .
  • As alternativas Kludgier incluem tocar em 4 das 6 células AA para alimentar o motor e todas as 6 células para alimentar o jaque DC (PWRIN) do Arduino, ou usar um regulador de 6 Volt separado para a potência do motor, enquanto alimenta os 9 Volts diretamente ao conector Arduino DC.
  • Tentar alimentar o Arduino com a bateria e depois ligar o motor a partir do pino Vin do Arduino é uma má idéia, porque
    • O diodo M7 entre o conector DC e o pino Vin em vários modelos de referência do Arduino é classificado para 1 ampère, o motor pode desenhar mais, pelo menos momentaneamente
    • Todo o ruído eletromagnético gerado pelo motor, o ruído de comutação e os transientes de retorno, serão retornados à placa do Arduino, a menos que uma dissociação muito rígida seja implementada, e não uma questão simples. Esse feedback da EMI causará problemas intermitentes e difíceis de depurar na operação do Arduino.
Anindo Ghosh
fonte
10

A maioria dos escudos pega alguns pinos e deixa o resto para você (é por isso que muitos têm uma réplica do sistema de pinos do Arduino em cima deles usando cabeçalhos empilháveis). Eles são projetados para serem o mais fáceis possível, portanto, obter um escudo é a maneira mais fácil de contornar isso.

Eu pessoalmente não ponho os motores diretamente na placa; em vez disso, uso drivers de motor como o L293D para isso. Os pinos não são realmente bons para extrair corrente e, geralmente, é melhor alimentar os sensores diretamente, e não através dos pinos do Arduino. Lembre-se de que os pinos têm um limite de corrente e, se você os sobrecarregar, eles queimarão.

É fácil usar um L293D:

insira a descrição da imagem aqui

Conecte os pinos 1,9,16 à sua fonte Vcc (terminal positivo de qualquer fonte de 5V com a qual você alimenta o Arduino. Para mim, geralmente é uma linha extraída de um LM7805). Agora conecte os pinos 4,5,13,12 ao seu GND (terminal negativo). Agora, conecte o pino 8 a uma fonte de alta tensão (6V, 12V ou o que você deseja alimentar nos seus motores). Observe que os terminais negativos de todas as fontes de tensão precisam estar em curto para GND.

Agora, conecte seu motor nos dois pinos de saída em um local (3,4 à esquerda). Conecte os pinos de entrada (2,7) a dois pinos diferentes no Arduino. Quando você dá o mesmo sinal (ALTO ou BAIXO) aos dois pinos, o motor pára. Se você der ALTO de um pino e BAIXO do outro, o motor irá no sentido horário ou anti-horário, dependendo de qual pino obteve qual sinal.

Se você deseja um motor unidirecional e deseja salvar os pinos, coloque um dos pinos de entrada em GND. Agora, quando o outro pino de entrada estiver BAIXO, o motor estará desligado e, quando estiver ALTO, o motor estará ligado.

Você pode conectar outro motor usando o mesmo procedimento na extremidade oposta do chip, se desejar.

O L293D extrai uma pequena quantidade de corrente do Arduino e alimenta o motor a partir da corrente consumida pelo pino 8, e geralmente é ideal para essas situações.

Manishearth
fonte