I have built my first prototype of a PIC-based SCR controller board, and I have started preliminary assembly coding and testing. Most of the functions are fairly simple, but I would appreciate comments on the best way to do the required functions and also some which are future enhancements or special purpose variants.
This is a single phase switch used to control loads which range from several hundred milliamps to several hundred amps, at voltages from several volts to about 600 VAC. The load is a transformer which steps down to about12 VAC at currents up to 50,000 amperes with an inductive load (circuit breaker) which may interrupt the flow of current at any point on the waveform.
To minimize DC offset, the initial phase angle is delayed about 60 to 90 degrees. It is adjusted so that all subsequent current peaks are about equal, to produce consistent true RMS readings and breaker operation.
Some problems we have experienced with previous designs are:
(1) Loss of gate triggering to one SCR, causing huge DC currents (2) Large initial current surges due to remanent magnetism (3) Need for remote programmable initial phase angle due to load variations
My new design uses a PIC18F242 which has many advanced features. I have added an RS232 port for possible diagnostics and remote programming, but the main control inputs are INIT, ENABLE, and PULSE. There is a BCD switch to preset a number of cycles in PULSE mode, and a pot to preset nominal phase angle. I also have a CT to measure the SCR current, and optos to provide external phase reference and to sense when either SCR has a voltage on it. I also added a thermistor input for optional temperature sensing.
To solve problem #1, I will first make sure there is voltage of both polarities across the SCRs before allowing initiation. Once gate voltage has been applied, I will check that there is no voltage on the corresponding SCR. An ERROR shutdown will be set if there is a problem, and shut down before the next half-cycle. This should minimize the fault current. No current should flow if the first gate did not cause conduction. If the second gate is faulty, the first half cycle will still cause a large DC surge, although it will be limited to much less than that produced by a second half-cycle.
For problem #2, I may monitor the number of half-cycles that pass through the SCRs, by reading current. An even number of half-cycles should not produce much remanent magnetism, but an odd number will. If that occurs, I might be able to initiate a brief "degaussing" cycle by phase firing both SCRs at a reduced level. This should only occur when the load has tripped. If the load is still connected, I will simply leave the gates on for an additional half-cycle to make an even number.
For #3, the easiest way is to use the RS232 connection to program the phase angle from the remote controller, which also monitors the current waveform and can detect excessive DC offset that needs correction. However, the existing systems have only the INIT signal available, used to turn the SCR on or off. What I plan to do is send a pulse train on the INIT line that will be interpreted as a programming command to preset the phase angle. It would only need to be set from 60 to 90 degrees, and to a precision of 3 degrees, so a string of 1 to 10 pulses could simply be counted and used directly. That may be easier than implementing an eight bit data structure of marks and spaces that would need to be done in software, rather than a USART, although possibly the existing USART could be parallelled to the INIT line and used normally. An algorithm to send data in this format is probably much simpler than to receive it. This will be a future enhancement.
I will be using assembly code for most, if not all, of this project, although I do have a C18 compiler that might be useful for more complex enhancements. I am using a 14.7456 MHz crystal which divides down nicely for standard baud rates and a 7200 per second timer interrupt which provides 3 degrees per tick for phase angle adjustment.
My purpose in posting this is to see if anyone has any suggestions for better ways to implement the required functions, and also if there may be other uses for this board. It could probably be adapted easily as a variable phase-fired controller with voltage or current feedback, and remotely programmed via RS232. It may be useful for welding applications, where a preset number of cycles (or time) may be programmed. The components are not very expensive, perhaps $60 plus $25 for the board, and much of that is the DC-DC converters I chose to use instead of larger but cheaper transformer supplies.