Saturday, June 13, 2015

3D Printer Project, Part 9: The Gumption Trap

Robert Pirsig, in Zen and the Art of Motorcycle Maintenance, introduces the notion of a gumption trap, a situation where you set out to solve one problem but before you can get to it, another intractable problem gets in the way, until you are so frustrated that your will, or gumption, gives out. Today was my closest approach to a gumption trap so far. And it ends with a small explosion.

I have been working on the firmware installation and calibration. Most of this went according to the Folger configuration guide. I ran into one problem once I had the firmware installed and was using the manual printer control in Repetier. The Y and Z axes moved fine, but the X axes moved in small jumps or did not move at all. I think this comes down to the end stop being in the maximum X position. Fortunately, there has been a ton of discussion about this on, and it seems it can be fixed on software. I tried two configurations, one from "JoeH" and one from "Tenny". See for forum for the original postings. The Tenny configuration worked for me. For the record, here it is (quoting from my own post on the forum):

  • physically, my X limit switch is on the right and the Y one is at the back. The X motor connector is reversed compared to the others (red wire to the left). This is exactly as shown in the construction guide.
  • in configuration.h, I have #define INVERT_X_DIR false, and #define X_HOME_DIR 1. That's "1" not "-1".
  • in pins.h somewhere around line 330, I have #define X_MAX_PIN 2, and #define X_MIN_PIN 3. This means my X limit switch tells the controller it is as it maximum value. (This can also be done by leaving these defines unchanged and moving the connector where you plug in the X connector).
  • in Repetier's printer settings (printer shape), I set the X home to MAX.

What this means:

  • home X moves the print head all the way to the right.
  • home Y moves the bed all the way back so the print head is over the front of the bed.
  • moving the head in the positive X direction moves it to the right.
  • moving the head in the positive Y direction moves the bed forward, so that the head is further away from the front of the bed.
  • this defines the coordinate system as (0,0) meaning the head is over the left front of the bed, and (200,200) is over the right back of the bed. That is, it's the same right handed coordinate system that the wire frame cube in Repetier shows.
Now for the tricky Z calibration. During this, I ran into a problem in the carriage hitting the Z end stop, but the limit switch not triggering. So it kept driving until the nut on which the right hand threaded rod runs was forced out of the printed piece that goes at the right hand end of the carriage. Fixing this required taking the Z motors off, then reseating the nut, the reassembling the printer and recalibrating. And it happened again. I said in part 8 that my limit switches didn't give much play, and this was the problem. When the carriage hit the Z end switch it didn't trigger it as it didn't stick out far enough beyond the mount. The nut was also slightly loose in the printed piece. Again, from my forum postings:
I did two things. First, I was going to try to shim out the nut a little. It was actually almost tight, just not quite enough. So I wrapped two layers of masking tape around it, then popped it back in, and it feels more solid, judged by inserting the threaded rod and pulling gently.

Then I think the other problem may have been to do with the limit switch. I had noticed before that the levers on the limit switches did not look bent back as far as the ones in the construction guide, and also the mount stick out a way beyond the PCB with the switch on it. So I think for the switch to trigger, the bottom of the printed end piece was pressing down on the mount and only tripping the switch when it got to quite a lot of force. So I took a stick plastic bumper (the kind you stick on as a feet on small items), and positioned it so that it trips the switch. This seems to have worked for now. Something is probably not well aligned, as there is a slight squeak when getting near the limit.

So now I reached the final step of the configuration guide, where you run some filament through. I heated up the extruder to about 220C (the PLA packet says 219C), and clicked the button in Repetier to feed some filament. And nothing happened. I couldn't hear the extruder motor turning; it could be the motor, the cable, the stepper driver or the voltage setting on the stepper driver: too low and it will stall, too high and it can also fail to turn (found a reference on the web, which I've now lost again). I turned it all off and switched to a different stepper driver, and in setting the voltage on it, I did something wrong. Maybe my multimeter probe shorted something. There was a short pop (ok, not really an explosion), and nothing has worked since. The Arduino will connect to a PC in isolation, but once everything is assembled again, Repetier won't talk to it. It did seem to partially connect for a while. Vref on the steppers is zero. The most likely thing is that I blew out the regulator in the Arduino board.

So new boards are now on order. I'm frustrated, but somehow also amused. This was meant to be a challenge.

Later: I am pretty sure that at minimum I fried the serial chip on the Mega. I can't program it from the Arduino IDE (disconnected from the rest of the circuitry). I used another Arduino to reinstall its bootloader. While this is going on the "L" LED is solid, as it should be, and then it blinks afterwards, as the bootloader also uploads the Blink sketch. But an attempt to install Blink from the IDE reports a timeout.

No comments: