ИМС TEA5767 производимая компанией NXP применяется для конструирования низковольтных FM-радио тюнеров. В составеTEA5767 имеются внутренние цепи выделения промежуточной частоты и демодуляции принимаемого сигнала, что позволяет обходиться минимальным набором внешних компонентов.
Технические параметры TEA5767:
- Напряжение питания от 2,5 до 5 В
- Потребляемый ток при Uпит = 5 В 12,8 мА
- Чувствительность 2 мкВ
- Отношение сигнал/шум 54 дБ
- Разделение между стереоканалами 24 дБ
- Коэффициент гармоник 0,4 %
- Диапазон принимаемых частот от 76 МГц до 108 МГц
- Шины управления: I2C или 3-х проводная
- Функция автоматической настройки на принимаемые радиостанции
- Автоматическое стереодекодирование принятого сигнала
Радио модуль TEA5767 управляется всего двумя кнопками «+» и «-«, которые используются для поиска необходимой станции. Через 10 секунд после не активности кнопок, частота выбранного канала сохраняется в энергонезависимой памяти.
Библиотека — TEA5767.zip
#include <TEA5767.h> #include <Wire.h> #include <LiquidCrystal.h> #include <EEPROM.h> TEA5767 Radio; LiquidCrystal lcd(7, 6, 2, 3, 4, 5); unsigned long last_pressed,time; unsigned char buf[5]; int stereo,signal_level,search_mode = 0,search_direction,i,f_h,f_l,f,w; double current_freq; float f_new = (EEPROM.read(0)*256 + EEPROM.read(1)); byte a1[8]={0b00000,0b00000,0b00000,0b00000,0b00000,0b00000,0b00000,0b11111}; byte a2[8]={0b00000,0b00000,0b00000,0b00000,0b00000,0b00000,0b11111,0b11111}; byte a3[8]={0b00000,0b00000,0b00000,0b00000,0b00000,0b11111,0b11111,0b11111}; byte a4[8]={0b00000,0b00000,0b00000,0b00000,0b11111,0b11111,0b11111,0b11111}; byte a5[8]={0b00000,0b00000,0b00000,0b11111,0b11111,0b11111,0b11111,0b11111}; byte a6[8]={0b00000,0b00000,0b11111,0b11111,0b11111,0b11111,0b11111,0b11111}; byte a7[8]={0b00000,0b11111,0b11111,0b11111,0b11111,0b11111,0b11111,0b11111}; byte a8[8]={0b11111,0b11111,0b11111,0b11111,0b11111,0b11111,0b11111,0b11111}; void setup() { Serial.begin(9600); Wire.begin(); Radio.init(); Radio.set_frequency(f_new/10); Serial.begin(9600); lcd.begin(16,2); lcd.clear(); pinMode(12,INPUT); pinMode(11,INPUT); lcd.createChar(0,a1);lcd.createChar(1,a2);lcd.createChar(2,a3);lcd.createChar(3,a4);lcd.createChar(4,a5);lcd.createChar(5,a6);lcd.createChar(6,a7);lcd.createChar(7,a8); } void loop() { 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.print(" MHz "); lcd.setCursor(0,1); if (stereo) lcd.print("STEREO "); else lcd.print("MONO "); for(i=0;i<8;i++){if(signal_level>=8+i){lcd.setCursor(8+i,1);lcd.write((uint8_t)i);}} } if (search_mode==1){if(Radio.process_search(buf, search_direction)==1){search_mode = 0;}} if (digitalRead(11)==HIGH) { search_mode = 1;time=millis();w=1; search_direction = TEA5767_SEARCH_DIR_UP; Radio.search_up(buf); delay(200); } if (digitalRead(12)==HIGH) { search_mode = 1;time=millis();w=1; search_direction = TEA5767_SEARCH_DIR_DOWN; Radio.search_down(buf); delay(200); } f = current_freq*10; f_h = highByte(f);f_l = lowByte(f); if(millis()-time>10000&&w==1){w=0; EEPROM.update(0,f_h);EEPROM.update(1,f_l);} delay(50);if(search_mode==1){lcd.clear();} }
#include «LiquidCrystal_I2C» — спешили и ошиблись.
На какие выводы сейчас подключать дисплей? (Ардуино нано)
i2c
Я прошил плату и подключил дисплей ( все) ,должна отображаться начальная частота ? Или собирать плату приемника ?
На провести сканирование с приемником, без приемника начальная частота берется из памяти, у Вас там не верное значение.
Есть варианты проверки ?
Без приемника ни чего не получится.
Подключил приемник.Идет постоянное сканирование ( станции есть,проскакивает )
Кнопку нажали и отпустили? Должно включится авто сканирование, при обнаружении станции поиск останавливается.
кнопки не влияют.
У меня не было так, возможно сигнал слабый, увеличте длину антенны.
Идет циклическое сканирование,станции проскакивают нет захвата и так постоянно.
Попробуйте увеличить задержку: delay(50);
замените на: delay(100);
Все заработало. Тут еще и место все в металле. Сегодня получил платку arduino pro mini.Напиши детали ее программирования,с наскока не получилось залить в нее скетч.
Привет. Для этого приемника плата pro mini подайдет ? Изменений не каких ?
Да, подойдет.