I will assume you meant 1.8 and 0.9, because I never seen a 1.6 or 0.8 step angle, however they probably do make them so my assumption could be way off base
I am accustomed to microsteps of 1/10, but 1/16 would be a lot better for the 3D printers.
That's not always true, surprisingly. When a stepper motor is driven at its resonant frequency without a load, it can lose steps, because the rotating shaft will "bounce back." A small, frictional or viscous load actually helps to eliminate resonance effects. Still, though, it's always a good idea to avoid resonant step frequencies and to ramp through them as quickly as possible.
-Phil
Has anyone tried jittering / dithering the pulse period when near the primary resonant frequency?
Ahh, I know it can be done, but all of the drives I've seen only go down to 1/8th stepping. This only reinforces what I've learned empirically through testing. My POC code did 64 steps, or 1/16th microstepping, and it seemed pretty clear that the motor wasn't capable of more than 4 or 5 micro steps per full step. I chalked this up to low current flow in the coils at very small step counts (visualize the near zero crossing of a sine wave). My solution was to do an offset in software that evenly divides the useful current range into N steps. This would mean that the wave table in software would be non-linear, but in hardware it would produce a linear motor movement.
The trouble is that you would need to calibrate the motor so that you knew what the non-linearity is. For each motor you used, you would have to characterize the parameters using a dyno or run all motors in closed loop all the time.
Personally when I am calculating resolution of my systems I just use the half step and let the micro stepping make everything smooth. You can try and fiddle it but with load I don't think it will work all that reliably.
My laser uses 1/16th micro stepping, the steppers are three wire, three phase motors. The drivers are capable of 1/64th. My mini mill uses 1/8th, the CMC uses 1/2, the MakerBot Cupcake uses full steps and the MakerBot ToM uses1/8th.
In case it relevant here, in another thread we are talking about a similar topic.
Currently the plan is to start with a raprap prusa (and possibly a printrbot). The Sanguino board will be swapped out and replaced with a prop solution. This will be our starting point.
We are looking at Cluso99's work for the specific prop hardware.
The setup has popolu stepper motors and drivers as commonly found on repraps, Cluso99's boards are compatible.
The software will be a prop equivalent of the Sprinter firmware running on the Sanguino, and will communicate with PRINTRUN/PRONTERFACE on the PC.
Once this is inplace, adding other CNC functionality should be able to follow a similar path.
We are using salvaged PC power supplies, they work just fine.
We are using salvaged PC power supplies, they work just fine.
Hey prof, thanks for the justification A lot slower than much higher voltages, but the PC power supplies will get you through in a pinch.
@pedward
As Graham mentioned, GeckoDrives use 1/10 microstepping. This resolution is perfect for 1/4-20 leadscrews and 1.8 step angles, because it makes the math and linear travel nice and easy to figure. But that is just my opinion
@wjsteele
Understandable - Captain Morgan and a BIG sword - enough said. However it is noteworthy that 360 degrees can be divided by 1.6 without any remainder, so you had me wondering.
The Pololu stepper drivers used on most RepRap setups can do 1/16 microstepping these days.
In fact, on many electronics variations, it's the default setting.
I don't know if this has been covered yet, but this just came to me.
To reduce cost, a single board is desirable, while to maintain flexibility, modules are desirable. Focus on this seeming contradiction may lead to innovation. For example, we know that there are always four (4) stepper motors and one (1) power mosfet (for the hot end) to control a Reprap, and an optional second power mosfet for a heated build platform. We also know that the reprap always has three limit switches, but can accomodate trhe more for a total of six.
Consider a module that contains four A4988's and two power mosfets, and <b>connectors</b> for four steppers, two heaters, two thermistors, and six limit switches. The assumption would be that folks would have/make a protoboard or similar, and would only need to add appropriate pin headers to connect the reprap control module to the prop module. Also, it would be simple to include unpopulated holes for other connectors, such as fan, lights, alarms, and I/O. This way, there would be a single module (+protoboard) to address the reprap configuration. This would provide a "single module" to be produced, and would leverage off the exiting prop hardware, and be user modifiable.
For my experiments, we are looking at a swap-in replacement for the Sanguino board. This is a widely used configuration, so a large potential market.
A daughter board (for a protoboard, for example) with A4988's, power mosfets, and all the connectors would fit the requirements, and could have cost advantage if produced in quantity.
This same strategy could be applied to other configuration, such as DC motor, or servo configuration, if/when the full end configuration is identifiable.
We could also use a single monolithic board, but have the components that are most likely to fail be DIP socketed for easy replacement.
Bill
I don't think it is necessary to have through hole parts for the ones that are likely to fail as I believe the power transistors, MOSFETs, or other higher power devices that will likely fail will have big leads. MultiPin and through whole is actually harder to solder than a surface mount if the lead size is the same.
I just found the REPRAP project this week, and the first thing I thought of was replacing all of that electronics with 1 propeller board at much less expense.
You might be able to have your cake and eat it too. I would recommend providing a monolithic board with all of the controls of a typical REPRAP and provide connectors for other drivers as well. I don't think providing connectivity to other drivers in a standard sort of way would cost much and it gives expansion capabilities to start at low cost.
As for video: go with simple 2 pin composite, keyboard: simple ps/2, and skip the mouse. Have a SD or microSD. For the USB connection, please use miniUSB, not microUSB.
I like the idea in the orignal post where you have a propeller, a load of io and a load of bridges. With a bit of protection between the bridges and he rest it could be really robust and easy to repair by changing a bridge if it fails.
The problem would seem that if you want to use steppers then you either add stepper drive chips which increases cost (especially bad if you don't use them) or you turn the propeller into a stepper waveform generator as well. This eats cogs and I think would require a second propeller for a full system. I think two servos could be driven with one cog (I am working on this for my current project) but perhaps that too would realistically need to be a two prop system or better a prop two system
In any case we need a rock solid controller for servos and if implemented in software the same for steppers, the latter should have the bells and whistles seen in commercial drives. In some respects the hardware is easy if we have the software.
I plan to use Don Starkey's object to control my CNC router. I've been working on eliminating the need for a PC by using a second Prop as a terminal.
It's not really the same thing as a the hardware solution mentioned by the OP.
Parallax worked with the guys who had the Radiant 3D printer Kickstarter. It would be interesting to see what hardware was included on those boards. I believe Parallax even did the board assembly.
Nearly two and a half years later, and still no progression. Since this is exactly what I will need in the near future, I am going to reopen this topic. However since this did not seem to go anywhere (perhaps because of the tall order), I think the project should be redefined as an open-source motor controller controller. Yea, I said controller twice, but I did that on purpose. Instead of designing motor controllers, how about a controller to control motor controllers, having all the bells and whistles for video, touch screens, keyboard and mouse input, temperature monitoring and control and such.
Anyhow that is my latest opinion on this topic. but over the next several weeks or months, I may be discussing this topic, providing I decide on an embedded solution for my current and other projects.
And was there ever anymore significant progress on a G-code interpreter for the propeller?
Perhaps a motion controller board that would accept a variety of little daughter boards for input and output, depending on a persons need. Having a wide variety of SIP and DIP sockets for plugging in various peripherals, sensors, switches, and such.
Nearly two and a half years later, and still no progression.
It's been two and half years since the original post, but there has certainly been work done on this issue since then.
I think Don's code linked to above includes a G-code interpreter.
One problem with this project is the shear size of it. Don's program requires a SD card be used to load in different portions of code as needed.
I've seriously considered making the move to C in order to take advantage of the larger programs it allows.
I'm not so sure if the high power stepper drive components need to be on the same board as the Propeller. I personally think it would be easier to use a third party stepper driver with step and direction inputs and let the Prop take care of reading the G-code.
I've got a couple of projects I need to finish up and then I plan to get back to working on a driver for my CNC router.
I'm not so sure if the high power stepper drive components need to be on the same board as the Propeller. I personally think it would be easier to use a third party stepper driver with step and direction inputs and let the Prop take care of reading the G-code.
The link above is basically to show it can be done, but I agree the drivers do not need to be and probably should not be on the same board, unless of course the board is specifically designed to run motors. My wire bender CNC has "I think" 8 driver mounted in a metal cabinet, with the Propeller mounted separately providing step and direction inputs. I do however believe that if a board is created, I think it should be powered by the main supply.
I also believe that it will be necessary to have two or more Propeller chips.
Whatever the case, I am sure that I will have to hobble something together for my current project or go with something like Mach 3 and a PC with a controller board.
I keep coming back to this thread, because of my interest in CNC machines, and now that I have started another CNC project, I would like to bring this thread back into focus. As I stated much earlier in this thread, I believe the scope of this project was much too large, and since basically everyone has abandoned it, I would like to redefine the scope.
I think the controller should be geared toward, but not limited to 3D printers, so lets say a 5 axis board (X, Y, Z, and two extruders).
I think the board should focus on stepper motors alone, instead of confusing the issue with servos.
I don't want to struggle with running out of IO pins or cogs, so I propose a (2 or 3) Propeller board.
I believe the board should be able to get instructions from a PC, as well as from an SD file.
The board should be able to derive it's power from the machine power supply E.G. 50 VDC
The stepper drivers should be able to withstand 2.5A per winding, with adjustable current limiting, and individual step, direction, and enable inputs for each driver. Additionally, the drivers should be capable of microstepping and be able to accept 3.3V inputs.
The board should be able to switch and control several forced air circuits, with PWM and tachometer, from 12 VDC.
The board should be able to control to hot-ends with PWM.
The board should have a multi-channel ADC for reading items such as a thermistor.
The board should have minimum and maximum travel inputs for each of the 5 axises.
The board should be able to process mouse and keyboard input, as well as output to VGA display, as well as being able to accept keyboard and mouse input from a PC, and be able to display to a PC monitor. Could get confusing.
And of course a variety of IOs for items that I forgot or am too lazy to mention at this point.
I believe the board should be designed with a minimal assumed power supply having a regulated 5V output, a regulated 12V output, and at least an unregulated 24V output.
It has been a while, and I must admit that I have not kept up with stepper drivers over the last year or two, so I am open to suggestions.
Hi,
I didn't know about this thread. I will have to read the whole thing to get up to speed and get back for any comment. Thanks for reviving.
The realities today are that RepRap has its own flavor of g-code for 3D printing that pretty much supports your 5 stepper motor scheme (at least 4 motors).
On the other hand, LinuxCNC seems to have gone toward the more traditional Gerber flavor of g-code for only 3 stepper motors in the normal context ... which is pretty much an extension of plotter code for graphic.
++++++++++++++
I don't see any reason to try to cramp unused code into a Propeller1 when space is at a premium. So I have taken the approach that 'one solution doesn't fit all'. It is much simplier to have two separate code projects.
On the front end you have very different G-code parsers.
On the back end you have very different devices to monitor and control.
And in both 'worlds' you have a ton of real-world configuration options due to what people want to add as 'goodies' and whatnots.
++++++++++++++++++++++
I am also taking the approach of using existing Propeller boards that will be attached to some sort of go-between board that supports the specific purpose, either CNC or 3D printing.
At this point, adapting the Pololu RAMPS to interface with a Propeller1 is likely to be a very easy 3D printing solution, and not costly as the RAMPS is $18 USD.
Comments
I will assume you meant 1.8 and 0.9, because I never seen a 1.6 or 0.8 step angle, however they probably do make them so my assumption could be way off base
I am accustomed to microsteps of 1/10, but 1/16 would be a lot better for the 3D printers.
Thanks for your input Bill.
Bruce
Bruce, where have you seen 1/10th stepping? I have always seen it as a power of 2, because it's all based on 4 full steps.
Jonathan
Ahh, I know it can be done, but all of the drives I've seen only go down to 1/8th stepping. This only reinforces what I've learned empirically through testing. My POC code did 64 steps, or 1/16th microstepping, and it seemed pretty clear that the motor wasn't capable of more than 4 or 5 micro steps per full step. I chalked this up to low current flow in the coils at very small step counts (visualize the near zero crossing of a sine wave). My solution was to do an offset in software that evenly divides the useful current range into N steps. This would mean that the wave table in software would be non-linear, but in hardware it would produce a linear motor movement.
The trouble is that you would need to calibrate the motor so that you knew what the non-linearity is. For each motor you used, you would have to characterize the parameters using a dyno or run all motors in closed loop all the time.
Cheers,
Graham
I'd like to see at least 1/8th.
Yep... I was drunk when I typed that! :-)
Bill
Currently the plan is to start with a raprap prusa (and possibly a printrbot). The Sanguino board will be swapped out and replaced with a prop solution. This will be our starting point.
We are looking at Cluso99's work for the specific prop hardware.
The setup has popolu stepper motors and drivers as commonly found on repraps, Cluso99's boards are compatible.
The software will be a prop equivalent of the Sprinter firmware running on the Sanguino, and will communicate with PRINTRUN/PRONTERFACE on the PC.
Once this is inplace, adding other CNC functionality should be able to follow a similar path.
We are using salvaged PC power supplies, they work just fine.
Hey prof, thanks for the justification A lot slower than much higher voltages, but the PC power supplies will get you through in a pinch.
@pedward
As Graham mentioned, GeckoDrives use 1/10 microstepping. This resolution is perfect for 1/4-20 leadscrews and 1.8 step angles, because it makes the math and linear travel nice and easy to figure. But that is just my opinion
@wjsteele
Understandable - Captain Morgan and a BIG sword - enough said. However it is noteworthy that 360 degrees can be divided by 1.6 without any remainder, so you had me wondering.
In fact, on many electronics variations, it's the default setting.
- PID servo control
- Programmable offset to compensate for external influences susch as gravity, etc.
- Trapezoidal and S-curve velocity profiling
- Feed-forward capability
- Support for auxiliary feedback (aka: Dual Loop)
- Support for incremental, absolute and SSI encoders.
- Filtering of PWM motor command to produce an industry standard +/- 10V reference signal.
- Torque limit feature
- Support for A+, A-, B+, B-, I+, I- incremental encoder signals
Etc., etc.It appears to me that the Prop has the horsepower to be a TRUE closed-loop controller, why screw around with this stepper stuff?Mickster.To reduce cost, a single board is desirable, while to maintain flexibility, modules are desirable. Focus on this seeming contradiction may lead to innovation. For example, we know that there are always four (4) stepper motors and one (1) power mosfet (for the hot end) to control a Reprap, and an optional second power mosfet for a heated build platform. We also know that the reprap always has three limit switches, but can accomodate trhe more for a total of six.
Consider a module that contains four A4988's and two power mosfets, and <b>connectors</b> for four steppers, two heaters, two thermistors, and six limit switches. The assumption would be that folks would have/make a protoboard or similar, and would only need to add appropriate pin headers to connect the reprap control module to the prop module. Also, it would be simple to include unpopulated holes for other connectors, such as fan, lights, alarms, and I/O. This way, there would be a single module (+protoboard) to address the reprap configuration. This would provide a "single module" to be produced, and would leverage off the exiting prop hardware, and be user modifiable.
For my experiments, we are looking at a swap-in replacement for the Sanguino board. This is a widely used configuration, so a large potential market.
A daughter board (for a protoboard, for example) with A4988's, power mosfets, and all the connectors would fit the requirements, and could have cost advantage if produced in quantity.
This same strategy could be applied to other configuration, such as DC motor, or servo configuration, if/when the full end configuration is identifiable.
Bill
I don't think it is necessary to have through hole parts for the ones that are likely to fail as I believe the power transistors, MOSFETs, or other higher power devices that will likely fail will have big leads. MultiPin and through whole is actually harder to solder than a surface mount if the lead size is the same.
I just found the REPRAP project this week, and the first thing I thought of was replacing all of that electronics with 1 propeller board at much less expense.
You might be able to have your cake and eat it too. I would recommend providing a monolithic board with all of the controls of a typical REPRAP and provide connectors for other drivers as well. I don't think providing connectivity to other drivers in a standard sort of way would cost much and it gives expansion capabilities to start at low cost.
As for video: go with simple 2 pin composite, keyboard: simple ps/2, and skip the mouse. Have a SD or microSD. For the USB connection, please use miniUSB, not microUSB.
Just my 10 bits worth.
Doug
The problem would seem that if you want to use steppers then you either add stepper drive chips which increases cost (especially bad if you don't use them) or you turn the propeller into a stepper waveform generator as well. This eats cogs and I think would require a second propeller for a full system. I think two servos could be driven with one cog (I am working on this for my current project) but perhaps that too would realistically need to be a two prop system or better a prop two system
In any case we need a rock solid controller for servos and if implemented in software the same for steppers, the latter should have the bells and whistles seen in commercial drives. In some respects the hardware is easy if we have the software.
Graham
Graham
It's not really the same thing as a the hardware solution mentioned by the OP.
Parallax worked with the guys who had the Radiant 3D printer Kickstarter. It would be interesting to see what hardware was included on those boards. I believe Parallax even did the board assembly.
This <EDIT>thread<EDIT> came in with a roar and went out with a whimper.
With the exception of the absence of a high voltage propeller board, such as the one suggested in this thread: http://forums.parallax.com/showthread.php/133037-Dear-Mr.-Parallax-High-Voltage-Propeller-Proto-Board, various motor drivers can easily be adapted to various propeller boards, take for instance this discussion: http://forums.parallax.com/showthread.php/133309-Propeller-Proto-Board-Stepper-Motor-And-G251-Gecko-Drive-Tip.
Anyhow that is my latest opinion on this topic. but over the next several weeks or months, I may be discussing this topic, providing I decide on an embedded solution for my current and other projects.
And was there ever anymore significant progress on a G-code interpreter for the propeller?
It's been two and half years since the original post, but there has certainly been work done on this issue since then.
I think Don's code linked to above includes a G-code interpreter.
One problem with this project is the shear size of it. Don's program requires a SD card be used to load in different portions of code as needed.
I've seriously considered making the move to C in order to take advantage of the larger programs it allows.
I'm not so sure if the high power stepper drive components need to be on the same board as the Propeller. I personally think it would be easier to use a third party stepper driver with step and direction inputs and let the Prop take care of reading the G-code.
I've got a couple of projects I need to finish up and then I plan to get back to working on a driver for my CNC router.
The link above is basically to show it can be done, but I agree the drivers do not need to be and probably should not be on the same board, unless of course the board is specifically designed to run motors. My wire bender CNC has "I think" 8 driver mounted in a metal cabinet, with the Propeller mounted separately providing step and direction inputs. I do however believe that if a board is created, I think it should be powered by the main supply.
I also believe that it will be necessary to have two or more Propeller chips.
Whatever the case, I am sure that I will have to hobble something together for my current project or go with something like Mach 3 and a PC with a controller board.
I keep coming back to this thread, because of my interest in CNC machines, and now that I have started another CNC project, I would like to bring this thread back into focus. As I stated much earlier in this thread, I believe the scope of this project was much too large, and since basically everyone has abandoned it, I would like to redefine the scope.
- I think the controller should be geared toward, but not limited to 3D printers, so lets say a 5 axis board (X, Y, Z, and two extruders).
- I think the board should focus on stepper motors alone, instead of confusing the issue with servos.
- I don't want to struggle with running out of IO pins or cogs, so I propose a (2 or 3) Propeller board.
- I believe the board should be able to get instructions from a PC, as well as from an SD file.
- The board should be able to derive it's power from the machine power supply E.G. 50 VDC
- The stepper drivers should be able to withstand 2.5A per winding, with adjustable current limiting, and individual step, direction, and enable inputs for each driver. Additionally, the drivers should be capable of microstepping and be able to accept 3.3V inputs.
- The board should be able to switch and control several forced air circuits, with PWM and tachometer, from 12 VDC.
- The board should be able to control to hot-ends with PWM.
- The board should have a multi-channel ADC for reading items such as a thermistor.
- The board should have minimum and maximum travel inputs for each of the 5 axises.
- The board should be able to process mouse and keyboard input, as well as output to VGA display, as well as being able to accept keyboard and mouse input from a PC, and be able to display to a PC monitor. Could get confusing.
- And of course a variety of IOs for items that I forgot or am too lazy to mention at this point.
I believe the board should be designed with a minimal assumed power supply having a regulated 5V output, a regulated 12V output, and at least an unregulated 24V output.It has been a while, and I must admit that I have not kept up with stepper drivers over the last year or two, so I am open to suggestions.
Anyhow, let me hear your thoughts.
I didn't know about this thread. I will have to read the whole thing to get up to speed and get back for any comment. Thanks for reviving.
The realities today are that RepRap has its own flavor of g-code for 3D printing that pretty much supports your 5 stepper motor scheme (at least 4 motors).
On the other hand, LinuxCNC seems to have gone toward the more traditional Gerber flavor of g-code for only 3 stepper motors in the normal context ... which is pretty much an extension of plotter code for graphic.
++++++++++++++
I don't see any reason to try to cramp unused code into a Propeller1 when space is at a premium. So I have taken the approach that 'one solution doesn't fit all'. It is much simplier to have two separate code projects.
On the front end you have very different G-code parsers.
On the back end you have very different devices to monitor and control.
And in both 'worlds' you have a ton of real-world configuration options due to what people want to add as 'goodies' and whatnots.
++++++++++++++++++++++
I am also taking the approach of using existing Propeller boards that will be attached to some sort of go-between board that supports the specific purpose, either CNC or 3D printing.
At this point, adapting the Pololu RAMPS to interface with a Propeller1 is likely to be a very easy 3D printing solution, and not costly as the RAMPS is $18 USD.