circuitcellar.com
Magazine Support   Digital Library   Products & Services   Suppliers Directory 
 
 





 

Issue 156 July 2003
Build a Coyote Protocol Converter


WALKING THE COYOTE

It’s pretty obvious that the Coyote is an industrial animal. I realized this when I tried to separate the RCM3010 RabbitCore module from the Coyote’s I/O board. An antivibration screw holds the RCM3010 tightly in its socket. Another giveaway is the presence of heavy-duty Molex headers on the I/O board. The overwhelming presence of the two RabbitNet serial expansion connectors plus an additional RS-485 portal means this little wolf is intended to roam the shop floor. 

After gathering all of these clues, my search for an application for the Coyote ended. You may download the pinout diagram from the Circuit Cellar ftp site. The various communications ports coupled with an ample amount of SRAM, a microprocessor, and a C compiler tailored to the I/O and communications facilities makes the Coyote a perfect protocol converter with ADC and DAC functionality.

The Coyote has polarized Molex terminals. All of the digital I/O is lined up along the bottom edge. J3 is a 10-position header on 0.1" centers and pins out the digital outputs at positions zero through seven (OUT0 through OUT7). 

J3’s pin 9 is removed and pin 10—which is called pin 9 in the pinout diagram—is the K+ input. Connector J3’s OUTX pins can each sink 200 mA. K+ is an external voltage input that ranges from 3.3 to 40 VDC.

If an external K+ voltage is used, it should be able to handle the entire current load for the OUTX pin or the pins being employed. Z-World engineers recommend that you use a K+ voltage for driving solenoids or relays. Doing so prevents voltage spikes from letting the life’s breath out of your Coyote. Using the K+ line as a voltage source point puts a reverse biased relief diode across the load.

K+ and its associated ground are applied to the Coyote using a polarized two-pin 0.156" center connector, J10. The J10 connection point is called the high-power driver source. The K+ pin on J3 is electrically connected to the J10 K+ pin.

Directly below J3 are the digital input pins on J11 and J12. IN00 through IN13 are protected inputs capable of handling input voltages between –36 and 36 VDC. IN14’s input swings only between –36 and 5 VDC. Each INXX input is factory-set to pull up to 3.3 VDC. IN00 through IN07 can be pulled up to K+ or down to ground by moving an SMT 0-W jumper resistor. The filtered inputs—IN00 through IN07 and IN15—use a low-pass filter arrangement consisting of a 22-kW resistor in series with the input on the J1X pin side and a 10-nF capacitor that’s tied to ground on the port side of the 22-kW input resistor.

The analog gallery sits on connector J1, which is on the top right side of the Coyote. Although there are two D/A outputs, only DA1 can be used if the ADC is employed. Note that there aren’t any specialized A/D or D/A ICs on the Coyote. As you can see in Figure 1, the A/D module is actually a pair of LM324 op-amps configured as a window comparator. The idea is to feed a voltage into DA0 until the op-amps’ outputs (PB2 and PB3) are low. If both op-amp outputs are low, the DA0 input voltage is equal to the AD0 voltage.

(Click here to enlarge)

Figure 1—Very clever! DA0 is used to feed the comparison voltage, which is ultimately used as the resulting voltage.

Because the DA0 voltage is known, it’s used as the AD0 input voltage value. Of course, the ideal situation (i.e., PB2 and PB3 being low at the same time) doesn’t always occur, and that’s when the 1-bit high or low readings occur. There’s nothing unusual about that because even specialized conversion ICs exhibit this behavior. The DA0 swings between 0.1 and 3.1 V in 3.22-mV steps inside the 13.2-mV comparator window. This equates to 930 steps and more than 9 bits of resolution.

The DA0 voltage is raised or lowered according to which comparator output is high. For instance, if the PB2 output is high, the DA0 voltage is raised by the application. Conversely, PB3 in a true, or high, state would signal the application to lower the applied DA0 voltage.

You’re probably wondering how this works without a reference voltage. Well, the answer is straightforward: Each Coyote is calibrated, and the calibration constants are retained in the user block data area of the flash memory. Programs are included with the Coyote to assist you in calibrating the ADC or saving and recalling calibration values. Each A/D conversion takes less than 100 ms via my Coyote running with a 29.4-MHz clock.

I don’t like wasting silicon, and it seems as though Z-World engineers don’t either, because they used the remaining op-amps in the LM324 package to assemble the D/A modules you see in Figure 2. Like the A/D module, the D/A module relies on the supply voltage and other factors (e.g., precision resistors) for accuracy without the support of a stable reference voltage. And, like the A/D module, the D/A module can be calibrated. It has software that supports calibration as well as the calibration value storage and retrieval process. 

Looking at Figure 2, it’s clear that the inputs to the op-amps are fed with a PWM signal. Because of my description of the A/D module’s resolution, you already know that the Rabbit 3000 can supply a PWM signal with 10-bit resolution, which allows a D/A output resolution of 3.22 mV. With the D/A circuitry shown in Figure 2 and factory calibration constants stored in flash memory, the Coyote D/A module can deliver a resolution of 3.22 mV with a peak-to-peak ripple of 6 mV over a range of 0.1 to 3.1 V with a 17.5-ms settling time.

(Click here to enlarge)

Figure 2—PWM in, voltage out. It’s that simple.

There’s nothing remarkable or unique about the Coyote’s serial ports. Currently, the RabbitNet ports don’t have anyone to play with, and there’s not much in the way of documentation for them. I know that they are SPI ports running RS-422. The clocked CMOS serial port on J9 gives me the idea that I2C may be another protocol conversion possibility; however, after some checking, the clocked CMOS port isn’t an open-collector port, and the Ethernet port is using the open-collector port I would need for I2C operation (i.e., port D). If I2C were a requirement, I would opt for a Coyote without the Ethernet electronics on the Rabbit module (RCM3110). RS-485 access is also provided on J9, and the pair of RS-232 serial ports is pinned out on J6.