td0g.ca

always know where your towel is

Workflow

Draw Part

Export to an STL or OBJ file.
While drawing, consider how the part will be printed.
Are there large overhangs requiring temporary supports?
What type of material will it use (PLA or PETG)?
This guide does not cover 3D drawing.

Slice Part

This process converts the STL or OBJ file to a Gcode file.
See below for more details about the decisions made while slicing.

Print Part

The Gcode can be sent to the printer via USB or an SD card.
An SD card is more convenient, but using USB allows more control.
Cover the print bed with blue painter's tape.
Make sure the bed is level.
Pre-heat the bed before starting the print.


Slicing

Cura is a good program for slicing.
Current version is 3.04 (as of 2017-11-28).
There are an overwhelming amount of parameters to adjust.
Only a few need to be modified for most prints.
Follow these parameter guidelines to ensure a successful print.

Quality

For final products, use a Layer Height of 0.06mm - 0.15mm
The difference in quality between 0.06mm and 0.15mm is very small

Speed (Section 5)

Slower speeds greatly improve the quality of the print.
PLA: use a Print Speed between 50 - 120 mm/s.
80 mm/s is a good compromise.
Lower speeds are also necessary if there are many travel moves.
PETG: use a Print Speed between 40 - 60 mm/s.


byte x = 5 = 0b00000101
byte y = x & 0b00000011 = 0b00000001
Turning Bit On (|): byte x = 5 = 0b00000101 byte x = x | 0b00000011 = 0b00000111


Advanced Coding Topics:

Direct Port Register Manipulation -Guide-

Timer Registers -Guide- | -Cheat Sheet-

Pinouts -ATMega328- | -ATTiny85-

Arduino Reference Page


Timers:

ATMega328:

TimerSizeBase frequencyAffected functions
08-bit62500millis, micros, delay
116-bit31372.55Servo library
28-bit62500Tone

ATTiny85:

TimerSizeAffected Functions
0

Configuring Timers:

Bit87654321
TCCRxACOM, 1A1, RWCOM, 1A0, RWCOM, 1B1, RWCOM, 1B0, RWR WG, M11, RWWG, A10, RW
TCCRxB1CNC 1 RW 1CES, 1, RWRWG, M13, RWWG, M12, RWCS12, RWCS11, RWCS10, RW



For PWM freq adjustment, set timer's base frequency divided by prescaler.

CS12CS11CS10Prescaler
000No Clock (default)
001 /1 (fastest)
010/8
011/64
100/256
101/1024 (slowest)
110Ext clock T1 pin - falling
111Ext clock T1 pin - rising

Initializing timers:
cli;
TCCRxA = 0;
TCCRxB = 0;
TIMSKx |= 1< TCCRxB |= ________;
TCNT1 = startTime;
sei();


Programming:

Board Manager URL's (separated by comma):

ATTiny: https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json

ESP8266: http://arduino.esp8266.com/stable/package_esp8266com_index.json

Arduino as ISP --> ATMega328: homeautomation.org

Programming Bootloaded ATMega328 w/ FTDI: gammon.com.au

NOTES: Both Lilypad and Uno bootloaders are confirmed to work.

Adafruit FTDI cable has 5V supply and 3V logic - One or the other MUST be shifted.

Programmer: Select AVRISP mkII | Board: Lilypad Arduino or Arduino Uno

When changing from internal to external oscillator bootloader, don't forget to add the external oscillator.