Classe+StepperMotor

Home > Robótica > Bibliotecas **Recursos** > RunTimer > Timer2 > CircularBuffer > SerialLog > ActionPlan **Dispositivos** > Ultrassom > Array de sensores > NRF24L01 > Wireless log > RF24Control **Movimento** > **StepperMotor** > StepperMotorTm > StepperRobot Inicialização > StepperRobot Operação > Recursos

Aqui é implementado o controle básico de um motor de passo. Esta classe cuida de controlar a geração de pulsos para as bobinas dos motores na sequência correta e permite trabalhar com passo completo, meio passo ou duplo torque. A classe não faz o controle de tempo dos pulsos, esse controle é implementado em classes descendentes. Para um uso básico de motores passo, é uma solução bem simples e prática. Abaixo a declaração pública da classe:

code format="java5" class StepperMotor { public: StepperMotor(int mPin1, int mPin2, int mPin3, int mPin4); // construtor, devem ser informados os pinos para o motor. void init;             // inicialização, chame antes de qualquer outro método void turboOn;          // ativa o modo turbo (duplo torque) void turboOff;         // desliga o modo turbo void halfStepOn;       // ativa o modo meio-passo void halfStepOff;      // desliga o modo meio-passo void motorOff;         // desliga as bobinas

byte nextStep(int direction); // executa um passo no motor boolean halfStep;           // informa se o modo meio-passo está ativo

void motorPinsOut(byte pins); // não chame diretamente este método, é usado por outras classes. }; code Para usar, crie uma instância informando os pinos que serão usados para controlar o motor de passo. Dentro da função //**setup**// chame o método //**init**// e selecione o modo de operação: passo completo (padrão), meio-passo ou turbo. Depois dentro do loop chame o método //**nextStep**// para mover o motor um passo. O exemplo abaixo faz o motor girar 2048 passos em uma direção e depois mais 2048 na direção contrária, repetidamente.

code format="java5" StepperMotor mt(4, 5, 6, 7); // pinos de controle do motor

void setup { ...  mt.init; ... }

int count= nsteps; int dir= 1;
 * 1) define nsteps 2048

void loop { ...  mt.nextStep(dir); count--; if(!count){ count= nsteps; dir *= -1; } delay(10); ... }

code

Observações:
**Modo turbo (duplo torque):** Este modo não altera a quantidade de passos por volta, mas ativa duas bobinas por vez. Isso dobra o torque do motor mas também dobra o consumo de energia. O motor fica também mais "truculento", as vibrações ficam mais intensas e tende a dar trancos mais fortes na partida e na parada.

**Modo meio-passo:** Neste modo o motor alterna a cada passo o modo turbo e o modo passo completo, o resultado é que a cada pulso enviado ao motor pelo método nextStep, ele gira meio passo. Isso dobra a resolução do motor. Se é um motor de 400 passos por volta, passa a ter 800 passos por volta. O motor também tem um funcionamento mais suave, com trancos mais leves e vibrações menos intensas. O consumo de energia e o torque é o meio termo entre os modos passo completo e modo turbo.

**Modo passo completo:** Este é o modo padrão de operação do motor. É ativada uma bobina de cada vez e cada pulso move o motor um passo completo. É o modo com o menor consumo de energia e também com o menor torque.

**Duração dos pulsos:** Essa é uma questão crítica na operação de motores de passo. A duração dos pulsos, ou seja, o intervalo de tempo entre cada passo, determina a velocidade de giro do motor, mas esse não é o único efeito. Precisamos lembrar que bobinas são, em última instância, fios enrolados que conectam um polo a outro na fonte de energia, ou seja, são basicamente curto-circuitos. Quando uma bobina é ativada, o consumo de corrente vai aumentando com o tempo, podendo chegar a um nível insuportável para a fonte de energia, os circuitos de controle do motor ou até para o próprio motor. O ideal é operar o motor em sua velocidade máxima, ou seja, com o menor tempo de duração de pulso possível. Quanto menores os pulsos, mais rápido o motor gira e menor será o consumo de energia. Em sua velocidade máxima, o motor tem um funcionamento mais suave, com um mínimo de vibrações e baixo consumo. Mas determinar essa velocidade não é simples. Além de depender das características do motor, depende do modo de operação (normal, meio-passo ou turbo) e também da voltagem que é fornecida a suas bobinas e da carga que ele precisa mover. Um motor girando sozinho vai ter um comportamento diferente do que quando ele precisa mover algum peso. Outro detalhe é que quando existe carga, a velocidade máxima não pode ser atingida logo na partida, é preciso iniciar o giro em uma velocidade menor e gradualmente acelerar até a velocidade máxima.

**Direção:** O método //**nextStep**// exige um parâmetro que indica a direção de giro do motor. Pode ser 1, -1 ou zero. 1 gira em um sentido, -1 no sentido oposto e zero "trava" o motor na posição em que está, o motor não gira, mas as bobinas ficam ativadas, travando o motor. Nunca deixe o motor travado por muito tempo, existe o risco de queimar o circuito de controle ou até o próprio motor. Além disso o consumo de energia dispara nessa condição. Leia a observação anterior para entender melhor. Para desligar as bobinas, chame o método //**motorOff**//.

.