A friend of mine has a Haas 4th axis / rotary table, which he wants to drive from a Matsuura CNC mill. Unfortunately, no matter parameters and options what we tried we were unable to talk to the HAAS controller over the RS-232 port.
This is a fairly common device, and so I figured I'd provide some information on repairing it.
I recently ran into an issue with a "Datum PRS-50 Cesium Beam Primary Reference Source" which I couldn't talk to using any of my USB to Serial converters - after some debugging I figured out that this was because all the USB->Serial devices I tried seem to only output 0V to +8-10V, while the spec calls for -5-25V to +5-25V. This works for "modern" devices, but not for some older ones, and so needed to use a machine with a "real" serial port for the PRS-50 (as a side note, if anyone knows of a USB to RS-232 which actually does full voltages, please let me know!). I figured that this might be the same issue with the HAAS controller, and so tried with a desktop with a known good serial port, but this didn't help, and so I decided to dig a bit deeper.
Being made in 1995, this Haas controller is all through-hole DIP construction.
The controller has 2 serial ports, one Upstream (to the CNC machine / PC), and one Downstream (for daisy-chaining controllers). I opened it and first checked the connectivity from the serial port to all of the pins on the ribbon cable, and then to the rear of the board -- the IDF connector was slightly loose but seemed to make good enough connectivity. I then ran it on a workbench and hooked it up to an oscilloscope and traced the serial signal. The input goes through an MC1489P Quad Line EIA-232D Receivers, which then hands the signal off to an NEC PD71051 Serial Control Unit (which receives serial data streams and converts them into parallel data characters) which finally hands this to a Z80 series CPU. Return traffic (which only seems to come in response to "xP" commands) goes through the PD71051 and then an MC1488P Quad Line EIA-232D Driver
Tracing the serial signal showed that it wasn't arriving at the PD71051. The obvious culprit here is the MC1489, and so I desoldered this and the MC1488, installed sockets (so future replacements are easier) and installed new ones.
After testing this on the workbench and checking the signal with a scope I could now see the serial signal arriving at the MC1489P, but didn't bother hooking up a protocol analyzer to check the output - instead, I just sent an XP command, got back "01" as the response, buttoned it al up and tested it -- and now it works.
Ferraris are notorious for having high idle / standby current draw, and they end up with all sorts of weird and hard to troubleshoot issues if their battery voltage drops too low. They also often have radios and similar which need (expensive) reset codes, or alarm systems that decide to forget their fobs. They are also often stored for the winter (being high power rear wheel drive cars, usually with summer tires, driving them in the winter is often, um, exciting!).
This makes storing them on a battery charger or tender critical - unfortunately, many people have either lost their Ferrari branded charger, or never had one. The charger which Ferrari supplies with most of their vehicles is the lowest end CTEK charger, with a special connector - this connector plugs into a special jack (usually in the trunk or passenger footwell), which disables the starter motor (to prevent the embarrassing "driving down the road with the charger still connected" issue :-)) - more info on the charger connector.
The following contains some information on how I make these cables - I make other cables for mission-critical purposes, and so I've gotten into the habit of seriously over-engineering cables - while I could just slap the proprietary Ferrari connector on the end of the CTEK leads, instead I solder and crimp the contacts, moisture-proof the connectors (by blocking the unused pin and the rear with foam, and then fill the body with hot-glue), install 4 layers of heat-shrink, etc.
Each one takes me multiple hours to make, so here are instructions/picture in case you'd like to make your own.
To improve quality I created a template on a laser cutter:
To improve the connector strength (and decrease resistance), I apply flux to the contact, then fill with solder, before inserting the wire (and backfilling with solder)
It is really important to use the correct crimping tool for these contacts - I have tested the pullout strength using just solder, solder and an incorrect crimp, and solder and the correct crimp. The correct crimp makes a huge difference. The solder and (correct) crimp also provided the lowest electrical resistance by far (tested using the four-wire Kelvin technique). These contacts really need the S16RCM1450 or S16RCM16 crimp heads (available from DigiKey or Mouser) and Souriau crimp handles - the set is somewhat expensive (at ~$400), but the quality of the crimp is well worth it.
To help with moisture protection, I cut and insert a small piece of foam into the unused contact spot
And then insert the contacts
Getting them fully inserted is sometimes tricky, and so I strip a bit extra from the negative lead and then tin and heat-shink it just behind the connector - if I don't do this, the insulation around the wire stops it seating properly. I then use a Molex-tyle pin remover to check that each pin is securely clipped in,
Once the pins are all inserted I do an initial test.
It then gets a good glob of waterproofing / strain-relief sealant on the contacts / wiring
Some more foam gets wrapped around the wires towards where the end of the strain relief boot goes, and (temporarily) held in place with some more sealant
And now for the tricky bit. I add a bunch more sealant to the strain-relief boot, and then quickly screw it all together, before the sealant has a chance to set.
And then screw on the strain-relief clamp
Actually, this bit might be the trickiest, or at least the one with the most chance of cursing; right at the beginning of the process, I've (hopefully!) remembered to put on all of the extra water-proofing heatshrink.
It gets (usually) 3 layers of heatshrink to build it up
And them some final sealant in the back of the boot
And then a final layer of heatshrink over all of this to finalize the seal.
And the cable is all done, just needs a final test and label
Photo album: http://photos.kumari.net/Projects/CTEK-Ferrari-Cable-Instructions/ and older page with more details: https://www.kumari.net/index.php/cars/ferrari-battery-charger-cable