em 02-12-2018 03:02 PM - editado pela última vez em 08-12-2021 02:51 PM por NIadmin
Olá, tudo bem?
Venho pedir ajuda a vcs com relação ao controle de um motor de passo usando o Labview e Arduino. Montei o programa, rodou tudo direitinho, mas a rotação ficou em 6 rpm. Um amigo meu fez apenas usando o Arduino e conseguiu 14rpm. Tem como otimizar a velocidade com que o Labview faz a leitura do programa? Obrigado!
Att, Eduardo.
obs: segue a foto do programa.
em 02-12-2018 06:14 PM
Olá,
Tenta com a função que se segue:
em 02-12-2018 09:00 PM
Tentei aqui mas não consegui fazer o motor girar (provavelmente ignorância minha) usando o que você sugeriu 😕 Mas obrigado mesmo assim!
em 02-13-2018 03:54 AM
Bom dia,
O teu amigo consegue uma velocidade superior à tua porque não tem o delay introduzido por cada comunicação. Por exemplo, com um baudrate de 9600 demoras mais ou menos 1ms para enviar 1byte.
Para que consigas aumentar a velocidade do motor podes com a tua aplicação original :
- aumentar o baudrate se ainda for possível
- tentar reduzir o número de comunicações
Com a função que te sugeri eu diria que devia funcionar. Mas eu nunca cheguei a usar o linx. Fiquei pelo lifa. Mandando um palpite... Se mandas o motor rodar alguns segundos e ele sai imediatamente daquele vi pode querer dizer que o tens de meter num loop. Mas isto é inventar sem saber como funciona
em 02-14-2018 02:16 PM
Boa Tarde, Eduardo. Como vai?
Eu concordo com as sugestões feitas pelo Jorge para a melhoria de velocidade. No entanto, como não sabemos como seu circuito de controle de motor funciona, não dá para dar uma ajuda mais pontual.
Até onde me lembro, existem duas formas de controlar motores de passo com um Arduino:
1. Usando um driver de motor como o EasyDriver, no qual há uma entrada Digital para determinar o sentido de rotação e uma entrada que aceita um trem de pulsos (a função Digital Write Square Wave seria adequada nesse caso) que determina a velocidade do motor. Esses drivers são mais completos e mais simples de serem utilizados. Esse tutorial explica como utilizá-lo;
Eu estou com o Jorge nessa! Não tenho 100% de certeza porque também nunca usei o Linx, mas tudo indica que, se você utiliza um driver como o EasyDriver, você certamente vai atingir uma velocidade maior que 6RPM, mesmo usando o Linx
2. Utilizando simplesmente um ULN 2003 para controlar o Drive. Aí faria mais sentido fazer a rotação de bits direto no código do Arduino, como dá para ver nesse tutorial.
Esse vídeo mostra como seria as estratégias de geração de pulsos para controle do motor.
Eu acredito que esse método não seja muito interessante se você está buscando velocidade, porque exige que muitos comandos sejam trocados entre o LabVIEW e o Arduino para ficar chaveando o motor. Mas, se você ainda quiser utilizar esse método, provavelmente terá que deixar o Linx de lado e fazer códigos customizados tanto para o Arduino quanto para o LabVIEW para conseguir uma velocidade de rotação interessante.
Qual desses métodos é mais próximo da sua aplicação?
Atenciosamente,