plot thermometer / clock for 3D printers

by smily77 Jun 22, 2014
Download All Files

Thing Apps Enabled

Please Login to Comment

smily77, thanks for posting your thing! I did a remix of it for Expo dry erase markers, using the V2 style arms. I also uploaded a revised ino that lowers to 'lift 0' any time the plotter is parked. This helped me get a good seal between the marker and eraser/cap while parked. I also added macro options for 12hr time format, and Fahrenheit temperature. The leading "0" is removed for 12hr formatted time. I also added the ability to plot temperatures >=100 (since that's very likely with the addition of Fahrenheit). I added an option to select a PIR or button, and changed the pin7 setup to use more common momentary NO buttons (to Vcc). I tweaked the "1" and "4" plots so they no longer resemble "7" and "9". I also tweaked the "." to be lower and farther right, which looks way better to me. I fixed the double erasing of the board when waking up from standby (since board is already erased before entering standby). To go with the double erase fix, I added a 'board erase' after bootup. Finally, I added an include for TimeLib.h to work better on some windows based IDE's.

I also added your PIR sensor thing, and drilled a hole on top of it for a time/temp toggle switch (using the calibration code "z" option).

Some stuff to help others with this project...

With the device oriented so servos are on the bottom:
Item Location Pin# Note
Servo1 lift 2
Servo2 left 3
Servo3 right 4
Dallas 5 Some RTC boards have a spot to hold the sensor
PIR/butt 6 High activates plot, low standby (uses INPUT_PULLUP)
Switch 7 High temp mode, low time mode (uses INPUT_PULLUP)

Also, the "z" option in the calibration menu changes the function of the switches. Beware of this when using a pir/button. Also, if you use Atom/PIO, the serial monitor automatically adds EOL after each button press. This means you don't have to hit [enter] at all. That makes the process of calibration much more streamlined (just hold +/- to quickly jog the servos into position, then tap to fine tune).

@smily77, the unused "present" variable triggers compiler warnings. When I went to fix that I noticed that "int_cel" is also pointless. This isn't critical, but I figured I'd mention it while posting. I presume those are artifacts from debugging, or maybe for some future additions.

smily77, hey thanks again for sharing this awesome project with everyone. I built one using the remix from stylesuxx, and everything is working great!

In the process of assembly I came in to a few minor speed bumps that would not be there with better instructions. So I figured I'd share some key info to help others along (feel free to use it in your docs or code). Here are some comments I added to my copy of the code:

//With the device oriented so servos are on the bottom:
//Item Location Pin# Note
//Servo1 lift 2
//Servo2 left 3
//Servo3 right 4
//Dallas 5 Some RTC boards have a spot to hold the sensor
//PIR/butt 6 High activates plot, low standby (uses INPUT_PULLUP)
//Switch 7 High temp mode, low time mode (uses INPUT_PULLUP)

In the calibration menu (1.0.1b code), we have a 'z' option, which toggles how the switch and buttons work. One 'z mode' works best when you have a PIR/button to activate/deactivate drawing, the other mode uses the pir/button to switch between temp/time. (<-I think this is correct, please comment if not).

The calibration process does not HAVE to be done in the exact order in the instructions. The exception is you must set 1 before tuning 3, and set 2 before tuning 4. Otherwise you can skip back and forth in the menu to make tweaks in any random order you like.

A note for those using Atom/Platform IO... by default the serial monitor automatically sends eol after each button press. So no need to hit [enter] as you adjust things. This makes the calibration process go by much faster; hold +/- to move the servo quickly into the desired position, then tap +/- to fine tune it. Just tapping a key to move through the calibration menu helps streamline the process.

Also, it's not really an issue, but found some unused variables in the temperature() function that were throwing compiler warnings (present and int_cel). I'm guessing those ended up there during debugging, or maybe there for some future additions. If not maybe those can be cleaned up in your ino.


I Love it! Just one request... Can you add some crazy looking character (raccoon?) at the top? And maybe make the area where it grips the pen into hands? I just think this is awesome! I look forward to getting the time to make one.

I'm not sure what you mean by the the character on the top? - The writing characters to change is quite impossible as this isn't precise enough. If you mean on top of the model. This would work but I'm limited to the standard character Tinkercad offers.

The hand would be more less easy to realize but .... It changes the entire geometry of the arms this would require to change the math in the program. Therefore you require pretty well math & coding knowledge

I was just saying to put a Head/Face to make it look like a character was doing the drawing.. Think of the arms being the character's arms. You would have to add the face..

It's just the first thing I though of when I saw this. A goofy character doing the drawing...

LOL, that is a great idea for some remixes... thinking

When in x Mode you can't lift the Arm with 7 [return]?

No (but see below). None of the keys 1 to 9 moves the servos. I have been trying a different uno and initially got the same result. I realised that all three servos were being driven hard clockwise.

I haven't changed software or hardware, but after quite a while re-uploading the sketch and pressing various buttons the servos do now move! selecting 3 or 4 causes both left and right servos to move. Is that supposed to happen?
1 & 4 the left servo responds to + and -
2 the right servo responds to + and -
3 + and - do not move anything
5, 6, and 7 move the lift servo and respond to + and -

Getting closer.

And today it seems to be working correctly :-)
I still have not changed the software or hardware.
Confused doesn't cover it.

Should the 1_1b code work on a uno?
'cos it's not working for me at the moment.

It does. What is your problem in detail?

I have the three servos connected to 2, 3 and 4. I upload the sketch - OK.
On the serial monitor I get the menu. 'x' changes between setup=ON and setup=OFF. But nothing moves the servos.
If I upload the original plotclock sketch (no hardware changes) then the servos work as expected.
I do not have the RTC connected yet so have commented out the #define for that in both sketches.

I have done lots of PIC programming but I am new to arduino so expect newbie sillies.


I've got a problem to print it with Simplify3D. The joints are glued together and not moving. Is there a special settings for that? Or do you have a stl file with more space between moving parts?


I didn't made it with Simplify3D but when you have it you should be capable to see the result well in advance. I made it with 0.3mm resolution, 260 deg ABS and pretty fast print speed. However after printing I required it to loose it a bit with a knife and then to turn with a bit force for the first time (and hope that it doesn't break).

If this doesn't help check with stylesuxx in this blog. He made a version with screws instead of printed hinges http://www.thingiverse.com/thing:940737

Plot Thermometer / Clock Remix

I wasn't careful enough and broke my first attempt (using a brand new spool so perhaps a bit overextruded), but it still has enough meat left around the pins to get things tested and running. I may try again with reduced flowrate (and more persuasion with a thin razor) in hopes of better luck.

I appreciate print-in-place designs for situations where there's no other way, but they tend to be finicky regarding printer tolerances. In this case (the hinges don't require it nor would they be a novelty display) I think it would be better as 2 separate parts with screws for hinges.

Also, not sure if it is also due to overextrusion, but my bottom cover part was WAAAY too big for my main housing. I had to shave off ~2mm from all 4 sides! I haven't checked if it's the model or not, but even with drastic overextrusion I usually don't have to shave more than a few 0.1mm's for a good fit on most projects. I wasn't overextruding that much I don't think (it came out looking great overall). Has anyone else had this problem?

Regardless, thanks a ton for sharing the design!

After some questions how the calibration process works I made a more detailed description as Update #5 (instructions). I failed to make a video :-(

Thank you for this great model. I just began the print ;)
Is it normal to have the left "hinge" an half milimeter higher than the rigth one on the body part?
That didn't trouble the printer ;)

No this shouldn't be the case and if you check on tinkercad (see post below) it isn't the case. Can it be caused by the wrap of the print?

Hey, very cool project. I just printed the base and everything turned out perfectly, except that I could not separate the base from the hinge and by trying, I broke it :-/
Could you, by any chance, upload the body and the hinge separately?

I have currently only very limited access. I made the body public in Tinkercad perhaps this help you in the short run.

However I wouln'd recommend to change the consruction (the hinges still needs somehow to be fixed at the body). I recommend to loose the hinges a bit with a knife before.turning them this reduce the risk to break it massive

I just searched Tinkercad, but could not find your design, can you maybe post a link.

Yeah, I tried loosening it with a knife, but it still broke.
I was thinking about mounting the hinge with 2 M3 screws, similar to how the up/down arm is mounted.

Just search for body and click througth the results. A bit sub optimal:-) but can't change it currently

Alright, found it. Thank you. Will tinker a bit with it.

Hi, brilliant great fun design. All printed an assembled, just calibration now, which I'm making hard work of. With relation to the servos which is left and which is right (guessing the park / lid is left), and could you give me a quick guide as to the postions the servos shoud be in during the steps of setup please.

There was a minor bug in the calibration routine of version 1_1 which made the calibration a bit more difficult. Use 1_1b (just uploaded).
General procedure: (Input from serial monitor - 9600. Each input must be sent by CR (Return - Key)
x -> Enter calibration mode
9 -> Neutral position
3 -> then - or + until the arm is in a 90 deg position
4 -> then - or + until this arm is in a 90 deg position as well
1 -> then - or + until the arm is in a 90 deg position
3 -> then - or + until the arm is in a 90 deg position
1 -> control
2-> then - or + until the arm is in a 90 deg position
4 -> then - or + until this arm is in a 90 deg position
2 -> control
Now the arms should be correct otherwise repeat
Adjust the height with 5,6,7 and + or -

Hi - thanks for the quick responce. 1_1b works a treat, up and running now a great project thanks.

With the 2 servo arms, what settings did you use to get a good print?
How much work did it take to get them to turn?
Shouldn't the arms be in separate files rather than draw together as my printer has almost made them as one piece, will take sometime to get them to turn and move.

I priinted them with 0.2mm resolution (fine mode). You need to turn the stl's by 90 deg that they are on the edge (same orientation as the hinges of the body). Befor e I can move them I need to

Ok, I printed at 0.4, laying flat. Getting them to turn resulting in them becoming scrap.
I have done a successful print of the body and was able to free up the hinges, that's the biggest as in time to print. Printer did well to bridge a corner
The arms are quicker to print, will try your suggestion of putting them on their sides and print at 0.2. If that doesn't work. I could/will use the servo arms from the first plot design, so they are printed separately. I did see the gap on the 3D render so will have another go at printing your arms as it will save on extra hardware.

Please check the update #2

Can we have a video of this one working?

I'm struggling to upload .avi or .mov files. Do you know how I can upload a video?

Upload it to YouTube and paste the link in the description.

Thanks. The video is uploaded

HOw hard would it be to modify this project to a zen clock that's constantly writing the time in sand, then smoothing the sand, and writing the time again? No markers to dry out.

For me this looks like a pretty small modification. The board needs to have a wall that the sand doesn't go out and the swee requires probably a bit a different bottom more like a fork. On top of this the wipe out program part may need perhaps a bit tuning. That's not much but of course you can hang it on the wall :-)

Well, no, you wouldn't hang a sand clock on the wall.
Now that I'm thinking of it you could have the wipe be a huge rake that when it wipes it moves the stylus to whichever side the rake is on, grabs it, and rakes it to the other side. Does the draw, and rakes it back. Single swipe.