This is about the Sparkfun "SI4735 AM & FM Receiver Shield" is a FM(RDS/RBDS)/AM/SW/LW radio with the Si4735 chip.
UPDATE: Sparkfun no longer sells that shield. This post is here for reference only.
Si4735 chip: http://www.silabs.com/products/audiovideo/amfmreceivers/Pages/Si473435.aspx
This shield has known problems. But they could not explain why my reception was so poor. Most FM radio broadcast antennas are 40km away from where I live, and the shield performed less than other radios.
I had better FM reception if I connected the antenna to a certain ground point on the board. So I looked into the design of the board and found why the reception was so poor.Known problems
- The Si4735 has internal pull-up and pull-down resistors to make it start in I2C mode. The Sparkfun shield uses SPI mode. Because of that seven pins are needed, instead of 2 or 3 (I2C + INT). The newest version of this chip doesn't even have the SPI mode anymore.
- Reading data from the GP01 pin is a problem for 5V Arduino boards. This can be solved by a diode from D12 to GP01. Also the software has to be changed to set the internal pullup resistor and the SPI interface has to be set to a low clock frequency to make it work.
- The audio outputs LOUT and ROUT go to the connector without capacitor. Since they have a DC component, it could be a problem for some amplifiers.
- The AREF is shortcut to ground, making all analog inputs on the Arduino board invalid.
- The FM circuit on the Sparkfun board is copied from the design guide AN383 (Rev 0.6, page 46). However that circuit is for a whip antenna with known parameters. The values for the components has to be calculated. The circuit could have a peak for the FM radio signals and a low-pass filter should not block the maximum SW frequency. Sparkfun simply copied the example values of the components, and didn't read the text with that schematic. This is a bad mistake. The signal gets lost with many sorts of antennas, and with a cable signal.
- The FM circuit was even badly copied. The switch in the example shortcuts the 33pF if the ferrite antenne is used. The Sparkfun shield does not. Also the ESD diodes are omitted. For a well designed radio the ESD diodes must be added.
- I can see only a few vias on the board that connects the ground planes on both sides. For a radio it must have many more. The biggest problem is near the RFGND pin. The components (for example the crystal with the two capacitors) should be placed differently for better radio ground paths.
- The 74HC4050 (signal level shifter) has an open input. One port is not used and the input should be tied to ground or Vcc.
- The power for the Si4735 chip (Vio and Vdd) is an output pin of the 74HC4050. A capacitor of 10uF is used for decoupling. It is not a good design to have an digital output charge a capacitor of 10uF. Also a ceramic capacitor is missing. A capacitor of at least 22nF is recommended.
- The 74HC4050 itself is not decoupled.
- The 74HC4050D absolute maximum output current is 25mA. Charging the capacitor of 10uF is therefor a very bad idea. The Si4735 could require 23mA plus the current of output pins (I measured 19.3mA at 3.3V). So the output current is even not enough without the capacitor. Because of this, the Si4735 is running at 2.3V instead of 3.3V. This is the main reason that the GP01 pin can not be read by the Arduino without modification. The Vdd should be at least 2.7V, so the Si4735 is not even running at a minimum required voltage. This causes for example a bad RDS detection. This is a major mistake.
- The digital audio output can not be used. It would be simple to have breakout pins for the digital audio.
- Metal shielding could improve the FM radio. For example a metal shield over the radio parts, and the possibility to connect a shielded cable.
There are also problems with the software. At Arduino we have the Playground section and the forum. That way a single place for the newest software could be created. The software for the Si4735 has a few versions, each with different improvements.
A good project with the Si4735 is this one: https://umdrive.memphis.edu/tcanaday/www/Projects/Si4735_Radio/si4735.html
But it lacks protection diodes and can't select ferrite antennas for AM and LW.
Question: Could I use reed relays to switch two ferrite antennas (AM and LW) ?