Здравствуйте, делаю машинку на радиоуправлении и возникла проблема с помехами от китайских моторчиков.
Приемник: Ардуино нано, драйвер L298N, NRF24L01 + PA + LNA.
Питание силовой части и логики раздельное. Моторы от 2х 18650, ардуино от кроны, NRF24L01 от кроны через понижайку.
Поставил на моторы керамиру, на адруино и NRF24L01 керамику+электролит.
Без моторов все работает отлично, данные с джойстика на передатчике приходят без искажений.
Как только подключаю моторы в скетче, в данных появляются шумы, в основном добавляется лишний 0 и моторы пляшут - 255 0 255 0 …
Заметил, если держать рукой провода питания моторов, шумов становится заметно меньше. Пробовал скручивать провода питания, оборачивать их фольгой с ее занулением - улучшений нет.
Крону замени на нормальный источник питания. Например отдельные 2 х 18650. Помеха идет не от моторов, а от скачков тока при включении передатчика. Не хватает тока кроны.
Можно попробовать так: запустить отдельно от NRF24L01 ардуино и моторы, залив какой-нибудь скетч из примеров, и посмотреть, останутся ли помехи . Если останутся - оптопары в помощь
можно емкости добавить с контактов моторчика на его корпус, корпус заземлить, можно еще дроссели небольшие добавить непосредственно перед мотором - это все немного ослабляет помехи, но первоочередное - это питание проверить при включении моторов как выше писали, ну и в протокол обмена проверки добавить в любом случае, ошибки обмена данными по радио - это норма, можно их уменьшить, но нельзя избавиться
В общем, перепробовав почти все варианты с железом помехи удалить не удалось.
Решил вопрос добавлением псевдо проверки целостности сигнала, хотя я полагал что библиотека сама умеет в проверку CRC. Радиоуправление работаем приемлемо, отбраковка небольшая.
И вот случайно обнаружил на одном модуле (приемнике), что контакт CE звонится на землю. На другом модуле такого нет. Вот и думаю может в этом причина таких помех.