I have blown a single pin on an Arduino Mega 2560. This is the 'step' pin of the Z axis on a 3D printer. The stepper driver is configured for 64 micro pulses per step (25600 per revolution).
The mechanical arrangement is T10 timing belt on 16 tooth pulley, approx 1000mm/minute max travel speed, 200step/rev motor geared 12.5:1 This yields a maximum of about 33KHz micro stepping (I have not been able to measure this frequency directly)
The 'Direction' and 'Enable' pins work fine. The stepper motor controller works fine when presented with a 3-5V square wave from another source.
The rest of the board is fully functional (heaters, other axes, end stops etc). The fuses have not blown.
The pin is connected to ground via a 470 Ohm resistor and IL74 Opto Isolator. This is connected to the input of a standard industrial quality stepper driver that has similar inputs for Step, Direction and enable. This setup should draw 3-8mA from the pin, well within the 40mA spec. There could be a slightly higher surge (13-14mA) into the capacitance of the optoisolator input.
The Arduino power is derived from a PC power supply 12V rail. The power rails of the PC supply are loaded to 10% of their capacity by dummy loads, and supply at most 30% of their rated capacity.
The motor power is derived from a totally separate power supply, the earths are connected only at the mains wall plug.
The power supplies are plugged in to two wall sockets in a single box.
The circuit has been functioning correctly for 4-5 months with no irregularities.
The cable harness has been checked for shorts using a megger. It is under 1m long standard telephone UTP (unknown capacitance).
Since everything else seems to be in order, I am left wondering if the pin has blown due to overheating caused by 'high speed' switching at about 33KHz.
Is 33KHz considered 'high speed' in this setup?
Has anyone else experienced similar problems with this or other microprocessors ?
Is there a document detailing how to derate microprocessor pins based on their frequency of operation? I can find no mention of derating the Arduino pins in the manuals. Such documentation may exist. I can find no mention of speed / frequency derating of pin capabilities in answers to similar questions on Stack exchange.
Can I supply 40mA for long periods on a single pin at the maximum toggling frequency?
Do I need to consider heating due to switching speeds at this frequency?
Are there other causes I have not thought about that others have experienced?
- Arduino Mega 2560, Ramps 1.4, 600Watt PC Power supply, 120W 24V power supply, Industrial quality opto-isolated stepper controller(Z), 4 off A4988 drivers (X,Y,Extruder), Marlin software