Sounds good Dean! We've waited a long time for something like this.
I'm interested. Keep us posted please.
I'm working on a spindle speed control for my Sieg SuperX3 (Grizzly G0619) and thought this would be interesting to other folks. From what I've heard, this same design could be used to control a Sieg C4 lathe, but since I don't have one I can't say for sure.
The spindle motor of the SX3 is a nice BLDC motor that is driven by the main power board mounted in the electronics bay. Plugged into the power board is a microcontroller card that reads the hall sensor signals coming from the motor, and generates switching signals to the three half-H bridge drivers on the power board.
This microcontroller scans the buttons on the front panel, and sends a periodic update to the LCD display. This is accomplished through a fairly simple serial protocol.
My plan is to make a new board that goes between the microcontroller card and the buttons/LCD. This board will monitor the buttons and pass them along to the microcontroller when it asks. When in remote mode, it would read an analog voltage (0-10V) and set the spindle speed by virtually pressing buttons and monitoring the numbers being send to the LCD.
So far, I've got a prototype wired up on a perf board and I can successfully communicate with the buttons and LCD. I can also read data coming from the power board, so it looks like all the pieces are in place. I just need to write a bunch more code and finalize the design. I'm then going to order some boards (let me know if you are interested). It looks like it'll cost under $100 for everything needed.
I'll post back with more details as I have time, and I'll be asking a few questions to get feedback on some design decisions before I finalize everything.
Sounds good Dean! We've waited a long time for something like this.
I'm interested. Keep us posted please.
Too many PMs. Email me to my name plus At A O L dot com.
A few additional details about the operator interface:
This card will be able to correct the RPM display for folks that change the spindle drive ratio. I plan to run 1:1, so my range will be 200RPM-3600RPM.
To enter remote (vfd) mode, I was thinking I would have the operator hold "FWD" and "REV" for 3 seconds. I would then display "cnc" on the LCD and sound quick beeps for 3 seconds. The LCD with then resume showing RPM, and the spindle would then be under remote control until the operator pressed STOP (or opened the safety guard).
The safety guard switch is wired in parallel with the "Stop" button (the tactile button, not the EStop switch). This means that the controller board cannot tell the difference between pressing STOP and opening the safety guard.
The LCD only updates every 0.75 seconds with a value that is accurate to ±10RPM, which is not particularly great while trying to use fake button presses to adjust to a target RPM. I may add one "tach" signal from the microprocessor card to my intercepter card so I can constantly know the exact RPM. I've already spotted the signal on the card and it provides a nice clean signal of 4 pulses per revolution, but that would be the only actual modification required for this upgrade.
As for signals to/from from the breakout board, I currently have five signals spec'd:
- VFD (analog input: speed signal, also includes GND & +10V reference)
- FWD (digital input: when on, runs spindle forward)
- REV (digital input: when on, runs the spindle in reverse)
- SPEED_GOOD (digital output: when on, indicates the spindle is running near the target RPM)
- SPARE (digital input or output)
Alternatively, I could replace FWD and REV with RUN and DIR if that is the more common idiom.
The four digital control signals could also serve as a serial interface or as an I2C bus, so it is possible to have this board interface directly with a computer and/or various I2C sensors. Lastly, I am using a microprocessor (ATmega32) with several spare I/O lines and will include a small prototyping area on the board for folks who want to reprogram it to add more functionality (could potentially run a tool changer, for instance).
I'm making my board to interface with a G540, so I wasn't planning on adding lots of (redundant) electrical isolation. That means the analog and digital grounds will be bonded to the DC ground of the SX3's control board (which is isolated from its AC ground). If anybody has any wisdom to share on this subject, I'd appreciate it.
Count me in as a possible purchaser of a board/kit when you have it developed. I would even be willing to pay once for a "beta" version and pay again for a final version. I have an SX3, a G540, basic electronics skills and equipment, and an intense desire to have some way of controlling motor speed - so I would be willing to help fund a prototype PCB order and do beta testing if it would help you out in any way.
I need to start a list of interested folks so I don't forget anybody.
As for boards, I plan to use ExpressPCB for rapid-turn prototypes. I'll be using MiniBoardPro, which is $98 for 3 boards, which is a pretty sweet deal for custom 4-layer boards with silkscreen and soldermask.
Oh, and all the parts will be the through-hole variety; no SMD parts to fiddle with.
Here is my reverse-engineered schematic of the front-panel operator interface. The board is labeled "XMT_PANEL_1000-A", and is Grizzly Part P0619028A. Since I'm basing all of my work on this schematic, I would appreciate a crosscheck from anybody that is willing and able to do so.
Dean, Just did a trace of the panel board (XMT_PANEL_1000-A (A2)) from my SX3. Everything is correct as fare as I can see.
I have been looking for a spindel control solution for my SX3 for a long time so I am interested in a board or kit.
Thanks for the good work and keep us updated.
I've got the schematic pretty much finalized and I'm getting the software going. I'm taking my time to get it right, since it is going to be in control of the spindle motor...
I'm working with a breadboarded prototype now, and once I've got enough software going to have fully validated the design, I'll go ahead and order some boards.
The basic chunks of software functionality are:
- Scanning the operator interface buttons
- Sending updates to the operator interface LCD
- Decoding the signal from spindle driver board
- Converting the LCD update into a numeric RPM value
- (optionally) timing sync pulses to calculate an accurate RPM
- Emulating the operator interface to the spindle driver board
- Simple UI to manage manual/cnc mode & drive ratio selection
- Translating analog signal into target RPM
- Heuristic for generating virtual button presses to achieve target RPM
I've got about half of this written and debugged, so progress is decent. I'm multiplexing this project with a few others, so it is still going to take a few more weeks I think.
I wish you were around when I was going thru this about a year ago. I wound up buying a new X4 motor and series of controller boards from Syil and retrofitted my X3 with X4 electronics.
It was VERY interesting to do. Thank goodness I have a friend who can tear down and rebuild a Hass by himself. He was able to help me re-wire my X3 in about 2 hrs.
One of my reasons for bugging the guys at Syil was because I couldn't tolerate the 45 second spinup on my X3. Now the spinup speed is about 5 seconds to full RPM -- a VAST improvement. Apparently the X4 motor is a LOT more standard that the one that they put in the X3. The X3 motors requires some really strange driver hard/software to work. (Again, this is from stuff I've read or been told about by the guys from Syil, I'm not an electronics guy, tho I wish I was.)
I pretty much had to gut the entire mill and change all the electronics, but I think it'll be worth it as once I have the new electronics working completely, i'm going to build an ATC for my machine. The nice thing about the X4 electronics is that it appears to have a driver circuit for a turning on and off the coolant right on the controller board. I have a fogbuster that i'd like to control via CNC. The control board also has a 5th axis slot which could be beneficial as well. Maybe I can use that for controlling the ATC.
As I finalize the design, I'd like to hear what people want for the CNC control signals and the Operator Interface. I'm personally using a G540 and EMC2, so it has to work with that, but I'd like the design to be broadly applicable. The idea is that the board can be installed without requiring any modifications to the mill (plug and play). There may be a few mods that make things work better, but mods wouldn't be required.
I plan to have 2 analog inputs: The first is a reference voltage in the 8V to 12V range (10V nominal). The second is the speed signal which will scale from 0V (lowest RPM) up to the reference voltage (highest RPM).
For digital control signals, I've got a "RUN" input and a "DIR" input. Wen RUN is active, the spindle spins at the speed specified by the analog input and the direction specified by the DIR input. Alternatively, I could provide "FWD" and "REV" inputs, but I believe RUN/DIR is more common that "FWD/REV".
For digital outputs, I plan to provide a "SPEED GOOD" output that is active when the spindle is spinning at (or near) the commanded speed. I plan to also provide an async serial interface that constantly outputs the commanded and actual speeds, and can respond to commands to override the other control signals. Does anybody know of a serial protocol for VFDs that I should try to emulate?
I will also provide a tachometer input that can (optionally) be wired to a specific point on the spindle driver board which will provide a much more accurate RPM reading. Alternatively, it can be wired to a sensor on the spindle itself so that it will provide an accurate reading regardless of drive ratio.
I may provide an ESTOP input, though the SX3's ESTOP button will kill power to the spindle motor regardless of what my board is doing. I could also provide a MODE input that you could wire a toggle switch to in order to select Manual or CNC mode (see below).
From a user interface standpoint, I plan to have two basic modes: "Manual" and "CNC". The board powers up in Manual mode where the CNC signals are ignored and the operator interface controls the spindle as usual. To enter "CNC" mode, the user must hold down the FWD and REV buttons for three seconds. While in CNC mode, the spindle responds to the CNC control signals and ignores the operator interface buttons except for STOP. When the operator presses STOP in CNC mode, the board will stop the spindle and return to Manual mode.
Additionally, I plan to let the operator specify the spindle drive ratio so the LCD displays the correct spindle speed. To do that, the operator will first STOP the spindle, then hold down TAP and press + and - to adjust the ratio. Releasing TAP causes the board to store the drive ratio in EEPROM so it will persist until it is changed again.
Whew - that was a long post. Please provide any feedback, suggestions, or guidance that comes to mind.