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: 4444CEP: 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
}
}









2 Comentários
Muito legal
ResponderExcluirGostei muito do comentário que você fez com o Lego e Eletrônica....Atualmente estou com 61 anos e trilhei praticamente os mesmo caminhos que você....saí da Eletrônica e fui para área de Processamento de Dados e me aposentei em 2020 em plena pandemia. Mas nunca deixei a eletrônica e vim acompanhando a evolução.,
ResponderExcluirDepois que conheci o seu canal, venho tentando aprender a programar......