I am curious about the diode that is used in the XBee shield for Arduino.
I assume this is used for voltage protection for 5V systems. Using the Due (3.3V operating voltage), do I need this diode at all? Can I just short this?
People in this thread talk about configuring the input pins of the XBee to have internal pull-up resistors to 3.3v.
Pulsing the DIN pin, even with the diode should still work. On the controller side, if you have a high (3.3v), there will be no forward bias current, but if you go to a low (0v) the internal pull-up in the XBee will cause a forward voltage pulling the pin low.
This is interesting because using this diode prevents high voltage signals from going into the XBee.
Can someone confirm with me the ability to configure the internal pull-up resistors for the S1 Version of the XBee, possibly in the X-CTU software?
I found documentation for S2 AT commands, but I cannot find for S1.
With the series diode between the XBee din pin and the processor’s Dout pin and the XBee’s pull-up enabled.
When the processor outputs a logic high (3.3 or 5V) the diode ‘blocks’ this since its reversed. The XBee’s pull-up then provides a logic high (3.3V) to the XB’ees Din pin.
When the processor outputs a logic a logic low (0V) the diode conducts and pulls the Din pin the 0V plus the diodes forward Voltage drop (about 0.4V or higher).
If you read more threads on the forum here and other places you’ll find that this higher than 0.4V as a logic low has caused some people trouble. In these cases changing the diode to a resistor divider (for 5V processors) or shorting out the diode (for 3.3V processors) fixes the issue.
If The XBees properly receives data from your processor with the diode in place than leave it there. If not and the processor is 3.3V then short out the diode. Also if you short out the diode then you don’t need to enable the pull-up. But do not connect to the 5V logic as that will damage the XBee Din pin.
The XBee AT command for the pull-up enables is PR.
Did you download the XBees S1 document from Digi Int?
Thank you for your great explanation on this matter.
A question though. From your explanation it seems that the xbee has issues identifying a logic low of 0.4V (forward voltage drop of the diode. This means that the xbee will just read all logic highs. If that is the case, can you just replace the diode with a different diode with a smaller voltage drop? I am sure the xbee has a maximum logic low voltage range.
I ask this because I learned about this diode issue shortly after I sent my board for manufacturing. Now that the footprint will be on board. I am just wondering if I can just use a different diode to fill in this footprint? (Rather than soldering a lead to short it.
Also I appreciate your guidance on the S1 AT commands. Based on your next answer to my concern, I will enable/disable the internal pull-up.
The diode SparkFun uses has a low Vfd so another diode type will not help. If you built this be sure to use a Schottky diode with a low Vfd.
The problem isn’t if the Din Voltage is 0.4V its when this Voltage is higher due to the processor not driving its output pin fully to 0V but around 0.2 to 0.4Volt which then puts the Din pin at 0.6 to 0.8V which is not a valid logic low.
Due to variations you may or may not have trouble. So testing will determine what you need to do.
Ah okay, I understand. Since I am making my board and I am stuck with this footprint. I will try to use a smaller voltage drop diode, so even with variations, the processor may still recognize the low logic.
I will let you know how it goes. Worst case scenario, I will just short the pads on the board.