natalie haddad
fab academy 2012

mechanical design

I have been building an mtm snap on my own in the lab the past two weeks. Here are some images. The HDPE was cut on a 5'x10' CNC with the specified 1/8" bit. It was cut at 35ipm, and the depth per pass was 1/8". The trickiest part about cutting HDPE is not allowing the plastic to build up on the bit and eventually ruin the material. This is accomplished by runnig with the depth and speeds specified. I was able to assemble the mechanics and i have also assembled the grbl shield for it. At this point i am not able to communicate with the board yet.

1 2 3
4 5

I have also been developing my final project of a Suitcase CNC. The design is being worked so the CNC will operate within the boundaries of the suitcase and also break down and travel safely. The machines maximum boundary is roughly 20" x 16". Currently, the bed size is 12" x 9" x 2". The Fab Spindle and multiple aspects of the MTM Snap Mill will be adopted to the design of this CNC.
1
2
3
4
5
6

Moving from the designing digitally to physical prototyping helped point out a few minor adjustments that need to be made before the machine is cut out of a final material.
Since this machine isnt ready to automate, I have posted images of my MTM Snap progress. The machine is built and completely assembled. I had a few setbacks at different stages of the build. I had to mill and solder multiple boards due to broken or torn traces and small flames. I have also had some issues getting the software to work properly. I have had different errors. One scenario allowed me to run the makefile and eventuall get the motors to lock. However, once I moved to gctrl the motors were loose and there was no motor reaction to the arrow keys. The yellow LED on the Arduino Uno was blinking in response to the arrows. I did get a complaint in the Processing window about the java RXTX files not matching up. I changed the files as stated on the MTM's site and also tried replacing it with other versions. Once I was able to get the versions to match, i still had no movement from the motors.
1
2
The next time i tried to automate the machine I decided to start fresh at sending the commands 'make clean', 'make', and 'make fuse' in terminal. I recieved an error that is listed below. The motors did lock but was not able to get a response from the motors. I am still trying to find a solution.. Suggestions are welcome.

natalie@natalie-v:~/Desktop/grbl$ make clean rm -f grbl.hex main.elf main.o motion_control.o gcode.o spindle_control.o serial.o protocol.o stepper.o eeprom.o settings.o planner.o nuts_bolts.o limits.o print.o natalie@natalie-v:~/Desktop/grbl$ make avr-gcc -Wall -Os -DF_CPU=16000000 -mmcu=atmega328p -I. -ffunction-sections -c main.c -o main.o avr-gcc -Wall -Os -DF_CPU=16000000 -mmcu=atmega328p -I. -ffunction-sections -c motion_control.c -o motion_control.o avr-gcc -Wall -Os -DF_CPU=16000000 -mmcu=atmega328p -I. -ffunction-sections -c gcode.c -o gcode.o avr-gcc -Wall -Os -DF_CPU=16000000 -mmcu=atmega328p -I. -ffunction-sections -c spindle_control.c -o spindle_control.o avr-gcc -Wall -Os -DF_CPU=16000000 -mmcu=atmega328p -I. -ffunction-sections -c serial.c -o serial.o avr-gcc -Wall -Os -DF_CPU=16000000 -mmcu=atmega328p -I. -ffunction-sections -c protocol.c -o protocol.o avr-gcc -Wall -Os -DF_CPU=16000000 -mmcu=atmega328p -I. -ffunction-sections -c stepper.c -o stepper.o avr-gcc -Wall -Os -DF_CPU=16000000 -mmcu=atmega328p -I. -ffunction-sections -c eeprom.c -o eeprom.o avr-gcc -Wall -Os -DF_CPU=16000000 -mmcu=atmega328p -I. -ffunction-sections -c settings.c -o settings.o avr-gcc -Wall -Os -DF_CPU=16000000 -mmcu=atmega328p -I. -ffunction-sections -c planner.c -o planner.o avr-gcc -Wall -Os -DF_CPU=16000000 -mmcu=atmega328p -I. -ffunction-sections -c nuts_bolts.c -o nuts_bolts.o avr-gcc -Wall -Os -DF_CPU=16000000 -mmcu=atmega328p -I. -ffunction-sections -c limits.c -o limits.o avr-gcc -Wall -Os -DF_CPU=16000000 -mmcu=atmega328p -I. -ffunction-sections -c print.c -o print.o avr-gcc -Wall -Os -DF_CPU=16000000 -mmcu=atmega328p -I. -ffunction-sections -o main.elf main.o motion_control.o gcode.o spindle_control.o serial.o protocol.o stepper.o eeprom.o settings.o planner.o nuts_bolts.o limits.o print.o -lm -Wl,--gc-sections rm -f grbl.hex avr-objcopy -j .text -j .data -O ihex main.elf grbl.hex avr-objdump -h main.elf | grep .bss | ruby -e 'puts "\n\n--- Requires %s bytes of SRAM" % STDIN.read.match(/0[0-9a-f]+\s/)[0].to_i(16)' --- Requires 1529 bytes of SRAM avr-size *.hex *.elf *.o text data bss dec hex filename 0 18554 0 18554 487a grbl.hex 18554 0 1529 20083 4e73 main.elf 370 0 0 370 172 eeprom.o 2462 0 33 2495 9bf gcode.o 348 0 0 348 15c limits.o 48 0 0 48 30 main.o 1868 0 0 1868 74c motion_control.o 158 0 0 158 9e nuts_bolts.o 4380 0 1092 5472 1560 planner.o 608 0 0 608 260 print.o 422 0 52 474 1da protocol.o 334 0 4 338 152 serial.o 1937 0 0 1937 791 settings.o 96 0 2 98 62 spindle_control.o 1814 0 37 1851 73b stepper.o natalie@natalie-v:~/Desktop/grbl$ make fuse avrdude -c stk500v1 -P /dev/ttyACM0 -b 115200 -p atmega328p -B 10 -F -U hfuse:w:0xd2:m -U lfuse:w:0xff:m avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.01s avrdude: Device signature = 0x000000 avrdude: Yikes! Invalid device signature. avrdude: Expected signature for ATMEGA328P is 1E 95 0F avrdude: reading input file "0xd2" avrdude: writing hfuse (1 bytes): Writing | | 0% 0.00s ***failed; Writing | ################################################## | 100% 0.06s avrdude: 1 bytes of hfuse written avrdude: verifying hfuse memory against 0xd2: avrdude: load data hfuse data from input file 0xd2: avrdude: input file 0xd2 contains 1 bytes avrdude: reading on-chip hfuse data: Reading | ################################################## | 100% 0.00s avrdude: verifying ... avrdude: verification error, first mismatch at byte 0x0000 0xd2 != 0x00 avrdude: verification error; content mismatch avrdude: safemode: hfuse changed! Was d2, and is now 0 Would you like this fuse to be changed back? [y/n] n avrdude: safemode: Fuses OK avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x0d avrdude done. Thank you. make: *** [fuse] Error 1