Advertisements

Posts Tagged 3018 CNC

DRV8825 Stepper Driver: Forcing Fast Decay Mode in a (Likely) Counterfeit Chip

The DRV8825 stepper driver chip defaults to mixed decay mode, which TI defines thusly:

Mixed decay mode begins as fast decay, but at a fixed period of time (75% of the PWM cycle) switches to slow decay mode for the remainder of the fixed PWM period. This occurs only if the current through the winding is decreasing (per the indexer step table); if the current is increasing, then slow decay is used.

The 24 V supply on the CNC 3018-Pro provides too much voltage for the motors, because slow decay mode can’t handle those rising slopes:

3018 XY - Mixed Fast - 24V - 10mm-min 12V 1A-div
3018 XY – Mixed Fast – 24V – 10mm-min 12V 1A-div

Note that “rising” means the current increases with either polarity from 0 A at the midline. The DRV8825 uses a MOSFET H-bridge to drive winding current in either direction from the +24 V motor supply voltage.

Both traces show motor winding current at 1 A/div, with the XY axes creeping along at 10 mm/min (thus, 7.1 mm/min each). The upper trace is the X axis, with a stock DRV8825 module in mixed decay mode. The lower trace is the Y axis, with its DRV8825 hacked into fast decay mode.

The basic problem, about which more later, comes from the current rising too fast during each PWM cycle:

V = L di/dt
di/dt = 24 V / 3 mH = 8 kA/s

The first 1:32 microstep away from 0 calls for 5% of max current = 50 mA at a 1 A peak. The DRV8825 datasheet says the PWM typically runs at 30 kHz = 33 µs/cycle, during which the current will change by 270 mA:

267 mA = 8 kA/s × 33.3 µs

Some preliminary measurements suggest these (probably counterfeit) DRV8825 chips actually run at 16 kHz = 66 µs/cycle:

3018 X - ripple 1 step - 18V - A0 B-90 500mA-div
3018 X – ripple 1 step – 18V – A0 B-90 500mA-div

During those cycles the current can increase by more than 500 mA. The first scope picture shows an abrupt increase to maybe 700 mA, so, yeah, that’s about right.

Having the wrong current in one winding means the motor isn’t positioned correctly during those microsteps. The 3018-Pro runs at (an absurd) 1600 µstep/mm, so being off by even a full step isn’t big deal in terms of positioning.

The real problem comes from running nearly 1 A through both windings. Those little motors run really hot: they’re dissipating twice what they should be.

Anyhow, the pin layout shows the DRV8825 DECAY mode selection on pin 19:

DRV8825 pinout
DRV8825 pinout

Which sits on an inconveniently skinny little PCB pad, fifth from the left on the bottom:

DRV8825 PCB - open Decay pin
DRV8825 PCB – open Decay pin

Memo to Self: Don’t make that mistake when you lay out a PCB. Always put a little pad or via on a disconnected pin, so as to have a hand-soldering target big enough to work with.

The objective is to pull the pin high:

DRV8825 DECAY pin settings
DRV8825 DECAY pin settings

Pin 15, in the lower left corner, provides the output of a 3.3 V linear regulator, with its PCB trace connected to the left side of the ceramic cap:

DRV8825 PCB - Decay pin wired low
DRV8825 PCB – Decay pin wired low

On the scale of TSSOP packages, even 30 AWG Wire-Wrap wire looks like a bus bar!

Those are two different PCBs. The crappy TI logos, not easily visible in those low-res pix, on both ICs suggest they’re by-now-typical counterfeits, so seeing a factor-of-two difference in PWM frequency isn’t surprising.

Advertisements

, , ,

Leave a comment

CNC 3018-Pro: GRBL Configuration

The CNC 3018-Pro router arrived with GRBL 1.1f installed on the Camtool V3.3 board and ran well enough, although it accelerated very slowly. After installing Home switches, figuring out the travel limits, and trying different speeds & accelerations, it runs much better:

3018 CNC - Endstop switches - overview
3018 CNC – Endstop switches – overview

Configuration values to remember for next time:

$1=100 turns off the stepper motor drivers after 100 ms of inactivity:

3018 X - 100ms timeout - 100mm-min 12V 500 ma-div
3018 X – 100ms timeout – 100mm-min 12V 500 ma-div

There’s no force worth mentioning on a diamond scribe when the motors stop, so there’s no reason to keep them energized, and the DRV8825 chips resume from the same microstep when re-enabled.

$3=5 reverses the X and Z motor rotation, so you can use the same type of cable on all three axes and have them move the way you’d expect.

$20=1 turns on Soft Limits, thereby producing an error when you (or the G-Code) tries to move beyond the machine’s limits, as defined by the $120 $121 $122 values relative to the Home switch positions.

$21=0 leaves Hard Limits off, because I didn’t see much point in switches on both ends of all the axes for this little bitty machine.

$22=1 enables the Home cycle, after which you must start each session by homing the machine.

$27=1.000 sets the Pull-off distance from all three Home positions, so the machine ends up at absolute XYZ = -1.000 mm relative to the switch trip points after homing. This depends on the mechanics of the limit switches, but seems OK with the MBI-style switches I used:

3018 CNC - X axis endstop - 1 mm pull-off
3018 CNC – X axis endstop – 1 mm pull-off

$100 $101 $102 = 1600 set the XYZ step/mm, which requires knowing the 3018-Pro uses two-start leadscrews with a 2 mm pitch = 4 mm lead:

3018 CNC - two-start leadscrew
3018 CNC – two-start leadscrew

The Camtool V3.3 board hardwires the DRV8825 stepper controllers into 32 microstep mode, so:

1600 step/mm = (200 full step/rev) × (32 microstep/full step) / (4 mm/rev)

$110 $111 $112 = 1100 set the maximum speed along the XYZ axes in mm/min. Note the hard upper limit set by the maximum microcontroller interrupt rate of about 40 k/s:

1500 mm/min = 25 mm/s = (40×10³ step/s) / (1600 step/mm)

I’ll have more to say about speed limits, stepper current, torque, and similar topics.

$120 $121 $122 = 3000 set the acceleration along the XYZ axes in mm/sec². These are two orders of magnitude higher than the default acceleration, which accounts for the as-received sluggish acceleration.

$130=299.000 $131=179.000 $132=44.000 set the XYZ travel limits relative to the Home switch trip points, which feed into the $20=1 Soft Limits. You could probably eke out another millimeter along each axis, but this is what I came up with.

With all those in place, the G54 coordinate system puts the XY origin dead in the middle of the platform and the Z origin a little bit below its upper travel limit. Set them thusly:

G10 L2 P1 X-147 Y-90.6 Z-1.5

The original and tweaked GRBL configuration settings as a GitHub Gist:

The as-shipped configuration is mostly for reference, but ya never know when it might come in handy.

, ,

Leave a comment

Logitech “QuickCam Pro 5000” Ball Camera Disassembly

Another alignment camera contestant from the Big Box o’ Junk Cameras:

Logitech Pro 5000 Ball Camera - overview
Logitech Pro 5000 Ball Camera – overview

It’s a Logitech QuickCam Pro 5000 with a native 640×480 resolution. For no obvious reason, it seems to work better on a Raspberry Pi than the Logitech QuickCam for Notebooks Deluxe I ripped apart a few weeks ago, where “better” is defined as “shows a stable image”. I have no explanation for anything.

Remove the weird bendy foot-like object by pulling straight out, then remove the single screw from the deep hole visible just behind the dent in the top picture:

Logitech Pro 5000 Ball Camera - disassembled
Logitech Pro 5000 Ball Camera – disassembled

The stylin’ curved plate on the top holds the microphone and a button, neither of which will be of use in its future life. Unplug and discard, leaving the USB cable as the only remaining connection:

Logitech Pro 5000 Ball Camera - USB connector
Logitech Pro 5000 Ball Camera – USB connector

Inexplicably, the cable shield is soldered to the PCB, so the connector doesn’t do much good. Hack the molded ball off of the cable with a diagonal cutter & razor knife, taking more care than I did to not gouge the cable insulation.

A glue dot locks the focusing threads:

Logitech Pro 5000 Ball Camera - focus glue
Logitech Pro 5000 Ball Camera – focus glue

Gentle suasion with a needle nose pliers pops the dot, leaving the lens free to focus on objects much closer than infinity:

Logitech QuickCam Pro 5000 - short focus
Logitech QuickCam Pro 5000 – short focus

Now, to conjure a simpleminded mount …

,

Leave a comment

CNC 3018-Pro: Home Switches

The CNC 3018-Pro doesn’t absolutely need home switches, but (in principle) they let you install a workholding fixture at a known position, home the axes, pick a preset coordinate system for the fixture, and not have to touch off the axes before making parts.

Having used Makerbot-style endstop switch PCBs for the MPCNC, this was straightforward:

3018 CNC - Endstop switches - overview
3018 CNC – Endstop switches – overview

The X and Z axis switches simply press against the appropriate moving parts:

3018 CNC - X and Z Endstops
3018 CNC – X and Z Endstops

The little tab stuck on the tool clamp provides a bit of clearance around the upper part of the X axis assembly.

The Y axis switch needed a slightly tapered tab to extend the bearing holder:

3018 CNC - Y axis endstop
3018 CNC – Y axis endstop

It’s made from a random scrap of clear plastic, hand-filed to suit, and stuck on the bearing to trigger the switch in exactly the right spot.

You can find elaborate switch mounts on Thingiverse, but I’ve become a big fan of genuine 3M outdoor-rated foam tape for this sort of thing: aggressive stickiness, no deterioration, possible-but-not-easy removal.

The switches need +5 V power, so add a small hack to the CAMTool V3.3 control board to let the connectors plug right in:

3018 CNC CAMTool - Endstop power mod - installed
3018 CNC CAMTool – Endstop power mod – installed

The solid models borrow their central depression around the switch terminals from the MPCNC blocks:

3018 Home Switch Mounts - Slic3r preview
3018 Home Switch Mounts – Slic3r preview

The OpenSCAD source code as a GitHub Gist:

The dimension doodles:

3018 Home Switch Mounts - Dimension Doodles
3018 Home Switch Mounts – Dimension Doodles

,

1 Comment

CNC 3018-Pro: CAMTool Modification for MBI-style Home Switches

The Protonteer board I used on the MPCNC required a few additional pins for power to Makerbot-style home switches, so it’s no surprise the CAMTool V3.3 board on the CNC 3018-Pro gantry mill requires a similar hack:

3018 CNC CAMTool - Endstop power mod
3018 CNC CAMTool – Endstop power mod

The white jumper plugs into the single +5 V pin in the row and is soldered to a straight wire running along the entire row of header pins. I pushed the black plastic strip to the bottom, soldered the wire along the pins atop it, then clipped off the pins so they’re about the right height when flush against the PCB.

Use a two-row socket to hold the new row in alignment with the existing header:

3018 CNC CAMTool - Endstop power mod - alignment
3018 CNC CAMTool – Endstop power mod – alignment

Slobber on some epoxy and let it cure:

3018 CNC CAMTool - Endstop power mod - epoxy curing
3018 CNC CAMTool – Endstop power mod – epoxy curing

And then It Just Works™:

3018 CNC CAMTool - Endstop power mod - installed
3018 CNC CAMTool – Endstop power mod – installed

Well, after you install the switches and tell GRBL to use them …

Reminder: If you intend to put limit switches on both ends of the axis travel, you must clip the NC lead from both MBI switches. One switch per axis will work the way you expect and that’s how I’m using them here.

,

1 Comment

CNC 3018-Pro: Assembly Tweaks

If you regard your new CNC 3018-Pro Router kit as a box of parts which could, with some adjustments and additional parts, become a small CNC router, you’re on the right track.

In my case, the aluminum extrusions arrived somewhat squashed inside their well-padded foam shipping carton, which leads me to believe the factory responsible for tapping the bolt holes in the ends must be a fairly nasty place. In any event, the hammerhead T-nuts for the gantry struts simply didn’t fit into some sections of the slots, although they worked fine elsewhere.

So, file a smidge off the rounded sides of a few nuts:

3018CNC - 2020 T-nuts - filed
3018CNC – 2020 T-nuts – filed

Which let them slide into place and rotate properly despite the bent channel:

3018CNC - 2020 T-nuts - trial fit
3018CNC – 2020 T-nuts – trial fit

The assembly instructions used a word I’d never encountered before:

3018CNC - Gantry plate position
3018CNC – Gantry plate position

Turns out ubiety is exactly correct, but … raise your hand if you’ve ever heard it in polite conversation. Thought so.

I’ve not noticed any harm from rounding off the position to 46 mm; just position both struts the same distance from the rear crossbar and it’s all good.

The struts behind the CAMTool CNC-V3.3 electronics board were also squashed, prompting a bit more filing:

3018CNC - CAMTool v3.3 board - trial fit
3018CNC – CAMTool v3.3 board – trial fit

The CAMTool board is basically an Arduino-class microcontroller preloaded with GRBL 1.1f and surrounded with spindle / stepper driver circuits.

As with the MPCNC, I’ll dribble G-Code into it from a Raspberry Pi. Alas, the struts behind the CAMTool board are on 75 mm centers, but the Pi cases on hand have feet on 72-ish mm centers. Pay no attention to the surroundings, just drill the holes in the right spots:

3018CNC - RPi case - drilling
3018CNC – RPi case – drilling

Add more T-nuts and short button head screws, with rubber pads between the case and the struts:

3018CNC - RPi case - mounted
3018CNC – RPi case – mounted

It’s coming together!

, ,

10 Comments