Что бы еще такого сделать?... Предлагайте! Обсудим все!!!
Ответить

FM тюнер с МК управлением

Пт май 22, 2009 13:59:28

Здравствуйте, уважаемые! Возникла острая необходимость замутить FM тюнер для дома с управлением на AVR микроконтроллере. Пошарил по интернету - похожие схемы только на PIC-ах. А я вот с ними не дружу. Кто бы посоветовал схемку на AVR (любом)? Или может кто займется? Здесь есть статьи по FM тюнерам, только подходящей нет...
Значит, как говорил наш уважаемый Ги де Мопассан "Ближе к телу...",
- перестройка частоты (88-108 МГц)
- цифровой синтезатор частоты
- управление перестройкой частоты с помощью AVR МК
- память каналов (частот) - до 12 ячеек
- возможность занесения в память названия радиостанции
- LCD 4х16 (можно 2х16, но нежелательно)
- электронная регулировка уровня сигнала на выходе
- отображение на LCD частоты, номера канала, времени, названия радиостанции
- пульт ДУ (RC-5 или RC-6), но необязательно

Вот такой хочу тюнер! Купить могу, но не хочу - хочу собрать сам!
У кого какие мысли на этот счет?

Пт май 22, 2009 16:55:23

У меня тоже недавно появилось желание собрать нечто подобно...
И поэтому в плане изучения микропроцессоров неспешно делаю примерно следующее:
FM тюнер + часы + будильник + календарь.

C FM я долго не парился и взял ТВ/ФМ модуль из платы для компьютерного ТВтюнера(железная коробочка на плате). Опять же можно взять от магнитол. Удобней будет если модуль не требует обвеса и с интерфейсом I2C. Я брал Филипс FM1256PH3 от ТВтюнера от Авермедии.
Если бы еще были датащиты на него - был бы вообще рай. Но на конкретно мой датащитов не нашел и поэтому парился с поиском и изучением исходников драйверов под Линкса, т.к. конкретно этот модуль оказался не совсем стандартным по отношению к распространенным моделям. Но в итоге работать я с ним научился.

Сейчас пока все на уровне макеток и эмуляции.
Сейчас это примерно выглядит так:
-Микропроцессор MEGA32
-ФМ - FM1256
-Экран 128x64 от MELT MT–12864A
-Часы на ds1307
-Датчик температуры ds18s20
Программа уже умеет:
- Отображать время/дату, температуру, состояния будильников
- Есть настройки будильников
- Есть календарь с отображением на месяц и с возможностью листать по месяцам
- Написаны функции для быстрой отрисовки графики и различных шрифтов
- Сделаны шрифты и битмапы для отображения нужной информации
- Примитивное управление ФМ модулем

Осталось сделать:
- Нормальное управление ФМ
- Разобраться и сделать автопоиск радиостанций
- Сохранение радиостанций и доп. режимов для конкретной радиостанции(типа моно/стерео, режим чувствительности тюнера и др...)
- прикинуть и сделать некий простенький усилитель для выходного сигнала с ТВ тюнера

Так как в Меге пока еще остается дофига места(пока потрачено 30% флешки), планирую на более дальнюю перспективу еще сделать графики температуры ну и какойнить тетрис - какой же будильник без тетриса? :)))

Про ИК пульт думал, но пока отложил на более поздний срок, т.к. с приемниками ИК еще не разбирался... делал(даже лучше сказать повторял опятьже в целях изучения МК) только ИК передатчик(правда программу переписывал сам).
Собственно вот такие мысли на эту тему. Я в электронике не силен - не очень давно открыл для себя такое хобби... поэтому делается все не быстро.

Пт май 22, 2009 17:04:09

Поиск там идёт по сигналу опознавания (выход на модуле с детектора), даташитов на модуль не найдёте, проще на ИС синтезатора ориентироваться. Буржуи выпускают прекрасный приёмник в корпусе под стандартный подрозетник, насколько я помню, там кнопки перебора станций в "+" и "-" (они же и настроечные), кнопка памяти (запоминания), она же при длительном нажатии и вход в настройку, выход из режима автоматически, если не трогать кнопки более 2 минут. И две кнопки громкости, внутренний УНЧ на 5 ватт. Очень удобная штука, дисплей.. а зачем?

Пт май 22, 2009 17:15:20

Зачем дисплей, спрашиваете??? Тюнер планируется, как часть аудио-видео комплекса, который будет стоять в одной стойке с усилком и DVDюшником (под телевизором). И поэтому нужен дисплей, чтобы с дивана :)) было видно, какая частота и какая станция. А насчет "тетриса" - по-моему это лишнее. Какой то несерьёзный комплекс получается (это же не "Денди"). Ну и как насчет более конструктивных предложений?
Думаю, за основу (с разрешения мявтора, конечно) можно взять проект уважаемого А. Дойникова aka dt_andrew: "Предварительный усилитель с МК управлением". Только валкодер убрать, а прикошачить FM тюнер с синтезатором частоты. Не хватит 32 меги - возьмем 64-ю или 128-ю, ИМХО!

Пт май 22, 2009 20:06:11

Igor_67 писал(а):Зачем дисплей, спрашиваете??? Тюнер планируется, как часть аудио-видео комплекса, который будет стоять в одной стойке с усилком и DVDюшником (под телевизором).

Практически во всех усилках есть тюнер, дисплей и часы. Я что-то сомневаюсь в возможности дома изготовить корпус, который бы достойно смотрелся рядом с промышленным DVD и стоил бы дешевле 200 $ (цена среднего усилка с тюнером). Но, впрочем, если это так, в рамках освоить мегу то почему-бы и нет? А тем временем такие "тетрисы" мы покупаем по 500-600 евро .... Почему-то людям на кухне очень хочется просто приёмник FM и колонку под потолком, без дисплеев и прочей многофункциональной мути.

Пт май 22, 2009 20:21:05

Ну, сколько людей-столько и мнений. Спорить не буду, каждому своё. Кого-то устраивает колонка под потолком, а кого-то качественный стереозвук... Кстати, похожий проект задумывался давно товарищем Андреем Дойниковым aka dt_andrew. Называется он "Предварительный усилитель с МК управлением" в версии МАКСИ. Но она еще не закончена, к сожалению. А по поводу красивости корпуса - это вы зря. У нас на барахолке можно купить любой нерабочий усилок или DVD-плеер с приличным корпусом. Я же не писал в топиках выше, что мне надо всё - вплоть до печатных плат. Это я всё сам сваяю. Мне бы схему и какой-никакой исходничек, дабы разобраться в принципе, а если прошивку, то это ваще гуд!

Пт май 22, 2009 21:28:53

В большинстве тюнеров используется синтезатор LC72131 с кварцем 7,2МГц (Раньше попадались с кварцем 4,5МГц)
Даташит найти не проблема. :wink:

Пт май 22, 2009 22:06:48

Дмитрий М писал(а):Поиск там идёт по сигналу опознавания (выход на модуле с детектора)


Не совсем понял(точнее вообще не понял). Вот примерный(наиболее близкий) датащит для моего тюнера. http://hituner.info/modules/mydownloads ... _18_01.pdf

там на 17 странице написано про AFC(насколько я понял это АПЧ). И на сколько я понял, единственный способ автопоиска это проверка флага работы AFC при последовательном переборе частот, и если AFC включается, то уже по смещению AFC искать нужное значение. По крайней мере других полезных выводов я не нашел в тюнере.

Пт май 22, 2009 23:27:33

ФМ тюнер TEA5767, чип с обвязкой на платке 1х1 см имеется практически в каждом старом дешевом МП3 плейере. управляется по I2C, в даташите команды есть.

Сб май 23, 2009 20:37:23

На первой странице пдф нет ног с аналоговым выходом вообще кроме данных.

Сб май 23, 2009 21:43:21

Дмитрий М писал(а):На первой странице пдф нет ног с аналоговым выходом вообще кроме данных.


Эт вы о чем?

Пн май 25, 2009 16:02:09

В общем, ближе к теме:

Имеется PCI TV-FM тюнер PIXEL VIEW BT878P+. Вроде как не нужный уже. Там стоит ВЧ блок LG TPI8PSB02P. Думаю его использовать, к тому же там и I2C шина присутствует. Вот я тут кое что нарыл при помощи Гугля.
http://xtrason.mylivepage.ru/file/2350/4764_%D0%A0%D0%B0%D0%B7%D0%BF%D0%B8%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D1%82%D1%8E%D0%BD%D0%B5%D1%80%D0%B0.xls
и ещё вот это:
http://xtrason.mylivepage.ru/file/2350/4765_%D0%B1%D0%B8%D1%82%D1%8B_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F2.xls
Там же есть проект в Протеусе и прошивка пробная, но вот опять для PIC-ов. Но раз есть биты управления, то можно, наверное и прогу накатать? Кто знает с чего начать, подскажите.

Пн май 25, 2009 18:32:55

Вот тебе мои исходники и модель в протеусе:
http://odmax.ru/upload/fmradio.zip

что-бы было понятней по моему обмену с фм вот примерный датащит на примерно тот модуль с которым я обмениваюсь... разница в основном в ПЧ(в датащите 10.7 у моего модуля 33.3) из этого идет другой расчет передаваемых значений...
http://hituner.info/modules/mydownloads ... _18_01.pdf

Код по мере возможностей комментировал. Библиотеки для работы с экраном брал из обучалки/лаборатории + правил косяки и переделал для работы с буфером экрана(т.е. рисуется все в буфере, потом одним махом буфер сливается на экран).
Библиотеки для I2C тоже брал откуда-то и потом дорабатывал.

Код не причесан, и с экспериментальными вставками(например, вниз по диапазону перебор идет по 0.1МГц за нажатие, а вверх автопоиск)

выглядит все так(экран радио):
Изображение

ЗЫ. Кнопки в модели "-", "+","Set","Радио"
Некоторые менюхи не работают. Будильники настраиваются - но не "звонят".
Последний раз редактировалось Telek Пн май 25, 2009 21:07:44, всего редактировалось 2 раз(а).

Пн май 25, 2009 18:50:53

О, ну наконец-то! Большой респект, друх! Спасибо, хоть с чем-то мона начинать. :)))

Да, кстати, Протеус какой версии применялся? А то у меня не хочет открываться. :(

Пн май 25, 2009 21:03:33

Igor_67 писал(а):Да, кстати, Протеус какой версии применялся? А то у меня не хочет открываться. :(

7.5sp3

Ср май 27, 2009 08:31:49

Я тут вчера в барахле покопался у себя и отыскал старенький FM тюнер, который в комп на шину ISA ещё. Там микруха стоит TEA5757H. По даташиту на нее посмотрел, какая нога за что отвечает, поснимал лишние элементы с платы, дабы ток не кушала, подключил - заработало! Поймал переменником все станции, которые у нас есть в регионе. Но здесь такая фиговина: эта микра предназначена как раз для электронного управления перестройкой частоты. Имеется три сигнала: BUS CLOCK, DATA (IN/OUT), WRITE ENABLE. Вроде всё понятно, только данные там передаются пачками по 24 бита в каждой. Так вот, у меня вопрос: Как мне организовать передачу данных в TEA5757 из МК AVR (Mega 16 или Mega 32)? Подскажите, плиз, а то вчера весь вечер голову ломал, но безуспешно. Если можно, кусочек кода скиньте пжалста, лучше на ВАСИКе или АСМе.
Привожу диаграмму процесса записи/чтения из ДШ:

И ещё несколько нужных вещей из ДШ: таблицы и тайминги.

Ср май 27, 2009 09:01:21

Да, и ещё один непонятный момент:

Двухбайтное слово, передаваемое в адресах F14-F0 описывает частоту, принимаемого сигнала. Считается она по таблице 6. Как мне организовать перебор частот кнопками "+" и "-" хотя бы через 0,1МГц?
Ясно, что в какой то подпрограмме надо высчитывать код. А как выбирать нужные частоты из таблицы, которые надо последовательно отнимать от искомой, получая необходимый код, который и переписывается в какой-то регистр для его последующей передачи в TEA5757?

Ср май 27, 2009 12:26:19

Igor_67 писал(а):Да, и ещё один непонятный момент:
А как выбирать нужные частоты из таблицы, которые надо последовательно отнимать от искомой, получая необходимый код, который и переписывается в какой-то регистр для его последующей передачи в TEA5757?


Выкидываем нафиг первые три бита(Забываем пока проних и считаем что первый бит это четвертый). Четвертый бит равен 100кгц=0.1мгц, т.е. 1=0.1МГц, 2=0.2МГц, 3=0.3МГц и т.д.
Далее читаем в датащите, что число которое нужно записать = Частота станции+Промежуточная частота.
Берем интовую переменную(16 бит). Записываем туда нужное число помноженное на 10. Т.е., если нужно настроить например на 100.5МГц, то число равно:
1005 + 107(107 - это промежуточная 10.7МГц*10... или другию промежуточную, если она другая). Получаем 1112. Далее сдвигаем это число на 3 бита(<<3) влево или умножаем на 8, чтобы добить выкинутые 3 бита.
Иными словами, что-то типа:

Код:
#define IF 107 // ПЧ 10.7 * 10
...

unsigned int fmrf; // глобальная переменная - частота станции умноженная на 10
...

//в программе устанавливаем нужное значение частоты - переменную fmrf
//Увеличение ее на единицу(fmrf++) или уменьшение на единичу(fmrf--) будет изменять частоту на 0.1МГц

...

// Функция передачи значения в ТЕА
void set_rf(void)
{
   unsigned int fmvalue; // - то что нужно передать ТЕА5757
   
   fmvalue = (fmrf+IF)*8; // - вычисляем что нужно передать
   ...
   далее передаем в ТЕА fmvalue
   ...
}

Ср май 27, 2009 20:57:48

вот бы на асме кто показал , как передавать к примееру 24 битное слово, с предварительным копированием в него данных с регистра , которому инкремент и декремент кнопками устраивают....
я вот начал самостоятельно....но чтото идет тяжело..

Ср май 27, 2009 22:37:37

Спасибо, Telek! Но код СИшный, а с СИ я не очень-то в ладах. Вот правда, хорошо бы на АСМе или ВАСИКе! :))) Но принцип ясен! THANKS!!!

вот бы на асме кто показал , как передавать к примееру 24 битное слово, с предварительным копированием в него данных с регистра , которому инкремент и декремент кнопками устраивают....

Мне бы тоже хотелось это узнать...
ИМХО, надо использовать регистровые пары и инструкции для работы со словами, типа MOVW. Передавать (копировать) можно в порт каждую регистровую пару отдельно, одну за другой. Никаких старт/стоп битов там нет и 24х битное слово заносится в TEA5757 пока на линии WRITE ENABLE высокий лог. уровень. Всё это дело тактируется сигналом BUS CLOCK, кстати, узнать бы поподробнее, как это всё реализовать программно...
Ответить