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).
Respostas:
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:
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 é 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.
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
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
fonte
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:
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.
fonte