This article details the conversion of my Fisnar Selective Soldering Robot from its propriety control to th e Mach3 CNC control Software and a SmoothStepper. I'm doing the conversion as the current method of programming is manual, laborious and very inefficient. Using Mach3 will allow me to automate most of the programming directly of the PCB drill files.
The soldering robot is pictured in the image to the right. It was purchased as a 2nd hand machine and pulled out of a production environment. The Robot is basically a 3 Axis X/Y/Z platform base with an automated soldering head module mounted to the gantry. As the soldering head is a separate module, it has it's own teach pendent which is used to program the automated soldering cycles in it.
The base also has it's own teach pendant which is used to program the movements of the base unit.
Currently the machine is programmed in 2 parts. First, the head is programmed with all the different soldering profiles, including
- joint pre-heat,
- the amount of solder feed,
- rotation of the head,
- the soldering duration etc.
These different profiles are called Blocks.
The 2nd part is to program the base X/Y/Z movements with the other pendant. You move the head to a point, then select the soldering block you want to execute. You do this for every solder point. It works OK but is very tedious to program.
When the robot is soldering, the soldering tip moves down by a pneumatic actuator. The air pressure controls the contact force. You need to position the head so that the iron contacts both surfaces of the joint precisely .
The soldering head has 30 different soldering profiles. Each profile has 9 or so different parameters that define the soldering cycle. The base unit selects the profile it wants and tells it to do it. Once it receives the acknowledgement back, it carries on.
The video below shows the machine operating under the existing inbuilt software.
{youtube}fBMfXbh5uY4{/youtube}
The Conversion Plan
The soldering unit that attaches to the gantry along with its controller and programming pendant will be used "as is". In addition to the pendant the soldering unit has a external control cable that plugs into the main base.
In brief, the control of the soldering module via the external interface is
- 5 lines are used to select which of the 30 sdoldering blocks (pre-programmed soldering operation) is to be performed
- 1 line to sent the "Start" pulse to the unit.
- 1 line to receive the end pulse once the soldering operation is complete
- 1 line to receive an error signal from the unit.
So, to solder a joint, the base moves the gantry to the correct X,Y,Z position, then the Soldering unit is commanded to perform one of the 30 soldering cycles. All very simple.
For the conversion, I plan to use Mach3 for the CNC control software and a SmoothStepper. The reason for the SmoothStepper is that it has the equivalent of two buffered parallel ports on it. I plan to use port 1 to control the X,Y,Z Base. So that's the 3 axis stepper drivers, the 3 axis home switches, and the halt and start switches. The 2nd parallel port will be used to control the Soldering head unit. By using the SmoothStepper, the connection from the PC to the robot will be a single USB cable.
As to the computer, at this stage I'm planning to use an all-in-one Shuttle X50 V2 15" Panel PC. It has;
- four USB ports,
- Ethernet,
- 15.6" touch screen
- VESA Mount
- Serial Port
- NO Parallel Port
The only Issue I see is that it has an Atom Intel® D510 dual-core processor, so hopefully it will work with Mach3. I plan to have it mounted on a stand adjacent to the main Unit. Being a touch screen, I may be able to get away from the Keyboard and mouse. Not sure if that is going to be possible but we will see.
To the right is the base of the unit containing the electronics. The three stepper dirivers can clearly by seen, along with the 24Vdc switch mode power supply.
Visible are two PCBs. In fact there is another sitting under the one on the right.
The PCB on the left is primarily the interface board for control of the external Units such as my soldering unit. All of the output lines are switches by relays. The external units are connected by a 50 pin centronics connector. THE connector to the left is for the base unit's teach pendant. I will be replacing this board with my own that will interface to the Smooth Stepper Port two.
The boards to the left contain the processor, memory, RS232, etc. These will be replaced by a small breakout board that will interface to the SmoothStepper port 1.
I plan to use the existing wiring cables, so my boards will been to have matching connectors. I want to just plug in as much as possible without cutting anything.
As can be seen the base is very solid and cast. The Y axis stepper is clearly visible. Initially my plan was to replace the stepper drivers with a Geckodrive G540 4 axis stepper drive. On closer inspection of the motors, I discovered that they were Vexta 5-phase motors and are no compatible with the Geckodrive G540 bi-polar drive.
I then contemplated replacing the motors as they seemed to be size 23 steppers. I removed one and did a trial fit of one of my motors. What I found was that the aligning boss on the Vextra motors is fractionally smaller than the standard size 23 boss. Also the bolt hole mounting pattern was different.
In the end I decided that it was simpler to use the existing Vextra 5-phase stepper drivers until I discovered that they take a Clockwise and Counter Clockwise input, rather than the more common Step and Direction inputs that Mach3 generates. so nothing is ever as simple as it first seems.
So now my plan is to put a set of Step/Dir to CW/CCW converters on the driver breakout board. I'll use a separate Microchip PIC processor for each axis to do this. I could use discrete logic to do this but I also want to use the PIC to improve the homing accuracy.
The Vextra drives (1/2 steppers) have a sync output that is present every 20 steps. I plan to AND this with the home switch input before sending it to Mach3.
This will improve the repeatability of the home switches, as once the switch is activated, the axis will continue to move until the drive activates the sync signal. So even though the activation of the optical home switch will have some variability, it will be corrected by the sync output which is absolute. I used this technique on my TurboTaig board and it works very well.
H-01 Step/Dir to CW/CCW Conversion board
Its been a while but I have made some progress. I've designed the Step/Dir to CW/CCW board for converting the signals from Mach3 to that required by the Vexta half stepper drives. Additionally, the board also receives and opto-isolates the home switch inputs.
I don't usually bother with homes switches on my machines as most of the work on them is one offs and I normally just manually set the home or reference position to the work piece once it is clamped down. This machine is different, it is a production machine. Jigs are fitted to the machine and boards to be soldered are located into the jigs. Once set up, I can place the jig and pcb into the machine, home it and then just cycle start.
I designed the circuit, laid out the pcb and had the board house produce a batch of them. As you can see it is a lot smaller than the PCB it is replacing. To be fair, the original pcb was part of a machine that was a complete stand-alone system.
Below is an image of the populated PCB. I stole the connectors off the original board as I was too lazy to source them. The only mistake was I did not put enough separation between the connectors for the three axis drives so plugging in the cables is a tight squeeze. If you look closely, you can see that the microprocessors are labelled DC-03V3, which are the pre-programmed ones for the DigiSpeed controller. I didn't have any spare ones around, so I just grabbed them from the tube off the pick and place machine and re-programmed them.
It wasn't a difficult layout, but it is always satisfying when there are no mods on the pcb. The only change I had to make was to replace the 2.7K opto-led bias resistor with a lower value one.
It worked first time which was probably first in itself for me. Looking at the manual for the machine, the accuracy and repeatability for the X and Y axis is specified at 0.05mm.The Z axis is 0.024mm.
So, from that I knew that the base units for the machine are likely to be mm, and the steps/mm is likely to be 1/.05 = 20
I configured Mach3 to this, then did a quick test and it appears to be correct according to a ruler. The manual also specified that the maximum speed was 500mm/s. I cut the air with the roadrunner.tap file running at 4000mm/min. It seemed to handle that without any problems.
I did notice that the motion is a lot smoother than it used to be. I put this down to the step generator on the original set-up being a lot coarser than that being produced by Mach3 and the SmoothStepper.
The image below shows the new pcb and the smoothstepper inside the base.