|Language:||Français • English|
CAUTION ! This is a work in progress. It has never been built nor tested. It is subject to further modifications. Use at your own risks !!!
The TenFifteen Board is a 3D printer (RepRap) electronic controller designed to be robust, do-it-yourselfable and easy to repair
- Single sided 10x15cm PCB
- Hand solderable
- Most of the parts are through-hole
The TenFifteen is fitted with an Atmel Atmega1284P, which is 25% faster than the Atmega2560-based boards (RAMPS,RUMBA,AZTEEG, etc..) and has twice more RAM. The board is inspired from the well-known GEN7-AVR board, with a few improvements and differences:
Why make your own board ?
- Making a board from scratch provides you a better understanding of the hardware
- As there are mostly through-hole components, when something goes wrong, it's much easier to diagnose
- Ready to drive 3 axis and 2 extruders
- Cheap an reliable FASTON blades connectors for heaters
- Down to 1/32 microstepping
- Onboard Micro-SD push-push socket
- Onboard Beeper
- Fan Control (5V/12V)
- Servo Control
- I2C (Grove) connector for LCD and more
- 5V / 1.5A regulator
The TenFifteen board has been designed with KiCad, the excellent Cross Platform and Open Source Electronics Design Automation Suite
The TenFifteen uses an Atmega1284P as MCU, an MCP2200 as USB to serial converter. The MCP2200 has 6 free GPIOs that can be set or unset through the appropriate /dev/hiddev device under Linux. There is a 5V/1.5A regulator and a 3.3V regulator for the SD card. There are 5 sockets for Motors Drivers such as A4988 or DRV8825 Stepsticks. One of the motors connectors has been doubled to power 2 motors (ie, for the Z axis of the Prusa i3 like printers) . The variable fan can be powered from the regulated 5V or the 12V, the choice is made with a jumper.
The PCB size is 10x15cm. It can be made out of positive presensitized FR4 single-sided board or with plain single-sided copper board and negative film. I don't give any advice on etching the board, there are plenty of tutorials on the Internet. Just remember to use the good stencil, either positive or negative and in the good position, you must be able to read the "TenFifteen" text on the copper side. You'll have to wire 22 links on top of the board with rigid isolated wire. It's mandatory to use isolated wire because some wires are under resistors (R2 to R5) or very near of the ground shield of connectors.
This Bill Of Materials has been roughly estimated with the cheapest prices from ebay, aliexpress, mouser, farnell, etc..
|IC1'||40pins DIP IC socket||1||0.15|
|D9||1N4007 or 1N4007W||1||0.02|
|C14,C15,C17,C18||22pF pitch 2.54mm||4||0.08|
|C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C16,C19,C22,C24,C25,C27,C28||0.1µF/50V pitch 2.54mm||17||0.17|
|C21||0.1µF/50V pitch 5.08mm||1||0.01|
|M3,M4,M5,M1,M2||1x8 pin header female||10||0.90|
|P32,P33,P36,P37||1x2 pin header male||4||0.04|
|P10,JP16,JP17||1x3 pin header male||3||0.03|
|(JP1,JP2,JP3),(JP4,JP5,JP6),(JP7,JP8,JP9),(JP10,JP11,JP12),(JP13,JP14,JP15),J1||2x3 pin header male||6||1.00|
|P11,P12,P13,P14,P15,P16,P29,P30,P31,P41,P42,P43||62409-1 or 62650-1 FASTON||12||1.80|
|P17,P18,P19,P20,P47||Molex KK 2.54 2pins||5||1.00|
|P7,P8,P9||Molex KK 2.54 3pins||3||0.60|
|P1,P2,P3,P4,P5,P6||Molex KK 2.54 4pins||6||1.50|
|P21||USB Socket Type B||1||0.15|
|SW1||Push button 6mm||1||0.02|
|J2||MICROSD Push Push Socket||1||0.20|
|F1||5mmx20mm Fuse holder||1||0.25|
Begin with the 22 isolated wires on top of the board. Then it's easier to mount the low profile components first, diodes, resistors, etc.. and to end with the tallest, electrolytic capacitors, power transistors, etc.. There are a few SMD components to solder on the copper side too: IC2,U1,J2,D4,D5,D6. You can also mount D9 in SMD version.
The software installation steps:
- Setup the MCP2200
- Install a bootloader in the Atmega1284P
- Build and install the G-code interpreter in the Atmega1284P
The MCP2200 will act as an USB to Serial bridge at 115200bps without any further configuration, but if you want to have the Rx/Tx LEDs enabled or if you want to change the Product and Manufacturer's strings, you'll have to tweak the MCP2200's configuration. This can be performed under Linux with mcpconfig or under Windows®™ with the manufacturer's tool.
Clone this MCP2200 configuration utility for Linux:
git clone https://framagit.org/MarcusFecit/mcp2200
Then dive into the mcp2200 directory an build the utility:
cd mcp2200 make
Copy the mcpconfig binary somewhere in your $PATH so it can be run, or stay in the build directory and use ./mcpconfig instead
Find your HID device
sudo mcpconfig --list|grep hiddev|cut -f2 -d' '
The previous command line will return something like: /dev/usb/hiddev0 or /dev/usb/hiddev1, etc..
Just replace this /dev/usb/hiddev... string with the appropriate number in the following command lines
Dump the configuration
sudo mcpconfig -f /dev/usb/hiddev1 --dumpconfig
On a fresh chip the result looks like:
04 IO_Bmap : 3F 05 Config_Alt_Pins : 0C SSPND : 0 USBCFG : 0 RxLED : 0 TxLED : 0 06 IO_Default_Val_bmap : FF 07 Config_Alt_Options : 00 RxTGL : 0 TxTGL : 0 LEDX : 0 INVERT : 0 HW_FLOW : 0 08 Baud : 0067 08 Baud : 115384 0A IO_Port_Val_bmap : C0
As you can see:
- RxLED, TxLED are set to '0'. We need to change this to use our LEDs..
- HW_FLOW is set to '0'. This is what we want, no change needed
- The baud rate is '115384' instead of '115200'. Don't worry, this is normal.
Enable the LEDs
sudo mcpconfig -f /dev/usb/hiddev1 --txled 1 --rxled 1
Check the settings
sudo mcpconfig -f /dev/usb/hiddev1 --dumpconfig
The result now looks like:
04 IO_Bmap : 3F 05 Config_Alt_Pins : 0C SSPND : 0 USBCFG : 0 RxLED : 1 TxLED : 1 06 IO_Default_Val_bmap : FF 07 Config_Alt_Options : 00 RxTGL : 0 TxTGL : 0 LEDX : 0 INVERT : 0 HW_FLOW : 0 08 Baud : 0067 08 Baud : 115384 0A IO_Port_Val_bmap : C0
The important values to check are the HW_FLOW (must be 0), RxLED and TxLED (must be 1) and the Baudrate (must be 115384).
Once this done, it's enough for the MCP2200 to be fully functional
If your MCP2200 has been tinkered for another purpose, or if you want to change the manufacturer's and the product's strings, you can use the following commands:
Disable the hardware flow control
sudo mcpconfig -f /dev/usb/hiddev1 --hwflow 0
Change the baudrate
sudo mcpconfig -f /dev/usb/hiddev1 --baud 115200
Change the strings
On a fresh MCP2200, the manufacturer's and the product's strings are:
- Manufacturer: Microchip Technology Inc.
- Product: MCP2200 USB Serial Port Emulator
Change the manufacturer's string (64 chars maximum)
sudo mcpconfig -f /dev/usb/hiddev1 --manuf "Me MYSELF"
Change the product's string (64 chars maximum)
sudo mcpconfig -f /dev/usb/hiddev1 --prod "TenFifteen 1.0"
Check the strings
sudo mcpconfig --list
Path: /dev/usb/hiddev1 Manufacturer: Marc BERLIOUX Product: TenFifteen 1.0
You can also see these strings appear in the kernel's logs when you plug in the USB, with:
tail -f /var/log/kern.log
All this can be done using a single command-line, just replace the manufacturer's string and the product's string with your own:
sudo mcpconfig -f /dev/usb/hiddev1 --baud 115200 --hwflow 0 --txled 1 --rxled 1 --manuf "Me MYSELF" --prod "TenFifteen 1.0"
Use the MCP2200 Configuration Utility provided by Microchip and follow these instructions: http://reprap.org/wiki/Gen7_Board-AVR_1.5#Programming_the_MCP2200
A blank, factory fresh, Atmega1284P comes with no bootloader and thus has no mean to be programmed or reprogrammed directly through its serial port. To install the bootloader through the ISP connector, you'll need an USB ISP Programmer also dubbed "USBASP" available for a few bucks. If your programmer comes with a 10 pin connector, you'll need a "10 Pin to Standard 6 Pin" adapter. You'll find plenty of these programmers just by searching "usbasp 10pin 6pin" on ebay or aliexpress. To control this programmer, you'll need to use a software called avrdude.
- Unzip the TenFifteen_Arduino_Hardware.zip archive in your Arduino IDE's sketchbook/hardware directory. It must look like:
sketchbook/ ├── hardware │ └── TenFifteen │ ├── bootloaders │ │ └── TenFifteen │ ├── cores │ │ └── arduino │ └── variants │ └── TenFifteen |...
- Dive into the sketchbook/hardware/TenFifteen/bootloaders/TenFifteen directory
- Remove the µSD card and do not connect anything else on the board.
- Plug in your programmer on the TenFifteen's ISP socket
- Burn the fuses:
avrdude -c usbasp -p m1284p -B 5 -U lfuse:w:0xF7:m -U hfuse:w:0xDC:m -U efuse:w:0xFC:m
- Burn the bootloader:
avrdude -c usbasp -p m1284p -B 1 -U flash:w:bootloader-1284P-20MHz.hex
- Lock the bootloader:
avrdude -c usbasp -p m1284p -B 1 -U lock:w:0xCF:m