Old 3D printer which never worked well.
DXF files: https://www.youmagine.com/designs/printrbot-lc-1302
https://web.archive.org/web/20130115210644/http://printrbot.com/shop/plus/
The Printrbot PLUS is the larger printrbot kit–containing an 8x8x8 build volume, laser cut birch construction, an assembled Ubis hot end, and 12mm Z-axis rods in an all-in-one kit. This kit also includes 1 lb of ABS filament.
This kit includes everything you need to build the printrbot PLUS:
The Getting Started Guide says that all Printrbots currently ship with 0.4mm nozzles.
The convention for identifying nozzles is based on notches (or "rings") cut into the sides (vertices) of the hexagonal brass "nut".
No notch = 0.5mm
1 notch = 0.4mm
2 notches = 0.35mm
Most of information about it vanished from internet so here is some overview:
Rev.B https://github.com/Printrbot/printrboard/releases/tag/revB
Annotated headers from http://blog.think3dprint3d.com/2012/07/panelolu-with-printrboard.html
[Sun Mar 18 08:23:50 2018] usb 2-4.4: new full-speed USB device number 61 using xhci_hcd [Sun Mar 18 08:23:50 2018] usb 2-4.4: New USB device found, idVendor=16c0, idProduct=0483 [Sun Mar 18 08:23:50 2018] usb 2-4.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [Sun Mar 18 08:23:50 2018] usb 2-4.4: Product: USB Serial [Sun Mar 18 08:23:50 2018] usb 2-4.4: Manufacturer: Teensyduino [Sun Mar 18 08:23:50 2018] usb 2-4.4: SerialNumber: 12345 [Sun Mar 18 08:23:50 2018] cdc_acm 2-4.4:1.0: ttyACM0: USB ACM device dpavlin@nuc:~$ microcom p /dev/ttyACM0 connected to /dev/ttyACM0 Escape character: Ctrl\ Type the escape character to get to the prompt. start echo:PowerUp Brown out Reset Marlin: 1.0.0 RC2 echo: Last Updated: 2012-02-25 | Author: erik echo: Free Memory: 4907 Pla echo:SD init fail workDir open failed echo:Unknown command:"echo" ok echo:Unknown command:"SD init fail" ok echo:Unknown command:"workDir open failed" ok
https://github.com/Printrbot/Marlin
M501 echo:Stored settings retreived: echo:Steps per unit: echo: M92 X62.11 Y64.67 Z2272.72 E536.00 echo:Maximum feedrates (mm/s): echo: M203 X60.00 Y60.00 Z2.00 E14.00 echo:Maximum Acceleration (mm/s2): echo: M201 X2000 Y2000 Z30 E10000 echo:Acceleration: S=acceleration, T=retract acceleration echo: M204 S3000.00 T3000.00 echo:Advanced variables: S=Min feedrate (mm/s), T=Min travel feedrate (mm/s), B=minimum segment time (ms), X=maximum xY jerk (mm/s), Z=maximum Z jerk (mm/s) echo: M205 S0.00 T0.00 B20000 X20.00 Z0.40 E5.00 echo:PID settings: echo: M301 P22.20 I1.08 D114.00 M115 FIRMWARE_NAME:Marlin V1; Sprinter/grbl mashup for gen6 FIRMWARE_URL:http://www.mendel-parts.com PROTOCOL_VERSION:1.0 MACHINE_TYPE:Mendel EXTRUDER_COUNT:1
If this doesn't work, you can try M503 which should display all settings without loading them from flash.
dpavlin@nuc:/nuc/PrintrBot$ git clone https://github.com/dpavlin/Marlin dpavlin@nuc:/nuc/PrintrBot$ cd Marlin/
https://github.com/dpavlin/Marlin/tree/PrintrBot_Plus_LC-1.1.8
dpavlin@nuc:/nuc/PrintrBot/Marlin$ git checkout PrintrBot_Plus_LC-1.1.8 dpavlin@nuc:/nuc/PrintrBot/Marlin$ platformio run -e printrboard Warning! Ignore unknown `envs_dir` option in `[platformio]` section Processing printrboard (platform: teensy; board: teensy20pp; framework: arduino) ----------------------------------------------------------------------------------------------------------------------- Verbose mode can be enabled via `-v, --verbose` option PLATFORM: Teensy > Teensy++ 2.0 SYSTEM: AT90USB1286 16MHz 8KB RAM (127KB Flash)
different enviroment compared to 1.1.8?
dpavlin@nuc:/nuc/PrintrBot/Marlin$ git checkout PrintrBot_Plus_LC-1.1.9 dpavlin@nuc:/nuc/PrintrBot/Marlin$ platformio run -e teensy20
open boot jumper, press button
[Sun Apr 15 12:20:34 2018] usb 1-1.1: new full-speed USB device number 30 using xhci_hcd [Sun Apr 15 12:20:34 2018] usb 1-1.1: unable to get BOS descriptor [Sun Apr 15 12:20:34 2018] usb 1-1.1: New USB device found, idVendor=03eb, idProduct=2ffb [Sun Apr 15 12:20:34 2018] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [Sun Apr 15 12:20:34 2018] usb 1-1.1: Product: AT90USB128 DFU [Sun Apr 15 12:20:34 2018] usb 1-1.1: Manufacturer: ATMEL [Sun Apr 15 12:20:34 2018] usb 1-1.1: SerialNumber: 1.0.0 root@nuc:/nuc/PrintrBot/Marlin# apt-get install dfu-programmer root@nuc:/nuc/PrintrBot/Marlin# dfu-programmer --targets 2>&1 | grep at90usb128 at89c5132 at90usb1287 at90usb1286 at90usb1287-4k at90usb1286-4k at90usb647 at90usb646 at90usb162 root@nuc:/nuc/PrintrBot/Marlin# dfu-programmer at90usb1286 dump --debug 99 target: at90usb1286 chip_id: 0x2ffb vendor_id: 0x03eb command: dump quiet: false debug: 99 device_type: AVR ------ command specific below ------ commands.c:625: dump 122880 bytes atmel.c:579: atmel_read_flash( 0x7ffe83facaf0, 0x00000000, 0x0001e000, 0x564ef5df7000, 122880, false ) atmel.c:847: atmel_select_page( 0x7ffe83facaf0, 0 ) atmel.c:510: __atmel_read_page( 0x7ffe83facaf0, 0, 65536, 0x564ef5df7000, false ) atmel.c:537: result: -9 Unknown error. Try enabling debug. Failed to read 122880 bytes from device.
other useful debug levels are 100, 200, 300 - https://www.avrfreaks.net/forum/how-use-dfu-programmer
hmmm... can't backup firmware?
dpavlin@nuc:/nuc/PrintrBot/Marlin$ dfu-programmer at90usb1286 erase dpavlin@nuc:/nuc/PrintrBot/Marlin$ dfu-programmer at90usb1286 flash .pioenvs/printrboard/firmware.hex Validating... Flash did not validate. Did you erase first? dpavlin@nuc:/nuc/PrintrBot/Marlin$ dfu-programmer at90usb1286 erase --debug 100 target: at90usb1286 chip_id: 0x2ffb vendor_id: 0x03eb command: erase quiet: false debug: 100 device_type: AVR ------ command specific below ------ validate: true commands.c:69: erase 122879 bytes atmel.c:281: atmel_erase_flash( 0x7ffc5df9bff0, 4 ) atmel.c:671: atmel_blank_check( 0x7ffc5df9bff0, 0x00000000, 0x0001dfff ) atmel.c:847: atmel_select_page( 0x7ffc5df9bff0, 0 ) atmel.c:647: __atmel_blank_check_internal( 0x7ffc5df9bff0, 0x00000000, 0x0000ffff ) atmel.c:847: atmel_select_page( 0x7ffc5df9bff0, 1 ) atmel.c:647: __atmel_blank_check_internal( 0x7ffc5df9bff0, 0x00000000, 0x0000dfff )
udev rule: https://www.pjrc.com/teensy/49-teensy.rules
loader: https://github.com/PaulStoffregen/teensy_loader_cli
It seems that chip is protected. However, trying to erase and program it did destry data in it (expect bootloader) for some reason, and it seem that dfu-programmer doesn't know how to work with protection features.
So, next step is to try atmel's flip under linux but this also doesn't work well.
root@nuc:/nuc/PrintrBot/flip.3.2.1# cat debian-install.sh sudo apt-get install openjdk-9-jre:i386 libusb-0.1-4:i386 root@nuc:/nuc/PrintrBot/flip.3.2.1# cat env.sh export JAVA_HOME=/usr/lib/jvm/java-9-openjdk-i386/ export FLIP_HOME=/nuc/PrintrBot/flip.3.2.1/bin/ root@nuc:/nuc/PrintrBot/flip.3.2.1# cd bin/ root@nuc:/nuc/PrintrBot/flip.3.2.1/bin# cp -apv libatlibusbdfu.so libatlibusbdfu.so.orig root@nuc:/nuc/PrintrBot/flip.3.2.1/bin# sed 's/\/sys\/bus\/usb/\/dev\/bus\/usb/g' libatlibusbdfu.so.orig > libatlibusbdfu.so # run from bin directory or it won't work (?!) root@nuc:/nuc/PrintrBot/flip.3.2.1/bin# ./flip.sh
made cable to convert 10 pin ICSP on usbasp to 6 pin ICSP on printrboard
http://reprap.org/wiki/Printrboard#Bootloaders
Pin 1 (not red wire on my harness because of re-wiring) is closest to the SD card slot.
root@nuc:/nuc/PrintrBot# avrdude -p usb1286 -c usbasp avrdude: warning: cannot set sck period. please check for usbasp firmware update. avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.00s avrdude: Device signature = 0x1e9782 (probably usb1287) avrdude: safemode: Fuses OK (E:F3, H:99, L:5E) avrdude done. Thank you.
ok, factory bootloader
# disable jtag avrdude -c usbtiny -p at90usb1286 -U lfuse:w:0xde:m -U hfuse:w:0xdb:m -U efuse:w:0xf0:m # enabled jtag avrdude -c usbtiny -p at90usb1286 -U lfuse:w:0xDE:m -U hfuse:w:0x9B:m -U efuse:w:0xF0:m root@nuc:/nuc/PrintrBot# avrdude -c usbtiny -p at90usb1286 -U lfuse:w:0xde:m -U hfuse:w:0xdb:m -U efuse:w:0xf0:m avrdude: Error: Could not find USBtiny device (0x1781/0xc9f) avrdude done. Thank you. root@nuc:/nuc/PrintrBot# avrdude -c usbasp -p at90usb1286 -U lfuse:w:0xde:m -U hfuse:w:0xdb:m -U efuse:w:0xf0:m avrdude: warning: cannot set sck period. please check for usbasp firmware update. avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.00s avrdude: Device signature = 0x1e9782 (probably usb1287) avrdude: reading input file "0xde" avrdude: writing lfuse (1 bytes): Writing | | 0% 0.00s ***failed; Writing | ################################################## | 100% 0.06s avrdude: 1 bytes of lfuse written avrdude: verifying lfuse memory against 0xde: avrdude: load data lfuse data from input file 0xde: avrdude: input file 0xde contains 1 bytes avrdude: reading on-chip lfuse data: Reading | ################################################## | 100% 0.00s avrdude: verifying ... avrdude: verification error, first mismatch at byte 0x0000 0x5e != 0xde avrdude: verification error; content mismatch avrdude: safemode: lfuse changed! Was de, and is now 5e [Tue Apr 17 07:12:19 2018] usb 1-1.4: USB disconnect, device number 20 [Tue Apr 17 07:12:19 2018] usb 1-1.4: USB disconnect, device number 20 Would you like this fuse to be changed back? [y/n] Would you like this fuse to be changed back? [y/n] n avrdude: safemode: Fuses OK (E:F3, H:99, L:DE) avrdude done. Thank you. root@nuc:/nuc/PrintrBot# avrdude -p usb1286 -c usbasp avrdude: warning: cannot set sck period. please check for usbasp firmware update. avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.00s avrdude: Device signature = 0x1e9782 (probably usb1287) avrdude: safemode: Fuses OK (E:F3, H:99, L:5E) avrdude done. Thank you.
huh, hum, program bootloader anyway from http://blog.lincomatic.com/?p=548
root@nuc:/nuc/PrintrBot# avrdude -p usb1286 -c usbasp -U flash:w:BootloaderDFU.hex
power cycle, return jumper re-try programming fuses
root@nuc:/nuc/PrintrBot# avrdude -c usbasp -p at90usb1286 -U lfuse:w:0xDE:m -U hfuse:w:0x9B:m -U efuse:w:0xF0:m
re-try dfu programming
root@nuc:/nuc/PrintrBot# dfu-programmer at90usb1286 erase root@nuc:/nuc/PrintrBot# dfu-programmer at90usb1286 flash Marlin/.pioenvs/printrboard/firmware.hex Validating... 61322 bytes used (49.90%)
dpavlin@nuc:/nuc/PrintrBot/Marlin$ avrdude -c usbasp -p usb1286 -U flash:w:.pioenvs/printrboard/firmware.hex avrdude: warning: cannot set sck period. please check for usbasp firmware update. avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.00s avrdude: Device signature = 0x1e9782 (probably usb1287) avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed To disable this feature, specify the -D option. avrdude: erasing chip avrdude: warning: cannot set sck period. please check for usbasp firmware update. avrdude: reading input file ".pioenvs/printrboard/firmware.hex" avrdude: input file .pioenvs/printrboard/firmware.hex auto detected as Intel Hex avrdude: writing flash (87280 bytes): Writing | ################################################## | 100% 58.04s avrdude: 87280 bytes of flash written avrdude: verifying flash memory against .pioenvs/printrboard/firmware.hex: avrdude: load data flash data from input file .pioenvs/printrboard/firmware.hex: avrdude: input file .pioenvs/printrboard/firmware.hex auto detected as Intel Hex avrdude: input file .pioenvs/printrboard/firmware.hex contains 87280 bytes avrdude: reading on-chip flash data: Reading | ################################################## | 100% 38.49s avrdude: verifying ... avrdude: 87280 bytes of flash verified avrdude: safemode: Fuses OK (E:F0, H:9B, L:DE) avrdude done. Thank you.
diff --git a/Marlin/pins_PRINTRBOARD.h b/Marlin/pins_PRINTRBOARD.h index 42632d174..8146505a3 100644 --- a/Marlin/pins_PRINTRBOARD.h +++ b/Marlin/pins_PRINTRBOARD.h @@ -166,3 +166,19 @@ #endif #endif // ULTRA_LCD && NEWPANEL + +// XXX dpavlin -- my pinout +#define LCD_PINS_RS 9 // E1 JP11-11 +#define LCD_PINS_ENABLE 8 // E0 JP11-10 +#define LCD_PINS_D4 7 // D7 JP11-8 +#define LCD_PINS_D5 6 // D6 JP11-7 +#define LCD_PINS_D6 5 // D5 JP11-6 +#define LCD_PINS_D7 4 // D4 JP11-5 + +#define BTN_EN1 10 // C0 JP11-12 +#define BTN_EN2 11 // C1 JP11-13 +#define BTN_ENC 12 // C2 JP11-14 + +// display delays are added to +// Marlin/ultralcd_st7920_u8glib_rrd.h + diff --git a/Marlin/ultralcd_st7920_u8glib_rrd.h b/Marlin/ultralcd_st7920_u8glib_rrd.h index db6224e47..8474bef24 100644 --- a/Marlin/ultralcd_st7920_u8glib_rrd.h +++ b/Marlin/ultralcd_st7920_u8glib_rrd.h @@ -49,7 +49,7 @@ #define CPU_ST7920_DELAY_1 DELAY_NS(0) #define CPU_ST7920_DELAY_2 DELAY_NS(0) #define CPU_ST7920_DELAY_3 DELAY_NS(50) -#elif MB(3DRAG) || MB(K8200) || MB(K8400) || MB(SILVER_GATE) +#elif MB(3DRAG) || MB(K8200) || MB(K8400) || MB(SILVER_GATE) || MB(PRINTRBOARD) #define CPU_ST7920_DELAY_1 DELAY_NS(0) #define CPU_ST7920_DELAY_2 DELAY_NS(188) #define CPU_ST7920_DELAY_3 DELAY_NS(0)
Needs 3d printed adapter for nut to fit: https://www.thingiverse.com/thing:2963508
Nut is friction fit which I consider somewhat as safety feature, if I found problems with it, I will probably add a bit of ABS goo in holes to fix it in place
self-made sensor from RFID card, paper clip and case intrusion switch, connected in parallel with z-axis switch (it has to be normally closed, so that trigger interrupts signal)
http://www.geeetech.com/wiki/index.php/3DTouch_Auto_Leveling_Sensor
pinout, right to left
pin | wire color | board label |
5 | green | G |
4 | red | 5V |
3 | yellow | S |
2 | black | G |
1 | white | Z- |
Needs additional pin for servo control (S - servo)
commit 18396a8cd25585d5d562d4345ed851b91fb58821 (HEAD -> PrintrBot_Plus_LC-1.1.9) Author: Dobrica Pavlinusic <dpavlin@rot13.org> Date: Sat Sep 8 11:05:54 2018 +0200 probe offset from extruder diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 438494220..aeed322a7 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -770,8 +770,8 @@ * O-- FRONT --+ * (0,0) */ -#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle] -#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle] +#define X_PROBE_OFFSET_FROM_EXTRUDER 35 // X offset: -left +right [of the nozzle] +#define Y_PROBE_OFFSET_FROM_EXTRUDER 5 // Y offset: -front +behind [the nozzle] #define Z_PROBE_OFFSET_FROM_EXTRUDER 0 // Z offset: -below +above [the nozzle] // Certain types of probes need to stay away from edges commit 2329e561e0f2997e78495c249706e9ce62608293 Author: Dobrica Pavlinusic <dpavlin@rot13.org> Date: Sat Sep 8 10:51:07 2018 +0200 enable bed leveling AUTO_BED_LEVELING_UBL doesn't seem to compile for me ATM diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 38e0c343b..438494220 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -969,7 +969,7 @@ */ //#define AUTO_BED_LEVELING_3POINT //#define AUTO_BED_LEVELING_LINEAR -//#define AUTO_BED_LEVELING_BILINEAR +#define AUTO_BED_LEVELING_BILINEAR //#define AUTO_BED_LEVELING_UBL //#define MESH_BED_LEVELING @@ -1023,6 +1023,8 @@ //#define FRONT_PROBE_BED_POSITION MIN_PROBE_EDGE //#define BACK_PROBE_BED_POSITION (Y_BED_SIZE - MIN_PROBE_EDGE) + #define RIGHT_PROBE_BED_POSITION 190 // dpavlin -- probe overhangs on the right + // Probe along the Y axis, advancing X after each column //#define PROBE_Y_FIRST commit b867a948cd3b64d69e900b99a1306631d62753df Author: Dobrica Pavlinusic <dpavlin@rot13.org> Date: Sun Sep 2 08:40:52 2018 +0200 added bltouch config and pin on e-stop diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index fd8463456..38e0c343b 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -721,7 +721,7 @@ /** * The BLTouch probe uses a Hall effect sensor and emulates a servo. */ -//#define BLTOUCH +#define BLTOUCH #if ENABLED(BLTOUCH) //#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed #endif @@ -1909,7 +1909,7 @@ * Set this manually if there are extra servos needing manual control. * Leave undefined or set to 0 to entirely disable the servo subsystem. */ -//#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command +#define NUM_SERVOS 1 // Servo index starts with 0 for M280 command // Delay (in milliseconds) before the next move will start, to give the servo time to reach its target angle. // 300ms is a good value but you can try less delay. diff --git a/Marlin/pins_PRINTRBOARD.h b/Marlin/pins_PRINTRBOARD.h index 8146505a3..a68802725 100644 --- a/Marlin/pins_PRINTRBOARD.h +++ b/Marlin/pins_PRINTRBOARD.h @@ -182,3 +182,9 @@ // display delays are added to // Marlin/ultralcd_st7920_u8glib_rrd.h +// bltouch - use e-stop for servo +// dpavlin@nuc:/nuc/PrintrBot/Marlin$ grep E5 m43-pins.txt +// PIN: 37 Port: E5 <unused/unknown> Input = 1 +// +#define SERVO0_PIN 37 // E5 E-STOP +
M280 P0 S10 ; pushes the pin down
M280 P0 S90 ; pulls the pin up
M280 P0 S120 ; Self test – keeps going until you do pin up/down or release alarm
M280 P0 S160 ; Release alarm
M420 V ; display bed leveling
Bilinear Leveling Grid: 0 1 2 0 +0.445 +0.402 +0.284 1 -0.083 +0.013 +0.023 2 -0.678 -0.432 -0.264 echo:Bed Leveling On echo:Fade Height Off