1
\$\begingroup\$

I've built this PCB which includes two I2C port expanders, an Arduino nano, inputs for buttons and encoders, and headers to plug in an NRF24L01 board.

PCB

Currently, I just have code running to read two encoders plugged into J12 and J11 on this schematic, and send how far each of them have turned over the serial port.

schematic

This all works perfectly; the problem comes when I plug in the NRF24L01 into the headers on the board. As soon as I do, the Arduino disconnects from the PC; I get the little noise from Windows, both the COM port and the device disappear, and it resets the Arduino. However, I can still see the TX LED light up, so the code is still running and the data is transmitting over serial, the PC just doesn't see it anymore. As soon as I remove the NRF board, the nano reconnects and works as usual.

I've tried plugging in an external power source and get the exact same behavior, so I don't believe it's an issue of the NRF drawing too much power. I've tried several different NRF boards as well, so it isn't an issue with the specific board I have plugged in.

What could my problem be?

\$\endgroup\$
11
  • \$\begingroup\$ the problem is that you are not disconnecting power before you plug in the NRF24L01 ..... do not plug in live ........... by the way, the schematic is unreadable \$\endgroup\$ Commented Aug 10, 2018 at 3:30
  • 1
    \$\begingroup\$ @jsotola Plugging the NRF before I connect power has no effect, the arduino does not connect to the PC. I know the schematic isn't great, I'm pretty new to KiCAD and don't know how to make a well-formatted schematic yet. \$\endgroup\$ Commented Aug 10, 2018 at 3:56
  • \$\begingroup\$ fixed the picture resolution ... should be visible once the changes are accepted \$\endgroup\$ Commented Aug 10, 2018 at 4:04
  • \$\begingroup\$ What do you mean "plugging in an external power source"? The NRF24L01 is consumer, not source... \$\endgroup\$ Commented Aug 10, 2018 at 4:59
  • \$\begingroup\$ @AliChen the poster did exactly what they said they did. Plugging in the NRF24 and plugging in an external power source are two distinct operations on two distinct parts of the system. This kind of misreading of questions leading to irrelevant responses seems to be rather frequent for you; please try to read them through a few times before responding. \$\endgroup\$ Commented Aug 10, 2018 at 5:10

2 Answers 2

3
\$\begingroup\$

In your design the 3.3V power to NRF24L01 is coming from Arduino Nano USB interface chip, which is FT232RL. The internal FT232 regulator can only supply 50 mA, "Up to 50mA can be drawn from this pin to power external logic if required". the FT232 specs says.

The 50 mA regulator is a pretty weak source. While the spec says the NRF24L01 draws only "11 mA" in transmit", I suspect it draws much more than that in bursts. More, the NRF24L01 requires the power to be bypassed by "high performance RF capacitor" of 4.7 uF. Your board has a junky aluminum electrolytic cap, which likely has no bypass capability at burst frequencies the NRF24L01 operates at.

So essentially you inject huge noise into USB PHY power rail, and the USB signals (or their frequency) are likely got severely distorted, which causes the host to detect massive errors and shut the port down.

To fix the problem you need to place a 10 uF low-ESR ceramic capacitor right between pins of NRF24L01 2x4 header, and better de-couple it from Arduino pin14 (3.3V) with a good ferrite bead or good inductor, to filter the noise from entering the FT232 IC.

\$\endgroup\$
2
  • \$\begingroup\$ The nano I have uses a CH340G, so I'm not sure what that is rated for, but I'm willing to bet it isn't 50mA. Moreover, the NRF24L01 board I'm using draws 71mA. I'm going to try running it off of the 5V line with a 3.3V LM317 regulator and see if that fixes my problem. \$\endgroup\$ Commented Aug 10, 2018 at 6:23
  • \$\begingroup\$ @LiamJ., the CH340 also have similar internal regulator, pin "V3". It gets sourced to pin14 of the header. So same thing happens, the noise gets injected. But you also need to check the theory of super-Chris, overloading the supply. Did you check the 3.3V rail when the NRF24L01 is in place? \$\endgroup\$ Commented Aug 10, 2018 at 6:40
2
\$\begingroup\$

Nevermind, I'm an idiot. My problem was unrelated to any power issues. I noticed that 70mA seemed much too high for a chip that's supposed to draw 12mA at the absolute most, and after taking a closer look at the PCB, I realized I swapped the two rows of four pins horizontally, so every pin was connected wrong. After wiring it correctly with jumper cables, the problem is solved and the NRF works fine.

\$\endgroup\$
4
  • 1
    \$\begingroup\$ Thanks for the update. Don't forget to accept this answer to show that the problem is solved. \$\endgroup\$ Commented Aug 10, 2018 at 7:25
  • \$\begingroup\$ Yes, the 71 mA was indeed odd. I wouldn't have expected either full normal power draw, or any noise getting back into the USB, until the chip had been configured by software to actually operate as a radio. \$\endgroup\$ Commented Aug 10, 2018 at 17:24
  • \$\begingroup\$ Seems like if you remove that right angle header and put it on the opposite side of the module PCB, that might fix your pin swap. \$\endgroup\$ Commented Aug 10, 2018 at 17:25
  • \$\begingroup\$ Yep, you have to thank the weak 3.3V LDO in your USB interface chip so it would limit the short current to just 70 mA, otherwise your NRF24L01 would smoke. When bringing something up, always check power first, then reset, then clock(s). \$\endgroup\$ Commented Aug 10, 2018 at 17:53

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.