FM Stereo Transmitter - Si4713 Not Transmitting

For other supported Arduino products from Adafruit: Shields, accessories, etc.

Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.
Locked
User avatar
AParanoidDroid
 
Posts: 1
Joined: Sun Nov 16, 2014 1:31 am

FM Stereo Transmitter - Si4713 Not Transmitting

Post by AParanoidDroid »

I recently purchased this FM transmitter and wired it up to an Arduino Uno according to the wonderful tutorial provided on the product page. I tried testing with the example code from the library, using an RTL-SDR tuned to 102.3. It didn't transmit anything, then worked once after some obscure rebooting/unplugging sequence, now nothing transmits again, through the serial port monitor provides the output shown below:

Code: Select all

Adafruit Radio - Si4713 Test

Tuning into 102.30

Set TX power	Curr freq: 10230
	Curr freqdBuV:115
	Curr ANTcap:125
RDS on!
	Curr ASQ: 0x1
	Curr InLevel:-9
	Curr ASQ: 0x5
	Curr InLevel:-9
	Curr ASQ: 0x5
	Curr InLevel:-9
	Curr ASQ: 0x5
	Curr InLevel:-10
	Curr ASQ: 0x5
	Curr InLevel:-9
I decided to uncomment the power scan code to see if it the numbers provided made sense for stations in my area. After uploading the code with the power scan enabled, the transmitter works started working. I commented the code out again and the transmitter stopped working again. Rather than wait for the whole spectrum scan to complete, I added a single call after the commented out block:

Code: Select all

  // Uncomment to scan power of entire range from 87.5 to 108.0 MHz

/*  for (uint16_t f  = 8750; f<8750; f+=10) {
   radio.readTuneMeasure(f);
   Serial.print("Measuring "); Serial.print(f); Serial.print("...");
   radio.readTuneStatus();
   Serial.println(radio.currNoiseLevel);
   }
   */
   
  
  radio.readTuneMeasure(8750);  
Sure enough, it started transmitting again. I figure there is some sort of timing issue, so i replaced the radio.readTuneMeasure(8750); call with a delay(500) call and, the transmitter still worked. Experimenting with the delay times led me to a value of around 250ms to get the transmitter working every time.

This fix seems to work fine for me, I mainly wanted to post for other who might have the same problem. However, I am curious as to why this works. If anybody has any insights, your knowledge would be greatly appreciated.

User avatar
adafruit_support_mike
 
Posts: 67454
Joined: Thu Feb 11, 2010 2:51 pm

Re: FM Stereo Transmitter - Si4713 Not Transmitting

Post by adafruit_support_mike »

Hmm.. this is strictly a guess, but it could be a startup issue with the crystal oscillator.

Quartz crystals are partly electrical and partly mechanical, and it takes a push to make them start oscillating.. several pushes actually.

All oscillators work by feeding their output back to their input, basically forming an electrical echo chamber. Some of the energy in the signal is lost on each pass through the loop, so the output amplitude has to stay above a certain level for the oscillation to keep going. The amount of energy retained by the loop can be measured in terms of how many times the circuit will oscillate from a single push before the amplitude falls to zero, and that parameter is called 'Q'.

The Q of an average quartz crystal is usually between 50,000 and 150,000.

When you apply power to a crystal oscillator, it starts from rest and its output isn't large enough to sustain oscillation on its own. Every circuit contains some amount of random electrical noise though, and the parts of the noise at the crystal's resonant frequency will stay in the feedback loop for 50,000 to 150,000 cycles. If you have enough noise, the resonant bits will accumulate until the oscillator's output reaches the self-sustaining level.

Thing is, the faster that happens, the easier it is for that same noise to mess up the oscillator's frequency stability while it's running. You want enough noise to get the thing going, but not enough to cause trouble once it *is* going.

As a result, good quality oscillators are designed to ramp up gradually, from lots of small noise contributions that will be swamped out by the main signal once the oscillation is self-sustaining. 250ms is a slightly longer ramp-up period than I'd expect to see in a commercial design, but it would certainly be within tolerances.

Locked
Please be positive and constructive with your questions and comments.

Return to “Other Arduino products from Adafruit”