Wednesday, July 27, 2011

After I got the x and y axes operating independently, Bogdan suggested that I measure the steps between the limits switches to see how much difference in measurements might be attributable to the mechanical microswitches that I am using. I had already been recording that with the y axis, so I decided to extend the monitoring code a bit.

With the y-axis, I had been simply writing the number of pulses to an SD card whenever a limit switch was tripped. In that I was running the axes at 65 mm/sec, I was getting a rather substantial thump whenever a switch was encountered. When I thought about it, I began to suspect that the impact was a result of the time it was taking the write to the SD card to happen in that I was doing that immediately after the switch was tripped. I changed the code to record a set number of triggering events for each axis and then exit the stepper loop and print the whole set of measurements at one time. That reduced the noise of switch triggering on the x axis to almost nothing. It also reduced the noise from triggering events on the y axis, but not as much. Considering the y-axis is shifting the whole weight of the x axis assembly, the extra momentum generated thereby is probably causing the larger thump.

I first took a set of 50 triggering events running at 65 mm/sec.

You can see that the two limits switches on serving the x axis trigger with slightly different sensitivities, one triggering about 0.3 mm greater than the other {transition is running at 0.89 mm/step for both axes}. The both y axis limits switches trigger at the same place except that occasionally one gets moody and triggers 8 steps {~0.6-0.7 mm} longer than the first.

I then took another set of measurements at 32.5 mm/sec. The NEMA 23s were near resonance frequencies at this speed raising the noise level of the printer considerably. I will have to see about damping this.

What you can see is that the variation on the x-axis stayed about the same while the moodiness of the one limit switch on the y axis disappeared. Notice also that the steps between switches are down.

From there, I took a set of measurements at my usual printing speed for Rapman at 22 mm/sec.

Decreasing the transition velocity got us further away from the resonance frequencies of the NEMA 23s. It must be said, however, that the printer was still louder than when I was running it at 65 mm/sec. You can notice here that the variation in limit switch triggering has dropped to 1-2 steps.

This has been an interesting exercise. One thing that is obvious now is that to control noise levels I should be controlling the stepper speed both by the delays between steps and by adjusting the level of microstepping that I am using.

Wednesday, July 20, 2011

In developing the Darwin-derivative, Rapman-derivative Sampo 3D printer project as a kaizen exercise I utilized the same sort of microswitches for limits checking as are specified in the Rapman design. I soon discovered that the switches have a formidable electronic bounce. I was able to control that using the button function in my firmware compiler for the y-axis. The computations taken for a firmware fix, however, were going to put a terrific drag of my MCU that I didn't want to have to deal with.

Enter Bogdan Kecman with helpful suggestions on how to put together an antibounce circuit for the limits switches.

I had last built an antibounce circuit in 1981, so his help was greatly appreciated. I built a lashup of the circuit to check to see that the component values were right and then went on to design a board to handle all six limts switches. I wanted six instead of Rapman's three because a lot of problems that I'd had with Rapman stemmed from the fact that it has limits switches only on one end of its axes. When things went bad one could find steppers trying to skate off of the unchecked far end of axes. As well, Rapman limits checking only seems to be done when one is resetting the axes at the beginning of a print. I want to do better than that.

I bought components and dug out my stripboard and had a go at the design. Some time before I put together a stripboard design program after having had no luck with the ones I was able to access on the web. Eventually, I evolved this board.

Frontside...

Backside...

It has been some time since I built a board, so I found putting this one together quite frustrating. I was about to give up this evening after making a bunch of mistakes and then got angry to the point of rage. The adrenalin let me get the @#$#@$ thing finished.

Tomorrow I will drill out the breaks in the strips, check the board for continuity and, if I have enough time, try to rig it into Sampo and extend the firmware to utilize it. I suspect that will have to wait till the weekend, however.

Sunday, July 10, 2011

I had a major crash of the Rapman 3.0 printer and for several hours I thought I was really knackered. One of the leads to a phase of the extruder stepper parted because of fatigue from thousands of hours of vibration. The system shut down and reset. At first I thought I had a simple static discharge event, the first in many months. I fired the system back up and discovered that the extruder stepper would dance around but wouldn't pump filament.

After serious prayers that the stepper driver chip for the extruder hadn't fried I rewired the connector and got the extruder pumping ABS again only to discover that the intense vibration from the stepper before the reset had actually shaken apart the Arcol extruder hot end that I had bought from László Krekács in Hungary.

This sounds worse than it was. I simply screwed it all back together and cleaned the extruder end and it worked perfectly again. Unfortunately, I will have to recalibrate Rapman now. That should take a few hours that I didn't have available today.

In any case, I was able to cobble the Prusa Mendel frame together this morning.

Saturday, July 09, 2011

After talking with my son recently, I concluded that he needs to start printing a lot faster than I'm going to have Sampo debugged and duplicated. I have a lot of 8 mm linear shafting and linear bearings in stock, so I decided to build him a Mendel derivative using Sampo firmware and controllers. That should get him printing a lot faster than would otherwise be the case.

I started printing parts for a Prusa Mendel yesterday. So far, so good. Got the gantries finished and am printing the rest of the parts now.

5/16th inch threaded rod is pretty much a one on one replacement for M8, #8 machine screws replace M4s and #4 machine screws replace M3s. I couldn't see much point in printing the SAE Mendel. I'm going to have to redesign the extruder carriage to seat linear bearings instead of those strange PLA things it ordinarily uses.

Tuesday, July 05, 2011

The MIPS core that PIC32 uses is a very high performance CPU that was used in high end Windows workstations in the early to mid-1990s. It doesn't behave much like the 8 and 16 bit PIC chips, so it's taken me a while to get down the learning curve. The button function in the Mikroelektronika compiler library works, but requires about 10 msec to filter out the bounce when a limits switch is encountered.

Processing a button function for each step when I was running at half step slowed the y-axis down to 12-15 mm/sec. To get around that problem in firmware I wrote a smart limits switch routine that runs slow until it finds the first limits switch and then kicks the stepper motor up to full speed until it nears the other limits switch.

Using this approach lets me increase the maximum transition speed for the y-axis from 15 mm/sec to about 65 mm/sec for my firmware testing as you can see in the video clip.

It's worth noting that the Allegro driver chip has a maximum rating of 0.75 amps and the NEMA 23 is a six wire model drawing 0.5 amps per phase. I've wired it in series which brings that amperage down considerably. In spite of this I'm getting 65 mm/sec and both the stepper and the NEMA 23 are running quite cool. The driver chip requires no heat sink or fan.

Monday, July 04, 2011

After a delightful chat with Bogdan this morning about the PIC32's MIPS core processor, I was able to get the y-axis test firmware working. Bogdan has done a lot of work with the PIC32 and is very generous with his knowledge. A few hours later, I had the y-axis responding to the limits switches.

Right now with sampling from the limits switches in the same loop that runs the stepper I'm getting 15 mm/sec. On its own the stepper can do about 52 mm/sec. I suspect that the speed of the axis will be getting a lot closer to that upper limit once I get the limits switches into an interrupt loop. :-)