Boy, where are the EE's on this forum when you need them? Seems like when basic 101 topics like this come up, they drop into perpetual lurk mode.FWIW, don't underestimate the difficulty of this problem, :-). RF is magic, and guys who do that tend to be rather specialized, and with deep knowledge. I doubt many guys with EE degrees [like me] have any deep experience in this area. I've done consulting with embedded systems in nasty industrial environments, and EMI/ESD problems tend to tie people in knots, and can take a long time to fix. There isn't ever just "one" magic bullet that fixes everything. It's a systems-level problem that usually takes multiple fixes in various places. So, don't think it's an especially trivial [Basic 101] problem to solve. There are too many variables.
Boy, where are the EE's on this forum when you need them? Seems like when basic 101 topics like this come up, they drop into perpetual lurk mode. ::)
FWIW, don't underestimate the difficulty of this problem, :-). RF is magic, and guys who do that tend to be rather specialized, and with deep knowledge. I doubt many guys with EE degrees [like me] have any deep experience in this area.
Another excellent book on signal integrity is this: http://www.amazon.com/Signal-Power-Integrity-Simplified-2nd/dp/0132349795/
As you'll notice, our Arduino and RPi boards essentially have none of these features designed in.
So, it's best to keep signal pathways low-impedance, eg always have moderately low-value terminating Rs to gnd on I/O pins.So, does that mean from an EMI/RFI standpoint that as standard procedure *all* unused pins should be connected to ground, each with its own dedicated resistor (220 Ohm)?
does that mean from an EMI/RFI standpoint that as standard procedure *all* unused pins should be connected to ground, each with its own dedicated resistor (220 Ohm)?Some people advocate that, but I was mainly referring to pins that have signals being brought to them via wires from off-board. Those wires are simply antennas.
radio.writeReg(REG_OPMODE, (radio.readReg(REG_OPMODE) & 0xE3) | RF_OPMODE_STANDBY); //Put RFM69 into standby-mode
radio.writeReg(REG_RSSITHRESH, 0xFF); //set RSSI threshhold as low as possible
radio.writeReg(REG_OPMODE, (radio.readReg(REG_OPMODE) & 0xE3) | RF_OPMODE_RECEIVER); //Put RFM69 into receive-mode
Serial.print(" [RX_RSSI:");Serial.print(radio.readRSSI());Serial.println("]");
#include <RFM69registers.h>
The receiver is capable of automatic gain calibration, in order to improve the precision of its RSSI measurements. This function injects a known RF signal at the LNA input, and calibrates the receiver gain accordingly. This calibration is automatically performed during the PLL start-up, making it a transparent process to the end-user
@WhiteHare,
From the datasheet:QuoteThe receiver is capable of automatic gain calibration, in order to improve the precision of its RSSI measurements. This function injects a known RF signal at the LNA input, and calibrates the receiver gain accordingly. This calibration is automatically performed during the PLL start-up, making it a transparent process to the end-user
AGC aka Automatic Gain Control is a different beast entirely.
Most conducted and radiated EMI is caused by common mode noise on signals entering or exiting a box. If you tie your box ground to digital ground with a very low DC and RF impedance (large, fat and very short connections) at the point a signal exits or enters the box the common mode noise is significantly reduced. On the power leads a capacitor (e.g. 470nF) with a low RF ground connection to chassis (short, fat connections) tends to get rid of a lot of power-line conducted EMI. A 5mm wire will have significant impedance at RF frequencies and will do very little to stop it, you need wide, fat and very short connections.
Mark.
(I'm assuming your solder blob is at ANT, not the chip RX pin)
An alternative path would be to switch to battery power and provided you can buffer up enough readings, put everything in an 'Altoids' tin.
There is an MCU directly underneath the radio with no decoupling on its power pins, no ferrite filtering on Vdd, tracked in Vdd and no ferrite filtering or decoupling on the radio's power pin. Have you eliminated the MCU's switching noise from this?
Also the noise floor will depend on the width of the RxBw filter, you should program that to the narrowest possible.
Mark.
Radio Configuration:
====================
Receiver-Mode(RX)
Packet Mode, FSK modulation scheme
[ActualBitrate] 4799.760bps = nominal bitrate of 4800bps
[theDccFreq] B10 (equals Semtech default)
[RxBw] 10416Hz
[RxBwMant] 24
[RxBwExp] 5
[theDccFreqAfc] B100 (equals Semtech default)
[RxBwAfc] 50000Hz
[RxBwMantAfc] 20
[RxBwExpAfc] 3
[FDev] 5004Hz
[frequency-center] 915000000Hz
[regLNA] B1001
[LnaZin] B0 -> Input Impedance = 50 ohm (Warning: Semtech default is 200 ohm).
[LnaCurrentGain] B1 -> G1
[LnaGainSelect] B1 -> G1 (Note: Manually selected. AGC disabled.)
^Warning: does not match Semtech default.
[regAFCFEI] B10000
[FeiDone] B0 -> FEI is on-going (i.e. not finished). Matches Semtech default.
[AfcDone] B1 -> AFC is finished (i.e. not on-going). Matches Semtech default.
[AfcAutoclearOn] B0 -> Invalid, because AfcAutoOn is not set.
[AfcAutoOn] B0 -> AFC is performed each time AfcStart is set (i.e. not each time Rx mode is entered).
^Matches Semtech default.
I wonder what the downside is to using it?Nothing comes for free - the Rx current consumption goes up significantly, so this would be a potential issue for battery powered nodes.
Did you already get a chance to try the parts you ordered?