Hackaday Prize Entry: DC Motor Controller

There are a lot of cheap Chinese CNC machines out there with okay mechanics and terrible electronics. The bearings aren’t complete crap, but the spindle of these CNC machines is a standalone PWM controller with a pot to control the speed. This means you can’t control the spindle speed with LinuxCNC or Mach3.

For his Hackaday Prize entry, [SUF] is building a DC motor controller for a Chinese spindle motor that doesn’t use any kind of encoder. The first part of that project is fairly easy; [SUF] has already built a high current driver. The second bit is a little it harder – because these spindles don’t have an encoder, [SUF] will have to read voltage spikes on the motor poles, giving him the RPM of the spindle. From there, it’s a bit of PID code to get this spindle running at a desired RPM and connecting it to a CNC control box.

So far, [SUF] has a second version of his board waiting for assembly. In the first version of the board, the switching time for the MOSFET was a little slow, but that’s all corrected in the current revision. It’s a great project to extend the capability of these cheap CNC machines, and perfect project for the Hackaday Prize.

The 2015 Hackaday Prize is sponsored by:

Closed Loop Control For 3D Printers

One of the bigger problems with any CNC machine or 3D printer is the issue of missed steps when moving the toolhead. If a stepper motor misses a step, the entire layer of the print – and every layer thereafter – will be off by just a tiny bit. Miss a few more steps, and that print will eventually make its way into the garbage. [Misan] has the solution to this: closed loop control of DC motors for a 3D printer.

Most printer firmwares use an open loop control system for moving their motors around. Step a few times in one direction, and you know where the nozzle of a 3D printer will be. Missed steps confound the problem, and there’s no way for the firmware to know if the nozzle is where it should be at any one time.

[Misan]’s solution to this was a DC motor coupled to an optical encoder. Both the motor and the encoder are connected to an Arduino Pro Mini which receives step and direction commands from the printer controller. The controller takes care of telling the motor where to go, the Arduino takes care of making sure it gets there.

The entire build is heavily derived from ServoStrap, but [Misan] has a very cool demo of his hardware: during a print, he can force the X and Y axes to either side, and the Arduino in each motor will move the print head back to where it needs to be. You can check that out below.

Continue reading “Closed Loop Control For 3D Printers”

POV Display Does it on the Cheap


[Sholto] hacked together this ultra low-budget spinning display. He calls it a zoetrope, but we think it’s actually an LED based Persistence Of Vision (POV) affair. We’ve seen plenty of POV devices in the past, but this one proves that a hack doesn’t have to be expensive or pretty to work!

The major parts of the POV display were things that [Sholto] had lying around. A couple of candy tins, a simple brushed hobby motor, an Arduino Pro Mini, 7 green LEDs, and an old hall effect sensor were all that were required. Fancy displays might use commercial slip rings to transfer power, but [Sholto] made it work on the cheap!

The two tins provide a base for the display and the negative supply for the Arduino. The tins are soldered together and insulated from the motor, which is hot glued into the lower tin. A paper clip contacts the inside of the lid, making the entire assembly a slip ring for the negative side of the Arduino’s power supply. Some copper braid rubbing on the motor’s metal case forms the positive side.

[Sholto] chose his resistors to slightly overdrive his green LEDs. This makes the display appear brighter in POV use. During normal operation, the LEDs won’t be driven long enough to cause damage. If the software locks up with LEDs on though, all bets are off!

[Sholto] includes software for a pretty darn cool looking “saw wave” demo, and a simple numeric display. With a bit more work this could make a pretty cool POV clock, at least for as long as the motor brushes hold up!

Continue reading “POV Display Does it on the Cheap”

Ride, Captain, Ride Aboard Your Arduino-Controlled Autopiloted Sailboat

[Jack], a mechanical engineer, loom builder, and avid sailor wanted an autopilot system for his 1983 Robert Perry Nordic 40 sailboat with more modern capabilities than the one it came with. He knew a PC-based solution would work, but it was a bit out of reach. Once his son showed him an Arduino, though, he was on his way. He sallied forth and built this Arduino-based autopilot system for his sloop, the Wile E. Coyote.

He’s using two Arduino Megas. One is solely for the GPS, and the other controls everything else. [Jack]’s autopilot has three modes. In the one he calls knob steering, a potentiometer drives the existing hydraulic pump, which he controls with a Polulu Qik serial DC motor controller. In compass steering mode, a Pololu IMU locks in the heading to steer (HTS).  GPS mode uses a predetermined waypoint, and sets the course to steer (CTS) to the same bearing as the waypoint.

[Jack]’s system also uses cross track error (XTE) correction to calculate a new HTS when necessary. He has fantastic documentation and several Fritzing and Arduino files available on Dropbox.

Autopilot sailboat rigs must be all the rage right now. We just saw a different one back in November.

Continue reading “Ride, Captain, Ride Aboard Your Arduino-Controlled Autopiloted Sailboat”

Building a Ball-Balancing Robot


If you want a different kind of feedback systems challenge, ditch the Segway-style robots and build one that can balance on a ball. UFactory is a startup in Shenzhen, and this impressive little guy is a way of showing their skills applied to the classic inverted pendulum. At nearly 18 inches tall and weighing just over six pounds, the robot boasts a number of features beyond an accelerometer and gyroscope: it has both a WiFi module and a camera, and can be controlled via a homemade remote control or a Kinect.

The build uses plastic omni-directional wheels attached to 3 brushed dc motors, which attach to the base of the robot with custom-made aluminum brackets. The UFactory gang constructed the robot’s body out of three acrylic discs, which hold the electronics directly above the wheels. The brain seems to be an STM32 microcontroller that connects up to the motors and to the sensors.

You won’t find the code on their Instructable yet, but according to the comments they have plans to make the entire project open source. If you’re desperate for more details, the UFactory team seems willing to provide source code and other information via email. Make sure you see the video after the break, particularly the end where they demonstrate interference and carrying loads. This isn’t the first ball pendulum we’ve seen; take a trip down memory lane with the BallP ball balancing robot from 2010.

Continue reading “Building a Ball-Balancing Robot”

Linear optical encoder


Optical encoders are nothing new; they can be found in everything from mice to printers. They’re great for allowing DC motors to know their exact position and even current direction. If this is sounding like old hat, it’s because we’ve shown you rotational versions before.

[Chris] uses the same concept, but produced a linear optical encoder instead of rotational. His setup is much like whats used in non stepper-motor CNC and RepRap mills, allowing ordinary DC motors to know their position within a plane. It’s a quick tutorial, but we liked the detail and it reminded us we need to finish that DC motor based mill thats still a pile of parts in the closet. Check out a video of [Chris’] in action after the break. Continue reading “Linear optical encoder”

RCDC: DC motor control via servo signals

[Spikenzie]  has put together this nice kit for controlling a DC motor with RC servo signals. He’s using a PIC12F629 to convert the signal to PWM. As you can see in the video above, it seems to work quite well. It is in a neat and tidy package and available as a kit. We have to admit though, what caught our eye was the prototype. Even though it is a kit for sale, it looks as though they plan on releasing the PCB files and code.