mirror of
https://github.com/caperren/ossm_overkill_edition.git
synced 2025-11-08 21:11:13 +00:00
Motion works
This commit is contained in:
80
software/motion_controller/main.py
Normal file
80
software/motion_controller/main.py
Normal file
@@ -0,0 +1,80 @@
|
||||
import machine
|
||||
from machine import Pin
|
||||
from time import sleep
|
||||
from neopixel import NeoPixel
|
||||
from motion_controller.accel_stepper import AccelStepper, DRIVER
|
||||
from utime import ticks_us, sleep_us
|
||||
|
||||
"""CL57T(V4.0) Closed-Loop Stepper Driver
|
||||
10
|
||||
Figure 10: Sequence chart of control signals
|
||||
Remark:
|
||||
a) t1: ENA must be ahead of DIR by at least 200ms. Usually, ENA+ and ENA- are NC (not connected). See
|
||||
“Connector P1 Configurations” for more information.
|
||||
b) t2: DIR must be ahead of PUL effective edge by 2us to ensure correct direction;
|
||||
c) t3: Pulse width not less than 1us;
|
||||
d) t4: Low level width not less than 1us;
|
||||
e) Duty cycle of PUL signal is recommended 50%"""
|
||||
|
||||
def machine_main():
|
||||
# machine.freq() # get the current frequency of the CPU
|
||||
# machine.freq(240000000) # set the CPU frequency to 240 MHz
|
||||
|
||||
thrust_step_pin = Pin("D10", Pin.OUT)
|
||||
thrust_dir_pin = Pin("D9", Pin.OUT)
|
||||
thrust_step_pin.value(0)
|
||||
thrust_dir_pin.value(0)
|
||||
|
||||
def step():
|
||||
thrust_step_pin.value(1)
|
||||
sleep_us(1)
|
||||
thrust_step_pin.value(0)
|
||||
|
||||
def fwd():
|
||||
thrust_dir_pin.value(1)
|
||||
sleep_us(2)
|
||||
step()
|
||||
|
||||
def rev():
|
||||
thrust_dir_pin.value(0)
|
||||
sleep_us(2)
|
||||
step()
|
||||
|
||||
thrust_axis = AccelStepper(fwd, rev)
|
||||
thrust_axis_endstop_estop_pin = Pin("D21", Pin.IN, Pin.PULL_UP)
|
||||
|
||||
pin = Pin("D6", Pin.OUT) # Pin number for v1 of the above DevKitC, use pin 38 for v1.1
|
||||
np = NeoPixel(pin, 3) # "1" = one RGB led on the "led bus"
|
||||
for pixel in range(3):
|
||||
np[pixel] = (0, 255, 0)
|
||||
np.write()
|
||||
|
||||
thrust_steps_per_revolution = 3200
|
||||
thrust_max_speed = 20 * thrust_steps_per_revolution
|
||||
|
||||
thrust_homing_speed = 8 * thrust_steps_per_revolution
|
||||
thrust_max_acceleration = 5 * thrust_steps_per_revolution
|
||||
|
||||
thrust_axis.set_max_speed(thrust_max_speed)
|
||||
thrust_axis.set_acceleration(thrust_max_acceleration)
|
||||
thrust_axis.set_speed(thrust_homing_speed)
|
||||
|
||||
thrust_axis.move(-100*thrust_steps_per_revolution)
|
||||
|
||||
print("Homing")
|
||||
while thrust_axis_endstop_estop_pin.value():
|
||||
thrust_axis.run()
|
||||
print(f"{thrust_axis.current_position()}:{thrust_axis.target_position()}")
|
||||
print("Homed")
|
||||
thrust_axis.set_current_position(0)
|
||||
|
||||
thrust_axis.set_max_speed(thrust_max_speed)
|
||||
thrust_axis.run_to_new_position(200)
|
||||
|
||||
for i in range(3):
|
||||
thrust_axis.run_to_new_position(5000)
|
||||
thrust_axis.run_to_new_position(200)
|
||||
|
||||
|
||||
|
||||
machine_main()
|
||||
Reference in New Issue
Block a user