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.
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.