TEA5767 - шум от дисплея
- Войдите на сайт для отправки комментариев
Здравствуйте! Уже нет идей, что это может быть?
Имеется модуль TEA5767, вот такой: https://ru.aliexpress.com/item/TEA5767-FM-Stereo-Radio-Module-for-Arduino-76-108MHZ-With-Free-Cable-Antenna/32285494295.html
Также имеется Arduino UNO (пробовал сначала на Pro Mini, тоже самое) и дисплей 1602, синий. Пробовал также oled1302, результат тот же.
Библиотека TEA5767, такая: https://github.com/andykarpov/TEA5767
Если в setup задать начальную частоту и loop вообще не заполнять, то все ок, звук отличный, играет без помех. Затем, я попробовал тестовый скетч из библиотеки, там используется модуль и дисплей 1602.
#include <TEA5767.h> #include <Wire.h> #include <Button.h> #include <LiquidCrystal.h> TEA5767 Radio; LiquidCrystal lcd(12,11,10,9,8,7); double old_frequency; double frequency; int search_mode = 0; int search_direction; unsigned long last_pressed; Button btn_forward(3, PULLUP); Button btn_backward(2, PULLUP); void setup() { Wire.begin(); Radio.init(); Radio.set_frequency(105.4); Serial.begin(9600); lcd.begin(16,2); lcd.clear(); } void loop() { unsigned char buf[5]; int stereo; int signal_level; double current_freq; unsigned long current_millis = millis(); if (Radio.read_status(buf) == 1) { current_freq = floor (Radio.frequency_available (buf) / 100000 + .5) / 10; stereo = Radio.stereo(buf); signal_level = Radio.signal_level(buf); lcd.setCursor(0,0); lcd.print("FM: "); lcd.print(current_freq); lcd.setCursor(0,1); if (stereo) lcd.print("STEREO "); else lcd.print("MONO "); //lcd.print(signal_level); } if (search_mode == 1) { if (Radio.process_search (buf, search_direction) == 1) { search_mode = 0; } } if (btn_forward.isPressed()) { last_pressed = current_millis; search_mode = 1; search_direction = TEA5767_SEARCH_DIR_UP; Radio.search_up(buf); delay(300); } if (btn_backward.isPressed()) { last_pressed = current_millis; search_mode = 1; search_direction = TEA5767_SEARCH_DIR_DOWN; Radio.search_down(buf); delay(300); } //delay(20); delay(50); }
После его загрузки, когда идет сигнал на дисплей, например, setCursor или print, то радио начинает в этот момент шипеть. Как только я убираю из loop все что касается lcd, шум прекращается. Пробовал заменить дисплей на 1302, результат идентичен.
Звук выводится на колонки через музыкальный центр, пробовал подключать наушники и самопальный динамик, подключенный через усилитель PAM8406, результат один.
Питание подавал через USB от ПК от ардуины, через сетевой блок питания к ардуино, затем через блок питания отдельно на радио, но все тщетно.
Я так понял, что вся проблема в дисплее, так как при его отключении, проблемы решаются. Но как можно решить эту проблему, я не знаю. Оба модуля работают по I2C.
Надеюсь, сообщество сможет помочь. Заранее благодарю за ответы.
Я так понял, что вся проблема в дисплее,
Нет, дело в питании. У меня такая же фигня была, когда рядом с приёмником работала MAX7219, у других ребят - другие вещи.
Нужно строго отделать по питанию цифровую часть схемы от аналоговой. Цифровые компоненты шумят в питание. Им самим пофиг, а аналоговые части страдают.
О приёмах разделения и всяких хитростях с питанием гибридных схем см. здесь (например, сравните рис. 2 и 3). Мне это чтиво помогло, а также всем, кому его здесь давал.
Пока что проблему с дисплеем решил просто: в скетче задал обновление дисплея только после того, как частота изменится. И получается, когда радио начинает искать частоту и шипеть, шума от обновления дисплея как бы не слышно. Но теперь для задания частоты вместо кнопок подключил джойстик, и началась новая проблема, снова появился шум, но не такой сильный, еле слышимый. Конечно такое подключение и джойстика, и дисплея меня не устраивает, надо что-то с этим делать.
Пробовал отдельное питание сделать, SDA и SCL подключил по обычному, а питание просто отдельно повесил на другой блок, радио не заводится, пока не соединю землю с ардуиной, а когда соединяю, привет шумы.
За ссылку спасибо, обязательно прочитаю, может там и есть мое решение.
Но все пока жду, может кто что еще предложит с питанием.
Ты феерический идиот? Все, что тебе нужно, тебе уже предложили, читай.
DetSimen, я по-моему никого не оскорблял. Решение бывает не только одно, сколько людей, столько и мнений. Я услышал одно мнение, и жду, может кто-то еще выразит свое мнение. Может кто-то не согласится с решением предыдущего комментатора. Я не хочу сказать, что мне дали неверное решение, просто хочу услышать другие мнения.
Да, правда, чоэто я? Прошу пращенья.
Vlad61, вы ждёте чуда? Не будет его, ответ дан в #1.
Я ещё и подгорчу пилюлю, при использовании SPI дисплея ардуина сильно срёт в радиодиапазон гармониками до десятого порядка, то есть будут шумы до 200 МГц с интервалом по 20 МГц и полосой до 1 МГц.