Нестабильная работа при питании от Powerbank
- Войдите на сайт для отправки комментариев
Пнд, 18/03/2019 - 12:54
Доброго времени суток!
В проекте имеется передатчик и приёмник. Связь между ними осуществляется по радиоканалу с помощью модулей nRF24L01. К передатчику подключены два тублера (имитация нормально-замкнутых контактов реле). Передатчик контролирует состояние положения тумлера (замкнута цепь или разомкнута). При размыкании цепи передатчик отправляет посылку на приёмник.
Когда цепь питается от компьютера через USB, посылки приходят мгновенно. Когда питание осуществляется от Powerbank, посылки приходят через раз и с большим запозданием.
Подскажите пожалуйста в чем дело и как решить эту проблему?
1. Кто питается от powerbank? Передатчик или приёмник?
2. Что за передатчик, и что за приёмник?
3. Схема включения?
4. Скетч?
А то у меня тут кот, когда один корм ест, в лоток ходит одним цветом, а когда другой - другим. Не подскажете?
Когда цепь питается от компьютера через USB, посылки приходят мгновенно. Когда питание осуществляется от Powerbank, посылки приходят через раз и с большим запозданием.
Повербанк как подключаете - через USB или еще как?
1. От Powerbank питается передатчик.
2. Передатчик имеется в виду - Arduino UNO + nRF24L01. Приёмник - Arduino NANO + nRF24L01. Приёмник подключен к компьютеру и наличие посылок отслеживается через монитор порта.
3.
4.
01
#include <SPI.h> // Подключаем библиотеку для работы с шиной SPI
02
#include <nRF24L01.h> // Подключаем файл настроек из библиотеки RF24
03
#include <RF24.h> // Подключаем библиотеку для работы с nRF24L01+
04
RF24 radio(9, 10);
// Создаём объект radio для работы с библиотекой RF24, указывая номера выводов nRF24L01+ (CE, CSN)
05
int
data[2];
// Создаём массив для передачи данных (так как мы будем передавать только одно двухбайтное число, то достаточно одного элемента массива типа int)
06
// Для данного примера, можно использовать не массив data из одного элемента, а переменную data типа int
07
int
rele1 = 6;
08
int
rele2 = 8;
09
10
11
void
setup
(){
12
radio.begin();
// Инициируем работу nRF24L01+
13
radio.setChannel(5);
// Указываем канал передачи данных (от 0 до 127), 5 - значит передача данных осуществляется на частоте 2,405 ГГц (на одном канале может быть только 1 приёмник и до 6 передатчиков)
14
radio.setDataRate (RF24_1MBPS);
// Указываем скорость передачи данных (RF24_250KBPS, RF24_1MBPS, RF24_2MBPS), RF24_1MBPS - 1Мбит/сек
15
radio.setPALevel (RF24_PA_HIGH);
// Указываем мощность передатчика (RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_HIGH=-6dBm, RF24_PA_MAX=0dBm)
16
radio.openWritingPipe (0xAABBCCDD11LL);
// Открываем трубу с идентификатором 0xAABBCCDD11 для передачи данных (на ожном канале может быть открыто до 6 разных труб, которые должны отличаться только последним байтом идентификатора)
17
18
pinMode(rele1, INPUT);
19
pinMode(rele2, INPUT);
20
21
}
22
23
void
loop
(){
24
if
(digitalRead(rele1) == LOW)
25
{
26
data[0] = 1, radio.write(&data,
sizeof
(data));
27
}
28
else
if
(digitalRead(rele1) == HIGH)
29
{
30
data[0] = 0, radio.write(&data,
sizeof
(data));
31
}
32
33
if
(digitalRead(rele2) == LOW)
34
{
35
data[1] = 1, radio.write(&data,
sizeof
(data));
36
}
37
else
if
(digitalRead(rele2) == HIGH)
38
{
39
data[1] = 0, radio.write(&data,
sizeof
(data));
40
}
41
42
}
Через USB
Сразу вижу, что кнопки в воздухе болтаются. Посмотрите правильное подключение: https://www.arduino.cc/en/tutorial/button или почитайте про INPUT_PULLUP.
Через USB
то есть от USb компа все работает, а от повербанка - нет? - скорее всего повербанк дохлый или разряженный в ноль.
Подлючите Повербанк и померяйте тестором напряжение между контактами 5v и GND на ардуине.
Через USB
то есть от USb компа все работает, а от повербанка - нет? - скорее всего повербанк дохлый или разряженный в ноль.
Подлючите Повербанк и померяйте тестором напряжение между контактами 5v и GND на ардуине.
При подключенном Powerbank, питание между контактами 5V и GND - 4.99V. При включении тумблеров напряжение также остается неизменным.
При подключенном Powerbank, питание между контактами 5V и GND - 4.99V. При включении тумблеров напряжение также остается неизменным.
в яем тогда выражается нестабильная работа?
в яем тогда выражается нестабильная работа?
Когда питание от компьютера, при открытом мониторе порта приёника, посылки приходят мгновенно при переключении тумблеров.
Когда питание от Powerbank, посылки приходят либо с запозданием в 20-30 секунд, либо сразу.
Суть в том, чтобы посылки приходили сразу, даже при кратковременном переключении тумблера. При питании от POwerbank этого не наблюдается. Если тумблер включить и тут же выключить (или даже через секунд 5) посылка вряд ли придет.
прислушайтесь к совету #5 - при такой схеме, как у вас, тумблеры будут срабатывать случайным образом. Вполне возможно, что внешне это будет выглядеть именно как у вас - при одном питаниии все ОК, при другом - глюки.
а если так
01
#include <SPI.h> // Подключаем библиотеку для работы с шиной SPI
02
#include <nRF24L01.h> // Подключаем файл настроек из библиотеки RF24
03
#include <RF24.h> // Подключаем библиотеку для работы с nRF24L01+
04
RF24 radio(9, 10);
// Создаём объект radio для работы с библиотекой RF24, указывая номера выводов nRF24L01+ (CE, CSN)
05
int
data[2];
// Создаём массив для передачи данных (так как мы будем передавать только одно двухбайтное число, то достаточно одного элемента массива типа int)
06
// Для данного примера, можно использовать не массив data из одного элемента, а переменную data типа int
07
int
rele1 = 6;
08
int
rele2 = 8;
09
10
void
setup
() {
11
radio.begin();
// Инициируем работу nRF24L01+
12
radio.setChannel(5);
// Указываем канал передачи данных (от 0 до 127), 5 - значит передача данных осуществляется на частоте 2,405 ГГц (на одном канале может быть только 1 приёмник и до 6 передатчиков)
13
radio.setDataRate (RF24_1MBPS);
// Указываем скорость передачи данных (RF24_250KBPS, RF24_1MBPS, RF24_2MBPS), RF24_1MBPS - 1Мбит/сек
14
radio.setPALevel (RF24_PA_HIGH);
// Указываем мощность передатчика (RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_HIGH=-6dBm, RF24_PA_MAX=0dBm)
15
radio.openWritingPipe (0xAABBCCDD11LL);
// Открываем трубу с идентификатором 0xAABBCCDD11 для передачи данных (на ожном канале может быть открыто до 6 разных труб, которые должны отличаться только последним байтом идентификатора)
16
17
pinMode(rele1, INPUT_PULLUP);
18
pinMode(rele2, INPUT_PULLUP);
19
}
20
21
void
loop
() {
22
data[0] = digitalRead(rele1);
23
data[1] = digitalRead(rele2);
24
radio.write(&data,
sizeof
(data));
25
}
the scheme can't function from the TS. sir, xDriver +10500001)
Сразу вижу, что кнопки в воздухе болтаются. Посмотрите правильное подключение: https://www.arduino.cc/en/tutorial/button или почитайте про INPUT_PULLUP.
прислушайтесь к совету #5 - при такой схеме, как у вас, тумблеры будут срабатывать случайным образом. Вполне возможно, что внешне это будет выглядеть именно как у вас - при одном питаниии все ОК, при другом - глюки.
поставил резисторы по 10кОМ, все стабильно заработало. Спасибо большое!
а если так
Спасибо! Позже попробую
the scheme can't function from the TS. sir, xDriver +10500001)
Роза, Вы, когда на православном писали, перевод лучше был.))))
Dear sir, bwn have a nice day!
i'm going to try. i'm sorry/\
Та ладно, шучу я.))))