MSR1 translator Lesson 1: driving capacitive loads. ATTN Stingray users.
I got spanked hard in my development time-frame·and learning the effect of capacitive·load has upon the TX0108 level translator on the MSR1 board, so I thought I would share to help others.
The TX0108 level translator is both an input and output device (on the pins available) on the MSR1 board. It is NOT designed to drive heavy capacitive loads.
The TX0108 uses internal·one shot timers to place an output, then change to input function after the one-shot time out, then after the input time-out will switch to output again.·The TX0108 also senses the level of the output when it switches to input mode (it is a bi-directional translator).
If you attempt to send a 1 to the output on a highly capacitive load (greater than 70pF) it will take longer for the output to "charge (RC time constant) that line to a 1, before the The TX0108 switches back to input mode (the one-shot times out). Because the long RC charge time the voltage at the translator will NOT be a valid high or 1 and the translator will switch to put out a 0.
This can be seen with an O-Scope on the pins and observing the outputs on x1 (~70 pF), or x10 (~15 pF), on the x1 the output will oscillate at about 2.1 volts,but never reach the CMOS necessary 90% of Vcc for a valid 1 input, however, on a x10 probe setting will follow the input just fine.
Case in Point: I was trying to drive a pair of HB25s, and was doing·OK with standard servo wires, except I had alien cross-talk (ACT) between the two cables. If I sent a signal to one servo the other servo would inductivly pick up the signal un-expectadely once in a while.
I changed the wires to a shielded two wire audio cable to shield the ACT.· The servos would not work at all. I looked at the signal with a scope and the signal oscillated to about 2.0 volts.·I checked again without the servo on a x1 probe and still oscillation. After a meeting with an engineer from Parallax David who explained the capacitive loading, I tried the x10 setting on my probes and had a clean signal. It was capacitive loading.
My Fix: I installed and set up the jumpers and headers on the MSR1 board to use the Prop levels before the translators. Although these levels are 3.3 V cmos they do meet the levels for Vih for the TTL level (approx 2.4 V) for the HB25s, they still can not drive a heavy load, but they don't have the oscillation of the translator switching from input to output. The shielded audio cable was too capacitive for the translator to drive before the one-shot time out from input to output, but work fine off the Prop directly.
Conclusion: The outputs or inputs of the translators seem to be okay with standard sensors such as the ping, but if you are trying something different, such as driving HB25s, consider the capacitive loading RC time constant and the transition time (0.8 nS mS) of the translators one-shot I to O time out. The output may switch or not switch states before the attached line is charged to the state that you desire, and the input state of the translator will recieve a low and output that previous state as a feedback loop to output an oscillation as a function of its own one-shot frequency.
I hope this helps someone avoid this issue. Please let me know if this is useful.
rpdb
Post Edited (rpdb) : 3/25/2010 3:28:10 AM GMT
The TX0108 level translator is both an input and output device (on the pins available) on the MSR1 board. It is NOT designed to drive heavy capacitive loads.
The TX0108 uses internal·one shot timers to place an output, then change to input function after the one-shot time out, then after the input time-out will switch to output again.·The TX0108 also senses the level of the output when it switches to input mode (it is a bi-directional translator).
If you attempt to send a 1 to the output on a highly capacitive load (greater than 70pF) it will take longer for the output to "charge (RC time constant) that line to a 1, before the The TX0108 switches back to input mode (the one-shot times out). Because the long RC charge time the voltage at the translator will NOT be a valid high or 1 and the translator will switch to put out a 0.
This can be seen with an O-Scope on the pins and observing the outputs on x1 (~70 pF), or x10 (~15 pF), on the x1 the output will oscillate at about 2.1 volts,but never reach the CMOS necessary 90% of Vcc for a valid 1 input, however, on a x10 probe setting will follow the input just fine.
Case in Point: I was trying to drive a pair of HB25s, and was doing·OK with standard servo wires, except I had alien cross-talk (ACT) between the two cables. If I sent a signal to one servo the other servo would inductivly pick up the signal un-expectadely once in a while.
I changed the wires to a shielded two wire audio cable to shield the ACT.· The servos would not work at all. I looked at the signal with a scope and the signal oscillated to about 2.0 volts.·I checked again without the servo on a x1 probe and still oscillation. After a meeting with an engineer from Parallax David who explained the capacitive loading, I tried the x10 setting on my probes and had a clean signal. It was capacitive loading.
My Fix: I installed and set up the jumpers and headers on the MSR1 board to use the Prop levels before the translators. Although these levels are 3.3 V cmos they do meet the levels for Vih for the TTL level (approx 2.4 V) for the HB25s, they still can not drive a heavy load, but they don't have the oscillation of the translator switching from input to output. The shielded audio cable was too capacitive for the translator to drive before the one-shot time out from input to output, but work fine off the Prop directly.
Conclusion: The outputs or inputs of the translators seem to be okay with standard sensors such as the ping, but if you are trying something different, such as driving HB25s, consider the capacitive loading RC time constant and the transition time (0.8 nS mS) of the translators one-shot I to O time out. The output may switch or not switch states before the attached line is charged to the state that you desire, and the input state of the translator will recieve a low and output that previous state as a feedback loop to output an oscillation as a function of its own one-shot frequency.
I hope this helps someone avoid this issue. Please let me know if this is useful.
rpdb
Post Edited (rpdb) : 3/25/2010 3:28:10 AM GMT
pdf
699K
Comments
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Powered by enthusiasm
Though a series resistor may help, a high it may be but to be sure it depends upon wich end of the capacitive line that you place it (the Prop end or the sensor end). I tried both pull up and down resistors at different values. It all boils down to the RC time constant of the load vs. the I:O turnaround of the translator chip. A series resistor at the translator end will develop a high voltage across itself, but only during the high parabolic charge duration of the capacitive load. If matched correctly, that will work, but if the frequency of the I/O pin changes, it will affect the RC time constant.
Have you tested that series resistance for all possible frequency out-Puts of that pin? Under many different capacive loads? I guess I am trying to perfect for reliability. If you have the ability, please check the voltage output to see if it might be that during the "window" that you check it is OK,but after changes to a non-expected value of less than 2.4 V for a high.
I am interested if you find differences in what I found.
rpdb
..