Usando L398 breaks para controlar motores de passo II
Para ler um pouco mais sobre a teoria desse assunto, aqui o datasheet do L298, coração da nossa plaquinha e aqui uma documentação a respeito da própria placa.
Abaixo, um exemplo simples de software para acionar um motor de passo conectado ao break conforme mostrado no esquema do primeiro post:
Existe uma biblioteca pronta para controle desse tipo de motor. Ela é interessante porque permite o controle do motor sem ter que dar delay, como a gente faz acima. O programa acima funciona apenas se a única coisa a fazer é acionar o motor, o que quase nunca é o caso. Ao usar a AccelStepper, vc aciona o motor e ele fica acionado enquanto o sistema está fazendo outras coisas.
Abaixo, um exemplo muito simples do uso do mesmo circuito, agora comandado por essa lib.
É isso. Abracadabraço!
Abaixo, um exemplo simples de software para acionar um motor de passo conectado ao break conforme mostrado no esquema do primeiro post:
int IN1=2; int IN2=3; int IN3=4; int IN4=5; int ENB=6; // Obs: a placa que eu usei usa jumpers como enable, int ENA=7; // então nem precisaria de usar esses pinos. // Esse fonte abaixo funciona para os dois tipos de placa. void setup() { pinMode(ENA,OUTPUT); pinMode(ENB,OUTPUT); pinMode(IN1,OUTPUT); pinMode(IN2,OUTPUT); pinMode(IN3,OUTPUT); pinMode(IN4,OUTPUT); digitalWrite(ENA,HIGH); digitalWrite(ENB,HIGH); } void loop(){ // O sistema vai acionando as bobinas de maneira // a promover o giro do rotor. // O intervalo de 30 milissegundos é necessário // para que o rotor gire. Quanto menor, // mais rápido o motor gira, até que ele para de // girar e começa a vibrar. Esse é o limite de // velocidade para esse tipo de placa controladora, // e depende de cada motor. digitalWrite(IN1,LOW); digitalWrite(IN2,HIGH); digitalWrite(IN3,HIGH); digitalWrite(IN4,LOW); delay(30); digitalWrite(IN1,LOW); digitalWrite(IN2,HIGH); digitalWrite(IN3,LOW); digitalWrite(IN4,HIGH); delay(30); digitalWrite(IN1,HIGH); digitalWrite(IN2,LOW); digitalWrite(IN3,LOW); digitalWrite(IN4,HIGH); delay(30); digitalWrite(IN1,HIGH); digitalWrite(IN2,LOW); digitalWrite(IN3,HIGH); digitalWrite(IN4,LOW); delay(30); }
Existe uma biblioteca pronta para controle desse tipo de motor. Ela é interessante porque permite o controle do motor sem ter que dar delay, como a gente faz acima. O programa acima funciona apenas se a única coisa a fazer é acionar o motor, o que quase nunca é o caso. Ao usar a AccelStepper, vc aciona o motor e ele fica acionado enquanto o sistema está fazendo outras coisas.
Abaixo, um exemplo muito simples do uso do mesmo circuito, agora comandado por essa lib.
// ConstantSpeed.pde // -*- mode: C++ -*- // // Shows how to run AccelStepper in the simplest, // fixed speed mode with no accelerations /// \author Mike McCauley (mikem@open.com.au) // Copyright (C) 2009 Mike McCauley // $Id: ConstantSpeed.pde,v 1.1 2011/01/05 01:51:01 mikem Exp mikem $ #include <AccelStepper.h> AccelStepper stepper; // Defaults to AccelStepper::FULL4WIRE (4 pins) on 2, 3, 4, 5 void setup() { stepper.setMaxSpeed(600); stepper.setSpeed(400); } void loop() { stepper.runSpeed(); }
É isso. Abracadabraço!
Comentários
Postar um comentário