PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : NRF24 Powermudule laufen nicht?



basteluwe
09.01.2021, 16:39
Hallo Forum,
Ich habe eine kleine Testroutine für NRF24 Module an Arduino Nano am Laufen- Aufbau und Codes sind im Wesentlichen nach diesem Tutorial (http://www.electronoobs.com/eng_arduino_tut25.php).

Mit zwei Standard-Power Modulen wie diesen hier:
35426
Läuft die Übertragung problemlos.

Wenn ich aber auf der Sendeseite den HF-stärkeren "NRF24L01+PA" (seiehe Bild)
35427
einsetze, ist Schluß mit lustig. Ich bekomme keine Übertragung hin.

Beide Module hängen an den 3,3V des jeweiligen Nano, parallel sitzt der empfohlene 10uF C. Die Pin-Beschaltung des Powermoduls ist offensichtlich gleich wie beim Standard-Power. Leider habe ich nur ein Datenblatt für den Standand finden können, nicht für den Powertyp.
Seltsam finde ich die Stromaufnahme: Standard-NRF + Arduino nehmen beim Einschalten für kurze Zeit ca. 27mA auf. Dann springt der Strom auf 40 mA und bleibt dort stabil. Wenn aber der Power-NRF am Nano hängt, ist so ein verzögerter "Anstieg" nicht erkennbar. Der Strom ist konstant ca. 35mA, also sogar niedriger als beim Standard-Typ??? :confused:

Nachdem ich beim ersten Powermodul diesen Fehlschlag hatte, habe ich zwei weitere Exemplare bestellt. Alle drei sind allerdings in gleicher Weise "Arbeitsverweigerer".

Zur Vollständigkeit hier der Code für den Sendeteil;

/* Tranmsitter code for the Arduino Radio control with PWM output
* Install the NRF24 library to your IDE
* Upload this code to the Arduino UNO, NANO, Pro mini (5V,16MHz)
* Connect a NRF24 module to it:

Module // Arduino UNO,NANO

GND -> GND
Vcc -> 3.3V
CE -> D9
CSN -> D10
CLK -> D13
MOSI -> D11
MISO -> D12

This code transmits 1 channels with data from pins A0 POTENTIOMETER
Please, like share and subscribe : https://www.youtube.com/c/ELECTRONOOBS
*/

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

const uint64_t my_radio_pipe = 0xE8E8F0F0E1LL; //Remember that this code should be the same for the receiver

RF24 radio(9, 10);

// The sizeof this struct should not exceed 32 bytes
struct Data_to_be_sent {
byte ch1;
};

Data_to_be_sent sent_data;



void setup()
{
radio.begin();
radio.setAutoAck(false);
radio.setDataRate(RF24_250KBPS);
radio.openWritingPipe(my_radio_pipe);
sent_data.ch1 = 127;

}

/**************************************************/


void loop()
{
/*If your channel is reversed, just swap 0 to 255 by 255 to 0 below
EXAMPLE:
Normal: data.ch1 = map( analogRead(A0), 0, 1024, 0, 255);
Reversed: data.ch1 = map( analogRead(A0), 0, 1024, 255, 0); */

sent_data.ch1 = map( analogRead(A0), 0, 1024, 0, 255);

radio.write(&sent_data, sizeof(Data_to_be_sent));
}
Und hier für den Empfänger:

/* Receiver code for the Arduino Radio control with PWM output
* Install the NRF24 library to your IDE
* Upload this code to the Arduino UNO, NANO, Pro mini (5V,16MHz)
* Connect a NRF24 module to it:

Module // Arduino UNO,NANO

GND -> GND
Vcc -> 3.3V
CE -> D9
CSN -> D10
CLK -> D13
MOSI -> D11
MISO -> D12

This code receive 1 channels and prints the value on the serial monitor
Please, like share and subscribe : https://www.youtube.com/c/ELECTRONOOBS
*/


#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

const uint64_t pipeIn = 0xE8E8F0F0E1LL; //Remember that this code is the same as in the transmitter
RF24 radio(9, 10); //CSN and CE pins

// The sizeof this struct should not exceed 32 bytes
struct Received_data {
byte ch1;
};

int ch1_value = 0;
Received_data received_data;




/**************************************************/

void setup()
{
Serial.begin(9600);
//We reset the received values
received_data.ch1 = 127;

//Once again, begin and radio configuration
radio.begin();
radio.setAutoAck(false);
radio.setDataRate(RF24_250KBPS);
radio.openReadingPipe(1,pipeIn);

//We start the radio comunication
radio.startListening();

}

/**************************************************/

unsigned long last_Time = 0;

//We create the function that will read the data each certain time
void receive_the_data()
{
while ( radio.available() ) {
radio.read(&received_data, sizeof(Received_data));
last_Time = millis(); //Here we receive the data
}
}

/**************************************************/

void loop()
{
//Receive the radio data
ch1_value = 0;
receive_the_data();


ch1_value = map(received_data.ch1,0,255,1000,2000);
Serial.println(ch1_value);
delay(500);

}//Loop end

Ich mag nicht recht glauben, dass ich drei defekte Module in zwei Lieferungen erwischt habe. Allerdings waren sie vom selben Lieferanten.
Irgendwelche Ideen von Euch, was das Problem sein könnte?

Gruß und schönes Wochenende
Uwe

basteluwe
10.01.2021, 10:37
Ein kurzer Nachtrag:

1. Sorry für den Typo im Titel
2. Auf der Sendeseite wo das Power-Modul sitzt, habe ich jetzt einen separaten 3,3V Regler zur Spannungsversorgung eingesetzt. Das Resultat ist unverändert.
3. Die Herkunft der drei Power-Module habe ich nochmal gecheckt. Sie kammen NICHT vom selben Lieferanten. Die zwei Nachbestellten hatte ich woanders bezogen. Damit scheint es eher unwarscheinlich, daß ich drei defekte Module geliefert bekommen hatte.

Ziemlich ratlos
Uwe

WL
10.01.2021, 12:32
..... habe ich jetzt einen separaten 3,3V Regler zur Spannungsversorgung eingesetzt. Das Resultat ist unverändert.


Das Datenblatt sagt:

1.9 to 3.6V supply range

wenn du vorher mit VDD=5V versorgt hast, kannst du sie entsorgen!

basteluwe
10.01.2021, 18:21
wenn du vorher mit VDD=5V versorgt hast, kannst du sie entsorgen!

Hab ich nicht! Die NRFs haben nie 5V bekommen. Wie ich im ersten Post geschrieben hatte, lagen sie ursprünglich am 3,3V Ausgang des Nano. Erst heute morgen habe ich für das Sende-Modul einen separaten 3,3V Regler eingesetzt, nur um sicher zu sein, daß nicht zuviel Strom aus dem 3,3V Pin des Nano gezogen wird.

Gruß Uwe

WL
10.01.2021, 18:36
Ich hatte bei den Modulen mit dem HF-Booster den Effekt bemerkt, das die Sendeleistung des nRF24L01 reduziert werden musste.
Scheinbar übersteuert da etwas....
Reduzier mal den Output Reg.06 (RF_SETUP) auf '00' – -18dBm.

basteluwe
11.01.2021, 11:34
Reduzier mal den Output Reg.06 (RF_SETUP) auf '00' – -18dBm.

Genau DAS war es! Alle drei Power-Module laufen jetzt. Der Fehler lag ganz offensichtlich in zu hoher HF-Leistung im Nahfeld.
Ich musste im Setup-Code nur den Befehl radio.setPALevel(0); einfügen.
In der von mir verwendeten Library RF24.h ist dieser Befehl mit 4 möglichen Levels belegt:
-18 dBm =0
-12 dBm =1
-6 dBm =2
0 dBm =3

Vielen Dank für die Hilfe!

Gruß Uwe