Boa tarde Garaginos, estou a dar em tolo, não consigo por nada controlar o motor de passo através do modulo ponte h l298n.
Já experimentei dezenas de maneiras mas nada :S
O modulo é igual a este:
E o motor é este:
Segui o seguinte exemplo:
Mas nada, sinto o motor a vibrar mas não gira, já troquei os fios todos nos OUT1, OUT2, OUT3 e OUT4, mas nada.
Alguém consegue descobrir onde estou a errar?
Tags:
Alguém sabe dizer se preciso conetar o ENA e ENB para controlar o motor?
Por favor preciso mesmo de ajuda !!!
Não conheço bem essa placa, mas acredito que vc mantendo os straps onde estão não precisa comandar ele.
O que quer dizer com straps ?
Consegue ser mais explicito, ?
Obrigado
Eu conheço por strap, acho que aih tem outro nome:
https://www.sparkfun.com/products/9044
Referencia:
http://www.socialbits.com.br/articles/328/entendendo-como-configura...
Obrigado pela excelente resposta.
Já experimentei com ou sem o conetor mas não encontrei diferença :s
Esse motor ele tem 2 bobina com 1 fio em comum, ou seja você vai ter que descobrir qual fio esta em comum com elas então deve energizar ele ou colocar ele no terra. Então os outros fios você deve colocar no shield na sequencia correta, assim que você acionar o shield ele vai por exemplo aterrar o fio daquela bobina especifica fazendo com que o motor de 1 passo e assim sucessivamente.
O fio comum é o vermelho e estou a ligar nos 5v do modulo.
Quanto á ligação das bobinas fiz inicialmente seguindo o esquema do datasheet:
Depois troquei a sequencia dos fios para testar mas não consegui nada, consigo sentir o motor trabalhar mas não gira.
O meu problema acho que está na ligação do Módulo ao Arduino
O arduino tem que acionar as bobinas na sequencia correta se não ele fica vibrando mesmo,
por exemplo se você definiu no codigo os pinos 7,8,9,10 ai você coloca o 7 no in1, o 8 no in2 .....
também tem o lance da velocidade de rotação, geralmente esses motores não devem passar de 80 RPM
mas alem disso tenta inverter o terra e o fase, liga o vermelho no terra e no shield você manda o fase.
Lembrando que os enable tem que estar com os jumper conectado
Os Enables tem de ter os jumper mas não preciso coneta los ao arduino certo?
Eu tenho as ligações da seguinte forma:
Fio Azul - Out1
Fio Rosa - Out2
Fio Amarelo - Out3
Fio Laranja - Out4
Fio Vermelho (comum) - Gnd ou 5v do shield
In1 - Pin8 (arduino)
In2 - Pin9
In3 - Pin10
In4 - Pin11
Códigos usados:
// This Arduino example demonstrates bidirectional operation of a
// 28BYJ-48, using a ULN2003 interface board to drive the stepper.
// The 28BYJ-48 motor is a 4-phase, 8-beat motor, geared down by
// a factor of 68. One bipolar winding is on motor pins 1 & 3 and
// the other on motor pins 2 & 4. The step angle is 5.625/64 and the
// operating Frequency is 100pps. Current draw is 92mA.
//////////////////////////////////////////////////declare variables for the motor pins
int motorPin1 = 8; // Blue - 28BYJ48 pin 1
int motorPin2 = 9; // Pink - 28BYJ48 pin 2
int motorPin3 = 10; // Yellow - 28BYJ48 pin 3
int motorPin4 = 11; // Orange - 28BYJ48 pin 4
// Red - 28BYJ48 pin 5 (VCC)int motorSpeed = 1200; //variable to set stepper speed
int count = 0; // count of steps made
int countsperrev = 512; // number of steps per full revolution
int lookup[8] = {B01000, B01100, B00100, B00110, B00010, B00011, B00001, B01001};//////////////////////////////////////////////////////////////////////////////
void setup() {
//declare the motor pins as outputs
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
Serial.begin(9600);
}//////////////////////////////////////////////////////////////////////////////
void loop(){
if(count < countsperrev )
clockwise();
else if (count == countsperrev * 2)
count = 0;
else
anticlockwise();
count++;
}//////////////////////////////////////////////////////////////////////////////
//set pins to ULN2003 high in sequence from 1 to 4
//delay "motorSpeed" between each pin setting (to determine speed)
void anticlockwise()
{
for(int i = 0; i < 8; i++)
{
setOutput(i);
delayMicroseconds(motorSpeed);
}
}void clockwise()
{
for(int i = 7; i >= 0; i--)
{
setOutput(i);
delayMicroseconds(motorSpeed);
}
}void setOutput(int out)
{
digitalWrite(motorPin1, bitRead(lookup[out], 0));
digitalWrite(motorPin2, bitRead(lookup[out], 1));
digitalWrite(motorPin3, bitRead(lookup[out], 2));
digitalWrite(motorPin4, bitRead(lookup[out], 3));
}
#include <Stepper.h>
const int stepsPerRevolution = 64;
Stepper myStepper(stepsPerRevolution, 8,9,10,11);void setup() {
myStepper.setSpeed(200);
}void loop() {
// velocidade por setSpeed()
for (int i = 0; i < 32; i++)
{
myStepper.step(64);
}
delay(1000);for (int i = 0; i < 32; i++)
{
myStepper.step(-64);
}
delay(1000);
}
Sim o enable tem que estar com o jumper e somente os outros 4 in que tem que estar no arduino. Será que o problema não esta na resolução do seu motor? a grande maioria é de 200 passos por volta. outra coisa o shield funciona de forma diferente ao ULN então o mais certo seria você utilizar o ultimo programa aqui descrito.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por