It is difficult to comment on these as drawn because the box in the upper left called ‘controller’ , which I believe you copied from the external driver supplier, is really not correct. As an example, the Output signal “Step” (called Pulse by the External Driver) is the output of tinyG device, not the input to the base of a pseudo bipolar transistor(NPN or PNP) between that signal and the output pin on the controller.
For tinyG, the logic sense of the signals is as follows:
- Step (Pulse) - active high, logic 1, inactive low, logic 0
- Dir - CW high, logic 1, CCW low, logic 0
- Enable - active low, logic 0, inactive high, logic 1
Lets focus on the Step pulse lead.
Logically, you want to connect the tinyG Step lead to the Pulse + lead of the external driver and ground the Pulse - lead.
In reality, the output impedance of the tinyG lead, combined with the input limiting resistor on the external driver results in a marginal current flow in the Pulse opto isolator input diode. The solution to this is to insert a non-inverting level translator which will convert the 3.3V logic high from tinyG into a higher level logic high voltage; could be 5V, or perhaps could be 12V.
It depends on the input specs for the Driver input and the level translator device.
Opto-isolator circuits like this typically have a wide range of voltage for logic 1, typically 5V to 20 V or more.
Why 12V? You could derive that voltage from the tinyG fan supply, eliminating the need for yet another power supply.
Same for the Dir lead; Dir(tinyG) to Dir+(driver), Dir-(driver) to gnd.
Assuming that the driver device wants enable to be logic 1, not logic 0 as output by tinyG, I would suggest to following:
TinyG Enable lead connects to a non-inverting level translator input, whose output connects to Enable-(driver). Enable+(driver) connects to 12V or 5V supply, depending on the input specs of the driver.
device. This connection inverts the tinyG logic, to be compatible with the external driver.
Follow me so far?