3

First time poster here, please excuse holes in the plot.

I have a simple wireless design made of an MCU (atmega328p) and an NRF24L01 module, powered through a 3.3V regulator, talking to a similar board on the other side. This has been working well so far as a through-hole design, so I made a surface-mount version.

schematic

board

assembled result

Through-hole version above, SMD version below.

As you can tell, the RF module sits above some of the components of the board, although I took care to not put any copper under the antenna. In the through-hole version, there is no copper or components at all under the whole module. There are also a few other differences that I believe don't matter here (the SMD version does not using any crystal, adds some fuses, uses different I/O pins).

With the through-hole version, I could easily get over 10m range. With the SMD version, most messages do not get received even when the boards are cm apart (the receiving end is the same in all tests, in this case an Arduino Nano hooked to a similar RF module).

What I have noticed, though, is:

  • When I power the board via the ICSP port (bypassing the regulator), transmission works fine (I thought this might indicate not enough capacitance, but adding a 470uF cap in parallel doesn't fix anything, so I don't thing it's that)
  • When powered through the regulator (target use case), transmission fails unless I do one of these:
    • Putting my finger on the VCC or MISO pin of the ICSP port (putting my finger on any other ICSP pin doesn't change anything. Touching the same VCC and MISO signals anywhere else on the board doesn't make transmission work).
    • Touching the antenna with a finger or a few cm of wire
    • Reducing PA level to MIN or LOW (but that reduces range to just a couple meters). I originally had it set to MAX or HIGH.

My impression is that my design is somehow screwing up the RF module's antenna, and touching some specific parts of the board with a wire or a hand somehow corrects for that and allows the signal to be sent correctly. But as I know close to nothing of RF transmission, I don't know exactly what I am doing wrong.

I am happy to change my design, but I would like to understand what is wrong with it and in which direction I must take it.

Is it being disturbed by the chips under the module, or does this not matter? Is the clearance I gave the antenna not wide enough, or on the contrary, should I have not put any clearance under the antenna in the first place? Should I just solder some extra wire to the antenna (if so, how much? and why?)

I just don't really know which way to go and I'd rather avoid building 100 versions to find out. I'm also not sure of what I can do to find out more (right now the most sophisticated tool I have at my disposal is a multimeter - could a scope tell me more?).


Edit, answering the comments:

  • Yes, connecting the RF module through jumper wires also makes transmission work.
  • I cannot find any evidence of the RF module getting its power through the IO pins instead of the power rail. I am seeing 3.3V all the way through to the module.
  • The regulator is pretty much the same. They're both 1117V33 types. The SOT23 is a AZ1117IH, the TO220 is a LD1117V33.
  • 1
    You could check your assumption by connecting the NRF with a few cm of cables. But my hunch is that you somehow didn't connect the power and are powering the NRF via its IO pins. – Wouter van Ooijen Dec 30 '18 at 09:02
  • 1
    You also switched the regulator. What is you solder your regulator? Maybe its oscillating. What if you put the TO220 regulator on your SMD board? – Wouter van Ooijen Dec 30 '18 at 09:04
  • "connecting the RF module through jumper wires also makes transmission work" - that is interesting. Your uC crystal is now right behind the NRF? Maybe the transmission is interfering with the clock or some other sensitive signal. Could you run the AVR on its internal clock? – Wouter van Ooijen Dec 30 '18 at 09:50
  • The AVR is running on its internal clock, there isn't any external crystal in this version. – user1924406 Dec 30 '18 at 11:21
  • Long shot, but does that internal-clock veresion also run OK on the TH board? – Wouter van Ooijen Dec 30 '18 at 11:24
  • Yes the through-hole board works with the internal clock as well (I tested it before deciding to ditch the crystal in the SMD version). Given that the RF module has its own crystal, I didn't think the precision of the MCU's clock would matter much. – user1924406 Dec 30 '18 at 11:26
  • It shouldn't. Your problem mightb be some weird RF problem (in which case I can't help you much), but I would try to dig down on every differnce you can find. the 'putting your finger on the xxx line', does applying a pull-down resister work too? Does connecting a 20 cm wire work too? – Wouter van Ooijen Dec 30 '18 at 11:29
  • You said that adding big elco to the NRF power didn't make a change. Does adding a good-quality 100nF make any change? – Wouter van Ooijen Dec 30 '18 at 11:30
  • Place an electrolytic on the regulator Vout, to alter the feedback loop and possibly halt any oscillation. – analogsystemsrf Dec 30 '18 at 15:40
  • There already is an electrolytic 100uF and a ceramic 10uF on the regulator's Vout. Tacking another 47nF ceramic doesn't make a change, unless it's on the ICSP pins, in which case it doesn't even need to touch gnd, so it's the same effect as a piece of wire. Same for a pull-down. In fact, just hovering a resistor or a 20cm piece of wire above the board in the right place, without touching any part of it, makes transmission work... – user1924406 Dec 31 '18 at 05:21
  • After some more googling, I found these two posts, which seem quite close to my problem: https://forum.arduino.cc/index.php?topic=525421.0 and https://forum.mysensors.org/topic/5995/pcb-design-with-nrf24l01-and-arduino-pro-mini. In both cases, it seems that the pcb or components shielding the RF module are the culprits. I guess I'll have to try and redesign it in a different way. – user1924406 Dec 31 '18 at 05:50

0 Answers0