Loving my A1, but it's a little messy… and I'm a little lazy. So I developed this poop conveyor. This project is not intended to define how you power the conveyor, I use a pico-controlled 38mm high NEMA17 stepper, which is less than ideal, but works for me. If there is any interest, I'll publish how I made my electronics, and upload a blank coupler so you can customise the connection. You'll be good if your drive spindle centre is 28.2mm off the ground.
You'll need four 608 bearings, 3d printed ones will do. Ideally, you'll also have a poop deflector that aims the poop more downward, like this one. You'll need to work out a way to drive the conveyor, You may also require two M3 screws to hold the spindle caps on the one spindle. Tracks are assembled with filament from the end of a roll.
I'd recommend printing everything in PLA, for no particular reason, it's just easier and the project has no specific needs. The tracks work fine for me in PLA, but if you're printing in PETG a lot, then the poop can be quite hot, and I have had it stick to the conveyor a bit until it's scraped off underneath after a while. Maybe print the tracks in PETG for more heat tolerance.
I use a PICO (with headers) to power things, I have no idea how to set this up and get stuff working properly, so I followed the PICO install micropython guide and it seemed to work eventually. I also use the motor shield and a NEMA 17 stepper motor. Here is the code I used to drive it. Tweak, and you do you. I can't seem to upload a python file.
#####################################
from machine import Pin
import time
led = Pin("LED", Pin.OUT)
# Stepper motor controller
M1E = 17 # Enable
M1A = 21 # Phase 1
M1B = 20 # Phase 2
M2E = 16 # Enable
M2A = 19 # Phase 1
M2B = 18 # Phase 2
#step_count = 8
m1e = Pin(M1E, Pin.OUT)
m1a = Pin(M1A,Pin.OUT)
m1b = Pin(M1B,Pin.OUT)
m2e = Pin(M2E, Pin.OUT)
m2a = Pin(M2A,Pin.OUT)
m2b = Pin(M2B,Pin.OUT)
step_ms = time.ticks_ms() # to calculate deltas
step_delay=1000
step_now = -1 # Starting state
led_ms = time.ticks_ms() # to calculate switch off LED time
led_delay=10;
def setStep(p1, p2, p3, p4):
m1a(p1)
m1b(p2)
m2a(p3)
m2b(p4)
def doStep():
global step_now, step_count, n
step_now += 1
if step_now >= step_count:
step_now = 0
setStep(n[step_now][0], n[step_now][1], n[step_now][2], n[step_now][3])
def setup():
global n, led_state, step_count
# motor loop enable, set value 0 to disable
m1e(1)
m2e(1)
# Set up the motor driver energise loop
step_count = 8
n = list(range(0, step_count))
n[0] = [0,1,0,0]
n[1] = [0,1,0,1]
n[2] = [0,0,0,1]
n[3] = [1,0,0,1]
n[4] = [1,0,0,0]
n[5] = [1,0,1,0]
n[6] = [0,0,1,0]
n[7] = [0,1,1,0]
led(0)
print("Setup complete")
def loop():
global step_ms, step_delay, led_ms, led_delay
now_ms = time.ticks_ms()
if now_ms > (step_ms + step_delay):
led_ms = now_ms
step_ms = now_ms
led.value(1)
doStep()
if now_ms > (led_ms + led_delay):
led.value(0)
setup()
while True:
loop()