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