Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Световые эффекты » Цифровые фильтры для ЦМУ


Цифровые фильтры для ЦМУ

Сообщений 1 страница 30 из 38

1

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

0

2

Есть метод пяти и семи ординат для вычисления 4 и 6 частот. Некое подобие я делал здесь - http://bascom.at.ua/publ/1-1-0-5. Правда, нигде не нашёл, с какой периодичностью замеры делать для определённой полосы частот. На глаз моргало вроде неплохо, а на приборах лучше не смотреть...
http://www.exponenta.ru/soft/mathemat/d … b3/nb3.asp
http://www.nbuv.gov.ua/portal/natural/G … _77/19.pdf

0

3

Mrshilov написал(а):

Вполне можно успеть еще и ШИМ обслужить.

Предлагаю объединить усилия в этом направлении.
Могу поучаствовать тем, что лучше всего получается - ПО со стороны компа (задел на будущее - для связи и редактирования эффектов), разработка платы. С контроллерами как раз напряг - и по времени, и по знаниям....

0

4

Mrshilov написал(а):

Т.е. канал связи с компом должен быть предусмотрен?

А почему бы и нет? У нас ведь есть EEPROM, в которую можно заливать эффекты, запрограммированные пользователем. И их легче в визуальном конструкторе делать, чем кодом описывать. Можно будет через программу с компьютера управлять источниками света. А если компьютер не включен - автономная работа. Универсальное устройство получится.

0

5

Для обсуждения структурная схема:

http://bascom.at.ua/2011/ZE/uceh.jpg

0

6

В целях экономии ножек можно уменьшить количество 3 светодиодов и заменить (скажем) одним. (цму/сду/авто)
ИК диод на прием возможно придется тоже включать через схему усиления.
А вот для микрофона наверное такие навороты (МУ/ФНЧ) не нужны, у нас же есть АЦП и качество повторения сигнала не обязательно, т.е. нас интересует не разрядность по большей части, а частота.

0

7

RDW написал(а):

В целях экономии ножек можно уменьшить количество 3 светодиодов и заменить (скажем) одним. (цму/сду/авто)

Один светодиод мало информативен. На крайний случай можно применить двухцветный, сэкономим 1 порт, получим красный/зеленый/желтый цвета.

RDW написал(а):

ИК диод на прием возможно придется тоже включать через схему усиления.

Пименять будем ИК-приемник RC5 по стандартной схеме включения.
За основу амбилайта можно взять Mirlight 2 (Domowy Ambilight)

Отредактировано max (2011-06-04 13:02:00)

0

8

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

Код:
$regfile = "m8def.dat"                                      ' мега8
$crystal = 8000000
Ddrb = 1
Dim K As Integer , Period As Integer
Enable Aci                                                  ' разрешаем прерывание от компаратора
On Aci Analogkomp                                           ' при срабатывании компаратора переходим к подпрограмме
Config Timer2 = Timer , Prescale = 8 : On Timer2 Pulse : Enable Timer2
Enable Interrupts


 Do
 Print Period
 Loop

 Analogkomp:
 Stop Timer2
 Period = Timer2 * K
 Timer2 = 0
 K = 1
  Start Timer2                                              ' Toggle Portb.0
 Return

 Pulse:
 Incr K
 Return

увеличить

Отредактировано Pasha (2011-06-04 14:11:43)

0

9

max написал(а):

За основу амбилайта можно взять Mirlight 2 (Domowy Ambilight)

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

0

10

RDW написал(а):

т.к. требует обязательного наличия компьютера

А в чем тогда смысл амбилайта?

0

11

Кто не хочет амбилайта  - не подключайтесь к ПК. Кто не хочет пульта -не пользуйтесь. Устройство в таком случае будет автономным... Аналоговый сигнал через микрофон всё равно при такой концепции цифровым методом обрабатываться будет.

0

12

Кто может в железе код опробовать? Нужно 6 светодиодов, и музыку на PortD.7 подать

Код:
$regfile = "m8def.dat"                                      ' мега8
$crystal = 8000000
Ddrb = 255
Dim K As Integer , Chastota As Long , A As Integer , Amplituda As Double , Temp As Double , Skz As Long
Enable Aci                                                  ' разрешаем прерывание от компаратора
On Aci Analogkomp                                           ' при срабатывании компаратора переходим к подпрограмме
Config Timer0 = Timer , Prescale = 1 : On Timer0 Pulse : Enable Timer0
Enable Interrupts



 Do
If Chastota < 100 Then Set Portb.0 Else Reset Portb.0
If Chastota > 100 And Chastota < 1000 Then set Portb.1 Else Reset Portb.1
If Chastota > 1000 And Chastota < 2000 Then Set Portb.2 Else Reset Portb.2
If Chastota > 2000 And Chastota < 3000 Then Set Portb.3 Else Reset Portb.3
If Chastota > 3000 And Chastota < 5000 Then Set Portb.4 Else Reset Portb.4
If Chastota > 5000 And Chastota < 20000 Then Set Portb.5 Else Reset Portb.5
delay
Loop

 Analogkomp:
 Stop Timer0
 Chastota = K * 256
 Chastota = Chastota + Timer0
 Chastota = 3685000 / Chastota
 Timer0 = 255
 K = 1
 Start Timer0
 Return

 Pulse:
 Incr K
 Return

В протеусе интересно получилось

Отредактировано Pasha (2011-06-04 17:34:11)

0

13

max написал(а):

А в чем тогда смысл амбилайта?

В том, что я хотел это всё приспособить к бытовой технике, а не просто к монитору.

0

14

Pasha написал(а):

В протеусе интересно получилось

Хочу в протеусе!

RDW написал(а):

max написал(а):
А в чем тогда смысл амбилайта?
В том, что я хотел это всё приспособить к бытовой технике, а не просто к монитору.

Со звуком проще, с видео немного посложнее будет. Нужно использовать микросхему для выделения синхросигнала, быстродействующие АЦП для RGB и быстро считать. Боюсь что Меги не хватит. Или разгонять, или на каждый канал захвата поставить по своему контроллеру.

0

15

radan держи http://depositfiles.com/files/tb50xytp0

0

16

Pasha, спасибо. Такой вопрос - можно как-то услышать в протеусе звуковой файл (PortD.7), или это нереально?

0

17

radan написал(а):

ожно как-то услышать в протеусе звуковой файл (PortD.7), или это нереально

мой приятель слушал посылки 22 кгц
вроде просто "подключал" пищалку на нужный выход и все...
сегодня попробую уточнить

0

18

Mrshilov написал(а):

Ambilight, вообще-то это несколько позиционированных каналов RGB. Получается цветомузыка тоже будет 3-полосной? Я не против, просто Вы уж определитесь сразу, чтобы было от чего плясать.

Цветомузыка будет многополосной. Только каждая полоса сможет быть представлена любым из возможных цветов RGB. Например, всего 7 полос - соответствует числу цветов в радуге. Эти семь полос будут представлены 21 каналом - 7хRGB. Тогда каждый канал можно будет настроить на свой цвет. И эффекты можно нестандартные сделать - например, бегущий красный огонь на фоне синего цвета и т.д. 7 полос и для Амби должно хватить - 3 вверх, по 1 на стороны и 2 вниз. Можно конечно на 8 полос заложиться - всё таки число к нам, программистам, ближе чем 7.

0

19

Mrshilov написал(а):

Тогда рисунок блок-схемы нужно скорректировать - 21 ШИМ - 21 LED.
В качестве идеи - вместо FFT использовать BA3834, а мк займется своими привычными функциями.

Без проблем, рисунок поправлю. BA3834 - есть одна конструкция на ней, постараюсь подготовить материал. Только вот хочется изящное решение на одном контроллере. Какой контроллер за основу возьмём? Я М16 предлагаю - запас по ногам есть.

0

20

radan написал(а):

Я М16 предлагаю - запас по ногам есть.

М16 или М32.

0

21

radan да, пищалку подцепи там у нее в названии гдето Sound card упоминается, ну или wav файл в архиве прослушай, чтоб представление иметь, беда в том что протеус в реалтайме не успевает - наверное сильно ужасно будет слышно.

http://depositfiles.com/files/zq6iszppa с пищалкой через саунд карту, довольно не плохо. Звук как и думал - очень ужасный и прирывистый, но очень хорошо видно когда ВЧ играет как ведут себя диоды.

Отредактировано Pasha (2011-06-05 17:52:14)

0

22

Pasha написал(а):

Звук как и думал - очень ужасный и прирывистый

Какой же компьютер нужен, чтобы протеус успевал!?
Нужно в железе пробовать.

0

23

Mrshilov написал(а):

Очевидно это Спектроанализатор звука ПИЧОК. Микросхемка стОит меньше доллара. Куда уж элегантнее...

Нет, это моя конструкция. ЦМУ + бегущие огни. На Васике.

Mrshilov написал(а):

radan написал(а):
Нужно в железе пробовать
Ох, не советую...

Почему?

0

24

http://bascom.at.ua/2011/ZE/uceh-1.jpg
Предлагаю разбить задачу на более мелкие и решать их в несколько этапов или нескольким человекам одновременно.
1. Ядро - 24 канала ШИМ, связь с ПК, индикация режимов, пульт ДУ, связь с модулями аудио и видео. Встроенные эффекты.
2. Аудио - фурье на 24 канала
3. Видео - захват 8 областей
4. Компьютер - управляющая программа для компьютерной ЦМУ, СДУ, АМБИ, настроек....

Продумать, как будут стыковаться блоки между собой на уровне железа и на уровне ПО.
Устройство получится хоть и сложное, но боле простое в наладке и эксплуатации, чем на одном ARM...
Его можно будет собирать в такой конфигурации, которая нужна пользователю.
Не нужна функция - исключил её.

0

25

:cool: Зачетная должна получится вещь!

0

26

Можно и подешевле контроллеры использовать.
А можно для начала просто опробовать на Меге 48. В ней 6 каналов аппаратного ШИма есть. Достаточно выделить спектр и передать в ШИМы. Жаль времени к железу притронуться совсем нет.

0

27

Pasha написал(а):

Кто может в железе код опробовать?

Попробовал. Работает! Очень похоже на Кошачий глаз первого варианта (без градаций яркости). Очень динамично получилось. Только я немного спектр в НЧ сместил.

Код:
If Chastota < 100 Then Set Portb.0 Else Reset Portb.0
If Chastota >= 100 And Chastota < 200 Then Set Portb.1 Else Reset Portb.1
If Chastota >= 200 And Chastota < 400 Then Set Portb.2 Else Reset Portb.2
If Chastota >= 400 And Chastota < 800 Then Set Portb.3 Else Reset Portb.3
If Chastota >= 800 And Chastota < 1600 Then Set Portb.4 Else Reset Portb.4
If Chastota >= 1600 And Chastota < 3200 Then Set Portb.5 Else Reset Portb.5
If Chastota >= 3200 Then Portb = 0

Сигнал подавал прямо с выхода звуковой карты на массу и 13 ножку Меги-8.

0

28

radan написал(а):

Попробовал. Работает!

Спасибо за старания, сам хотел сегодня взяться за паяльник) При тишине наверное мигает все время?

0

29

Pasha написал(а):

При тишине наверное мигает все время?

Да нет, или вообще потушены все светодиоды, или горит какой-то один. Нужно что-то в алгоритме менять, чтобы в паузе все светики были потушены. Или ещё лучше - включались бегущие огни. Есть пару задумок, но выходные закончились быстрее, чем хотелось. Теперь нескоро вернусь к этой схемке... А жаль, имеет право на жизнь.

0

30

radan

Код:
$regfile = "m8def.dat"                                      ' мега8
$crystal = 8000000
Ddrb = 255
Config Portd.6 = Output
Portd.6 = 0
Dim K As Integer , Chastota As Long                         ', A As Integer , Amplituda As Double , Temp As Double , Skz As Long
Enable Aci                                                  ' разрешаем прерывание от компаратора
On Aci Analogkomp                                           ' при срабатывании компаратора переходим к подпрограмме
Config Timer0 = Timer , Prescale = 1 : On Timer0 Pulse : Enable Timer0
Enable Interrupts



 Do
If Chastota < 20 Then Portb = 0
If Chastota >= 15000 Then Portb = 0
If Chastota < 300 Then Set Portb.0 Else Reset Portb.0
If Chastota > 300 And Chastota < 1500 Then Set Portb.1 Else Reset Portb.1
If Chastota > 1200 And Chastota < 3000 Then Set Portb.2 Else Reset Portb.2
If Chastota > 2500 And Chastota < 4500 Then Set Portb.3 Else Reset Portb.3
If Chastota > 3700 And Chastota < 4810 Then Set Portb.4 Else Reset Portb.4
If Chastota > 4860 And Chastota < 15000 Then Set Portb.5 Else Reset Portb.5
If Portb <> 0 Then Waitms 50
If Portb.5 = 1 Then Waitms 150
Select Case Chastota
  Case Is > 4870 : Waitms 80
  Case Is < 300 : Waitms 20
End Select
Delay
Loop

 Analogkomp:
 Stop Timer0
 Chastota = K * 256
 Chastota = Chastota + Timer0
 Chastota = 3685000 / Chastota
 Timer0 = 255
 K = 1
 Start Timer0
 Return

 Pulse:
 Incr K
 Return

radan может мысли будут по поводу следующего куска - програмный шим, между прерываниями компаратора определяем амплитуду, мне не нра как оно работает - слишком часто мигает, шим воб щем то за миганиями и не виден

Код:
      $regfile = "m8def.dat"                                ' мега8
$crystal = 8000000
Ddrb = 255
Config Portd.6 = Output
Portd.6 = 0
Dim K As Integer , Chastota As Long , A As Byte , I As Byte , Adc_ As Long , Temp As Integer , Shetchik As Integer , Amplituda As Integer
' переменные ШИМа
Dim Canal(6) As Byte , Shim(6) As Byte

Enable Aci                                                  ' разрешаем прерывание от компаратора
On Aci Analogkomp                                           ' при срабатывании компаратора переходим к подпрограмме
Config Timer0 = Timer , Prescale = 1 : On Timer0 Pulse : Enable Timer0
Config Timer2 = Timer , Prescale = 1 : On Timer2 Shim_ : Enable Timer2
Enable Interrupts
Config Adc = Single , Prescaler = Auto , Reference = Internal : Enable Adc : Start Adc



Do
Stop Timer2
Temp = Getadc(5)
Start Timer2
Adc_ = Adc_ + Temp
Incr Shetchik

Loop


Shim_:
 For I = 0 To 5
  Incr Shim(i + 1) : If Shim(i + 1) >= Canal(i + 1) Then : Set Portb.i : Shim(i + 1) = 0 : Else : Reset Portb.i : End If
 Next
Return


 Analogkomp:

 Stop Timer0
 Chastota = K * 256
 Chastota = Chastota + Timer0
 Chastota = 3685000 / Chastota
 Timer0 = 255
 K = 1
 Start Timer0
 Amplituda = Adc_ / Shetchik
 Amplituda = Amplituda / 4

If Chastota < 300 Then Canal(1) = Amplituda Else Canal(1) = 255
If Chastota > 300 And Chastota < 1500 Then Set Canal(2) = Amplituda Else Canal(2) = 255
If Chastota > 1200 And Chastota < 3000 Then Canal(3) = Amplituda Else Canal(3) = 255
If Chastota > 2500 And Chastota < 4500 Then Canal(4) = Amplituda Else Canal(4) = 255
If Chastota > 3700 And Chastota < 4810 Then Canal(5) = Amplituda Else Canal(5) = 255
If Chastota > 4860 And Chastota < 15000 Then Canal(6) = Amplituda Else Canal(6) = 255
Amplituda = 0
 Return

 Pulse:
 Incr K
 Return

Отредактировано Pasha (2011-06-14 03:24:33)

0

Похожие темы


Вы здесь » Программирование ATMEL в BASCOM. » Световые эффекты » Цифровые фильтры для ЦМУ