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.
We are basically talking apples and oranges here.
I understand your growing approach and vision, however the controller board is a completely different animal. Regardless of how the information is processed, you must have the electronics to make it work. For every stepper, you need a driver. You need inputs and outputs to read and control various items. You must seperate the electronics from the software (or at least for the most part). Software can be reconfigured, rewritten, or simply modified to make it work with various types of hardware, but the hardware should remain unmodified, except for items like variable resistance, or swapping out resistor values. Take a single stepper driver for example.... The stepper driver does not care what kind of G-code you are using, it only wants to know if the motor should be enabled, when to take a step, and which direction the motor should turn.
As you go forward in your porting efforts, I would advise you to pay attention to the differences that may exist and keep them seperate. For instance, JonnyMac tried on numerous occassions to beat it into my head to not hardcode PIN settings into my functions. As I played around more and more with CNC code and settings, I discovered how right he was and just how easy it was to adapt my software to other hardware, by changing constant values. I think I read something in your thread about a pin configuration file, and this is a real good idea. However, instead of relying on existing Propeller boards, I think I would just gear for the Propeller chip, but that is entirely up to you. I can understand striving for a complete solution. I suppose the downfall of your approach would be, that most manufactures would probably want a one board solution, whereas your approach aptly fits the needs of the hobbyist.
I envision learning what I can from your thread, as well as Starkey's object, and applying it to a board similar to the one I described above. The software will bend to my will, but the hardware will break if I try to bend it.
Any one board is only going to fit one particular set of stepper motors, and therein lies the big problem.
Pololu has a rather larger inventory of stepper motor controller motor boards just to accomodate and the variation in stepper motor configuration at the low power output end of stepper motors. Larger motors just use a larger free standing stepper motor controller.
If you try to make one board that fits everyone's needs, you will likely have just a few users adopt it as it exactly suits their needs -- and the rest will do something else. That is why Pololu resolved the problem with the RAMPS board.
I just don't think it is worth doing again what Pololu has done so well.
Any one board is only going to fit one particular set of stepper motors, and therein lies the big problem.
Any stepper driver that can handle upto 2.5A per winding, which has adjustable means of limiting the current, either by potientiometer or by a current limiting resistor, will pretty much handle all stepper motors upto the larger NEMA 23s, which is a pretty wide selection of stepper motors. When you start going above 2.5A per winding, your are pretty much going into customized h-bridges with mosfets. If you have a controller board that will handle upto the larger NEMA 23s, you are covering many different types of CNC applications. Surely this is not industrial size, but NEMA 17s, NEMA 23s, and smaller size motors, definitely play a major role in CNC equipment, especially for smaller machines with light to medium loads.
If you try to make one board that fits everyone's needs, you will likely have just a few users adopt it as it exactly suits their needs -- and the rest will do something else.
Hmmmmm.... That is another one. As long as you have plenty of options and can provide the number of axises required, I don't see a problem. As I see it, an ADC is a must for 3d printing (not necessarily so for a router application, but add it anyhow for 3D printing), many applications will want home and over-travel indication for each axis, so add inputs for them. Many applications will want to control relays, so add outputs for them.
If there was not a market for multi-axis boards, people would not be making them and people would not be buying them.
All of my CNC projects upto this point have been piece meal assembly as you suggest, seperate drivers and control boards. Believe me when I tell you that it is a wirery mess and very hard to keep track of. Having all axises driven by one controller board is a nice and clean assembly.
@IDBruce
Are you going to handle 2.5A per winding in a range from 5volts to 36volts? If you don't have an array of stepper motor controller boards that plug into a carrier board, you may be able to deliver such range.
And the reality is that while 3D printing at this point in time can use stepper motors in up to 2.5 amps per coil; the CNC router and milling devices can easily go up to 6 amps at 36 voltsDC or higher.. maybe 72VDC. http://www.ebay.com/itm/CNC-KIT-Stepper-Motor-1700-oz-in-Retrofit-Rebuild-Router-Plasma-MILL-Lathe-Laser-/161276822233?pt=LH_DefaultDomain_0&hash=item258cd902d9AmpsxVolts It is all about Watts. And about 774 watts is one HP. Anytiime you go up to more Watts, there are more challenges with managing heat, insulation, and compact size. The larger CNC stepper motor controller are generally one axis units so that a unit can be swapped out for repair when it goes down. This is actually a cost savings on the maintanence size and customers likely would avoid one big board.
You might be able to provide an unpopulated board that allows the user to build power output to suit with MOSfets, but you will likely have to provide another processor to manage all the features desired (such as microsteping, current limiting, and so on). Frankly, I cannot build for less than what Pololu delivers built. They have made these low power steppers their leading market niche. ADCs are not a really big issue, just add a MCP3208 for each 8 ADC inputs desired. Opto-isolators on stop switches (2 per axis, would be wise)
Much depends on if you want to build a one-off project to show case goodies or if you want to build a board that is going to sell to the 3D printer builder market. IN the builder market, there are several board builders that have a significant headstart and a strong desire to project market share.
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'm not sure everybody abandoned it, I don't think it actually started. If you want a system that meets those specs then go for it but I'm not sure what you are expecting from others.
You might consider dividing up the project, ADCs and PWM outputs are all just simple details. Onboard stepper drivers or off board is also just details.
It's really a software project, the hardware is mostly trivial, get the objects written and the boards will come, they can start as Frankenstein's monsters and improve from there.
I must admit that I have a hard time arguing with Loopy logic
Okay let's start from the beginning.... The thread is titled "Help us develop an open-source motor controller for RepRaps, CNC mils, etc…".
It is my belief that this thread died due to an undefined scope. Trying to cover every aspect of motor control is well beyond anyones grasp. When attempting to revive the thread, I attempted to put restrictions on the board that would make it ideal for anyone building a 3D printer or a small CNC machine, not an industrial machine with H.P. ratings.
@Graham
I am not expecting anything from anyone, except maybe a little input, afterall we learn from other peoples knowledge. I am not sure what others have done, but I can say this for sure, because I have been there..... Seperating the drivers from the processor is a time consuming and wirey mess. Take the example below:
This j-box contains (8) Gecko G251s and (2) Propeller Proto boards. Gettting all the drivers, wires, boards, buttons, etc... to fit in that large space was very time consuming and tedious, to say the least. It may look simple, but it's not, just ask Prof_Braino, because he has seen the inside. And 5 axis is just three less drivers.
I tend to feel that this is indeed more about the software that what to build for a board. The software has gotta happen first.. only then will you know what the board might be able to include. And even then, people will tend to do their own thing when they take on a DIY project.
The fact that a board intended for an Arduinio (the Pololu RAMPS board) is being explored as a mate to a Propeller board by Brian_B in another current thread (porting Arduino Teacup to the Propeller) demonstrates there are lots of ways to cobble together a 3D printer set up with all the features.
People will sort out the hardware according to personal preferences based on their pocket book, their pride in building from scratch, or their belief in their superior shopping abilities. I don't think 'one board for all' is realistic. And in many cases, the amount amps that are being controlled indicates using real wire rather than printed circuit boards. (How wide are the lines on a printed circuit board for 2.5 amps?).
Having said all that, I am sincerely working on providing the 3D Printer firmware for the Propeller and it is creeping along. I am having to learn a lot by studying existing solutions for the OpenAVR. And fitting a good one into 32Kb might be a tight squeeze. I am even considering using my Hydra board to have and added 512kb of ram if necessary as I have the extra outboard ram card for the Hydra.
But it will take a bit of time, maybe a few weeks or so. As it is, every time I think I am ready to get the code in order, I learn a few more things. I am beginning to feel like Chip Gracy as he works on the next generation Propeller.
So I bow out of this thread..
Discussions about hardware are not going to get the software done. Build whatever you want, but if you intend to sell it... you will need software.
And for the Propeller1 to be included on the board, it may require outboard SRAM. And if it has outboard SRAM, you might have to compile in Catalina C without the benefit of C++ code from other sources. Only GCC supports C++ and I am not to clear about its current ability to support outboard SRAM. And at least some of the outboard RAM solutions require multiple Propellers (an extra one to manage memory). Or there is the whole situation with that SRAM taking up i/o pins that are needed for all those 3D printer devices. And so on.
So I hope you see that you just might be better off focusing on the software before you build a Propeller1 board that isn't quite right or quite ready for 3D printing. In fact, it the next generation Propeller comes along soon, I intend to drop the Propeller1 code project and just move over to the new device with lots more pins, built in ADC, 512Kb ram, 16 cogs and more speed.
Plain and simple... there seems to be a cart before the horse right now.
think
think
think
If anyone feels that they can get the code together faster or better that me, please join in and show us the way. I am not concerned with be glory. I am just enjoying learning.
I supported this project: https://www.indiegogo.com/projects/t-bone-cape-for-diy-3d-printing-with-beaglebone/x/6986809#home as I see it as a starting point to integrate a propeller and write a driver object to support the stepper chips. They have some unique features like detecting the load on the motor and allow to adjust current on the fly. This leads to less heat development. The board also contains a motion controller chip, which offloads work from the propeller. A board that fits to the quickstart could carry 3 to 4 axes. The original hardware carries a beagle-bone to have a printer without PC connection and the arduino socket could be occupied by a Prop. Maybe one or the other joins me. ErNa
I do not care about the BeagleBone, I am interested in optimizing stepper drivers to take full advantage from the high torque and have a smooth, supervised travel. The tbone not only has intelligent power stages, but also ramp generation etc to make routing more simple. The BeagleBone can run all the tool chain normally run on a pc. And there is an Arduino connector which can be populated by the propeller.
Comments
We are basically talking apples and oranges here.
I understand your growing approach and vision, however the controller board is a completely different animal. Regardless of how the information is processed, you must have the electronics to make it work. For every stepper, you need a driver. You need inputs and outputs to read and control various items. You must seperate the electronics from the software (or at least for the most part). Software can be reconfigured, rewritten, or simply modified to make it work with various types of hardware, but the hardware should remain unmodified, except for items like variable resistance, or swapping out resistor values. Take a single stepper driver for example.... The stepper driver does not care what kind of G-code you are using, it only wants to know if the motor should be enabled, when to take a step, and which direction the motor should turn.
As you go forward in your porting efforts, I would advise you to pay attention to the differences that may exist and keep them seperate. For instance, JonnyMac tried on numerous occassions to beat it into my head to not hardcode PIN settings into my functions. As I played around more and more with CNC code and settings, I discovered how right he was and just how easy it was to adapt my software to other hardware, by changing constant values. I think I read something in your thread about a pin configuration file, and this is a real good idea. However, instead of relying on existing Propeller boards, I think I would just gear for the Propeller chip, but that is entirely up to you. I can understand striving for a complete solution. I suppose the downfall of your approach would be, that most manufactures would probably want a one board solution, whereas your approach aptly fits the needs of the hobbyist.
I envision learning what I can from your thread, as well as Starkey's object, and applying it to a board similar to the one I described above. The software will bend to my will, but the hardware will break if I try to bend it.
Pololu has a rather larger inventory of stepper motor controller motor boards just to accomodate and the variation in stepper motor configuration at the low power output end of stepper motors. Larger motors just use a larger free standing stepper motor controller.
If you try to make one board that fits everyone's needs, you will likely have just a few users adopt it as it exactly suits their needs -- and the rest will do something else. That is why Pololu resolved the problem with the RAMPS board.
I just don't think it is worth doing again what Pololu has done so well.
I do not believe that you are correct.
For example....
Any stepper driver that can handle upto 2.5A per winding, which has adjustable means of limiting the current, either by potientiometer or by a current limiting resistor, will pretty much handle all stepper motors upto the larger NEMA 23s, which is a pretty wide selection of stepper motors. When you start going above 2.5A per winding, your are pretty much going into customized h-bridges with mosfets. If you have a controller board that will handle upto the larger NEMA 23s, you are covering many different types of CNC applications. Surely this is not industrial size, but NEMA 17s, NEMA 23s, and smaller size motors, definitely play a major role in CNC equipment, especially for smaller machines with light to medium loads.
Hmmmmm.... That is another one. As long as you have plenty of options and can provide the number of axises required, I don't see a problem. As I see it, an ADC is a must for 3d printing (not necessarily so for a router application, but add it anyhow for 3D printing), many applications will want home and over-travel indication for each axis, so add inputs for them. Many applications will want to control relays, so add outputs for them.
If there was not a market for multi-axis boards, people would not be making them and people would not be buying them.
All of my CNC projects upto this point have been piece meal assembly as you suggest, seperate drivers and control boards. Believe me when I tell you that it is a wirery mess and very hard to keep track of. Having all axises driven by one controller board is a nice and clean assembly.
Are you going to handle 2.5A per winding in a range from 5volts to 36volts? If you don't have an array of stepper motor controller boards that plug into a carrier board, you may be able to deliver such range.
And the reality is that while 3D printing at this point in time can use stepper motors in up to 2.5 amps per coil; the CNC router and milling devices can easily go up to 6 amps at 36 voltsDC or higher.. maybe 72VDC.
http://www.ebay.com/itm/CNC-KIT-Stepper-Motor-1700-oz-in-Retrofit-Rebuild-Router-Plasma-MILL-Lathe-Laser-/161276822233?pt=LH_DefaultDomain_0&hash=item258cd902d9AmpsxVolts It is all about Watts. And about 774 watts is one HP. Anytiime you go up to more Watts, there are more challenges with managing heat, insulation, and compact size. The larger CNC stepper motor controller are generally one axis units so that a unit can be swapped out for repair when it goes down. This is actually a cost savings on the maintanence size and customers likely would avoid one big board.
You might be able to provide an unpopulated board that allows the user to build power output to suit with MOSfets, but you will likely have to provide another processor to manage all the features desired (such as microsteping, current limiting, and so on). Frankly, I cannot build for less than what Pololu delivers built. They have made these low power steppers their leading market niche. ADCs are not a really big issue, just add a MCP3208 for each 8 ADC inputs desired. Opto-isolators on stop switches (2 per axis, would be wise)
Much depends on if you want to build a one-off project to show case goodies or if you want to build a board that is going to sell to the 3D printer builder market. IN the builder market, there are several board builders that have a significant headstart and a strong desire to project market share.
I'm not sure everybody abandoned it, I don't think it actually started. If you want a system that meets those specs then go for it but I'm not sure what you are expecting from others.
You might consider dividing up the project, ADCs and PWM outputs are all just simple details. Onboard stepper drivers or off board is also just details.
It's really a software project, the hardware is mostly trivial, get the objects written and the boards will come, they can start as Frankenstein's monsters and improve from there.
JMHO
Graham
Okay let's start from the beginning.... The thread is titled "Help us develop an open-source motor controller for RepRaps, CNC mils, etc…".
It is my belief that this thread died due to an undefined scope. Trying to cover every aspect of motor control is well beyond anyones grasp. When attempting to revive the thread, I attempted to put restrictions on the board that would make it ideal for anyone building a 3D printer or a small CNC machine, not an industrial machine with H.P. ratings.
@Graham
I am not expecting anything from anyone, except maybe a little input, afterall we learn from other peoples knowledge. I am not sure what others have done, but I can say this for sure, because I have been there..... Seperating the drivers from the processor is a time consuming and wirey mess. Take the example below:
This j-box contains (8) Gecko G251s and (2) Propeller Proto boards. Gettting all the drivers, wires, boards, buttons, etc... to fit in that large space was very time consuming and tedious, to say the least. It may look simple, but it's not, just ask Prof_Braino, because he has seen the inside. And 5 axis is just three less drivers.
The fact that a board intended for an Arduinio (the Pololu RAMPS board) is being explored as a mate to a Propeller board by Brian_B in another current thread (porting Arduino Teacup to the Propeller) demonstrates there are lots of ways to cobble together a 3D printer set up with all the features.
People will sort out the hardware according to personal preferences based on their pocket book, their pride in building from scratch, or their belief in their superior shopping abilities. I don't think 'one board for all' is realistic. And in many cases, the amount amps that are being controlled indicates using real wire rather than printed circuit boards. (How wide are the lines on a printed circuit board for 2.5 amps?).
Having said all that, I am sincerely working on providing the 3D Printer firmware for the Propeller and it is creeping along. I am having to learn a lot by studying existing solutions for the OpenAVR. And fitting a good one into 32Kb might be a tight squeeze. I am even considering using my Hydra board to have and added 512kb of ram if necessary as I have the extra outboard ram card for the Hydra.
But it will take a bit of time, maybe a few weeks or so. As it is, every time I think I am ready to get the code in order, I learn a few more things. I am beginning to feel like Chip Gracy as he works on the next generation Propeller.
So I bow out of this thread..
Discussions about hardware are not going to get the software done. Build whatever you want, but if you intend to sell it... you will need software.
And for the Propeller1 to be included on the board, it may require outboard SRAM. And if it has outboard SRAM, you might have to compile in Catalina C without the benefit of C++ code from other sources. Only GCC supports C++ and I am not to clear about its current ability to support outboard SRAM. And at least some of the outboard RAM solutions require multiple Propellers (an extra one to manage memory). Or there is the whole situation with that SRAM taking up i/o pins that are needed for all those 3D printer devices. And so on.
So I hope you see that you just might be better off focusing on the software before you build a Propeller1 board that isn't quite right or quite ready for 3D printing. In fact, it the next generation Propeller comes along soon, I intend to drop the Propeller1 code project and just move over to the new device with lots more pins, built in ADC, 512Kb ram, 16 cogs and more speed.
Plain and simple... there seems to be a cart before the horse right now.
think
think
think
If anyone feels that they can get the code together faster or better that me, please join in and show us the way. I am not concerned with be glory. I am just enjoying learning.
Short video to introduce the hardware: https://www.youtube.com/watch?v=VxYdFzUPFfw
Please refer to Posts #121 and #123 of the following thread:
http://forums.parallax.com/showthread.php/155404-Input-Needed-Combining-Propeller-Proto-Board-Prop-DIP-40-and-ADC-for-3D-Printer