Ir ao conteúdo

Motor nema 23 com um driver de motor DM556


Ir à solução Resolvido por Div,

Posts recomendados

Postado

Tenho um drive DM556 conforme a imagem 
fa2d5c4fa3aced56751940f5c89ed8aa9d72f338
E um motor de passo 

a3fc16add14f7efd17aa76a9212a1c65.jpg
Com uma fonte de energia dc regulated power supply rps-305

313JoWQUhAL._AC_SS450_.jpg

Usando um arduino uno eu apenas queria o fazer ligar corretamente para usá-lo em um piloto automático porém sem sucesso na montagem e faze-lo ligar
.

O código que eu usei foi 
 

//int reverseSwitch = 2;
int driverPUL = 6;    // PUL- pin
int driverDIR = 7;    // DIR- pin
int spd = A0;     // Potentiometer

// Variables

int pd = 3000;       // Pulse Delay period
boolean setdir = LOW; // Set Direction

void setup() {

  pinMode (driverPUL, OUTPUT);
  pinMode (driverDIR, OUTPUT);
}

void loop() {
    digitalWrite(driverDIR,setdir);
    digitalWrite(driverPUL,HIGH);
    delayMicroseconds(pd);
    digitalWrite(driverPUL,LOW);
    delayMicroseconds(pd);
}

 

Eu realmente quero fazer esse motor rodar qualquer ajuda é bem vinda!

Esse acra fez algo parecido 

porém o drive que ele usou não bate com o meu e eu sou novo em c++ para arduino a montagem ta iqual  a dele 
image.png.00d82d1126cf8811a26afc0b9e6f1bc4.png

  • Curtir 1
Postado

Bem, nunca mexi com Arduino então não tenho experiência prática nisso, mas ligar igual realmente não irá funcionar, pois o driver é outro, além do programa ser diferente também, lá ele usa pino 8, pino 2 e pino 5, nesse programa parece usar pinos 6 e 7 apenas (PUL no 6, DIR no 7).

Postado

@dudaskank @dudaskank Sim com meu drive eu tentei 
 

#include <Arduino.h>

const int ena = 2; //habilita o motor
const int dir = 3; //determina a direção
const int pul = 4; //executa um passo
const int intervalo = 750;   //intervalo entre as 
   // mudanças de estado do pulso
boolean pulso = LOW; //estado do pulso

void setup()
{
pinMode(ena, OUTPUT);
pinMode(dir, OUTPUT);
pinMode(pul, OUTPUT);
digitalWrite(ena, LOW); //habilita em low invertida 
digitalWrite(dir, HIGH); // low CW / high CCW 
digitalWrite(pul, HIGH); //borda de descida
}

void loop()
{
pulso = !pulso; //inverte o estado da variável
digitalWrite(pul, pulso); //atribui o novo estado à porta
delayMicroseconds(intervalo); 
}

 

Ainda sem respostas

image.thumb.png.07eb8d2a358d52cc1ed42dec1bb3638b.pngimage.thumb.png.2415c6471d126f4ca960c99a1ebb6b5b.png

  • Curtir 1
Postado

@Div , será que não tem que deixar o enable em HIGH ali? Pelo que entendi seria isso, mas como disse eu não tenho a menor experiência prática. No vídeo lá de cima, ele fala que colocou no eixo X daquele programa o enable, e quando aperta um dos botões (X+ ou X-) ele gira pra um dos lados.

  • Curtir 1
  • 2 meses depois...
  • Solução
Postado
#include <Arduino.h>

const int pulPin = 2;
const int dirPin = 3;
const int enPin = 4;

int x;

int delayrotacao = 500;

void setup() {
  pinMode(pulPin,OUTPUT);
  pinMode(dirPin,OUTPUT);
  pinMode(enPin,OUTPUT);
  digitalWrite(enPin,LOW);
}

void loop() {
  digitalWrite(dirPin,HIGH);

  if(x - 1000){
    digitalWrite(pulPin,HIGH);
    delayMicroseconds(delayrotacao);
    digitalWrite(pulPin,LOW);
    delayMicroseconds(delayrotacao);
  }
}

 

  • Amei 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...