Monday, December 28, 2015

3d elevation maps and me on Thingiverse

It has been a while since last time I update my blog. As I was extremely busy with my work and 2 years old, I haven't been able to find enough time playing with DIY hardware stuff. Instead, I start to do something more software.

I have been converting some topographic maps into 3D STL models that are ready for 3d printer. Models I've made include a 6 million:1 Texas elevation map, France (and some west European area)  topographic map, China topographic map and Rocky Mountain National Park in Colorado.

Texas

France

China


Rocky Mountain National Park



Please find those models under my Thingiverse account:
http://www.thingiverse.com/DanielChai/designs

They are free to download.



I found these 3d elevation maps pretty neat because I can touch and feel them and gain a much more intuitive understanding of geology.

I am making more of these 3D elevation maps of course. And feel free to leave a comment if you would like to see some other place in 3D.

Saturday, April 11, 2015

A 3D printer simulator

Recently I wrote a python code that reads G-code generated by Slic3r, interprets the G-code, and creates a simple 3D plot that simulating a real 3D printer. It provides a nice preview of G-code.

The code can by downloaded here from my google drive.

If the link doesn't work, copy the following url and paste to your browser
https://drive.google.com/folderview?id=0B8QP2HPTAprrVUdKMFZaQXJjRFk&usp=sharing


The folder contains:

simulator_config.txt

This is the configuration file. The file should contain:
line 1: G-code file name (including path). e.g., gcodes\squirrel_export.gcode
line 2: nS. A positive integer. A new section will be plotted after skipping (nS-1) sections. Minimal value is 1 (every section will be plotted). Smaller nS gives finner (and larger) plot.
line 3: nP. A positive integer. A new point will be plotted after skipping (nP-1) points. Minimal value is 1 (every point will be plotted). Smaller nP gives finner (and larger) plot.
line 4: dx, dy, dz, de. Resolution of the 3D printer in x,y,z direction and resolution of filament extruder.

Rapibot_simulator.py 

The main program that reads configuration from simulator_config.txt and calls Gcode_interpretation_functions.py and creates plot.

Simple run this code and get a 3D plot

Gcode_interpretation_functions.py

File that contains functions to interprete G-code

gcodes

A folder that contains some G-code examples.


Example 

Here is the example when running the "squirrel_export.gcode" file provided in the google drive folder.

snapshot when code is runing
 
Finished! You can rotate the view or zoom in/out

Wednesday, February 25, 2015

3D printer hot end temperature control system Version 2 [unfinished]

Almost a years ago, I post the first version of a simple temperature control system ultilizing only a LM324 quard op-amp with some resistors and a MOSFET. The system is for 3D printer's hot end.

The controller has two major functions: (a) turning a power resistor on and off automatically to maintain a constant temperature (adjustable manually); (b) showing the real time temperature in the range of 120-260 C. It is simple, low price, and efficient. The circuit board is shown below.
Temperature control system Version 1. See this post for detail. The values of the resistors here are R0=600 ohm, R1=10k ohm, R2=3.9k ohm, R3=6.19k ohm, R4=2.4k ohm, R5=10k ohm.


However, I realized later, also as reader epineh pointed out, the second function, displaying real time temperature, requires a constant +12V power supply. This could be problematic. Because most time people use low price ATX computer powersupply to power their 3D printer. And those powersupply DOES NOT output constant voltage. When there is a large current drain change, say once the power resistor is switched on and off, the power supply's output voltage can jump between 10 and 12V. As a matter of fact, the displayed voltage can be off by 20%!! The control system, on the other hand, works just fine because it relies only on the ratio of the resistance of thermistor and R0.

One solution is to use a logic power supply that output constant 12V for the LM324 and ATX powersupply for the hot resistor R_hot. Or another way is to add a voltage regulator, which turns the unstable 12V to a stable 5V as the voltage reference for LM324. Only one power supply is required. The circuit diagram is shown below.

Temperature control system Version 2. The values of the resistors here are R0=600 ohm, R1=10k ohm, R2=3.9k ohm, R3=6.19k ohm, R4=12.4k ohm, R5=10k ohm.

There are two differences between version 1 and version 2.
(a) In version 2, a LM340T5 +5V voltage regulator is used to convert 10~12V to a constant +5V. So the display will not be affected by the status of the hot resistor.
(b) R4 is changed from 2.4k ohm to 12.4k ohm. This is important in order to correctly display the temperature. I will show why later.

[this post is unfinished yet]