TEA5767 - шум от дисплея

Vlad61
Offline
Зарегистрирован: 24.09.2017

Здравствуйте! Уже нет идей, что это может быть?

Имеется модуль 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.

Надеюсь, сообщество сможет помочь. Заранее благодарю за ответы.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Vlad61 пишет:

Я так понял, что вся проблема в дисплее, 

Нет, дело в питании. У меня такая же фигня была, когда рядом с приёмником работала MAX7219, у других ребят - другие вещи.

Нужно строго отделать по питанию цифровую часть схемы от аналоговой. Цифровые компоненты шумят в питание. Им самим пофиг, а аналоговые части страдают.

О приёмах разделения и всяких хитростях с питанием гибридных схем см. здесь (например, сравните рис. 2 и 3). Мне это чтиво помогло, а также всем, кому его здесь давал.

Vlad61
Offline
Зарегистрирован: 24.09.2017

Пока что проблему с дисплеем решил просто: в скетче задал обновление дисплея только после того, как частота изменится. И получается, когда радио начинает искать частоту и шипеть, шума от обновления дисплея как бы не слышно. Но теперь для задания частоты вместо кнопок подключил джойстик, и началась новая проблема, снова появился шум, но не такой сильный, еле слышимый. Конечно такое подключение и джойстика, и дисплея меня не устраивает, надо что-то с этим делать.

Пробовал отдельное питание сделать, SDA и SCL подключил по обычному, а питание просто отдельно повесил на другой блок, радио не заводится, пока не соединю землю с ардуиной, а когда соединяю, привет шумы.

За ссылку спасибо, обязательно прочитаю, может там и есть мое решение.

Но все пока жду, может кто что еще предложит с питанием.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Ты феерический идиот?  Все, что тебе нужно, тебе уже предложили, читай. 

Vlad61
Offline
Зарегистрирован: 24.09.2017

DetSimen, я по-моему никого не оскорблял. Решение бывает не только одно, сколько людей, столько и мнений. Я услышал одно мнение, и жду, может кто-то еще выразит свое мнение. Может кто-то не согласится с решением предыдущего комментатора. Я не хочу сказать, что мне дали неверное решение, просто хочу услышать другие мнения.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Да, правда, чоэто я? Прошу пращенья. 

negavoid
Offline
Зарегистрирован: 09.07.2016

Vlad61, вы ждёте чуда? Не будет его, ответ дан в #1.

Я ещё и подгорчу пилюлю, при использовании SPI дисплея ардуина сильно срёт в радиодиапазон гармониками до десятого порядка, то есть будут шумы до 200 МГц с интервалом по 20 МГц и полосой до 1 МГц.