A shot from the hip, but usually those drive/steppers will have wrong encoder wiring, would be prudent to double check.
Hi tommylight,
It just so turned out you were right: one of my encoder wire were loose, I tightened it on the CL57T-V41 driver and it behaves now.
This is the wiring diagram:
My References for the Wiring Diagram:
1.
From 34:14 CL57T Driver Overview.
2.
help.stepperonline.com/en/article/wiring...tepper-motor-4cddqy/
The first CL57T diagram.
3.
pypi.org/project/cl57t-raspberry-pi-stepper-drive/
See the table for signal pins to the Raspberry Pi 4B.
And I have learned to work the ENA+ pin: setting it to low to enable, to high to disable.
The Python code below turns the motor 1 revolution, pauses for a little then keeps on turning till Control C to stop.
If I changed [ gpio.output( ena_pin, gpio.LOW ) ] to [ gpio.output( ena_pin, gpio.HIGH ) ] the motor won't turn.
Now I am trying to figure out why I need 1600 to do one revolution, it is about how the DIP switches are set, I have to understand the table in the manual
Thank you and best regards,
...behai.
[
# 08/11/2024
#
# Enable by setting ENA+ pin to low. Expected: motor will run.
#
# /usr/bin/python3 nema23_04_ena_enabled.py
#
from time import sleep
import RPi.GPIO as gpio
direction_pin = 13
pulse_pin = 6
ena_pin = 19
cw_direction = 0
ccw_direction = 1
gpio.setmode( gpio.BCM )
gpio.setup( direction_pin, gpio.OUT )
gpio.setup( pulse_pin, gpio.OUT )
gpio.setup( ena_pin, gpio.OUT )
gpio.output( direction_pin, cw_direction )
# Enable.
gpio.output( ena_pin, gpio.LOW )
# ENA pin must be ahead of DIR by at least 200ms.
sleep( 0.5 )
try:
while True:
print( 'Direction CW' )
sleep( .5 )
gpio.output( direction_pin,cw_direction )
for x in range( 1600 ):
gpio.output( pulse_pin, gpio.HIGH )
sleep( 0.0001 )
gpio.output( pulse_pin, gpio.LOW )
sleep( 0.0001 )
except KeyboardInterrupt:
# Disable.
gpio.output( ena_pin, gpio.HIGH )
gpio.cleanup()
]