Robots in the sun2018-02-05T07:18:34Zhttp://robotsinthesun.org/feed/atom/WordPresspaulhttp://robotsinthesun.org/?p=8842018-02-05T07:18:34Z2018-02-05T07:18:34ZHoooorrrayyy! After diving back into Monkeyprint DLP development for a couple of weeks I can finally announce that my 3D DLP printer software now runs on Windows! Making it work Neglecting Windows users was the biggest point of critique concerning my DLP printer software Monkeyprint. This was mainly due to the fact that I decided … Continue reading Monkeyprint DLP printer software now on Windows

]]>Hoooorrrayyy! After diving back into Monkeyprint DLP development for a couple of weeks I can finally announce that my 3D DLP printer software now runs on Windows!

Making it work

Neglecting Windows users was the biggest point of critique concerning my DLP printer software Monkeyprint. This was mainly due to the fact that I decided for GTK as a graphical user interface toolkit — which was missing an essential bit to display the 3d view on Windows. To make this work I had to rebuild the whole GUI using the Qt framework which took me quite a while. Hopefully, the effort pays of and Monkeyprint DLP will gain some users as the Windows version seemed to be a feature much asked for!

The readme file on my github provides some updated installation and usage instructions as well.

Monkeyprint now comes pre-packaged for Windows and has been tested on Windows 7 and Windows 10

Stripping it down

I took the opportunity to think about which features Monkeyprint DLP should provide. In consequence, I’ve stripped much of the fancy stuff that has not been working 100% reliably anyways — like the Raspberry Pi server — and focused on the parts that are absolutely necessary for Monkeyprint DLP to be useful. These are:

Model import, translation and rotation

Support generation

Slicing & slice image export

Print process control using G-Code exclusively

I’ve removed the design files for my printer board and also the custom control commands that were used by my firmware. This stuff only made things more complicated. In my opinion, the easiest way for anyone building a DLP printer is to use one of the readily available G-Code boards out there.

Feedback wanted

Making Monkeyprint available for Windows was a fair amount of work. To make it work in the future, I’ll be needing some help from you guys. Download it, test it, report bugs on github and tell me how it behaves with your printer!

And as usual, feel free to comment below and subscribe if you like this

]]>15paulhttp://robotsinthesun.org/?p=8512016-12-22T15:27:08Z2016-12-22T15:25:18ZIn my last post I mentioned the redesign of Monkeyprint’s slicer code to fix some bugs, namely frequent crashes and high memory usage. The work is done now and it does not only fix the issues but also comes with some nice improvements! Slicing of intersecting objects 3D artist Vaughan Ling asked me about slicing … Continue reading Monkeyprint DLP slicer update — performance and features

]]>In my last post I mentioned the redesign of Monkeyprint’s slicer code to fix some bugs, namely frequent crashes and high memory usage. The work is done now and it does not only fix the issues but also comes with some nice improvements!

Slicing of intersecting objects

3D artist Vaughan Ling asked me about slicing STL files which contain intersecting objects. This seems to be commonplace in (mesh based) 3D modeling for 3D print and rendering. Of course it is easier to assemble a complex model by “simply” throwing together some objects that overlap than to actually unifying them. A render engine doesn’t care anyways…

However, my slicer code did choke on the intersecting parts. It correctly sliced the multiple parts into a list of polygon contours. But when each of the contours was converted into an actual slice image and the slice images were combined, the overlapping regions were rendered black instead of white.

The image above shows an example of intersecting objects from one STL file — it’s the handle of Vaughans hover bike model. Up to this step, the individual contours are created correctly…… but the combination of the contours failed. The regions where individual parts overlapped were black instead of white. This would result in disconnected parts — which is of course not acceptable.

Why did this happen? As the slice contours were created correctly, the issue had to be with the conversion of the 3D slice contours into the 2D black and white slice image. Specifically, the step where slice images from the single objects are merged into one final slice image proved to be tricky. Check out the diagram below…

Slice image creation progress from the 3D objects (red and blue) via the 3d slice contours at a given Z position to the slice images. These start as a black image to which the slice contours are “added” successively. The crucial part seems to be how exactly these contours are combined. As we are talking about binary images here, we can use the terminology of bitwise logical operators to characterize the combination of individual contour images. The old slicer had an XOR behavior which caused overlapping contours to appear black. As a first approach I simply changed the code to do an OR operation between the individual contour images. This got the overlap regions right, but unfortunately also filled the hole of the red object. It became clear that simple XOR or OR operations could not tell nested contours from the same object and overlapping contours from different objects apart. So, as a solution, I had to change the code to keep track of which contour belonged to which object. With this, I was able to do an XOR for contours belonging to the same object — which would create holes for nested contours (red). For contours of different objects I would then do an OR, which also fills overlapping regions.

The new Monkeyprint slicer can now do both: separate and intersecting objects. If you have intersecting objects, simply check the “Multi object slicing” option in the settings dialog

Slicer speed

Apart from the intersecting object stuff, the major improvement is the slicer speed. As mentioned before, the old slicer took several seconds to generate a single slice in complex models. This is history now! I’ve been able to replace the VTK code that transfers the slice contour polyline into an image by some OpenCV code.
The speed-up is quite noticable. I’ve run some tests using stl files of varying complexity. See the results below.

New and old slicer run times in seconds for the different test models. Especially for models with high poly counts the old slicer was quite slow. The new slicer is much faster (about 53% on average) while the new slicer with multi body slicing enabled is even faster for single object models than the new slicer with multi body slicing disabled. This is a bit puzzling, I’ll have to investigate why that is. Base line: the new slicer is awesome

See you next year

In the end, just a quick animation running through the slices of all models. Always nice to see how good the hollow and fill pattern option works

Walk through the slices of all test models created by my Monkeyprint 3d DLP printer software.

That’s it for this year. Have a Merry Christmas (if you care about such things) and see you next year!

As always, subscribe for updates and if you like this (or if you don’t), comment below!

]]>13paulhttp://robotsinthesun.org/?p=8252016-11-14T22:08:02Z2016-10-30T18:10:36ZMy 3d DLP printer software Monkeyprint software seems to gain momentum. Recently it was tested by 3d desktop printer manufacturer Aleph Objects Inc., resulting in some nice improvements and bug fixes! When I first published Monkeyprint I wasn’t sure if open source was the right way to go. For quite some time, nobody seemed to … Continue reading Aleph Objects tests Monkeyprint DLP printer software

When I first published Monkeyprint I wasn’t sure if open source was the right way to go. For quite some time, nobody seemed to use the program, which was mainly because of it’s beta status, some bugs, missing features etc. And to be honest, if I were looking for a stable, out-of the box DLP printer software, I wouldn’t have used it as well, simply because it wasn’t ready.

However, things changed in the last months; Monkeyprint is maturing due to the G-Code support and the prospect of a Windows version. Another very positive aspect that reassured me in my decision to go open source was a recent collaboration with Colorado based 3d printer manufacturer Aleph Objects Inc.

They started testing Monkeyprint DLP using an Autodesk Ember DLP printer (see some print results below) and, when bugs came to light, actively contributed to the project by providing fixes and pushing them into my Github repository. That’s how open source can work: people working together from all around the world to make better software!

An Autodesk Ember 3d DLP printer was used by Aleph Objects Inc. to test my Monkeyprint DLP software. The small darkish blob just in front of the printer is the castle model seen in the next pictures. Image by Nicholas Tait, license: CC BY SA 4.0.The tiny castle model has lots of detail, some overhangs and is relatively easy to print. Image by Nicholas Tait, license: CC BY SA 4.0.The castle model with the bottom plate and supports still attached. These are created by Monkeyprint DLP. The support algorithm is stupidly simple at the moment but works OK for massive models like this castle. Image by Nicholas Tait, license: CC BY SA 4.0.Some fine detail on one of the castle’s spires. The single slices and pixels can be seen quite clearly as one of the windows is only about 1 mm high. Image by Nicholas Tait, license: CC BY SA 4.0.

Monkeyprint DLP now with VTK 6 support

Youness Alaoui, a freelance software engineer contracted by Aleph Objects was assigned to the testing and made a major contribution. As he uses the 3d visualization library VTK 6 on his development system (as opposed to VTK 5 currently implemented in Monkeyprint) he immediately started to port Monkeyprint to VTK 6 — an issue that had been opened some time ago but which I never found the time to solve. So, Monkeyprint now runs with VTK versions 5 and 6. Thanks Youness!

No more slicer crashes

Another issue were crashes during slicing. They didn’t happen very often on my machine as my test model (mainly the Blender monkey head that I provide with Monkeyprint) had been pretty small — which reduces the number of slices and therefore the possibility of crashes. This made it very hard to debug for me…

Aleph Objects developer Nicholas Tait however thought bigger. For testing he used a pretty detailed Eiffel tower model in combination with a layer height of 0.01 mm — resulting in about 8800 slices. This crashed Monkeyprint almost every time. Youness suggested a race condition between slicer threads and with this info I managed to fix that issue. Since then, Monkeyprint didn’t crash during slicing even once.

The Eiffel tower model is quite challenging as it contains lots of fine detail as well as many overhangs — even if most of them are small and probably don’t need supports.

Memory usage during slicing and slicer speed

The large Eiffel tower model with its 8800 slices also lead to a different problem: huge memory usage during slicing. In fact, slicing the Eiffel tower with an XY-resolution of 800 x 800 pixels resulted in about 12 gigabytes of memory eaten by Monkeyprint within seconds — which will cause a system with less RAM to freeze instantaneously. I didn’t find this bug because I never used large models like that and also didn’t opt for the insane Z-resolution of 0.01 mm The fix for this issue is currently in development: the cure is to simply cap the number of preview slice images using a user definable amount of memory. With the maximum number of preview slices fixed, the preview layer height will simply be increased accordingly to fit larger models. The full resolution print slices with the actual print layer height will be saved to disk instead.

During this development I’ve also just found a different method of generating the slice images resulting in a speed-up of the slicer. In the current version some slices with lots of details in the Eiffel tower take about 8 seconds to generate using the current approach (based on VTK) — which is insane. However, slice generation time can be reduced by my new code (using OpenCV) to as little as 0.06 s. That’s a factor of 133! The new code will be in the next release when the memory issue is solved as well.

The many fine details and trusses in the Eiffel tower can be a challenge for the slicing algorithm as they create lots of small polygons which have to be converted to the slice image reliably.

Open source for the win!

Well, I’ve been skeptical of open source before but, as the last weeks have shown, it provides great possibilities! Getting in touch with professional developers was a cool new experience for a hobbyist programmer like me. And more importantly, I’ve learned that shared development can simply lead to better software faster. So going open source definitely was the right choice for me. Thanks Aleph Objects

If you like this (or if you don’t), comment below and subscribe to be notified about the next updates on Monkeyprint DLP!

]]>12paulhttp://robotsinthesun.org/?p=8122016-10-14T06:23:58Z2016-10-14T06:23:58ZAnother modification of my Monkeyprint 3d DLP printer software towards getting more users is under way! Many people have been asking for a Windows version and my blog’s visitor statistics also show that an astonishing 59% of visitors are running Windows. Fine. Challenge accepted! Surprisingly (at least for me), many 3d DLP printer users or … Continue reading Monkeyprint 3d DLP printer software development for Windows

]]>Another modification of my Monkeyprint 3d DLP printer software towards getting more users is under way! Many people have been asking for a Windows version and my blog’s visitor statistics also show that an astonishing 59% of visitors are running Windows. Fine. Challenge accepted!
Surprisingly (at least for me), many 3d DLP printer users or makers run Windows. Well, while I don’t like very much, that’s still fine with me. I’ve taken some time examining what I need to do to port my Monkeyprint DLP printer software to Windows.

The Windows issue

Turns out one of the fundamental decisions when starting Monkeyprint was made poorly. When I had to decide on which framework to use for the graphical user interface there was a 50/50 choice between GTK and Qt. Well, as my physics teacher in school always used to say, 90% of the 50/50 questions are answered wrong. Of course, I chose GTK as it was closely related to the Gnome desktop environment that many Linux distributions use. It promised to work on different platforms as well. However, as I recently found out, the integration of the 3d view that I use to display the models in the build volume did not work with the rest of the interface on Windows. The small piece of code that connects it to the GUI had been abandoned by the developers in 2007 and was not available in a working version.

The solution

Simply put, this means I will have to convert the whole GUI to Qt. First tests on Windows show that the interface works and the 3d view is already up and running (see the picture above). And while I had some kind of gratuitous aversion against Qt at first, I now found out that it actually is very similar to GTK in its structure and at some points even easier to handle.

Transition time

Until the new Qt version works, the GTK version is of course still available under the release branch of my Github. I’ve updated the instructions page to reflect the change in branch naming.

Well, there’s still a lot to be done to get Monkeyprint DLP to rise and shine again, so stay tuned for new updates…

If you like this, please comment below or subscribe to not miss a post!

]]>10paulhttp://robotsinthesun.org/?p=7832016-09-23T06:36:55Z2016-09-22T20:54:29ZA big factor that kept people from using my Monkeyprint DLP printer software was the necessity to build the custom Monkeyprint electronics board that drives the actuators. To make Monkeyprint DLP more attractive for DLP printer builders I have made a big leap forward: Monkeyprint DLP is now able to send G-code. Finally! Yes, this … Continue reading Monkeyprint DLP printer software now speaks G-Code

]]>A big factor that kept people from using my Monkeyprint DLP printer software was the necessity to build the custom Monkeyprint electronics board that drives the actuators. To make Monkeyprint DLP more attractive for DLP printer builders I have made a big leap forward: Monkeyprint DLP is now able to send G-code. Finally!

Yes, this means that you are able to use almost any G-code-based driver board you like!
And what’s more: I have redone the whole print process engine. The print process is now totally configurable (including custom G-code commands), giving you an unprecedented degree of control over almost everything.
Want an extra tilt, a pause after exposure or a wiper for a top down printer? Just alter the pre-configured print process to your needs. This also means that you can use servos for tilting (a feature that has been requested) or even make your board beep a tune (if supported).

What do you need?

To get your printer running on G-Code you need the following items:

A G-code based stepper controller board. For testing I used a RAMPS 1.4 board with an Arduino Mega 2560.

G-code firmware. I use Marlin. It has to be configured and compiled for your board.

Actuators of your choice (steppers, servos, etc.)

Basic understanding of G-Code. Monkeyprint DLP provides basic G-code commands assembled into a pre-made print process, but tweaking might be necessary. A good introduction can be found in the Reprap G-code Wiki.

Set up the hardware

First, you’ll need to set up your hardware. I assume that most people will have that already so I’ll make this very short using the RAMPS 1.4 board as an example. You can get more info in the Reprap Wiki. If you already have a working setup you can skip this section.

Get yourself a board. You can get RAMPS 1.4 boards including the Arduino, steppers drivers, end stops and what not for low prices on eBay or amazon. However, consider to buy the original as the cheap ones are often poorly made.

Make the hardware connections.

Choose which actuators to use for which print mechanism. I use the X axis stepper for tilting and the Z axis stepper for the build platform. You can also use a servo for tilting.

If you use steppers, set the micro-stepping jumpers for the axes you want to use. Connect all three for 1/16th micro stepping.

Set the micro stepping jumpers for the axes that you want to use. All jumpers set is 1/16th micro stepping if you use A4988 drivers.

Plug in the stepper drivers. Make sure to plug them in the right way. Also, don’t forget the heat sinks. Turn the current potentiometer on the drivers to the minimum (counter-clockwise) and then up by about 20% (mine were at 50% on arrival). You can crank them up again if your steppers need more current, but it’s safer to start low. Alternatively, look up your stepper drivers description to set the right current using the reference voltage pin.

Plug in the stepper drivers and turn the current setting to lowest position. That’s with the smaller flat side in an 8 o’clock position like in the picture. From there you can slowly increase it to get your motors going.

Plug in the stepper motors.

Plug in the stepper motors like so.

Plug in the end switches corresponding to the stepper axes that you want to use. Don’t go without these, especially for the build platform axis. The set up for optical as well as mechanical end stops can be found here.

Plug in the servos in case you want to use any.

Plug in the servos. Make sure to plug them in the right way with the red wire going onto the + pin.

Plug in the power supply. The Arduino on the RAMPS 1.4 can only take 12 V, so don’t use more. Use the power connector that’s directly on the corner (the one just next to it is for the heated bed in an FDM printer). Don’t reverse voltage the power supply as this might blow up your board.

Plug in the power supply using the outer connector. Pay attention to get the polarity right. Do not exceed 12 V on the RAMPS 1.4.

Mount a 100k resistor to the extruder 0 thermal sensor input (T0). This will make the board believe that there’s a temperature sensor connected.

The RAMPS 1.4 board is made for FDM printers and therefore the Marlin firmware needs at least one temperature sensor connected. That often is a 100k thermistor. We can make the firmware believe it reads a sensor using a 100k resistor. The temperature reader will be about room temperature and the firmware will be satisfied.

Plug in the Arduino Mega. Be careful not to bend or break any of the headers.

Configure and compile the firmware

Before doing this, you need to calculate the steps/mm, i.e. the number of steps that is needed to move an axis (for example your build platform) by one mm. If for example your build platform has a lead screw with 5 mm lead and your stepper has 1.8° step angle, the distance per step would be (360°/1.8°) / 5 mm = 40 steps/mm. For a layer height of 0.1 mm this would make 4 steps.

Now, follow these steps:

Visit the Marlin builder and configure Marlin according to the following parameters.

Baud rate 115200 (important).

Max Feed Rate to 100 mm/s for Z-axis.

Disable axes that are not used (Y and E in my case).

Set software end stop for Z according to your build height.

Configure board type to RAMPS 1.3/1.4 with Power outputs: Extruder/Fan/Fan

Set Extruder Temperature Sensor to 100k thermistor (best choice).

Second Extruder Temperature Sensor to None.

Set the Steps Per Unit that you have calculated before for each axis that you use.

Click “Build It” at the bottom right corner.

The site updates and presents the build results. Download the hex file and save it as marlinForMonkeyprint.hex

Upload the firmware to your board using avrdude.

Connect the board to your computer using the USB cable.

Open a terminal (Strg+Alt+t or Alt+t) and navigate to the directory you downloaded the hex file to.

Configure Monkeyprint to use G-code

Once you have Monkeyprint DLP running, access the Settings menu and activate the G-Code board radio button.

In the settings dialog you can now set Monkeyprint DLP to use G-Code. This will unlock some settings in the Communications, Projector and Print process tabs.

In the Connections tab enter the port (should be /dev/ttyACM0) and the baud rate of 115200.

Set the port that your G-Code board connects to as well as the 115200 baud rate.

Move on to the Print Process tab. Here is where the new print process engine reveals it’s power. Read on to find out!

Configure your G-code DLP print process

In the Print Process tab you’ll find two things: a drop down menu of pre-configured G-code command modules as well as a list view of your print process.
Simply choose the modules you need from the drop down menu and add them to the print process. They’ll appear just below the currently selected item. Use the ↑ and ↓ buttons to move a module up or down.

The Print process tab allows for any combination of G-Code commands defined by the user. Predefined commands can be added from a drop down menu at the bottom. You can also move commands up or down or edit their name and G-Code.

The Edit button allows for renaming and changing the module’s G-Code.

The Edit button allows for any of the G-Code command to be changed.

There are some special command modules:

Expose obviously does the exposure.

Wait simply pauses the process for a given time period. This is useful if, for example, tilting of wiping takes some time and you want to wait for it to complete before carrying on.

Start loop and End loop enclose all modules that you want to act on every layer of your print. Place configuration stuff like setting the units to mm before the Start loop module and post-print stuff like moving the build platform to the top position after the End loop module. A print process must involve exactly one Start loop and End loop module.

Activate / Deactivate Projector allows you to switch on/off your projector if it is connected via serial port and configured in the Projector tab.

Then, there’s the Custom G-Code module. Add it to your print process and edit it to carry out any command your board supports. Isn’t that quite powerful? I thought so…

Next steps

With these new features I hope to bring Monkeyprint DLP to a wider user base.
Obviously, the next steps have to be providing a proper documentation and making Monkeyprint DLP more stable.
I’m also working on my own board and still have the Raspberry Pi integration in the pipeline (it’s working but still unstable), but these will have to wait until Monkeyprint DLP itself is matured and until I find the time to build my own printer…

Get involved!

Do you use a different board? Test it with Monkeyprint DLP and tell me about your experience!
If want to contribute, share your firmware and I’ll be happy to pack it into Monkeyprint DLP.
Post your ideas, feature requests and bugs by opening issues on my Github.
There’s a new project overview as well, so post your thoughts there as well!

]]>10paulhttp://robotsinthesun.org/?p=7402016-07-10T21:59:09Z2016-07-10T21:58:52ZIf you have built the Monkeyprint DLP printer control board you might now ask yourself how to hook it up. Follow this guide and in no time you’ll have your board up and running…. We’ll dive right into it, so get your soldering iron ready and prepare your tools. We will go through the following … Continue reading Monkeyprint DLP printer control board wiring tutorial

]]>If you have built the Monkeyprint DLP printer control board you might now ask yourself how to hook it up. Follow this guide and in no time you’ll have your board up and running….

We’ll dive right into it, so get your soldering iron ready and prepare your tools.

We will go through the following steps:

Power supply

Stepper motors

Raspberry Pi

End switches

Shutter servo

Status LEDs

Reset button

Stepper drivers and Arduino

Firmware

Power supply

Caution: take care not to electrocute yourself while fiddling with the mains voltage! Properly insulate all high voltage lines!

You can supply the board with a voltage of up to 36 V. The higher the better your steppers will run.

I use a Meanwell RSP-200-36 with 36 V at 5.5 A maximum current which costs about 50 €.

The Meanwell RSP-200-36. I use a mains connector with integrated fuse and switch.

The following pictures show how to connect the power supply. To be able to unplug it I use 2 mm gold plated banana plugs. Pay attention to the polarity, there is a “+” and a “-” sign at the bottom side of the board.

The power lines are connected to 2 mm female banana plugs which I simply screwed into my electronics box.Everything hooked up

Now before you switch on the power supply for the first time, remove the Arduino and the stepper drivers from your Monkeyprint DLP printer control board! We need to set the step down module to 5 V first. The next two pictures explain how it’s done.

Measure the voltage on the Arduino socket like in the picture…… and turn the potentiometer on the step down module until your multimeter displays 5 V. A little below 5 is OK as well but more than 5 is not…

With this step your power supply is set up. Let’s continue with the stepper motors.

Stepper motors

There are four power lines for each stepper motor, two for each winding. The cables can be soldered directly to the board. I use some 2 mm female banana connectors in combination with my 3D printed electronics box so I can easily unplug the motors.

Solder the stepper motor wires directly to the board…… and attach some connectors to the ends. If you mount the connectors like in the picture, make sure you mount them in the same order as they are on the board.

Before you plug in your motors you need to find out which two cables belong to the same winding. If you don’t have the motor’s data sheet, simply put your multimeter to resistance mode somewhere in a range between .1 and 20 ohms. Lines that belong to the same winding will show a resistance value while lines that don’t belong together will show infinite resistance.

The order of lines on the board is A1 A2 B1 B2 where A and B are the windings and 1 and 2 are the two lines of the same winding.

Once you found out your stepper motors color coding for the windings, plug it into the connectors. The order of the connectors is A1 A2 B1 B2 where A and B are the windings and 1 and 2 are the two poles of each winding.

Raspberry Pi

If you want to use a Raspberry Pi to run print jobs from, simply connect the relevant pins on the Monkeyprint board to the 40-pin GPIO header of your Raspberry. They have the same pin-out and exactly align with the GPIO pins, so just solder some wires to the Monkeyprint board, attach a female header and plug it onto the Pi.

Attach a female header to the six Raspberry Pi pins next to the large capacitor…… and plug it onto the GPIO header of your Raspberry Pi 2 in the same orientation as the pins are on the Monkeyprint board.

End switches

The end switches are connected by 3 lines: ground, 5 V and the signal line.

I use Everlight ITR8102 photo interrupters as end switches. Whichever your use, check your data sheet to identify the anode and cathode of the IR diode as well as the emitter and collector of the photo transistor.

To wire the photo interrupters, first connect the cathode of the IR-diode to the emitter of the photo transistor by simply bending its wire until it’s connected to the emitter wire. Then, solder your ground line to one of these pins. Now, solder the signal line to the photo transistors collector and the 5 V line to the IR diodes anode.

Connect the IR diode’s cathode and the photo transistor’s emitter, then solder the black ground line to it. The red 5 V line goes to the diode’s anode and the yellow signal line goes to the transistor’s collector.

On the other end, connect all three lines to a female header so that the ground line is in the center. The whole thing should look like this:

The end switch with its cable and connector attached.

You can now plug your end switches to the header on the Monkeyprint board according to the following image.

The end switches are plugged into the angled header on the Monkeyprint board.

The next picture shows which end switch goes where.

Pin-out of the Monkeyprint DLP printer control board main header.

Shutter servo

There is now support for a shutter servo. Before you plug it onto the header on the Monkeyprint board, make sure the pins in the servo’s connector are in the right order. In the board version 0.91 ground has to be in the center which might require you to reorder your servo connector’s pins. In board version 0.92 the 5 V line is in the center, which is far more common for servo connectors.

I’m still using the board version 0.91 so I had to flip the servo’s red 5 V line with the brown ground line.

If your pin order is correct, simply plug your servo to the header like this:

The shutter servo attached to the Monkeyprint DLP printer control board.

Status LEDs and reset button

You can plug two LEDs onto the board using the connector next to the Arduino. These will light up on stepper motion and signal the direction in which the stepper goes. Use a 3 pin female header for that.

Simply connect the cathodes of two LEDs of different colors with the ground pin and the two anodes with the other two pins. I use some LED mounting rings to fix the LEDs to my electronics box.

The two external LEDs share the same ground pin on their 3 pin female header.

The reset button can be used to reset the Arduino. This is needed to flash the firmware or in case something hangs and you want to stop the motors and restart. Simply connect a button to two wires and plug them onto the board using a female header.

The reset button might be the simplest part of the whole printer…Simply plug the LEDs and reset button onto the 5 pin connector next to the Arduino, just like in the picture.

Cooling fan

You should really use a cooling fan to protect your stepper drivers (and your Raspberry Pi if you use one) from over-heating.

I use a 5 V 200 mA fan made by Sunon. It is a 60 mm fan which fits my electronics box quite nicely. I cut the cord to about 3 cm and removed the rpm signal line. As the fan sits directly next to the board the short cable will be of advantage.

I cut off most of the cable and removed the yellow rpm signal line from my 60 mm fan.The fan plugs in to the 2 pin header right next to the large capacitor. The polarity is the same as that of the capacitor…

If you’ve done everything right your setup might look like this:

The Monkeyprint board with two steppers including end switches, a shutter servo, status LEDs and reset button attached. Not visible: Raspberry Pi 2 beneath the Monkeyprint board.

Stepper drivers and Arduino

It is now time to plug in the stepper drivers and the Arduino!

First, the stepper drivers. Plug them in just like in the picture below.

Plug in the two stepper driver just like in the picture.

Before you proceed, make sure that the current limiting of the drivers is set according to your stepper motors’ specs. This is done by turning the small potentiometers. Please refer to the instructions given by Pololu on setting the current right. Do not plug in the steppers before you have set the current! Also, do not plug in or remove the stepper motors while the board is powered!

Next, plug in the Arduino with the USB connector pointing outwards.

Attaching the Arduino Pro Micro is the last step and completes your Monkeyprint DLP printer control board.

Flash the firmware

To blow some life into the Monkeyprint DLP printer control board you need to flash the firmware into its memory.

To do this, connect the Arduino to your PC using a micro USB cable. Start Monkeyprint and select “Flash firmware” from the “Settings” menu. Then, press the reset button twice within 750 milliseconds. After that, the Arduino starts its bootloader and will accept the firmware update. Simply hit “Flash firmware” and wait until you see the output in the text view below (it should say something with the word “success” in it, otherwise it went wrong).

]]>1paulhttp://robotsinthesun.org/?p=6262016-03-23T20:49:53Z2016-03-23T19:44:25ZIn the previous Monkeyprint board tutorial I showed you how to etch the PCB. In this follow up, you will be soldering the components to get your board going. Warning: In this tutorial you will be soldering. Use a good and heavy stand to store the hot soldering iron while not in use. Also, the … Continue reading Monkeyprint board making tutorial part 2

]]>In the previous Monkeyprint board tutorial I showed you how to etch the PCB. In this follow up, you will be soldering the components to get your board going.

Warning: In this tutorial you will be soldering. Use a good and heavy stand to store the hot soldering iron while not in use. Also, the flux contained in the solder might pose a risk to your health. Do not inhale the fumes or better, use a small fan to blow them away from you.

Soldering instructions

The procedure for soldering surface mount or through hole components is always the same. I will describe how I do it in the following paragraphs.

You will be soldering small surface mount components. It’s easier than you might think and you do not need anything special to do it. Do not be intimidated by the small size of the parts. I use a regular soldering iron and regular solder.

Equipment:

Soldering iron.

Solder. I use 0.5 mm SN62Pb36Cu2 with internal flux.

Pointy tweezers.

Soldering tips:

First, heat up the pad and/or the component.

Then, and only then, apply the solder.

Do not put the solder on the iron tip as the internal flux will evaporate before you manage to apply the solder to the pad.

All soldering actions should only take some seconds.

To solder a component follow these steps.

Step 1: Apply a small amount of solder to one of the pads. Again, heat the pad first, then apply the solder.Step 2: Place the component on the board using the tweezers and press it down firmly onto the solder blob you applied before. Make sure it is centered nicely on its footprint. Then, heat the solder again until you notice the component sinking down onto the board. The component is now fixed to the board.Step 3: Heat the other pad and the part simultaneously. Then apply some solder to the other pad.The result should look like this: a shiny, concave solder blob on each of the pads.

Step 1: Surface mount components

Now that you know how to do the soldering, let’s find out what belongs where. There is a component placement guide in the Monkeyprint hardware folder:

The Monkeyprint component placement guide shows you where to solder the surface mount and through hole components as well as the wire bridges.

Start by soldering the resistors and ceramic capacitors. They do not have a polarity, so as long as you follow the placement guide you will be fine.

For the 0 Ω resistors I use a piece of wire. Simply cut it off from one of the large through hole capacitors’ legs.

The small MosFET fits one way only. Make sure not to heat it up to long. As mentioned before, all soldering actions should only take some seconds.

All the resistors/wire bridges and capacitors are soldered. The tiny MosFET is attached as well. Make sure not so fry it by heating it more than a few seconds.

Carry on with the large Schottky diode. This one — like all diodes — has a polarity, so make sure not to flip it. The white bar on the package is the negative side. Think of it as a big minus sign.

The large Schottky diode is the Monkeyprint boards’ reverse voltage protection. Pay attention to the polarity. The white bar is the (-) side.

The Schottky diode is the last surface mount component to be soldered. Once you’re done with it, let’s carry on with the connectors.

Step 2: Solder the connectors

The through hole connectors for attaching the µC board, the stepper drivers and other peripherals ready to be soldered.

This is the easiest step. Simply follow these instructions:

To get the connectors for the Arduino and the stepper drivers straight, plug them onto the respective component…… and then solder the whole thing to the Monkeyprint board. This way the connectors will be fixed in a position that fits the component.

Once all the connectors are soldered you can continue with the next step…

This is the Monkeyprint board with the connectors soldered.

Step 3: Solder the remaining components

The rest of the components like the electrolyte capacitors is easy to solder. Simply stick the legs through the holes, hold the component firmly against the board and solder the pads.

The tricky part is the step down converter. It has to go onto the board in an upright position in order the fit the Raspberry Pi A+ footprint.

To mount the converter upright, cut two pairs of wire (diameter about 0.8 mm) to a length of 10 mm and 30 mm respectively. Solder the long ones to the (+) pads so that they are pointing into the non-populated side of the converter board. Then, solder the short wires the the (-) pads of the board so that they point to the populated side. Bend both pairs of wire down like shown in the pictures below. The converter board is now ready to be soldered onto the board.

Top and bottom view of the step down converter board with the wires attached. The distance between the adjacent wire pairs should be about 5.1 mm. Make sure the (+) wires do not touch the respective (-) wires.Side view of the step down converter board with wires attached. Again, the (+) wires must not touch the (-) pads.

Then, simply solder the converter onto the board. The populated side should point outwards.

This is the board with all the components soldered.

Step 4: Solder the wire bridges

Equipment needed:

Some insulated, flexible thin wire. I use 0.14 mm² wire. Black, red and another color would be nice but is not necessary.

Some blank, stiff wire that I cut off from the larger through hole capacitors.

Connect the remaining pads following the component placement guide in the hardware folder.
Use red for 5 V, black for GND and another color for the other signals.
For short bridges use the stiff wire and bend a U-shaped connection.

There are holes in the wire bridge pads but I tend to solder them to the copper side just like surface mount components. This way you do not have to work your way around all the components on the top side.

Simply solder the wire bridges to the respective pads on the copper side. Small distances can also be bridged by a stiff wire bent into a U-shape like in the connection between the GND planes on right of the picture. Take care not to short anything… (Caution: there’s one connection missing in the picture, but it’s in the placement guide.)

Step 4: Pat your shoulder: Monkeyprint board almost done

You have almost completed the Monkeyprint board! In a follow-up tutorial I will show you the steps to connect your Monkeyprint board to all the other components like stepper motors, end switches and the Raspberry Pi.

The Monkeyprint board with all components and jumpers attached. I also drilled the mounting holes to 3.5 mm to allow for M3 screws to go through.

If you like this or if you have questions or remarks, please comment below!

]]>0paulhttp://robotsinthesun.org/?p=5272016-03-20T16:44:37Z2016-03-20T16:44:37ZMany DLP printer makers experience a brightness fall-off of their projected images towards the edges of the vat floor. This will lead to inhomogeneous curing of the resin and therefore failed prints. In this post, I will explain the reason for this effect and provide a simple solution using Monkeyprint. What is the reason for … Continue reading DLP printer brightness distribution correction in Monkeyprint

]]>Many DLP printer makers experience a brightness fall-off of their projected images towards the edges of the vat floor. This will lead to inhomogeneous curing of the resin and therefore failed prints. In this post, I will explain the reason for this effect and provide a simple solution using Monkeyprint.

This is what most 3d DLP printer makers see at the bottom of their vat during illumination: A light intensity distribution with a fall-off towards the edges. It is most notable in the corners and can lead to over-exposure in the center or under-exposure in the corners. Both effects can make a print fail.

What is the reason for this brightness fall-off and how do we counteract? Read on to find out…

The cause

The inhomogeneous DLP printer brightness distribution results from two effects: The given brightness distribution of your projector, reflection and absorption by the vat floor and natural vignetting at the vat floor.

Projector brightness distribution

Every projector will have a brightness fall-off towards the edges of the image. This can be experienced with almost any projector and unfortunately there’s nothing we can do about it.

Absorption, reflection and natural vignetting

All of theses three effects depend on the incident angle at which the light from your projector hits the vat floor. In the center of the vat, the incident angle will ideally be α = 0° (this means normal to the vat floor) and towards the edges the angle will become more oblique.

A 3d DLP printer’s projector is essentially a point light source. This means that the light will hit the vat floor at different incident angles which affects the light intensity distribution at the vat floor.

Absorption happens because your vat floor is not 100% transparent and will therefore absorb some of the light. The amount of absorption depends on the distance d that the light has to travel through the glass. This distance will be the shortest if the light hits the vat floor at an incident angle of α = 0°. The more oblique the angle gets, the longer the distance and the amount of absorption will be. Therefore, absorption will increase from the center (α = 0°) towards the edges (α > 0°).

Higher angles of incidence (right) increase the distance the light has to travel through the vat floor. This will lead to higher absorption.

Natural vignetting results from the same phenomenon that makes winters cold and summers warm. A light ray of a given diameter will illuminate a specific area when falling onto a surface. Compared to an incident angle of α = 0° this area will increase if the ray hits the surface in a more oblique angle (α > 0°). If the same amount of light illuminates a larger area, this will result in a lower light intensity. As with absorption, the brightness will decrease from center to the edges of the vat floor.

Light rays hitting the vat floor at different angles. The illuminated area will increase with the incident angle. As the amount of light stays the same, the intensity decreases for larger incident angles.

Reflection of light will happen at all positions of the vat floor. The amount of light that is reflected depends on the incident angle. For glass, it will be the smallest (about 3.5%) at incident angles of α = 0°. As the angle grows towards the edges of the vat, the amount of reflection will gradually increase. At α = 30° it will be about 7% according to this article on reflection.

The following diagram shows the combination of all the effects taking place at your vat floor.

Various effects add up to define the brightness distribution on the vat floor. The projector comes with a given brightness distribution, the vat floor absorbs and reflects light. Also, there is natural vignetting on the vat floor. All these effects will lead to a decrease of light intensity towards the vat edges.

All these effects can lead to a strong fall-off of the vat floor light intensity towards the edges. In the Groningen printer we experienced an intensity decrease of 24% in the corners of the vat.

Iso curves illustrate the vat floor light intensity distribution in the Groningen printer. The darkest areas showed an intensity decrease of 24%. Interestingly, the brightest area was not in the center…

So how do we handle this to achieve an homogeneous DLP printer brightness distribution and better print results? Find out in the next paragraphs…

The remedy

The common sense approach

First, we can deduce a simple rule from what we’ve learned before. All the negative effects described above increased with the projector light’s incident angle. So the first step when aiming for a homogeneous light distribution should be to decrease this angle.

Although it might be tempting to position your projector as close as possible to your vat using the widest zoom setting, this will lead to inhomogeneous light intensity distributions. It is better to use a telephoto zoom setting and a larger projection distance. This will reduce the negative effects resulting from large incident angles.

The software approach

Additionally, I have implemented a calibration image setting in my Monkeyprint DLP print software to resolve an uneven brightness distribution. It has two steps. The first is taking a calibration image of your illuminated vat floor which will show the brightness distribution. The second is to use this calibration image to adjust your slice images for a homogeneous brightness distribution.

1: Take your calibration image

Equipment needed:

a digital camera

preferably a tripod

a large white surface

a piece of paper that snuggly fits your vat floor

your DLP printer

In this process, you will use a digital camera to take an image of your illuminated vat floor. As a camera is an optical instrument, it will show vignetting itself which needs to be taken into account as well.

First, we will extract the vignetting of your camera. To do so, take a photograph of the white surface in a bright, evenly lit surrounding. Important: Adjust your camera’s settings so that the image is as bright as possible without being over-exposed. The result will not be white completely but will tend to get darker towards the corners. This is the vignetting of your camera’s lens which we need to take into account when creating the vat floor calibration image. To finish off your camera vignetting image, load it into a graphics software like Gimp, convert it to gray scale (Image > Mode > Grayscale) and adjust the brightness so that the brightest spot (usually in the center) has a value of 100%. To do this, sample the brightness at the brightest spot using the Color Picker Tool. Create a new layer and fill it with a gray value of 100 minus your sampled value. Set the layer mode to Addition. Now the brightest spot will have a brightness of 100%.

Left: Camera vignetting image of a white surface. The image shows a notable brightness decrease towards the corners. Right: camera vignetting image with adjusted brightness so that brightness is 100% in the center.

Then, fire up your DLP printer’s projector and throw a white image onto your vat floor. Place the piece of white paper in your vat. Mount the camera onto your tripod and point it down vertically onto the vat floor. Try to get the vat leveled in the viewfinder. The vat should appear rectangular with as little distortion as possible.

Take an image of the illuminated vat floor. Again, adjust your camera’s settings so that the the image is as bright as possible without being over-exposed.

The gray scale vat floor image taken with a digital camera. It is important to capture the vat floor with as little distortion as possible.

Next, we need to correct the vat floor image for the amount of vignetting that was introduced by your camera. To do so, load the vat floor image into Gimp. Then load the camera vignetting image as a new layer. Invert the camera vignetting image layer and set the layer mode to Addition. This will brighten the vat floor image by the amount of vignetting that was introduced by your camera.

The vat floor calibration image with and without camera vignetting image added. In the original image the corners are notably darker while in the corrected image the are brightened to a degree where the dark frame becomes more homogeneous. The corrected image now shows the actual vat floor brightness distribution.

Now, you need to crop your vat floor image. In Gimp, activate the Rectangle Select Tool. In the tool options, set the Aspect Ratio to Fixed and enter your projectors resolution (1920:1080 for a full HD projector). Now, drag a rectangle over the image of the vat floor, that lies just inside of the bright area. In the menu select Image > Crop to Selection.

In a last step, get rid of the paper texture that might be apparent in your image. Select Filters > Blur > Gaussian Blur and set the Radius to something like 100 px. The image should not look patchy anymore.

The final vat floor calibration image which will be used to adjust the slice images in Monkeyprint for a more homogeneous DLP printer brightness distribution.

Congratulations, your vat floor calibration image is now ready! To use it during prints with Monkeyprint, commence with step 2.

2: Load the calibration image into Monkeyprint

Monkeyprint now has a method to adjust the slice images according to your vat floor calibration image. You can supply a calibration image in the settings dialog. Simply go to Options > Settings, click on the Projector tab and load your calibration image.

During slice preview and printing Monkeyprint will darken the slice images in regions where the calibration image is brightest and retain the brightness where the calibration image is dark. The result will be a slice image that equalizes the brightness distribution created by your projector and the vat floor, resulting in a homogeneous exposure during prints.

Monkeyprint will create brightness adjusted slice images if you have supplied a calibration image in the settings dialog.

If you like this or if you have questions or remarks, please use the comment function below.

]]>8paulhttp://robotsinthesun.org/?p=5542016-03-23T20:55:55Z2016-03-05T09:01:39ZThe Monkeyprint DLP printer board requires you to make your own PCB. This can be intimidating if you’ve never done it before. But don’t be afraid! I show you how it’s done… In this tutorial you will learn how to etch a PCB using the photo resist method. At the end you will be holding … Continue reading Tutorial: Make your own Monkeyprint DLP printer board

]]>The Monkeyprint DLP printer board requires you to make your own PCB. This can be intimidating if you’ve never done it before. But don’t be afraid! I show you how it’s done…

In this tutorial you will learn how to etch a PCB using the photo resist method. At the end you will be holding your own Monkeyprint DLP printer board in your hands. But first things first:

Warning & disclaimer

You will be working with potentially hazardous chemicals. When handling these chemicals comply to the following rules:

Use gloves.

Wear a lab coat.

Use safety goggles.

Don’t eat, don’t drink.

Do not store chemicals in food containers. Use chemical bottles (you can get them at your local drug store) and label them properly.

Do not store chemicals in your kitchen or any other place that might be accessed by an unsuspecting person.

Disclaimer: This is a do-it-youself guide and you follow the instructions at your own risk. I cannot be held liable for any effects your actions might have, including injury or damage.

Overview

There are several ways of making a PCB from a copper plated board. All of them involve masking the traces and pads by some sort of etch resist and then etching away the unmasked parts of the copper. The difference lies in how the etch resist comes onto the board. You can paint the layout onto the board using etch resistant markers, you can use the toner transfer method or you can use boards that come with a photo active etch resist and need to be exposed and developed before etching.

The last — the photo resist method — offers the highest level of quality — and that is why we will use it here. Additionally, it’s very similar to printing with a DLP printer

This method includes the following steps:

Get the layout transferred onto an exposure mask.

Expose the board using the mask and develop it.

Etch the board.

Tin coat and drill the board.

Step 0: Make an exposure mask

First of all, we need to make a mask that contains the layout of the Monkeyprint DLP printer board. Traces and pads need to be black and everything else transparent. You will find the layout as a pdf file in DIN A4 format in the hardware folder of your Monkeyprint directory. If you don’t have it already, check it out on my Github.

The best way to make the mask is to have your local print shop expose the layout onto transparent film. This results in a superior quality mask as the resolution is very high. The cost is about 7 € in the print shop of my choice for a DIN A4 film.

As an alternative, you can print onto transparent foil (overhead slides) using a laser printer. Make sure to use A4 format and 100% scaling!

Step 1: Cut a piece of PCB to size

Equipment:

A PCB with photo resist coating. I use Bungard PCBs as they work really well. Pay attention to the best before date: PCBs that are too old might not work anymore as the etch resist degrades over time.

A Jigsaw, pen and ruler.

Sanding paper, grit 240–320.

Instructions:

Mark a rectangular area of 69 x 60 mm on the PCBs cover foil. This is larger than the layout by 2 mm on all sides, which can be advantageous as the etch resist will sometimes be damaged on the edges. Then, cut out the marked area.

I cut the PCB with a jigsaw. Make sure to deburr the edges, especially on the copper plated side as the exposure mask needs to lay down really flat onto the board later on.

Step 2: Expose and develop the PCB

In the next step you are exposing and developing the PCB. The exposure will be done using UV light and the exposure mask. After the exposure the board needs to be developed. This will wash away the photo resist where it has been exposed to the UV light and leave the resist only where the layout mask was black.

Equipment:

A cheap nail polish curing lamp. You can get it on eBay for about 15 €. You only need to install two of the four UV lamps provided.

A glass plate of about 100 x 100 mm. Clean it with some ethanol or window cleaning detergent.

The exposure mask.

An etch resistant flat (glass) basin.

Developing solution. For Bungard PCBs use 20 grams of NaOH in 1 liter of water. If you use different material refer to the data sheet or manual.

Danger! NaOH is corrosive and might lead to serious injury on skin or eye contact. Wear gloves and safety goggles, do not eat or drink during the process.

Instructions:

Before you start, pour some developing solution into the basin and heat it up to about 50° C. Also make sure your UV lamp is plugged in and operational and your glass plate and exposure mask is at hand.

Then, follow the steps below:

Peel the sticky tape from the PCB. Keep the tape. Warning: handle the board with care! The etch resist is easily scratched which may result in defective circuitry. Place the board on a table, center the layout mask on the PCB and carefully put the glass plate on top. Then, cover the whole thing with the UV lamp and switch it on for 2 minutes. The exposure time may vary with different PCB manufacturers, so check your data sheet.Then, switch off the lamp, remove the glass plate and layout mask and submerge the board in the developing solution. The development takes only seconds and you should immediately see the layout emerging on the board.Shake the board a little and once the layout is clearly visible remove it from the solution and rinse it in water.

Result:

Congratulations! You now have completed the most critical step of the process. The board is now insensitive to light and ready to be etched. If you do not want to do the etching right now, cover it with the sticky tape again to protect the etch resist.

This is what the board looks like after the exposure and development process. The dark parts are still masked by the etch resist.

Step 3: Etch the PCB

During this step you will etch away the copper where the etch resist has been removed from the board in the previous step.

Equipment:

The exposed and developed board.

An etch resistant flat basin and etch resistant pliers.

Etching solution. Some use ferric oxide, I use sodium persulfate (Na2S2O8). You can buy it in a drug store or at your electronics supplier. Dissolve 250 grams in one liter of water.

Danger! Na2S2O8 is corrosive and might lead to serious injury on skin or eye contact. Wear gloves and safety goggles, do not eat or drink during the process.
Na2S2O8 will gradually release oxygen during storage. Use a bottle with an overpressure valve, otherwise your container might burst.

First, heat up your etching solution to about 50° C. I do this in a water basin on a regular stove as I don’t have a lab stove with regulated temperature. Then, follow these steps:

Place the developed PCB inside the basin. The etching will take some minutes, depending on the temperature and how copper saturated your etching solution already is. You can tell the etching progress from the exposed parts of the board becoming brighter and matte. Also, your etching solution will start getting blueish from the copper ions.You will see some bubbles forming on the board. “Blow” them away with a pipette or shake the board a little with the tweezers. Constant motion will also accelerate the etching process.The small, thin regions between traces are usually the first do be etched away.Once all exposed parts are free of copper, remove the board from the basin and rinse it in clear water.Before stowing away your etching utensils inspect the result optically by holding it against a light source. Should you see any unwanted connections between traces put the board back into the etching solution.If you are pleased with the results of the etching process, you can wash off the remaining etch resist from the pads and traces using acetone. Use gloves as acetone dissolves your skins lipid layer. Make sure not to touch the board with your fingers to avoid tarnishing of the copper. You have finished the etching process and are now holding your first Monkeyprint DLP printer board in your hands.The finished Monkeyprint DLP printer board.

Step 5: (optional) Tin coating

This step is optional. Tin coating the board prevents corrosion of the copper and makes the soldering a little easier. It also looks better (which is the main reason why I like it).
Equipment needed:
– Soldering iron.
– Solder. I use Sn62Pb36Cu2 with a flux core.
– Solder wick. Apply some flux onto the wick for better results.

First, cover all the copper with solder. Use as little solder as possible. Keep the soldering iron in contact with the board while moving it around and applying the solder at the region of the irons tip.This is what the board looks like when first step of the tin coating is done.Then, use the solder wick to collect all the excess solder. Push it onto the board with the soldering iron and move it around until it has sucked up all the excess solder. You might need some 50 cm of wick to get the board done.After cleaning off the residue tin, the coating is thin and even. Only some flux remains.Clean away the flux using acetone. I also tend to carefully sand the board (grit 600–1000) to give it a nice and even finish.

There are certainly more elegant ways of tin coating your board like tin baths, so if you want to use a different method or skip this step all together, I won’t blame you

Step 6: Drilling and trimming

The last step is very easy and straight-forward.

Equipment:

Hand tool.

0.8 and 1.0 mm drill.

Jigsaw and sanding paper.

Instructions:

Place the board onto a flat piece of wood and drill all holes with a diameter of 0.8 mm.

Then, drill the holes for the angled connectors, the straight connectors and the step down converter with 1.0 mm.

Drill the mounting holes with 3.5 mm.

Cut off the offset edges up to the thin line around the layout. You can use the jigsaw again to do this. Make sure to sand the etches to get a smooth finish.

The drilling is the last step in the process of making your own Monkeyprint DLP printer board. I didn’t have a drill chuck small enough to hold the tiny drills so I put some heat shrink over the shafts. Works like a charm!

]]>0paulhttp://robotsinthesun.org/?p=4812016-02-20T23:04:56Z2016-02-20T23:04:56ZIn an effort to bring Monkeyprint to your DLP printer build I have designed a simple PCB for the control board. This will make it easier to hook up all the components and get your DLP printer going. The board is based on the electronics hook-up that I used before. It is a single layer … Continue reading Monkeyprint DLP control board PCB

]]>In an effort to bring Monkeyprint to your DLP printer build I have designed a simple PCB for the control board. This will make it easier to hook up all the components and get your DLP printer going.

DLP control board features

The board provides full control over a DLP printer. An Arduino Pro Micro runs the Monkeyprint firmware, coordinates stepper drivers for build platform and tilt mechanism and does lots of other useful stuff.

The Monkeyprint DLP control board. Simple and effective, it brings together all the necessary components needed to control your printer. It has stepper outputs and end stop inputs for build platform and tilt mechanism, an output for a shutter servo, a camera trigger for time lapse videos and more. Connect it to your PC via USB or to your Raspberry Pi (software coming soon) via UART.

Concerning the number of components and the confined space (I wanted it to fit onto the Raspberry Pi 2/B+/A+ footprint), it was hard to get it all together. The spacing is very tight and some wires are needed.

Hook up your Pi!

You can easily attach the board to a Raspberry Pi 2/B+/A+ using M3 bolts and 20 mm PCB spacers. The connector provides 5 V to the Pi and links the Arduino Pro Micro with the Pi’s UART. I’m still working on the software that will run on the Pi, so keep watching for updates on this site…

Simply connect the board to your Raspberry Pi. The good thing: the Monkeyprint DLP control board will supply your Pi with the necessary 5 V. The software to run on the Pi will be published soon.

New board, new box

I have also adjusted my electronics box design to fit the new DLP control board — it’s much shorter and sleeker now. Also the build quality is superior to the old one since I had a serious talk with the Ultimaker that I use at work… Together with a 60 mm fan it forms a compact control unit for a DLP printer.

A neat housing can be printed using an FDM printer. Raspberry Pi 2 and Monkeyprint control board are connected via 20 mm PCB spacers. The fan does not only cool the components but also holds the top and bottom part of the case together.

Build the board

The PCB files are in my github. If you download Monkeyprint you will find a hardware folder inside the main directory. It contains eagle files of the board and the schematics and board layout as pdf files.

Simply get the board etched at your local etching store or build it yourself. I use the following procedure:

Get the board layout transferred onto photographic film at your local print store. This will result in a superior quality, high resolution exposure template.

Cut a piece of photoresist-covered board to size (65 x 56 mm).

Expose the board using one of those cheap nail polish curing lamps with only two of the four UV bulbs installed. Duration: 2 minutes.

Develop the board using a sodium hydroxide solution (10 g on 1 l water). This will take some seconds at most.

Etch the board using ferric chloride or sodium persulfate. Might take several minutes.

After the etching is done, clean off the remaining photo resist using acetone.

You can then assemble the board using the following components:

1 x schottky diode SK54C (40 V, 5 A), 0.27 €

3 x capacitor 100 nF, 0.04 € each

8 x resistor 10 kΩ, 0.10 € each

3 x resistor 330 Ω, 0.10 € each

3 x resistor 220 Ω, 0.10 € each

headers 2 x 20 angled, 0.90 €

headers 1 x 20 straight, 0.31 €

sockets 1 x 56 straight, ~2 €

6 x jumper, 0.07 € each

1 x MosFet BSS123, 0.15 €

2 x capacitor 100 µF / 63 V, 0.05 € each

1 x capacitor 1000 µF / 35 V, 0.13 €

3 x photo interrupter Everlight TR8102, 0.41 €

1 x Arduino Pro Micro, ~5 €

2 x Pololu DRV8825, ~5 € each

1 x LM2596 step down converter module, ~2 €

Some wires, miscellaneous stuff, ~5 €

Refer to the Eagle files for the specific part locations on the board. If you experience problems during the board assembly or operation, please contact me via the comments!

If we consider the costs for the board itself with ~2 € that’s 31.93 € for a DLP control board including the stepper drivers and everything. Not bad, isn’t it?

Where is this going?

Well, the next step will finally be the adaption of Monkeyprint to run as a non-GUI standalone version on the Raspberry Pi. I know some of you are waiting for this and it will be there soon.