We found out MDX-20 in our lab had lots of friction on y-axis such that it cannot set home functionally. So we took parts out first.
And then we checked out the control board. It looked fine.
Finally there was some hidden screws and nuts under platform. We had no idea who caused or why they were there. Maybe we all have to carefully check when we are going to mount the platform.
Friction path by the screw and nut
After finishing fixing, we put parts back and started to mill.
Set z home
We had some problems with Node.js version Fab Modules in Fablab Taipei so I was going to use old local one and downloaded FabISP traces and cutout from here.
Starting to mill
Result. But I found a interior boundary bug. I lost connection from right side.
Debugging time!
I checked the size of traces and interior. One in 1066 x 2260 and the other in 1149 x 2260 so it had small width on interior.
Modified a new interior on Inkscape
One more time
Boom!
I was trying to make circuit on copper stickers by GCC i-Craft in our lab.
(Speed: 15 cm/s; Pressure: 90 g)
Totally failed. It might be caused by wide tool diameter or wrong parameters. So I tried again and again and changed parameters with different speed and pressure.
Failed also. (Speed: 9 cm/s; Pressure: 90 g)
(Speed: 6 cm/s; Pressure: 45g)
(Speed: 15 cm/s; Pressure: 120g)
Although it looked really quick to make prototype on vinyl cutting, I had no clue about the problem with all experiments and also I had no time to buy a thin sharp tool to test. So I dealt with MDX-20.
Fixed USB by sticker
Resistor 1k ohm 102
Fixing IC with two pins first
And then soldering the rest
Bending jumper
Broken, too hot
Finally, done
It looked awesome!
After that, I did short testing on my FabISP.
Close SJ1 and SJ2 to ready programming. After taking this photo, I powered board by USB port.
I followed this tutorial: Setting up AVR-GCC Toolchain on Linux and Mac OS X
brew tap osx-cross/avr
brew install avr-libc
brew install avrdude --with-usb
And then followed FabISP: Programming to program.
avrdude -c avrisp2 -P usb -p attiny44 -U hfuse:w:0xDF:m -U lfuse:w:0xFF:m
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0x010305
avrdude: Expected signature for ATtiny44 is 1E 92 07
Double check chip, or use -F to override this check.
avrdude done. Thank you.
make: *** [fuse] Error 1
It seemed the ATtiny44A had wrong frequency with AVRISP mkII. Struggling with debug messages, it could be caused by our unknown parameters crystal or communication problem. Sadly, at that time, I had no idea to modifiy parameters over AVRDUDE tools. I did not really understand how AVR works.
So, we bought 3 pin crystals with built-in capacitors after few weeks in order to make Satshakit. It gave me a good chance to make new FabISP. This time, I made the version by Valentin.
Because of simplified design, I cannot power it by USB before fuse. So this time I used Arduino as ISP with AVRDUDE to fuse and program FabISP firmware on it.
$ make clean
rm -f main.hex main.lst main.obj main.cof main.list main.map main.eep.hex main.elf *.o usbdrv/*.o main.s usbdrv/oddebug.s usbdrv/usbdrv.s
$ make hex
avr-gcc -Wall -Os -DF_CPU=20000000 -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=attiny44 -c usbdrv/usbdrv.c -o usbdrv/usbdrv.o
avr-gcc -Wall -Os -DF_CPU=20000000 -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=attiny44 -x assembler-with-cpp -c usbdrv/usbdrvasm.S -o usbdrv/usbdrvasm.o
avr-gcc -Wall -Os -DF_CPU=20000000 -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=attiny44 -c usbdrv/oddebug.c -o usbdrv/oddebug.o
avr-gcc -Wall -Os -DF_CPU=20000000 -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=attiny44 -c main.c -o main.o
main.c:88:13: warning: always_inline function might not be inlinable [-Wattributes]
static void delay ( void )
^
avr-gcc -Wall -Os -DF_CPU=20000000 -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=attiny44 -o main.elf usbdrv/usbdrv.o usbdrv/usbdrvasm.o usbdrv/oddebug.o main.o
rm -f main.hex main.eep.hex
avr-objcopy -j .text -j .data -O ihex main.elf main.hex
avr-size main.hex
text data bss dec hex filename
0 1986 0 1986 7c2 main.hex
$ make fuse
avrdude -c stk500v1 -b19200 -P /dev/tty.usbmodem1411 -p attiny44 -U hfuse:w:0xDF:m -U lfuse:w:0xFF:m
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.02s
avrdude: Device signature = 0x1e9207 (probably t44)
avrdude: reading input file "0xDF"
avrdude: writing hfuse (1 bytes):
Writing | ################################################## | 100% 0.01s
avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xDF:
avrdude: load data hfuse data from input file 0xDF:
avrdude: input file 0xDF contains 1 bytes
avrdude: reading on-chip hfuse data:
Reading | ################################################## | 100% 0.01s
avrdude: verifying ...
avrdude: 1 bytes of hfuse verified
avrdude: reading input file "0xFF"
avrdude: writing lfuse (1 bytes):
Writing | ################################################## | 100% 0.02s
avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0xFF:
avrdude: load data lfuse data from input file 0xFF:
avrdude: input file 0xFF contains 1 bytes
avrdude: reading on-chip lfuse data:
Reading | ################################################## | 100% 0.01s
avrdude: verifying ...
avrdude: 1 bytes of lfuse verified
avrdude: safemode: Fuses OK (E:FF, H:DF, L:FF)
avrdude done. Thank you.
$ make program
avrdude -c stk500v1 -b19200 -P /dev/tty.usbmodem1411 -p attiny44 -U flash:w:main.hex:i
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.03s
avrdude: Device signature = 0x1e9207 (probably t44)
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: reading input file "main.hex"
avrdude: writing flash (1986 bytes):
Writing | ################################################## | 100% 2.88s
avrdude: 1986 bytes of flash written
avrdude: verifying flash memory against main.hex:
avrdude: load data flash data from input file main.hex:
avrdude: input file main.hex contains 1986 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 1.44s
avrdude: verifying ...
avrdude: 1986 bytes of flash verified
avrdude: safemode: Fuses OK (E:FF, H:DF, L:FF)
avrdude done. Thank you.
avrdude -c stk500v1 -b19200 -P /dev/tty.usbmodem1411 -p attiny44 -U hfuse:w:0xDF:m -U lfuse:w:0xFF:m
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.02s
avrdude: Device signature = 0x1e9207 (probably t44)
avrdude: reading input file "0xDF"
avrdude: writing hfuse (1 bytes):
Writing | ################################################## | 100% 0.01s
avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xDF:
avrdude: load data hfuse data from input file 0xDF:
avrdude: input file 0xDF contains 1 bytes
avrdude: reading on-chip hfuse data:
Reading | ################################################## | 100% 0.01s
avrdude: verifying ...
avrdude: 1 bytes of hfuse verified
avrdude: reading input file "0xFF"
avrdude: writing lfuse (1 bytes):
Writing | ################################################## | 100% 0.01s
avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0xFF:
avrdude: load data lfuse data from input file 0xFF:
avrdude: input file 0xFF contains 1 bytes
avrdude: reading on-chip lfuse data:
Reading | ################################################## | 100% 0.01s
avrdude: verifying ...
avrdude: 1 bytes of lfuse verified
avrdude: safemode: Fuses OK (E:FF, H:DF, L:FF)
avrdude done. Thank you.
It looks great! It can be recognised by serial ports!