Recents in Beach


Receba o meu conteúdo GRATUITAMENTE


Usando Motor de Passo sem informação

 


Já estava ficando com saudades de mecatrônica. Então, hoje, vamos falar de motor de passo. Vamos montar um projeto com um motor de passo desconhecido com o Driver DRV8825 e Arduino UNO, com exemplo de programa usando a função micros() para controlar a velocidade de rotação. Confira no vídeo!




Quer adquirir um DRV8825? Indico este link:

 https://www.banggood.com/custlink/3DKGkSwO29

E para quem quiser enviar algum componente pra mim, seguem os dados da Caixa Postal:

Caixa postal: 4444
CEP: 19020-970

 


MONTAGEM





Obs:  Nessa aula não usamos o potenciômetro A1

 

 

 

RECURSOS USADOS

  • Motor de passo desconhecido ( retirado de drive de disquete 3 ½
  • Placa padrão
  • Fios
  • 1 Potenciômetro de 10k
  • 2 Leds
  • 1 drv8825
  • 2 resistor de 10k
  • 1 resistor de 330R
  • 1 Dip Switch de 4 chaves
  • 1 protoboard
  • Arduino Uno
  • 2 capacitores de 100nF
  • 1 capacitor de 470uF
  • 2 conector molex 4 vias
  • 1 conector borne de 4 vias

 

 

 

LIMITE DE CORRENTE


 


 

SAÍDA DO DRV8825

https://www.banggood.com/custlink/3DKGkSwO29

 


 

 

CÓDIGO FONTE

///#define DEBUG
#//define TDELAY     500
#define ENABLE       2
#define DIRPIN       4
#define STEPPIN      3
#define BOTAOPIN    12
#define MAX_AD    1024   // PARA STM32 ESP32 E ARDUINO DUE USAR 4096
                         // #define MAX_AD    4096   

unsigned long TPulso = 0;
unsigned long TPulsoContinuo = 0;
bool giroDirEsq = true;
bool pressionou = false;
int PotA0 = 0;



setup e loop

void setup() {
  // Declare pins as outpu0t:
  pinMode(STEPPIN, OUTPUT);
  pinMode(DIRPIN, OUTPUT);
  pinMode(ENABLE, OUTPUT);
  
  pinMode(BOTAOPIN, INPUT);
  
  digitalWrite(DIRPIN, giroDirEsq);
  digitalWrite(ENABLE, LOW);
  TPulso = 2000;
  Serial.begin(115200);
}
// --------------------------------------------------------------------------------
void loop() {
  LeVel();
  PBotao();
  umpasso();
}



umpasso

void umpasso(void)
{
    digitalWrite(STEPPIN, HIGH);
    delayMicroseconds(TPulso);
    digitalWrite(STEPPIN, LOW);
    delayMicroseconds(TPulso);
}
void LeVel(void)  // REGULA A VELOCIDADE DO PULSO 
{
  PotA0 = analogRead(0);
  PotA0 = map(PotA0, 0, MAX_AD, 1000, 100);    // VELOCIDADE INVERSAMENTE PROPORCIONAL AO TEMPO DO PULSO POR ISSO 1000 PARA 100
  TPulso = PotA0;
  #ifdef DEBUG
      Serial.print("--> TPulso:");
      Serial.println(TPulso);
      delay(TDELAY);
  #endif
 }



PBotao

void PBotao(void)
{
  pressionou = digitalRead(BOTAOPIN);
  if(pressionou) {
    giroDirEsq = !giroDirEsq;
    delay(1000);
    digitalWrite(DIRPIN,giroDirEsq);
    pressionou = false;
    #ifdef DEBUG
      Serial.print(">>> BOTÃO PRESSIONADO");
      delay(TDELAY);
    #endif
  }
}

 

 

 

FAÇA O DOWNLOAD DOS ARQUIVOS

 

 

 

 

 

Postar um comentário

0 Comentários