Stellaris LaunchPad & Energia: Control de motor paso a paso con el driver BD63873EFV


En este pequeño ejemplo veremos el código para controlar el motor paso a paso con el driver BD63873EFV que rescatamos anteriormente de una vieja impresora.
 
Circuito:
La conexión del driver a la Stellaris, ya lo contado en otra publicación, puedes revisar la información completa desde aquí. A la imagen antes presentada, le he agregado las conexiones de la placa Stellaris, aunque en el código es fácil descifrar a que pines conectar.

Código:
Para el código hes creado un sketch básico, en el cual solo activo el motor en una sola dirección, el clock del reloj esta a 10ms, pero se puede modificar para usar otro tiempo.
/*******************************************************************************
*
* Control de motor paso a paso con el driver BD63873EFV
*
*******************************************************************************
* FileName: LM4F_E012.ino
* Processor: EX-LM4F120XL
* Complier: Energia 1.6.10E18
* Author: Pedro Sánchez (MrChunckuee)
* Blog: http://mrchunckuee.blogspot.com/
* Email: mrchunckuee.psr@gmail.com
* Description: Este ejemplo es un testo para control de un motor paso a paso
* con el driver BD63873EFV, ambos rescatados de una vieja impresora
*******************************************************************************
* Rev. Date Comment
* v0.0.0 25/03/2019 Creación del firmware
******************************************************************************/
#define pinButton1 PUSH1
#define pinLedRedStatus RED_LED
#define pinLedGreenStatus GREEN_LED
#define pinLedBlueStatus BLUE_LED
#define pinClkDriver PA_2
#define pinCwCcwDriver PA_3
#define pinMode0Driver PA_4
#define pinMode1Driver PB_6
#define pinEnableDriver PB_7
#define pinPSDriver PF_0
// Variables will change:
int ledState = LOW; // ledState used to set the LED
long previousMillis = 0; // will store last time LED was updated
long interval = 10; // interval at which to blink (milliseconds)
void setup() {
pinMode(pinButton1, INPUT_PULLUP);
pinMode(pinLedRedStatus, OUTPUT);
pinMode(pinLedGreenStatus, OUTPUT);
pinMode(pinLedBlueStatus, OUTPUT);
pinMode(pinClkDriver, OUTPUT);
pinMode(pinCwCcwDriver, OUTPUT);
pinMode(pinMode0Driver, OUTPUT);
pinMode(pinMode1Driver, OUTPUT);
pinMode(pinEnableDriver, OUTPUT);
pinMode(pinPSDriver, OUTPUT);
//Init default driver
digitalWrite(pinCwCcwDriver, LOW); //Clockwise
digitalWrite(pinMode0Driver, LOW); //Full step
digitalWrite(pinMode1Driver, LOW); //Full step
digitalWrite(pinEnableDriver, HIGH); //Active
digitalWrite(pinPSDriver, HIGH); //Active
}
void loop() {
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval) {
// save the last time you blinked the LED
previousMillis = currentMillis;
// if the LED is off turn it on and vice-versa:
if (ledState == LOW)
ledState = HIGH;
else
ledState = LOW;
// set the LED with the ledState of the variable:
digitalWrite(pinLedGreenStatus, ledState);
digitalWrite(pinClkDriver, ledState);
}
}
view raw LM4F_E012.ino hosted with ❤ by GitHub

Vídeo:
Aquí un pequeño vídeo del circuito en funcionamiento, anteriormente ya de había mostrado el video.


Descargas:
Aquí el enlace directo para DESCARGAR los archivos disponibles, también puedes revisar o descargar la información desde mi repositorio en GitHub, si no sabes como descargarlo puedes checar aquí, bueno por el momento es todo si tienes dudas, comentarios, sugerencias, inquietudes, traumas, etc. dejarlas y tratare de responder lo mas pronto posible.


Donaciones:
Si te gusta el contenido o si los recursos te son de utilidad, comparte el enlace en tus redes sociales o sitios donde creas que puede ser de interés y la otra puedes ayudarme con una donación para seguir realizando publicaciones y mejorar el contenido del sitio. También puedes hacer donaciones en especie, ya sea con componentes, tarjetas de desarrollo o herramientas. Ponte en contacto para platicar, o puedes volverte uno de nuestros sponsors.


Pido una retroalimentación avisando cada que un enlace no sirva o tenga errores al momento de abrirlo, así también si una imagen no se ve o no carga, para corregirlo en el menor tiempo posible.

Referencias:

Publicar un comentario

0 Comentarios