Sunday, February 21, 2016

Design and build a spin coater

I describe how I designed and built a spincoater, and how you can use a similar motor control system in your own projects.

Firmware with I2C and Arduino library

Compile instructions

Flash tool to download firmware (and other helpful features)

Arduino code and assembly for motor ESC


  1. Thanks for this, very timely for me as I was just about to do a similar speed controller for a my wolfgang spindle for my PCB CNC. This has given me some great ideas.

  2. I needed something like this years ago. I was trying to make my own magnetic stirrer and used a muffin fan with a magnetic on it that was popular on the web.

  3. Hello, thanks for all your works.
    I'm a french student on enginering and I actually work about liquid lens.
    I have saw your video and researchs, and I would like to exchange with you to deep my project.
    I would be very thankful and happy. I give you my email : (I don't find yours)
    Thank you. Carla Fiorucci

  4. would you mind explaining what the method is to tune the PID for say, a different motor?

    1. There are a lot of different methods, but this is generally what I do: Set P=I=D=0, then increase P until the system oscillates when given a step change in a reasonable range. Set P to 70% of this value. Then, increase I until the system oscillates, then set to 70% of this value. Then, increase D until overshoot is reasonable or eliminated.

  5. Hey Ben, very nice project. I will try to replicate, so would you mind to give the specs of the stuff you used... like the motor? Regards,

  6. Hi Ben, nice project. Could you please provide specs on the motor and esc used?

    Best regards,


  7. Hi Ben, could you please give the firmware link which you had used.. I cant find it using above link... (page can not found).

    1. Try this one - looks like the topics page was renamed.

  8. Very nice build & presentation. Two things are not quite clear to me:
    1. Is the speed on the display real (i.e. somehow the ESC transmits the info to the Arduino over IC2?) or just based on calibration, like you used that tachometer pictured on the right at the beginning of the video and fit a line to the values the Arduino sent vs. the measured RPM's?
    2. At 16:27 you say getting a motor that goes relatively slowly is tricky. I have the same problem (and I'm trying to build a spin coater). Did you do something on the software side to fix the problem, or buy a lower kV motor?
    best regards,