Jump to content
bulat943

Приемник на RDA5807 и семисегментнике

Recommended Posts

Проводками тоже не айс. Помню подключал две разные платы, на одной  приемник, на второй управление. Прием упал ниже плинтуса. Подключил РДА прямо на плату, появился нормальный прием.

Share this post


Link to post
Share on other sites

Пробую еще раз. Если убрать регулировку громкости, то влазит спящий режим.

Проект.zip

Edited by andrusha152
дополнение

Share this post


Link to post
Share on other sites

Финальные результаты тестирования литиевых батареек FANSO при нормальных условиях

Перед разработчиком устройства, в котором предполагается использование батарейки, всегда стоит задача выбора того или иного бренда. Конечно, наиболее объективный результат по качеству можно получить при реальном тестировании в режиме работы самого устройства. Для того чтобы у разработчиков была некоторая информация о реальных значениях основных параметров ЛХИТ, инженеры компании КОМПЭЛ решили провести серию из трех тестов. Первый тест на постоянный разряд в нормальных климатических условиях, начатый в апреле 2019 г., мы завершили.

Узнать финальный результат тестирования

А это моя новая программа приемника-теперь при вкл радио частота вкл как надо-ввел задержку 1 сек

Скрытый текст

$Regfile = "attiny2313a.dat"
$Crystal = 4000000
'$hwstack = 40
'$swstack = 16
'$framesize = 32
'i2c                             09.01.2018
Config Scl = Porta.1
Config Sda = Porta.0
Config I2cdelay = 40
I2cinit
dim bit_02h as byte , bit_02l as byte
bit_02h = &B11000011       'dhiz dmute (1=mono.2=stereo) (1=bass)  rclk  rclk seekup  seek
bit_02l = &B10000101
' настраиваем порты  к индикатору
segmentj alias portb : config portb = output
dig1 alias portd.6 : config dig1 = output
dig2 alias portd.3 : config dig2 = output
dig3 alias portd.5 : config dig3 = output
dig4 alias portd.4 : config dig4 = output
button alias pind.2 : config portd.2 = input : portd.2 = 0
dim buttons as byte
dim flag as byte
' таймеры
const const_t0 = 0       '128
Config Timer0 = Timer , Prescale = 64       ' 256
'Timer0 = const_t0
On Timer0 Pulse       '4000000/256/64=244   4.1 msec
Config Timer1 = Timer , Prescale = 256       '256
 On Timer1 индикация       '4.19 sec
Config Int0 = LOW LEVEL
dim freg as Integer
dim a as Integer
dim digit as Byte
dim stereo as bit
dim volume as byte
dim dane as byte
'начальные настройки
Waitms 250
Readeeprom dane , 10
waitms 1000
volume = 5
  'I2cinit
  I2cstart
  I2cwbyte &H20       '      20
  '02
  I2cwbyte &B11000010       'dhiz dmute mono bass  rclk  rclk seekup  seek    D2=11010010
  I2cwbyte &b00001101       '    85= 10000101
  '03
  'dane = freg - 870
  'dane = dane / 4
  I2cwbyte dane / 4       '
  'dane = freg - 870
  dane = dane mod 4
  dane = dane * 64
  set dane.4
  I2cwbyte dane       '
  '04
  I2cwbyte &B00010000       ' 000000000
  I2cwbyte &B00000000       '
  '05
  I2cwbyte &B10001000       ' 0000 4 бита-порог поиска
  dane = &B10000000 + volume
  I2cwbyte dane
  '06
  'I2cwbyte &B00010000       ' 000000000
  'I2cwbyte &B00000000
  '07
  'I2cwbyte &B00000000       ' 000000000
  'I2cwbyte &B00000000

  I2cstop
gosub Readword
'*******************************************************************************
' flag.0=1  переключение по частоте
' flag.1=1  громкость
' flag.1=0  rda on  flag.2=1  rda off
'
'
' flag.7=1сон
'*******************************************************************************
main:
  'gosub rda5807_init
  Enable Interrupts
  gosub enable_timer


  'buttons=16
do
  'если нажата кнопка(стоит флаг нажатия кнопки)
 if buttons < 15 then

    'если скан+ или скан-
    if buttons.0 = 0 OR buttons.1 = 0 then
         'ставим флаг автосканирования  для индикатора-отображать частоту
         flag.1 = 0
         bit_02h.1 = buttons.0       'end if       'направление скани рования 1=вверх,0=вниз
         bit_02h.0 = 1
         gosub rda5807_init
         bit_02h.0 = 0       'сброс бита автосканирования
         gosub Readword
    end if


    if buttons.2 = 0 OR buttons.3 = 0 then
         flag.1 = 1       'ставим флаг громкости для индикатора-отображать громкость
         if buttons.2 = 0 then incr volume
         if buttons.3 = 0 and volume > 0 then decr volume
         'volume = volume mod 16
         'if volume > 200 then volume = 0
         if volume > 15 then volume = 15
         gosub rda_volume
    end if


 waitms 100
 timer1 = 0
 flag.0 = 0       'сброс  флага нажатия кнопки
 end if
 'flag = 0
 if timer1 > 16000 then flag.1 = 0       'если прошло 16000*256/4000000= 1 сек то из индикации громкости переход на индикацию частоты
 if flag.7 = 1 then       'таймер сна,если не нажата ни одна из кнопок и прошло 65536*256/4000000= 4 сек то
   radio_sleep:
     'Writeeeprom dane , 10
     gosub disable_timer       'гасим индикацию
     Enable Int0       'ждем нажатия любой кнопки
     powerdown       'баиньки,аттини в сон
     disable Int0       'нажата кнопка,просыпаемся
     gosub enable_timer       ' вкл индикации,запуск таймера сна
     gosub Readword1
     end if
loop

goto main
'выкл таймеов,индикации
disable_timer:
   TIMSK = &B00000000
   dig1 = 0 : dig2 = 0 : dig3 = 0 : dig4 = 0
   portb = 0

return
'запуск таймеров,индикации
enable_timer:
   flag = 0
   TIMSK = &B10000010
   waitms 250
   Timer1 = 0
   flag = 0
return


'подпрограмма таймера сна,как прошло 4 сек то ставим флаг
индикация:
  flag.7 = 1
return

'чтение частоты
Readword:
  gosub disable_timer
  portb = 128
Readword1:
    'I2cinit
    I2cstart
    I2cwbyte &B00100000       'read
    I2cwbyte &h0a       ' b  Regno = &B00001010
    Waitms 50
    I2cstart
    I2cwbyte &B00100001       'adressread
    I2crbyte freg , Ack       ' RDSR STC  SF RDSS  BLK_E  ST  READCHAN[9:8]
    I2crbyte dane , nack       'READCHAN[7:0]
    I2cstop
 while freg.6 = 0       'ждем установки флага STC-стопа сканиования=найдена несущая
             timer1 = 0
             waitms 40
             goto Readword
             wend
             stereo = freg.2
             freg = dane + 870
             Writeeeprom dane , 10

    gosub enable_timer
  Return
' скан +/-
rda5807_init:
I2cinit
         I2cstart
         I2cwbyte &H20       '      20
  '02
         I2cwbyte bit_02h       'dhiz dmute mono bass  rclk  rclk seekup  seek    D2=11010010
         I2cwbyte bit_02l       '    85= 10000101
         I2cstop
  'Writeeeprom volume , 11
  return
'громкость
rda_volume:
      I2cstart
      I2cwbyte &h22
      I2cwbyte &h05       'H02
      I2cwbyte &B10001000       'H08
      dane = &B10000000 + volume
      I2cwbyte dane
      I2cstop
      return

'подпрограмма индикации
Pulse:
  'Timer0 = const_t0
  stop timer0
  incr digit
     if digit > 3 then digit = 0
  dig1 = 1 : dig2 = 1 : dig3 = 1 : dig4 = 1


  if digit = 0 then
      a = freg / 1000
      if a = 0 then a = 10
      if flag.1 = 1 then a = 11
      dig1 = 0
      'waitus 10
      buttons.3 = button
      end if
  if digit = 1 then
      a = freg / 100
      a = a mod 10
      if flag.1 = 1 then a = 12
      dig2 = 0
      'waitus 10
      buttons.2 = button
      end if
  if digit = 2 then
      a = freg / 10
      a = a mod 10
      if flag.1 = 1 then
            a = volume / 10
            if a = 0 then a = 10
            end if
      dig3 = 0
      'waitus 10
      buttons.1 = button
      end if
  if digit = 3 then
      a = freg mod 10
      if flag.1 = 1 then a = volume mod 10
      dig4 = 0
      'waitus 10
      buttons.0 = button
      end if
  portb = Lookup(a , Dta)       ' segmentj
  if flag.1 = 0 then
      if digit = 2 then portb.4 = 1
      if digit = 3 then portb.4 = stereo
      end if
  'if timer1 < 50000 then
   '   waitus 500
   '   else
      waitms 2
      portb = 0
   '   end if

   'portb = 0

  start timer0

return

Dta:
'таблица с данными о цифрах зажигает по порядку : 0123456789(10=пробел)

'таблица версии proekt3
'       GCB*FDAE
 Data &b01101111
 Data &b01100000
 Data &b10100111
 Data &b11100110
 Data &b11101000
 Data &b11001110
 Data &b11001111
 Data &b01100010
 Data &b11101111
 Data &b11101110
 Data &b00000000
 Data &b00001011       ' Г
 Data &b10101011       ' Р

 '(
'таблица версии proekt2
'       ed*cgbfa
 Data &b11010111
 Data &b00010100
 Data &b11001101
 Data &b01011101
 Data &b00011110
 Data &b01011011
 Data &b11011011
 Data &b00010101
 Data &b11011111
 Data &b01011111
 Data &b00000000
 Data &b10000011       ' Г
 Data &b10001111       ' Р
')

 

видосик старого варианта ,на первых секундах видно что частота "не загрузилась",вот это и исправил 

а здесь кнопки имеют двойное назначение,и откл радио есть (при громкости=0),проект на аттини13,исходник где то есть-надо порыться в ноутбуке

Share this post


Link to post
Share on other sites

Добрый день bulat943. Собрал уже второй приемник .На этот раз без резистора регулятора громкости. Возможно как то при громкости 0, отправлять RDA в сон, как вы делали на аттини 13. Сильно громко играет на нуле. Если сделаете, то в этой прошивке. Заранее спасибо за любой ответ.

http://forum.cxem.net/applications/core/interface/file/attachment.php?id=543544

http://forum.cxem.net/applications/core/interface/file/attachment.php?id=543545

 

 

 

Share this post


Link to post
Share on other sites
                     

Видеокурс Работаем с микроконтроллерами STM32G0. Впервые на русском языке.

В цикле видеокурсов по работе с STM32G0 от компании STMicroelectronics показаны архитектура, периферия (особенности процессорного ядра, режимов пониженного питания, векторов прерываний, DMA и мультиплексора DMA, схемы тактирования и сброса, и.т.д.) и даны практические примеры. Материал дает наглядное понимание того, как начать работу на новых микроконтроллерах STM32G0

Подробнее

Продолжаю мучить модуль. Вторая версия приемника - для дачи. Код занимает 100%. Неделю мучился, но добил. Схема та же. Питание приемника 3 вольта. Отключение индикации. Режим STEREO отключен,  BASS включен. Частоту камня снизил до 1 МГц. Фьюзы заводские. При включении с зажатой кнопкой MINUS переход в
режим сканирования, и записи частоты в память. Убрал почти все Bitwait'ы ( много места в памяти занимают).
Теперь настройка частоты происходит при удержании кнопок PLUS или MINUS. При записи частоты в память (кнопка MEM)  на полсекунды гаснет индикатор. Хотел сделать, чтобы высвечивалось CH № , но не влезло. При достижении частоты 108,1 МГц переход в режим прослушивания радио. Включается первая сохраненная станция. Индикатор гаcнет через 5-6 секунд.  Хотел сделать Powerdown, но INT0 очень много памяти кушает. Поэтому, просто останавливаю TIMER0. Специально измерил  ток потребления ( китайским мультиметром ) в режиме сна и при остановке таймера. Ток абсолютно одинаковый - 21 mA. Когда индикатор погашен, доступна только кнопка MEM, для включения индикации. В этом режиме возможно переключение каналов, а при нажатии кнопки MEM, регулировка громкости. При повторном нажатии кнопки MEM, запись громкости в память и переход к отображению частоты. Громкость приемника изменится только после записи ее в память. По другому никак не получилось. Тинька оказывается не резиновая.  Да, при настройке станций и громкости индикация не отключается. Индикатор лучше использовать яркий.Обычный, при 3х вольтах светит тускло.
 В архиве прошивки ОА и ОК, схема, исходник (Bascom avr).

Проект 2.zip

Share this post


Link to post
Share on other sites
В 11.03.2018 в 18:01, resd1981 сказал:

Добрый день bulat943. Собрал уже второй приемник .На этот раз без резистора регулятора громкости. Возможно как то при громкости 0, отправлять RDA в сон, как вы делали на аттини 13. Сильно громко играет на нуле. Если сделаете, то в этой прошивке. Заранее спасибо за любой ответ.

 

 

 

Если откл приемник при громкости=0 то приемник выключится вообще,хозяин-барин-пробуйте

 

programm 88-108 oa ok 04 ST ER 04 01.hex

Share this post


Link to post
Share on other sites

Уважаемый @bulat943 ! Пытаюсь повторить Вашу конструкцию с часами и сразу просьба- не могли бы Вы таким образом сообразить прошивку, что бы часы работали всегда, независимо от того, работает радио или нет, а частота либо громкость появлялась лишь в том случае, когда непосредственно менялась настройка. А термометр... Что им мерить-температуру внутри корпуса?  Ну его...

      Спасибо!

Share this post


Link to post
Share on other sites

можно добавить укв диапазон и адаптировать прошивку под транзисторы в катоды индикатора ?

Share this post


Link to post
Share on other sites

укв добавить не сложно,модуль принимает от 50 МГц

жду от вас желаемый точный диапазон и шаг

с транзисторами сложнее-не на чем тестировать

Share this post


Link to post
Share on other sites

как схему нарисуете с транзисторами так и буду тестировать :)  !

диапазон от 65,9 до 108

а вот шаг идеально было бы 10кгц в диапазоне частот от 65,9 МГц до 74 МГц но судя по даташиту модуль может только от  25 кГц ? 

25 кГц тогда и оставить в этом диапазоне

ну а в ФМ 87,5 МГц до 108,0 МГц  там стандартные 100кгц

поправьте если что не так 

 

Share this post


Link to post
Share on other sites

я и не собираюсь схему рисовать-схема на 1 странице первый пост,там транзисторы дорисовать и паяйте,как спаяете дайте знать

Шаг можно и 1 кгц сделать при ручном вводе частоты,вообще стандарт 30 кгц,но сканирования не будет и чтения частоты из регистров (это есть в даташите)

Share this post


Link to post
Share on other sites

а какая кнопка бас и стерео ?

часы и температура задействованы ?

Edited by jn79

Share this post


Link to post
Share on other sites

моно/стерео portc.1

басс portc.0

***********************************************************************************************************************************

Есть желающие проверить у себя?
Прошивка 50-108 МГц,шаг в диапазоне укв 50-76 МГц 50 кгц,в фм-100 кгц
Индикация в укв в формате ХХ.ХХ(например 50.00 69.65) ,в фм-ХХХ.Х(например 98.3 101.1)
Управление по старому,но есть отличия-
Из органов управления энкодер (скнопкой) и еще 2 кнопки (STEREO и BASS)

При первом включении частота 88,0 МГц,вращение энкодера=перестройка частоты с шагом 100 кгц

Короткое нажатие на кнопку энкодера-переходим в регулировку громкости,на экране ГР08(громкость=8)

Еще одно нажатие-переход обратно на перестройку по частоте

Кнопки-

1) кнопка BASS
1.1-в режиме громкость
-включение/выключение басов
1.2-при перестройке по частоте и каналам
-короткое нажатие=скан-,
-длинное нажатие(более 2 сек)-переход из режима перестройки частоты в режим перестройки по каналам (если хоть одна частота записана в память),на экране CHAN,крутим энкодер-перестраиваемся по записанным в память каналам,короткое нажатие на энкодер-регулировка громкости,еще короткое нажатие на энкодер-обратно перестройка по каналам,короткое нажатие BASS=вкл/выкл басов,нажатие более 2 сек-переход из режима перестройки по каналам в режим перестройки по частоте

2) кнопка STEREO
2.1-в режиме громкость-включение/выключение стерео
2.2-при перестройке по частоте и каналам
-короткое нажатие=скан+,
-длинное нажатие(более 2 сек)-в зависимости от того в каком режиме (перестройка по частотам/по каналам) находимся-
если в режиме перестройки по частотам то запись частоты в память
если в режиме перестройки по каналам то стирание частоты из памяти

включение приемника (когда приемник выключен) коротким нажатием энкодера,выкл приемника длинным нажатием энкодера

поддержка индикаторов с ОК и ОА,выбор -если PORTC.3 никуда не подключен то общий анод,если подключен к минусу то общий катод

Программа базовая,мк ATMEGA8 (HIGH FUSE= C9 LOW FUSE=83 )
Индикатор-любой с общим катодом или анодом
Энкодер-с кнопкой любой,RDA5807M,Стаб 3,3 в-xc6206p332mr

 

proteus_encoder oa oc.DSN

схема.spl7

схема.JPG

50_108MHZ_50 khz_01.hex

Edited by bulat943

Share this post


Link to post
Share on other sites

Все работает, проверил. Единственное , как то непонятно переход из одного диапазона в другой.  Автосканирование работает только в пределах  одного диапазона, для перехода в другой приходится крутить энкодер. Может сделать переход между диапазонами, при нажатии обоих кнопок вместе. Раз нажали, УКВ, второй раз  ФМ.

Share this post


Link to post
Share on other sites

Вопрос к авторам а не рассматривался ли вариант использования индикатора управляемого по i2c ?

HTB18iAyf8DH8KJjSspnq6zNAVXaM__74687.1520181588.jpg

Share this post


Link to post
Share on other sites

Смысл появится только если необходимо применить более простой МК и ног будет катастрофически не хватать.
К тому же, заявлено питание модуля 5 Вольт, что вызовет дополнительные неудобства в батарейных приёмниках. Работает ли он при 3 Вольтах - неизвестно.
Ну и прошивку почти всю перепахивать надо под него.

Share this post


Link to post
Share on other sites

image.png.336451c2fbe76bcc8067605455718393.png

Вот по этой схеме собрал приемник. Не могу настроить преобразователь напряжения. При подаче напряжения 8в выдает 2.45в что для работы мало. Помогите советами!:wacko:

Share this post


Link to post
Share on other sites

Скорее всего в этой схеме неправильно рассчитаны номиналы резисторов. Попробуйте вместо верхнего по схеме резистора на 1КОм поставить подстроечник, и немного увеличить сопротивление. Здесь есть калькулятор, можете сами посчитать.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...