Sounds plausible....which CAM software will you be using?
Its great that I stumbled across your website..I just want to get your opinions on a couple of things...
I'm building a CNC Router. A 3-axis machine which accepts G-codes and outputs this data in the form of +-10V to my AC/DC Brushless Servo motors.
Basically I'm planning my system architecture to consist of a host controller, and 3 chips to receive encoder feedback.
Thus my host controller (Atmel AVR AtMega32) is going to produce 3 PWM channels which I will have to convert to +-10V to drive my motors. I will have 3 chips (any suggestions?) which will receive channels A & B and index from my servo motor encoders, keep a count on my motors and feed this information back to my host controller.
thus my atmel AVR AtmEga32 is responsible for...
1) Motion/Trajectory profiling for each axis
2) Co-ordinating the 3 axes to work in tandem to draw circles, helical motions etc.
3) receiving data from all 3 encoders.
What do you guys think of the set up? Do you think that I have enough processor speed to be able to build a CNC Router with suitable accuracy?
If I miax up my AtMega32 with PIC chips used to read the encoder counts do you think I will have problems? due to different instruction sets? or is it better to stick with AVR all the way then?
Sounds plausible....which CAM software will you be using?
Instead of doing a motion controller, why not start out by using Mach or TurboCnc? The demo versions are very functional and you are unlikely to outgrow them any time soon.
Then all you need to design would be the servo driver, which is challenging enough in itself. I'm looking at doing one for a regular dc motor.
Very interested to read about your new project and also encouraged to see you are thinking servo. I have just completed my project ( No! I don’t think this project will ever be complete but it is now working ). It is based on the same design theory as yours and the GOOD news is it works just great! But the BAD news is it's taken me 3 years.
If you are going to design your own servo system then the most important consideration has to be which operating system to use. It MUST be capable of real time interrupts; the whole concept of servo motion is based on the time interval. The system must respond to the encoder feedback with precise timing and I would suggest you start by thinking 1ms.
If you prefer the ‘Windows’ environment then you will have to install a DSP motion card , these can be expensive and to a certain extent take away the independence that us DIY’ers thieve on. Or, you could take the advice of H500 and go Mach or TurboCNC but these are stepper systems and are not closed- loop so you will never really be sure of what is going on, and Backlash can play havoc! Even if you convert the step and direction output to drive a servo, the best you can get is semi closed-loop, this means the drive will respond to an error but the control still won’t have a clue what is happening.
I am using my website www.3dmotioncontrol.com to try and log my progress but I have neglected it recently (trying to get my new card working). This new card is a 4 axis card which tracks the encoders and outputs the +/-10 volt command signals, I've just uplaoded a picture of it to the gallery (lmscard.jpg) it might provide some ideas.
Good luck with your project.
CAM software? I haven't decided on that yet really. Basically I want to get the electronics up and running. Thats my biggest worry really, and programming the PID control required for the feedback systems.
But basically I'm just gonna get a bunch of G-codes, download it into the host controller (AtMega32) and the AtMega32 is responsible for translating those G-codes into motion.
Mainly I'm getting back to the basics and building everything from scratch (well as much as possible). Its mainly cos I think this is the best way to learn about electronics and feedback motion control systems which gives me alot of practical knowledge. (I'm final year undergrad =)
Mach ot Turbo CNC? thanks, I'll check it out. Hopefully they have some information on how they program the control.
I know its tough but its something I'll hafto do to get something out of the project.
really? you mean you used 4 chips and converted PWM to +-10V signals? thats great! cos I wasn't sure if it would work properly. Lots of ppl I've seen on the web were using at least 2 chips (PICS or AVRS) for each axis (not considering specific motion controller chips like LM628/LM629) and one host controller [Total of 7 chips]. My concern was that there wouldn't be sufficient processor speed on my host (AtMega32 is 16Mhz) to properly perform feedback, trajectory profiling & motion control all at the same time. Like you mentioned, can my system respond in 1ms? I guess there's only 1 way to find out!
I guess it really depends on the accuracy requried but I'm really doing it for the education aspect of the project and learning more.
As for the operating system, I'm just gonna download G-codes from a PC on to my host controller, and basically the host-controller will be in charge of translating these G-codes into motion on the 3-axis router. do u think that'll be ok?
I've read your website. It seems what you did is very similar to what i'm doing except you used a PC and if i'm not mistaken, the cards that you were using just plug into the PC and u just connect the wires from the motor and encoder to the card?
What language did you use to write your program?
Why are you building this? What are your goals?
I would use EMC for my G-code interpreter, trajectory control, etc. It will run very nicely on a cheap used PC.
The atmega32 is a fine chip to use as a controller (I'm using that family for some projects) -- but why not start with already existing high level code.
If your goal is to learn as much as possible, then you might as well write your own G-code interpreter, trajectory control, etc. Heck, have you considered drawing your own wire and winding your own servos?
Sorry, I don't mean to make fun of you (well, maybe a little :-)
My goal in converting my Bridgeport Clone to CNC was to get a machine going as fast as possible within a limited budget. I bought ballscrews, servo mounts, servos, controller and driver boards. I made the power supply, mounted and wired the boards, etc. I found limit switches on E-bay, and bought a used PC on E-bay. I've enjoyed it a lot -- but it is still not up and running.
Think about your engineering goals -- functionality, cost, timing. Think about your personal goals -- labor, learning,...
Then plan a way to get there.
55 Main Street
Newtown, CT 06470
There are many ways to crack a nut - as they say - and using the ATmega32 micro-controller is certainly one way to implement motion control. I agree with 2 of Lerman's comments. Redundant PC's make good dedicated controllers and a high level language will make the programming task so much easier. I used C/C++ to write my controller but with an assembly coded interrupt routine to perform the real time data aquisition.
I am now looking at Linux EMC as an alternative platform for my controller, altough as I understand it , the Linux system already contains many of the control functions which I have built into the MSDOS controller.