Motor de passo 28BYJ-48 com arduino
Hoje o assunto é motor de passo. Já fazia um tempo que eu queria escrever sobre motores de passo, que é um item quase que obrigatório na montagem de robôs. Vamos ver como utilizar o motor de passo 28BYJ-48 com arduino, controlando a rotação do motor. Outros usos incluem relógios, mostradores, painéis ou outros dispositivos que exijam algum tipo de deslocamento.
Vamos utilizar este conjunto Motor de passo 28BYJ-48 com driver ULN2003, que contém tudo o que você precisa para dar os primeiros passos (ops!) no assunto “motores”.
Como funciona um motor de passo
Um motor de passo funciona aplicando-se tensões específicas a cada uma das bobinas do motor, o que faz com que ele rode no sentido horário ou anti-horário, com maior ou menor velocidade, etc.
No datasheet do motor você tem (quase) todas as informações sobre o componente, como por exemplo a disposição das bobinas:
Esse experimento utiliza o módulo controlador com o chip driver ULN2003 (datasheet), um CI Driver de corrente que permite que, com o Arduino (que suporta corrente máxima de 50 mA por porta), sejam controlados motores que exijam correntes maiores, de até 500 mA. Este módulo aceita alimentação de 5 a 12 volts e possui leds indicadores que mostram o acionamento das bobinas.
Note que o ULN2003 somente auxilia no gerenciamento da tensão e corrente para as portas. Assim, toda a lógica de programação e sequência de bobinas que devem ser acionadas, é controlada pelo Arduino (ou outro microcontrolador que você esteja usando).
Circuito motor de passo 28BYJ-48 com arduino
Para testes, montei um circuito utilizando dois push-buttons para controlar a rotação do motor. O botão da esquerda move o motor no sentido anti-horário, e o botão da direita, no sentido horário, sem alterar a velocidade:
E finalmente o programa, utilizando como base o exemplo da biblioteca Stepper com algumas alterações para tratamento das funções dos botões:
//Programa: Controle de sentido de rotacao de motor de passo //Autor: Arduino e Cia #include <Stepper.h> int pinobotao_ah = 3; //Porta botao sentido anti-horario int pinobotao_h = 2; //Porta botao sentido horario int passos = 50; //Passos a cada acionamento do botao int leitura = 0; //Armazena o valor lido do botao horario int leitura2 = 0; //Armazena o valor lido do botao anti-horario const int stepsPerRevolution = 500; //Inicializa a biblioteca utilizando as portas de 8 a 11 para //ligacao ao motor Stepper myStepper(stepsPerRevolution, 8,9,10,11); void setup() { pinMode(pinobotao_h, INPUT); pinMode(pinobotao_ah, INPUT); myStepper.setSpeed(60); //Determina a velocidade do motor } void loop() { //Gira o motor no sentido horario leitura = digitalRead(pinobotao_h); if (leitura != 0) { myStepper.step(-passos); } //Gira o motor no sentido anti-horario leitura2 = digitalRead(pinobotao_ah); if (leitura2 != 0) { myStepper.step(passos); } }
Por último uma observação: este motor possui uma caixa de redução embutida (daí o eixo aparente do motor não estar no centro do mesmo). A falta de algumas especificações das engrenagens da redução geram uma certa confusão na definição dos parâmetros, principalmente no número de passos para uma volta completa, o que exige atenção se você for utilizar este motor em tarefas mais precisas.
No vídeo abaixo você confere o projeto em funcionamento:
Confira outros posts usando motor de passo 28BYJ-48 aqui mesmo no Arduino e Cia!
Qual seria valor dos resistores?
Boa tarde, usei resistores de 330 ohms.
Obrigado.
Valeu .Obrigado pela visita. Abraço !
Dá pra fazer uma mini CNC com esses motores?
Boa noite,
Dá sim, esse motor é mais forte do que parece.
Abraço !
Boa Noite, no momento só tenho resistores de 220 ohms e 1k ohms, posso utilizar algum destes ou melhor comprar os de 330 ohms?
Super bacana! Parabens!
Obrigado Fernando ! Abraço.
Qual foi o material usado para o DRIVE ?
Bom dia. Basicamente o driver é formado pelo CI ULN2003 e alguns resistores, leds para indicar funcionamento e os conectores. Comprei o meu kit pronto nesse link :
http://www.filipeflop.com/pd-6b7fd-motor-de-passo-drive-uln2003.html?ct=&p=1&s=1
Abraço !
Bom dia!
Funcionou perfeitamente! É exatamente o que eu preciso, porém, meu projeto exige que o motor pare quando chegar a um determinado ponto, independentemente do botão que o acionou continuar pressionado.
Para melhor esclarecer, eu preciso que o motor de passo gire um potenciômetro, sentido horário (botão/pino 2) e sentido anti-horário (boato/pino 3) no total de 270º. Para não precisar usar chave fim de curso, preciso que o motor pare ao chegar no limite do giro do potenciômetro, mesmo que o botão/pino 2 esteja acionado, mas gire no sentido oposto caso o botão/pino 3 seja apertado. OK?
OBS; Já fiz este experimento com servo motor e funcionou, mas preciso testar com o motor de passo para avaliar os resultados.
Obrigado e aguardo,
José Carlos
Boa tarde José,
Entendi o que você precisa, mas acho que fica mais fácil se você fizer com um servo motor, dá pra controlar melhor o ângulo.
Com o motor de passo, até onde eu sei, vai precisar de alguma chave de fim de curso, porque você até consegue controlar o ângulo, mas, por exemplo, ao desligar e ligar o Arduino, o motor vai perder a referência, ou seja, ele não vai saber em quantos graus ele estava.
Espero não ter complicado. rs. Se precisar de ajuda ou quiser explicar melhor o que precisa, pode deixar um comentário.
Abraço !
Olá, bom dia!
Antes de mais nada, gostaria de acrescentar que sou iniciante neste campo. Tenho alguns componentes e quando dá, faço algumas experiências, mas coisas simples. Minha maior dificuldade é com o código. Demoro dias para escrever um simples código que, quem tem um pouco de conhecimento, escreveria em minutos. Mas vou tentando… (leia-se apanhando…)
Quanto ao motor de passo, já espera por isso.
O que estou fazendo, ou pelo menos parte dele, é controlar por controle RF dois motores DC ligados a uma Ponte H + Arduino. Como eu quero, inclusive, controlar a velocidade dos motores e o sinal RF recebido é digital, preciso que, em algum momento este sinal digital seja “convertido” em analógico para comandar a variação de velocidade.
Eu consegui, através do código no Arduino, “transformar” o sinal digital recebido em analógico, ou seja, o Arduino simula o sinal analógico fazendo a conversão dos valores digitais, assim eu tenho basicamente um potenciômetro digital. Isso funciona muito bem com Leds para variar intensidade, mas como potenciômetro o resultado é uma variação inconstante e muito pouco sensível, já que não tenho a variação de 0 a 1023, mais sim de 0 a 255, sem falar que as medidas de 0 até +- 160 praticamente não são reconhecidas, não sei porque.
Construí também um sistema em que a velocidade do motor é controlada por um potenciômetro (ideal) que por sua vez é movimentado por um servomotor que, por fim é comandado por sinais digitais recebidos por RF. Não gostei do resultado: 1º) meu servo tem um giro de 180º e o eixo do potenciômetro pode variar até +- 270º. Então, sem um sistema de engrenagens não consigo fazer a utilização plena do potenciômetro. 2º) não sei por que, mais meu servo (Sg90) sofre muita interferência quando funciona com os outros componentes do sistema. Vibra muito!
Como tenho um motor de passo e portas disponíveis no Arduino, achei que poderia controlar o potenciômetro com o motor de passo. Ainda não descartei a ideia. Vou tentar montar o motor com micro chaves fim de curso. Vai ficar meio arcaico, ou melhor, mais arcaico ainda, mas acredito que o resultado será o melhor possível.
Até mais,
José Carlos
O meu motor parece travado, fica zumbindo mas não gira, ele é duro para girar com os dedos, é normal?
Boa tarde,
O seu motor é o mesmo do post ? Isso geralmente acontece quando o número de passos por volta está setado errado no programa. Tente alterar o valor desta linha :
const int stepsPerRevolution = 500;
Esse travamento acontece com o meu motor quando eu tento, por exemplo, setar um valor maior do que 500. Faça um teste e veja se funciona, por favor. Quanto a girar com os dedos, é normal sim, devido ao sistema de engrenagens do motor.
Abraço !
Olá, amigo,
Adquiri dois kits iguais aos abordados nesta postagem (28BYJ-48 + ULN2003), que chegaram hoje. Irei testá-los hoje mesmo ou amanhã me baseando em seu esquema (um de cada vez), mas gostaria de saber se o Arduino sozinho conseguiria alimentar esses dois kits.
Desde já o agradeço por compartilhar conosco suas experiências e seu conhecimento.
Atenciosamente,
Guilherme Caeiro de Mattos.
Boa noite Guilherme,
Pelos meus testes aqui, o Arduino consegue alimentar sim, até porque o ULN2003 dá conta da demanda de corrente dos motores, sem transferir isso pro Arduino.
Grande abraço e obrigado !
Boa tarde, amigo,
Testei aqui e, assim como escreveu, consegui utilizar os dois motores simultaneamente (cada um com um ULN2003). Realmente o agradeço pelo retorno.
Além disso, gostaria de colaborar e sugerir, para quem se interessar, o uso da biblioteca "CustomStepper", que se saiu melhor que a biblioteca padrão, Stepper, no controle dos motores.
Novamente, muito obrigado por sua resposta e por compartilhar seu conhecimento e suas experiências.
Atenciosamente,
Guilherme Caeiro de Mattos.
Boa noite Guilherme,
Obrigado pelo retorno. Vou dar uma olhada nessa biblioteca CustomStepper e provavelmente farei um post sobre isso. É mais uma opção para quem precisa mexer com motores.
Grande abraço !
Boa tarde Guilherme !
Saiu um post falando sobre a CustomStepper, conforme você sugeriu. Se puder, dê uma olhada :
http://www.arduinoecia.com.br/2014/04/controlando-motor-de-passo-28byj-48.html
Abraço e obrigado !
Montei o circuito para testar. O motor de passo funcionou no sentido horário.Tive que reduzir o numero na linha (const int stepsPerRevolution = 500;).Não consegui fazer funcionar no sentido anti-horario. Poderia explicar melhor o funcionamento dos botões? Pelo que entendi eles estão provocando um curto entre os polos + e – e enviando o nivel 0 para as portas 2 e 3. Está correto? No código estas linhas (int leitura = 0; //Armazena o valor lido do botao horario);(int leitura2 = 0; //Armazena o valor lido do botao anti-horario) é que controlam o sentido de rotação?
Obrigado por compartilhar este projeto.
Abraços
Boa tarde José,
Isso mesmo, o programa detecta se os botões estão em nível "zero". Se algo for diferente disso, ele aciona o motor no sentido correspondente.
As variáveis leitura e leitura2 armazenam o valor lido das portas analógicas 2 e 3, onde estão os botões. Depois, esses valores são testados (com o IF) para verificar se algum botão foi pressionado, e assim acionar o motor no sentido correspondente.
Seu kit é o mesmo que estou usando ? Estranho não ter funcionado.
Abraço !
É que eu não tinha entendido o funcionamento dos botões e por isto não montei o circuito completo. Vou refazê-lo e ver se funciona OK. Obrigado
José Henriques
Sem problemas José ! Se precisar de ajuda em mais alguma coisa, é só perguntar. Abraço e obrigado !
O meu apresentou o mesmo erro, só gira no sentido horario apertando qualquer botão. Será que o de alguém funcionou???
Procure ver suas ligações o N2 não é ligado ao pino 9 e sim ao pino 10 do arduino, não é sequencial. Observe bem a ordem N1-8;N2-10;N3-9;N4-11
o meu apresentou os dois problemas que cujas soluções foi alterar a linha: const int stepsPerRevolution = 100 e inverter o N2 para a porta 10 … e agora tudo funcionando perfeitamente. Obrigado a todos, me ajudaram bastante. Mas agora estou tentando fazer que pare em um determinado ponto alguém sabe ou já tentou isso ???
ola… primeiramente agradeço o post, que realmente ajudou demais, mas no meu caso ele fica girando sem parar indepentente dos botoes, e aperto os botoes e nada acontece, o que posso ter feito de errado?
Bom dia Wilson, isso ser parece ser algo na ligação das bobinas. Você está usando o mesmo tipo de motor mostrado no post ? Abraço.
Amigo,
Primeiramente parabéns pelos tutoriais, estão sendo de grande ajuda!
Bom, estou querendo controlar esse motor de passo só que preciso que esse controle seja interativo, ou seja quero mudar o passo e o sentido no momento que eu achar necessário. Teria como você me dar uma luz de como fazer esse projeto.
Atenciosamente,
Arnaldo
Bom dia Arnaldo, e obrigado por acompanhar o Arduino e Cia. 🙂
Eu tenho um outro artigo falando sobre a biblioteca CustomStepper, que tem mais funções do que a biblioteca stepper normalmente utilizada :
http://www.arduinoecia.com.br/2014/04/controlando-motor-de-passo-28byj-48.html
Por outro lado, dependendo da sua necessidade, é possível fazer algo com a biblioteca Stepper mesmo. Que tipo de controle você está pensando em usar ?
Abraço !
Valeu pelo post… Tem como fazer com push de 2 terminais?
Boa tarde Mateus,
Pode sim, na verdade eu montei com push de 2 terminais. Apenas no desenho eu usei um de 4 terminais, que era o que estava disponível no software, mas a ligação é a mesma, blz ?
Abraço !
Boa noite, posso usar um microcontrolador com corrente de ate 20mA em vez do arduino? Tem alguma tabela relacionando os valores nas entradas do CI com o funcionamento do motor? Obrigado pela atenção.
Boa tarde Marcos,
Talvez você precise de algum circuito auxiliar. O que eu tenho com relação ao ULN2003 é o datasheet, nesse link : http://www.ti.com/lit/ds/symlink/uln2003a.pdf
Abraço !
Boa tarde!
Estou montando um circuito semelhante tendo no lugar dos botoes sensores de presença que devem para o motor ao detectar um objeto. Saberia me informar que alterações no script devem ser feitas para parar o motor?
Boa noite João,
Vai depender do tipo de sensor que você quer utilizar, mas eu utilizaria a biblioteca CustomStepper, que eu abordo nesse post :
http://www.arduinoecia.com.br/2014/04/controlando-motor-de-passo-28byj-48.html
A CustomStepper é mais completa, e tem comando inclusive para parar o motor, que é o que você precisa.
Abraço !
Então cara, nos meus testes, por conta dessa caixa de redução, são necessários 4096 passos para uma revolução, eu utilizei o uC AT89C51RE2 (análogo ao 8051 da intel) , a corrente que ele "pediu" da minha fonte externa beirou 240mA
Boa noite Lucas,
Sim, este é um ótimo motivo para não ligar o motor diretamente nas portas do Arduino. O ULN2003 aguenta 500mA por porta.
Abraço !
Amigo, estou com o mesmo problema de um post anterior. Fiz a ligação corretamente, mas quando carrego o programa ele só gira em um sentido com os 2 botões. Quando solto o botão os leds referente a posição do passo não apagam.
Bom dia,
O seu módulo é do mesmo modelo apresentado no post ?
Abraço.
Eu estava com esse mesmo problema e descobri o porquê: O esquema de ligação dos fios do módulo do motor para o Arduíno estava errado. É assim: pino 8 do Arduíno no IN1, pino 9 no IN3, pino 10 no IN2 e pino 11 no IN4. Foi só trocar que rodou certinho!
Bom dia,
Obrigado pelas informações, vou revisar o post para ver se não há nada de errado.
Abraço !
Sim, é o mesmo modelo. Inclusive abri a biblioteca do Stepper e alterei o valor da direção do motor e ela girou no outro sentido, mas não consigo girar em sentidos opostos. OBS: a ligação dos pinos no arduino está correta
Olá amigo, boa tarde!!!
Estou com um probleminha aqui, se puder me ajudar…
Preciso de um código para o seguinte funcionamento: (porta automatizada)
1 – Quando ligo o comando porta inicialmente fechada(motor de passo) e sensor(LOW), aguardando sensor(HIGH).
2 – Quando sensor(HIGH) por 3 segundos, liga motor de passo(nº de passos desejado) e aguarda até que o sensor fique em(LOW) por 3 segundos para que retorne o mesmo numero de passos e feche a porta novamente.
3 – Aguarda que o sensor fique em(HIGH) novamente….
Este é o loop que eu preciso desesperadamente!!!!
Obrigado!!!
Nelson Junior
Respondido por email. Abraços e obrigado !
Amigo, eu também estou com este problema de só rodar no sentido horário independentemente do botão que for pressionado. Meu kit é este mesmo, 28byj-48+plaquinha ULN2003. A propósito, você é o FILIPEFLOP do Mercado Livre? Eu já comprei lá e recomendo.
Bom dia,
O FILIPEFLOP é uma loja parceira aqui do site, mas eu escrevo artigos para eles também. 😉
Agradeço a recomendação, e aguardamos sua visita em breve.
Abraços !
Tenho um kit arduino e o driver do motor de passo fiz um teste com os outros códigos funcionou certinho mas com os botões não funcionou o motor fica só parado aperto nos botões e não acontece nada o código e o mesmo do post da uma ajuda ae .
Oi Ricardo,
O seu kit de motor e driver é o mesmo do post ?
Abraço !
ola pessoal joinha… sera que vcs podem me ajudar com um motor de passo, estou tentando fazer a fonte dele para mover a quantidade de passos que colocar independente da velocidade que seria acionado por um botao..seria controlado por CI uln2003, quando acionar o botao ele gira a quantia de passos que elaborar e parar
estou procurando varios conteudo para poder aprender mais so que nao acho nada de concreto
Bom dia Marcos,
Esse post trata exatamente disso, você aciona um dos botões, e o motor correspondente se move a quantidade de passos definida na variável dessa linha :
int passos = 50;
O botão que você se refere é comum ou um potenciômetro ?
Abraço !
Boa noite a todos
Gostaria de saber se poderia substituir os dois botões de acionamento po um sensor ultrasônico.
Boa tarde,
Sem problemas. Você pode definir uma faixa de detecção de distância para que o motor vire no sentido horário ou anti-horário.
Tenho alguns artigos aqui no blog utilizando o sensor ultrasonico HC-SR04 que podem te ajudar.
Abraço !
Boa noite pessoal, comprei este mesmo kit e um Arduino Leonardo, mesclei um código a fim de obter o que preciso, sou novato e não entendo muito de programação, porém o kit deve executar a seguinte tarefa:
Movimentar um carrinho por 25cm e depois voltar até desligar o sistema, porém coloquei um potenciômetro para controlar a velocidade em alguns casos. Pergunta, o cód abaixo foi compilado e antes de iniciar o teste gostaria de um parecer de vocês, se estou no caminho, ou tenho que refazer alguma linha, preciso de uma ajuda!
1.
2. #include
3. int steps = 50;
4. // Número de passos dados
5. const int stepsPerRevolution = 500;
6. // passos por volta 4096
7. Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);
8. // Primeiro argumento refere-se ao número de passos de rotação
9. // Os próximos argumentos são os pinos conectados ao Arduino
10. // a leitura prévia da entrada analógica
11. int previous = 0;
12. void setup()
13. {
14. myStepper.setSpeed(60);
15. // velocidade do motor em 60;
16. }
17. void loop()
18. {
19. myStepper.step(40960);
20. // sentido horário
21. delay(3000);
22. // Delay de 3,0seg
23. myStepper.step(-40960);
24. // sentido anti-horário
25. delay(3000);
26. // Delay de 3,0seg
27. int val = analogRead(0);
28. // obtém o valor do sensor
29. myStepper.step(val – previous);
30. // mover um número de passos igual à mudança na
31. //leitura do sensor
32. previous = val; // lembrar o valor anterior do sensor
33. }
como posso fazer para utilizar a maior força e maior velocidade neste motor
Boa noite,
A velocidade desse motor é uma coisa complicada, não dá pra aumentar muito. Quanto à força, por favor dê uma olhada nesse artigo, em que eu uso a biblioteca CustomStepper para acionar esse mesmo motor.
Você pode utilizar a biblioteca no modo "4 passos", que teoricamente imprime mais força ao motor.
Abraço !
Segue artigo sobre a CustomStepper : http://www.arduinoecia.com.br/2014/04/controlando-motor-de-passo-28byj-48.html
Olá, seria possível controlar este motor com Bluetooth?
Boa tarde. É possível sim. Neste outro artigo eu mostro como controlar um servo utilizando Bluetooth, mas você pode usar o mesmo princípio para controlar um motor de passo :
http://www.arduinoecia.com.br/2014/01/controlando-um-servo-motor-utilizando.html
Abraço !
Oh, se o uln impede ele de puxa tanta corrente do arduino, ele vai puxar onde? você ta colocando alguma fonte, em qual parte?
Boa noite,
Estou utilizando apenas os 5v do Arduino. O ULN2003 é um driver de corrente, com transistores em configuração Darlington, que proporciona um ganho de corrente. Cada driver é capaz de fornecer 500 mA de corrente para o motor.
Acho que esses dois links podem te ajudar a entender melhor :
http://pt.wikipedia.org/wiki/Transistor_Darlington
E o datasheet do CI :
http://www.st.com/web/en/resource/technical/document/datasheet/CD00001244.pdf
Abraço !
Obrigado!
Valeu ! Abraço.
Bom dia amigo, Estou com uma duvida tem como, fazer o motor girar 90°, e parar mesmo que o botão esteja, acionado?
Boa noite,
Você pode usar um loop while para testar o estado do botão, e não mover o motor enquanto o estado do botão não mudar.
Abraço.
Boa tarde!
Tenho este mesmo motor de passo e consegui fazer o teste deste exemplo 🙂 . Agora estou tentando fazer o motor rotacionar para os dois lados usando o bluetooth, porem não estou conseguindo. Tem como fazer? Poderia me da dicas de como fazer isso?
Obrigado!
Bom dia,
Por favor dê uma olhada nesse post. Eu fiz para controlar um servo motor, mas você pode usar o mesmo princípio para movimentar motores de passo :
http://www.arduinoecia.com.br/2014/01/controlando-um-servo-motor-utilizando.html
Abraço !
Ok, vou tentar!
Aproveitando, é possível fazer um código onde eu possa controlar o motor de passo e adicionar aquele seu exemplo dos LED controlados por bluetooth tudo junto?
Obrigado.
Bom dia,
Sem problemas, você pode "misturar" tudo.
Abraço !
Boa tarde!!
Eu fazendo um projeto de uma casa automatizada e estou precisando da função do motor de passo.
Quando eu realizo somente este programa, ele funciona normalmente. Mas quando eu incremento ele junto ao acionamento de outros equipamentos o motor não gira, fica apenas um zunido.
Ja tentei modificar o numero de voltas por passos, mas continua o mesmo problema. Você sabe o que pode ser?
Estou utilizando o mesmo kit (28BYJ-48 + ULN2003)
Obrigado!
Otávio.
Boa tarde Otávio,
Você está controlando tudo pelo Arduino ? Que tipo de sensores ou outros equipamentos você está ligando ?
Pergunto pois a corrente fornecida pelo Arduino é baixa, por isso pode não estar fornecendo força suficiente para o motor girar.
Abraço !
boa noite , poderia me ajudar a montar esse projeto sem a protoboard ,qual a maneira correta de fazer as ligaçoes dos fios ???
Boa tarde Sandro,
Você tem o motor e a placa com o ULN2003, certo ? Basta copiar o circuito que está no post.
Não sei se você conhece como funciona a protoboard, mas os furos na parte central da placa estão conectados na vertical, e os furos nas laterais (onde existem as linhas azul e vermelha), estão conectados na horizontal.
Abraço !
mas o programa possui dois botões. Eu quero alterar para um sensor ótico. Como faço?
mas o circuito é com dois botões, eu quero trocar por um sensor ótico. como alterar o programa?
Boa tarde Paulo,
Dê uma olhada nesse artigo, que mostra a ligação do sensor ótico TCRT5000. Você pode usar essas informações para adaptar no seu circuito, utilizando o sensor ao invés do botão.
Abraço !
Quero trocar os dois botões por um sensor ótico e fazer o motor parar com 5 voltas. É possível?
Oi Paulo,
É sim. Nesse artigo aqui eu falo sobre um contador com sensor óptico. Você só tem que adaptar esse programa ao motor e colocar um IF para que ele pare quando completar 5 voltas.
Abraço !
Oi amigo! Primeiramente, obrigado por essa valiosa postagem – estava esperando exatamente isso, acionamento de motor de passo com botões;
Mas, faço uma pergunta: tenho vários motores de 12 volts e 2 módulos para motor: Ponte-H L298N e o Easy Driver, portanto, posso fazer as mesmas conexões? e os resistores devem permanecer o de 330 ohms?
Obrigado mais uma vez
Boa noite,
Os resistores podem permanecer os mesmos sim, já que são utilizados apenas para os botões. Quanto aos módulos, cada um tem uma ligação específica, por favor dê uma olhada nos meus artigos, pois eu tenho posts sobre esses dois módulos que vc citou.
Abraço !
Boa noite, sou iniciante na área, tenho uma duvida… no meu projeto, Eu gostaria de controlar o posicinamento de um motor de passo que deverá girar 360 graus por radio controle, mais a questão é que o mesmo posiciomanto no radio controle que será desenvolvido em arduino também deverá ser no motor de passo instalado no dispositivo controlado, pra melhor entendimento, no radio angulo inicial 0 lá no dispositovo controlado ele também deverá ser 0, quando posicionado no radio 45 graus o motor no dispositivo também deverá ser posicionado, se Eu voltar para a posição 0 o motor deverá seguir o posicionamento. Já pensei em usar potenciometro, mais este tem limite de curso, um servo também tem limite de curso, ele modificado Eu consigo saber o posicionamento dele sem ter que ler quanto tempo e gira para um lado ou para outro ? Se Eu usar um encoder, ele possui um ponto zero inicial ?
Boa tarde,
No encoder você pode setar um "ponto zero" sim, dê uma olhada no meu post sobre encoder: http://www.arduinoecia.com.br/2015/08/como-usar-encoder-rotativo-ky-040-arduino.html
Abraço !
Boa noite amigo
Vi que seu poste tem mais de um ano mas como conhecimento não tem idade…..
Rsrsrsr.
sou novo na área de programação e preciso de uma ajuda
Estou utilizando como base para um teste a sua programação acima.
mas preciso que ,quando acionar o botão, o motor ande 10 graus e pare.A movimentação sempre sera ao apertar o botão e tem que andar 10 graus e parar
No aguardo,
Boa tarde Reginaldo,
Sem problemas, o post é meio antigo, mas muito acessado. Ainda bem. Como você disse, conhecimento não tem idade. 🙂
Para o seu caso, tente usar a biblioteca CustomStepper, ela tem mais recursos e fica mais fácil de você determinar o ângulo de giro do motor: http://www.arduinoecia.com.br/2014/04/controlando-motor-de-passo-28byj-48.html
Abraço !
Valeu pelas dicas
Consegui resolver!!
Olá a todos… Amigos já havia conseguidi fazer a leitura dos encoders e posicionar o motor de passo… Só esqueci de postar aqui!
Segue o link do vídeo !
Detalhe Eu usei a biblioteca Encoders do próprio arduino.
https://youtu.be/LmX317znQAw
Obrigado a todos.
Poderia colocar um diagrama de como ficaria a ligação de 3 motores( 3motor+3driver+arduino como controladora?
boa noite
preciso duma ajuda estou fazer um trabalho que é um olho inteligente e to a usar 2 servos motores de 9g, um motor de passo ,umuln2003, web cam e o arduino uno.
a minha duvida é a seguinte os servos eles giram na parte horizontal angulo de 0 a 180 graus, e o motor de passo 0 a 360. Como fazer tal coisa acontecer juntamente cm a web cam?
To em duvida meu motor é de 6 fios, e to com dificuldade em achar o ajuste dele, como ele roda melhor encontrar a sequencia dos fios.
Agradecia
Esse motor é forte?
tenho 4 deles consigo segurar seu eixo com muita facilidade.
Olá amigo, muito bom esse seu post, porem estou com uma dúvida. Como faço para controlar mias de um motor ao mesmo tempo? Por exemplo, um motor girar em um sentido e o outro no sentio contrario?
Boa noite Idelbrando,
Você pode usar o mesmo esquema, mas para acionar o outro motor você cria uma outra instancia do motor de passo, por exemplo:
Stepper myStepper_numero2(stepsPerRevolution, 4,5,6,7)
Abraço!
Olá, estou utilizando o kit (28BYJ-48 + ULN2003) e quando aciono os botoes, só gira para o mesmo lado. o que pode ser???
Bom dia Tuca,
Nenhuma ligação invertida ?
Abraço!
Olá. Excelente material.
Como posso controlar o motor de passo pela net,remotamente de outro lugar?
Agradeço a atenção.
Boa noite,
Você pode usar um ethernet shield ou até mesmo um ESP8266, falo sobre os dois aqui no blog.
Abraço!
boa noite! excelente conteúdo! preciso fazer controle de motor de passo com potenciômetro e duas chaves ópticas para limitar a área de trabalho de uma mesa coordenada . poderia me ajudar?
Bom dia,
Sim! Por favor entre em contato utilizando o formulário de contato no lado direito da página.
Abraço!
fiz esse projeto funcionou perfeitamente, gostaria de saber se tem como adaptar esse projeto com o modulo rf transmissor e receptor 433mhz para acionar o motor com os botões a distancia
Boa tarde,
Tem sim, inclusive estou escrevendo um post sobre esse assunto.
Abraço!
qual o programa utilizado para a montagem do circuito no desenho?
baixei o fritzing mas não encontro a placa do uln2003 e nem o motor 28bjy-48.
Obrigado
PODEM FAZER UM POST PARA ACIONAR UM MOTOR DE PASSO NEMA 17 POR INTERUPTORES,QUE FAÇAM ELE GIRA 360 GRAUS…OBRIGADO.
PODEM FAZER UM PROGRAMA QUE ACIONE UM MOTOR DE PASSO POR INTERRUPTORES,QUE GIRE 360 GRAUS..AGRADEÇO..
Oi ! É possível utilizar Reed Switches como fim de curso para esse motor de passo? Eu tentei, mas o motor não aciona. Como eu poderia solucionar esse problema?
Aguardo retorno.
Olá! É possível programar o Arduino para acionar o motor em intervalos de tempos grandes? Ex.: em intervalos de +-300s aciona o motor para gira determinado sentido e velocidade.
Oi Roberto,
É possível sim, e relativamente fácil de implementar.
Abraço!
Amigo, eu não entendi o esquema dos push-button, eles são NA ou NF? Até onde entendi, tem um 5v chegando no push-button, mas parece não estar ligado em nada, pois eu consegui fazer o motor funcionar, mas não consigo inverter a rotação usando os push-buttons.
Desde já agradeço e parabéns pelos artigos
Boa noite,
Os push-button são NA, utilizei esses de 4 "pernas", os 5V chegando nos push-button são para gerar o nível 1 (alto) no programa. Caso o botão não seja acionado, o botão está conectado ao GND.
Abraço e obrigado!
Adilson
Ola,td bom??
Estou fazendo um projeto usando o mesmo motor de passo e o objetivo é utilizar display 7 segmentos pra mostrar o ângulo. Contudo, ao colocar isso tudo em um único código o motor de passo não funciona, só o display (se eu compilo os dois separadamente ambos funcionam).
Alguma ideia do que possa ser o problema?
Amigo parabéns pelo post… uma ajuda por favor… quero fazer um direcionador de fios em uma bobinadeira, entao quero entrar com um numero (voltas) e o motor dar esse numero de voltas pra frente e inverter e voltar o mesmo numero de voltas… ate que eu desligue (quando atingir o numero total de voltas)
como usar apenas um botao que gira anti-horário que esta especificado no seu código mas volta sozinho depois de um tempo pequeno e para.sem precisar apertar outro botao.
Boa Noite , gostaria tirar alguma duvidas, acha que com este programa dê para fazer o portão automatico, com dois botões como o Sr tem a mudar o sentido?
Tenho em duvida, quando carrego num dos botôes e se voltar a carregar se o portão pare e ao voltar a pressionar volta a andar ? obrigado, espero por uma resposta
Boa tarde. Fiz exatamente como no seu post e o motor não deu nem sinal de giro quando apertei um dos botões. Não sei o que houve, tem alguma idéia do que possa ser?
Aproveitando, você sabe como posso controlar esse motor da seguinte forma?:
Ao pressionar um botão ele gire tantas voltar no sentido horario e pare, e ao apertar outro botão ele gire o mesmo tanto de voltas e pare? Quero utiliza-lo para fazer um portão automatico em um projeto de casa automatizada que farei no meu tcc. Obrigado.
Boa noite. Você sabe como faço pra controlar esse motor da seguinte forma?:
Ao pressionar botão 1 ele gire N voltas e pare, ao pressionar Botão 2 ele gire o mesmo N de voltas e pare. Gostaria de utiliza-lo para fazer um portão automatico no meu projeto do tcc, farei uma casa automatizada. Obrigado
Tentei mesclar o código para giro em ângulo usando um push-button, mas não consegui. Minha ideia seria apertar o push-button e o motor girar 90º, por exmeplo, e parar. E só girar outros 90º quando apertar o botão novamente.
Usei o código:
// Programa : Controle motor de passo 28BYJ-48 – Angulo
// Autor : Arduino e Cia
#include
//Define os parametros iniciais de ligacao do motor de passo
CustomStepper stepper(8, 9, 10, 11, (byte[]){8, B1000, B1100, B0100,
B0110, B0010, B0011, B0001, B1001}, 4075.7728395, 12, CW);
void setup()
{
//Define a velocidade do motor
stepper.setRPM(12);
//Define o numero de passos por rotacao
stepper.setSPR(4075.7728395);
}
void loop()
{
if (stepper.isDone())
{
//Intervalo entre acionamentos
delay(2000);
//Define o sentido de rotacao (CW = Horario)
stepper.setDirection(CW);
//Define o angulo de rotacao
stepper.rotateDegrees(90);
}
stepper.run();
}
Boa noite sou muito novo nessa area do arduino….queria fazer 1 projeto de 1 portao eletrico sem usar chave fim de curso…utilizando so o motor de passo virando, exemplo em 2000 passos abre portao e volta a 0 portao fecha.
porem acionando via bluetooth…mais nao consigo criar 1 botao para acionar o abre e fecha 🙁
alguem poderia me salvar 🙂
// Programa : Controle de sentido de rotacao de motor de passo
// Autor : Arduino e Cia
#include
int pinobotao_ah = 3; //Porta botao sentido anti-horario
int pinobotao_h = 2; //Porta botao sentido horario
int passos = 50; //Passos a cada acionamento do botao
int leitura = 0; //Armazena o valor lido do botao horario
int leitura2 = 0; //Armazena o valor lido do botao anti-horario
const int stepsPerRevolution = 500;
// Inicializa a biblioteca utilizando as portas de 8 a 11 para
// ligacao ao motor
Stepper myStepper(stepsPerRevolution, 8,9,10,11);
void setup()
{
pinMode(pinobotao_h, INPUT);
pinMode(pinobotao_ah, INPUT);
myStepper.setSpeed(60); //Determina a velocidade do motor
}
void loop()
{
//Gira o motor no sentido horario
leitura = digitalRead(pinobotao_h);
if (leitura != 0)
{
myStepper.step(-passos);
}
//Gira o motor no sentido anti-horario
leitura2 = digitalRead(pinobotao_ah);
if (leitura2 != 0)
{
myStepper.step(passos);
}
}
Boa noite.
Vocês têm algum código de controle de passos e velocidade?
Seria 1 volta completa em 60 minutos com 60 passos.
Agradeço.
Oi Elvis,
Infelizmente não tenho. Por acaso você vai fazer um relógio? 🙂
Abraço!
Adilson
Olá,
O motor utilizado é de 5V. Como o driver tem uma queda de tensão de 1V, a alimentação não deveria ser de 6V? Isso poderia melhorar o torque do motor?
boa noite.
gostaria de uma ajuda!
estou querendo movimentar 2 motores de passo em um Arduíno,isso é possível?
o esquema é esse, ligar o motor em 3 segundos ao acionar um push button, depois disso o motor pare e assim sucessivamente. alguém pode me ajudar nisso?