Week 10 Assignment - output devices

Goals

Assignment

Idea

I'll make my own version of the satstep6600, which is a stepper driver. A stepper driver is required to operate and control the position of stepper motors. My final project is a DIY CNC and it will use four stepper drivers.

License

The license status of the original satstep6600 is in the time of writing not clear. Either it is (CC BY-NC-SA 4.0) or (CC BY-SA 4.0).

Therefore concider all content on this page to be licensed Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0).

Hopefully I can get the satshakit team to remove/clarify the non-commercial requirement. If so I will upload my work to fellesverkstedet/fabricatable-machines, look for it there if you need a more free license.

Side by side comparison with original

Original SatstepperMy version 2.0

    Original features

  • Always drops holding torque when motor is stationary
  • At max potentiometer settings the Voltage reference (Vref, controls the output current) greatly exceeds data sheet specifications
  • Current through MO and ALERT pins exceeds datasheet specifications to power LEDs
  • Dip switches are not in the same sequence as in the data sheet (not wrong, just complicated)
  • Uses non fab-inventory current sense resistors
  • Shared ground plane for motor currents and signals

    My 2.0 features

  • Switch lets user choose if holding torque should be maintained or reduced
  • Voltage reference can not be made to exceed specifications
  • MO and ALERT gives a digital signal and current is kept inside datasheet specifications
  • Dip switches are in the same sequence as in the data sheet (making setup easier)
  • Uses fab-inventory current sense resistors
  • Return ground for motor currents kept separate from signal ground plane.

    Other notable updates:

  • Improved capacitor placement in accordance with the data sheet

Satstep6600 v2 - My Files

Pinout PNG
Schematic PDF

Eagle board file .brd
Eagle schematic file .sch
Component libraries for Eagle
Drill rack file for the PCB Gcode plugin for Eagle
Toopaths in .tap format for 0,4mm mill.

Arduino code to test drive the stepper using either an Arduino or a Satshakit controller like the one I did in week 15 Wire connections to run a stepper motor with the driver

Videos of the output board in use

Below is a video of me testing the stepper driver with a push button generating the clock pulse. It moves 1,8 deg per pulse (it is stet to 200 full steps per revolution) which is bearly visible.

Turn on sound!

UPDATE 1! I used this board in the communications week to make a prototype of my final project CNC machine.

Here it is wired up to my input device board (made in week13) and my contoller board (made in week15). They communicate using SoftwareSerial and the controller sends pulses to the stepper driver.

UPDATE 2! I used that setup to test run my first machined linear axis for my final project

Here is a video of the first test

I later installed the driver in my final project. I didn't have time to make three more drives but I fully intend to do so after the end of fab academy. I'll also add some more improvements that I have thought of while using it.

Future improvements

Process

The all in one board idea

The Statstep6600 original stepper driver board did not have it's own programmable microcontroller. At first I wanted to add a attiny44 and some buttons so that I could drive it direcly. Creating a one card stepper driver, controller and input device. However while routing the board I noticed that it made the stepper driver card needlessly overcomplicated and would not make sence in the long run. Especially since I later wanted to make four of them that would serve one controller. So I changed my mind and broke it up into two cards that became my input and output device respectively.

Here is my (abandoned) All-In-One_board that I ended up breaking into two boards.


Schematic of (abandoned ) all in one card.

I later finished the input device part with the buttons in
week13 - input devices.

Fixed bugs in the satstep6600 original board

Looking through and learing about the components on the original satstep6600 original board I found a few bugs that I fixed in my design.

I made adjustments to the board layout according to my comments above and also broke out the ground return from the motors from the signal ground plane. They now meet only at the ground wire terminal.

Other updates I made

Fabbing the board

I used PCB GCODE in EAGLE to generate double sided milling, drill holes and the cut-out milling. This was my first attempt to get it working and I couldn't yet get it to do multi pass milling for wider insulation between traces.

I have since then gotten better at using PCB-GCODE and written this tutorial for how to get started with PCB-gcode for EAGLE. It is now my preffered choice for how to mill PCBs and I used it to make my controller card in week 15 for my final project.

PCD Gcode generates GCode that is directly compatible with the CNC machines in the Verket fab lab.

I really appreciate to be able to CAM directly in Eagle since it makes it really fast to do updates if you realise something is wrong when you stand by the machine. And it is also better at doing contour milling and drilling than Mods.

Trick for cutout milling:

  1. Select "line" (not "Route")
  2. Set it to be slightly wider than your cutout milling bit
  3. Set it to layer "Milling"
  4. Draw where you want to mill the outline.
  5. In the PCB-Gcode plugin, first pane, under "Board" check "Generate milling" and set it to slightly deepther than your board is thick.

However sometimes it bugs when trying to generate multiple isolation milling passes, single pass always works.

If you get a bug, try this:

To set up drilling in PCB-Gcode you need a "drill rack file", here is my drill rack file, you can alter the drill sizes to fit your purposes.


Toopaths in .tap format for 0,4mm mill.

It is worth noting that PCB Gcode by default calls the trace milling "etch" and the cut out milling "mill".


The completed card!




Top