3Dsimo Kit Device: 3Dsimo Kit Rev. Page 1/18 1.00 3Dsimo Kit Revision table Revision Description Date 1.00 Initial version of the document xx. xx.
3Dsimo Kit Device: 3Dsimo Kit Rev. 1.00 1 Table of contents 1 Table of contents 2 Main chapter 3 Next headings 3.1 Part 1 3.
Dsimo Kit Device: 3Dsimo Kit Rev. 1.00 Page 3/18 2 Introduction The construction set 3Dsimo Kit is an open source project, which intends to familiarize people with a wide range of possibilities when drawing with a 3D pen and give an opportunity to the user to modify and expand functions of the pen according to their preferences. Considering that the base version of code is available through GitHub https://github.com/3dsimo, anyone with minimal programming skills can modify it.
3Dsimo Kit Device: 3Dsimo Kit Rev. Page 4/18 1.00 3 Wiring diagram The basic diagram of the 3Dsimo Kit is on the following picture (Pic. 1), where the basis is an Arduino Nano-like development kit along with the motor driver, pins for display connection or 4 functional keys (plus/minus, extrusion/ejecting the string) and 8 free pins for optional extensions for the pen. Pic.
3Dsimo Kit Device: 3Dsimo Kit Rev. 1.00 Page 5/18 The extension board shown in Pic. 1 is made in KiCAD, which can be downloaded for free on kicad-pcb.org for a variety of operating systems. All production materials, schematics and the PCB can be found on https://github.com/3dsimo/3dsimo_kit. 3.1 Modification of Arduino Nano-like board To allow heating of the nozzle with enough power, the diode at the miniUSB input must be replaced with interconnect (0 Ohm resistor).
3Dsimo Kit Device: 3Dsimo Kit Rev. Page 6/18 1.00 4 Code for 3Dsimo Kit The code for 3Dsimo Kit is written in the Arduino environment, which can be downloaded for free on arduino.cc in the Software section. It is a C/C++ programming language in which the whole program is written. The base version of the program is already programed in the microcontroller and its source codes are available on our github.com. 4.
3Dsimo Kit Device: 3Dsimo Kit Rev. Page 7/18 1.00 4.2 Setting up the IDE Before the first compilation, it is necessary to choose the right development board - Arduino Nano at Tools => Board => Arduino Nano, as shown in Pic. 4. The next step is choosing the right processor. Our board is shipped with ATmega168, which you have to choose as in Pic. 5. After selecting the right board, you need to select the appropriate port, COM3 in our case as seen on Pic. 6. Pic.
3Dsimo Kit Device: 3Dsimo Kit Rev. Page 8/18 1.00 Pic. 6: Choice of the communication port(COM3) 4.3 First compilation You can find base code on github.com or down below, it can be modified without restrictions (although, it must fit inside the device’s memory). After downloading, run Arduino IDE and open the file using File => Open, choose 3DsimoKit.ino on your disc and press open.
3Dsimo Kit Device: 3Dsimo Kit Rev. Page 9/18 1.00 Pic. 7: Verification (1) and compilation of the code (2) 4.4 Base code #include "ssd1306.h" #include "nano_gfx.h" #include
3Dsimo Kit Device: 3Dsimo Kit Rev. Page 10/18 1.
3Dsimo Kit Device: 3Dsimo Kit Rev. 1.00 * create timer for main loop */ EveryTimer timer; /* * function for measuring temperature of the tip */ int getTemperature(){ // get temperature in deg.
3Dsimo Kit Device: 3Dsimo Kit Rev. 1.00 /* * PID variables and constants for tuning */ float Kp=15, Ki=1, Kd=1.0, dT = 0.
3Dsimo Kit Device: 3Dsimo Kit Rev. 1.
3Dsimo Kit Device: 3Dsimo Kit Rev. 1.00 sprintf(text, "%3d/%3dC", sumTemp, setTemperature); ssd1306_setFixedFont(ssd1306xled_font6x8); ssd1306_printFixedN(0, 16, text, STYLE_NORMAL, FONT_SIZE_2X); /* * debug output into display and to serial */ /* sprintf(text, "PID=%03d", valuePID); ssd1306_printFixed(0, 0, text, STYLE_NORMAL); sprintf(text, "%3d;%3d", valuePID, sumTemp); Serial.
3Dsimo Kit Device: 3Dsimo Kit Rev. 1.
3Dsimo Kit Device: 3Dsimo Kit Rev. 1.00 // resolve motor states (Extrusion, Reverse, Stop, ...
3Dsimo Kit Device: 3Dsimo Kit Rev. 1.
3Dsimo Kit Device: 3Dsimo Kit Rev. 1.00 // initialize outputs pinMode(LED_NANO, OUTPUT); pinMode(MOTOR_DIR, OUTPUT); pinMode(MOTOR_PWM, OUTPUT); pinMode(MOTOR_SLEEP, OUTPUT); pinMode(HEATER_EN, OUTPUT); // initialize inputs pinMode(BTN_UP, INPUT_PULLUP); pinMode(BTN_DOWN, INPUT_PULLUP); pinMode(BTN_EXT, INPUT_PULLUP); pinMode(BTN_REV, INPUT_PULLUP); // load material profile loadMaterial(materialID); // preset timer period every 50 ms and call timerAction function when time expire timer.