Hi everybody
I am a new with this driver and just do not understand what is “floating” in its microstepping.
i have some robot/manipulator which uses 4 steppers with Pololu DRV4988 board and it has very simple interface for microstepping. But now i am building some another manipulator with few steppers and already bought a DRV8834 - so how i can give the 1/32 microstep on it??
Thanks in advance
“Floating” usually refers to an input pin on a device that has no connection to it. That is distinguished from a pin which is connected to ground (or a “low” microcontroller output) or to the logic power supply voltage (or a “high” microcontroller output). The floating state of a device input can be mimicked by having the microcontroller reconfigure the corresponding output pin as an input pin, with pullup off, a state also called “high impedance”.
For the DRV8834, configure the microcontroller pin connected to M0 either as an output (and then either low or high) or as an input with pullup off. There are then three logic values for M0: high, low or floating, and two states for M1 (low or high) which gives six states total. The states of M0 and M1 are latched when the step input goes high, and sets up the motor driver step size according to Table 4 of the DRV8834 data sheet. Current limiting must be engaged and properly set.
Hi Jim.
Thanks a lot for your help but to my shame i did not understood a lot. Can you give me some simple example for Arduino codding please.
I don’t use Arduinos, but configuring a pin as input or output, and setting an output to high or low are the simplest and very most basic of operations. That is all you need to do to control the DRV8834, so it is not much more difficult than turning an LED on or off. It sounds like you need to start at the beginning.
Hi Jim
I’ve try to play with registers and you were right - i pooled down m0 pin from arduino and got what i want.
// sets M0 pin to LOW
pinMode(m0Pin, OUTPUT);
digitalWrite(m0Pin, LOW);
// sets M0 pin to HIGH
pinMode(m0Pin, OUTPUT);
digitalWrite(m0Pin, HIGH);
// sets M0 pin to float
pinMode(m0Pin, INPUT);
digitalWrite(m0Pin, LOW);