Обсуждаем контроллеры компании Atmel.
Ответить

Изменение прошивки индикатора уровня на ATmega8

Сб апр 23, 2016 23:11:44

Мяу коты! На одном ресурсе есть индикатор уровня, но он кажет от фонаря вместо децибелов. Можно изменить пороговые напряжения чтобы он показывал согласно шкале? Автор прохладно отнесся к моей просьбе, а сам не умею. :cry: Вот я посчитал нужные напряжения и даже нужные пороговые значения результатов преобразования АЦП. Но как в прогу вставить понятия не имею. :kill:
Код:
(-20dB.) = 250мВ.   = ADC(51)
(-15dB.) = 444,5мВ. = ADC(91)
(-10dB.) = 790,5мВ. = ADC(162)
(-7dB.)  = 1,11В.   = ADC(229)
(-5dB.)  = 1,4В.    = ADC(288)
(-4dB.)  = 1,57В.   = ADC(323)
(-3dB.)  = 1,77В.   = ADC(362)
(-2dB.)  = 1,98В.   = ADC(407)
(-1dB.)  = 2,23В.   = ADC(456)
(0dB.)   = 2,5В.    = ADC(512)
(+1dB.)  = 2,8В.    = ADC(574)
(+2dB.)  = 3,15В.   = ADC(645)
(+3dB.)  = 3,53В.   = ADC(723)
(+6dB.)  = 4.99В.   = ADC(1022)
Исходники прилагаются. Требуется изменить только пороги переключения сегментов, а логику не трогать. И ещё наверное потребуется переключить референсное с внутреннего 2,56В на внешнее 5В. к AVcc, это если у автора включено внутреннее 2,56В, т.к. значения считал при опорном 5В., чтоб на весь диапазон преобразования растянуть.

Спасибо. :)
Вложения
VUMeterMayak.rar
(147.11 KiB) Скачиваний: 268

Re: Изменение прошивки индикатора уровня на ATmega8

Вс апр 24, 2016 20:34:11

Поддержу fedo®. :beer: Тоже заинтересовал сей индикатор (имеется штуки 3 нерабочих "Маяковских" блоков индикации), и по сему присоединюсь к просьбе fedo®. :oops:
СпойлерДействительно, "программистов" порой не поймёшь. :roll: Вроде сделал отличный "девайс", написал отличный алгоритм, всё красиво, наглядно и т.д. Но вот из-за одного недостатка (отображаемый уровень не соответствует шкале) все старания напрасны, так как вместо индикатора уровня получился "показометр". :(

Re: Изменение прошивки индикатора уровня на ATmega8

Вс апр 24, 2016 23:08:40

Там на схеме есть масштабирующий переменник. Может попробовать им порулить ?

Re: Изменение прошивки индикатора уровня на ATmega8

Вс апр 24, 2016 23:11:12

По описанию автора это чувствительность.
Резистор R24 регулирует чувствительность обеих каналов.
:roll:
Кстати, если кто проявит интерес к "доработке", можно этот резистор удалить, и связанную с ним настройку исключить из программы. :oops: Лучше вместо него применить на входе выпрямители на ОУ с регулируемым коэффициентом передачи. И буферный каскад, и "правильное" выпрямление (без падения на диоде), и регулировка чувствительности. :)

Re: Изменение прошивки индикатора уровня на ATmega8

Вс апр 24, 2016 23:28:02

Ну да, судя по коду, это обычная чувствительность (масштаб), а вывод идёт обычной линейной пропорцией. Судя по данным fedo®'а, зависимость нелинейная.
Проще в код не пороги забивать, а формулу зависмости, вычисленную по этим точкам.
И ещё, в коде испльзуется 8-ми битное преобразования, т.е. числа должны быть от 0 до 255.

Re: Изменение прошивки индикатора уровня на ATmega8

Вс апр 24, 2016 23:40:13

Аlex писал(а):Судя по данным fedo®'а, зависимость нелинейная.
Абсолютно верно. Логарифмическая, как собственно и должно быть.
Аlex писал(а):И ещё, в коде испльзуется 8-ми битное преобразования, т.е. числа должны быть от 0 до 255.
:(
Ну вот и ещё один недочёт. По таблице от fedo® вообще было бы по Фэн-шуй. :))

Re: Изменение прошивки индикатора уровня на ATmega8

Вс апр 24, 2016 23:44:39

korob писал(а):Ну вот и ещё один недочёт.
В принципе, никаких недочётов. Делим данные в его таблице на 4 и всё :)

Re: Изменение прошивки индикатора уровня на ATmega8

Вс апр 24, 2016 23:47:39

А точность? :) Есть же 10bit., почему не использовать, особенно на малых уровнях (-20...-7dB.)? :roll:

Re: Изменение прошивки индикатора уровня на ATmega8

Вс апр 24, 2016 23:53:25

Точность будет в пределах этих 4 бит, т.е. +-0.01 В. Это всё в пределах шумов АЦП и внешних помех.
Не зря в программе берётся старший байт, а остальное отсеивается. Чтобы лишних дёрганьев не было.
На уровнях -20... -7, при делении, потеряется цена всего 1-ого младшего бита. Это мизер.
Да и вообще, о какой точности можно говорить, если разрешение между двумя младшими точками = 40 единиц ? А между 2-ой и 3-ей - вообще, все 70 :) Это вот если бы у Вас был дисплей на 1000 точек, то требования к такой точности были бы оправданы. А тут... :dont_know:

Re: Изменение прошивки индикатора уровня на ATmega8

Пн апр 25, 2016 01:21:44

Максимальная точность здесь нужна не для того чтобы "высветить" 1000 точек, а для того чтобы максимально близко к истине высвечивать 14. :roll: Хотя может и правда смысла мало. Надо посчитать значения при 8 битах.

UPD:

Вот что насчитал при 8 битах.
Код:
(-20dB.) = 250мВ.   = ADC(13)
(-15dB.) = 444,5мВ. = ADC(23)
(-10dB.) = 790,5мВ. = ADC(40)
(-7dB.)  = 1,11В.   = ADC(57)
(-5dB.)  = 1,4В.    = ADC(72)
(-4dB.)  = 1,57В.   = ADC(81)
(-3dB.)  = 1,77В.   = ADC(91)
(-2dB.)  = 1,98В.   = ADC(102)
(-1dB.)  = 2,23В.   = ADC(114)
(0dB.)   = 2,5В.    = ADC(128)
(+1dB.)  = 2,8В.    = ADC(144)
(+2dB.)  = 3,15В.   = ADC(161)
(+3dB.)  = 3,53В.   = ADC(181)
(+6dB.)  = 4.99В.   = ADC(255)
Последний раз редактировалось korob Пн апр 25, 2016 01:30:10, всего редактировалось 1 раз.

Re: Изменение прошивки индикатора уровня на ATmega8

Пн апр 25, 2016 01:29:53

Ну вот светится у Вас 1 точка, сколько это в dB ? Правильно, от -15(включительно) до -10. Или, к примеру, 7 точек, показывает 0 dB, хотя уровень на входе от 2.5В до 2.8В.
Ну и к чему тут 10-ти битная точность нужна ? Тут 4-х бит хватит :))

Re: Изменение прошивки индикатора уровня на ATmega8

Пн апр 25, 2016 01:38:52

Весь цимес в том - когда засветится эта точка? :wink: Например уровень плавно нарастает с -10,2dB. до -10dB., при 8 бит точка -10dB. засветится например при -10,08dB., а при 10 бит при -10,009dB. :) :))) Это как пример, значения не считал, но смысл думаю будет понятен. :oops:

Re: Изменение прошивки индикатора уровня на ATmega8

Пн апр 25, 2016 02:03:25

Ну, это Вы уже какие то сотые ловите :)))

Вот, держите :
VUMeterMayak.rar
(30.07 KiB) Скачиваний: 265
Пробуйте :write:

Re: Изменение прошивки индикатора уровня на ATmega8

Пн апр 25, 2016 02:10:18

Аlex писал(а):Ну, это Вы уже какие то сотые ловите
Ну раз уж если такой, достаточно мощный МК, выполняет такую простую задачу, так пускай делает её на 5+, а не "на отъе...сь".:)))
Аlex писал(а):Вот, держите :
Низкий поклон. :beer: Правда пробовать не скоро придётся. Может у fedo® всё на мази, уже собрано. :roll:

Re: Изменение прошивки индикатора уровня на ATmega8

Пн апр 25, 2016 02:31:49

Ну коли очень хочется 10 бит, пожалуйста :
VUMeterMayak.rar
(30.29 KiB) Скачиваний: 233
:)
Только выравнивание АЦП пришлось выкручивать обратно вправо программно, ибо в АВРах я не силён :oops:

korob писал(а):Может у fedo® всё на мази, уже собрано.
Будем надеяться :solder:

Re: Изменение прошивки индикатора уровня на ATmega8

Пн апр 25, 2016 02:39:22

Спойлер
Аlex писал(а):Ну коли очень хочется 10 бит, пожалуйста
Однако, Вы весьма продуктивны. :shock: Менее чем за 2ч. два варианта. :shock: Удивляете. :))

Re: Изменение прошивки индикатора уровня на ATmega8

Пн апр 25, 2016 13:31:07

Парни! Огромное спасибо за проявленный интерес. :beer: :beer: :beer: Радиокот лучший. :love: Сколько обращаюсь, сразу помогают. А вот автор проекта оказался нубом, послал подальше. :evil:
Все исходники доступны для скачивания, и Вы без проблем можете реализовать индикацию в логарифмическом масштабе.
Есть пара вопросов. :)
1)Что с референсным? Оно 5В. или 2,56В.?
2)
korob писал(а):Кстати, если кто проявит интерес к "доработке", можно этот резистор удалить, и связанную с ним настройку исключить из программы. Лучше вместо него применить на входе выпрямители на ОУ с регулируемым коэффициентом передачи. И буферный каскад, и "правильное" выпрямление (без падения на диоде), и регулировка чувствительности.
В этой прошивке это реализовано и резистор можно удалять?
3)
Есть в схеме один неприятный момент — диоды шоттки на входе. На них падение напряжения сразу становится 0,2В.
Этот неприятный момент решит выпрямитель на ОУ, если да то что это такое?
4)
Аlex писал(а):Только выравнивание АЦП пришлось выкручивать обратно вправо программно
Что это значит? Сдвиг уровня сигнала? Чем это грозит?
Аlex писал(а):Будем надеяться
К сожалению нет. Чесно говоря я не думал что так быстро поправят прошивку, я просто не был к этому готов. :o Но это очень приятный сюрприз, завтра вечером займусь.


З.Ы Радиокот лучшие! :love:

Re: Изменение прошивки индикатора уровня на ATmega8

Пн апр 25, 2016 14:46:29

fedo® писал(а):Этот неприятный момент решит выпрямитель на ОУ, если да то что это такое?
Да. Выпрямитель на ОУ. :) :wink: По остальным вопросам может ответить Аlex, я не совсем в курсе. :dont_know: Хотя опорное скорее всего всё таки 5В. :roll:

Re: Изменение прошивки индикатора уровня на ATmega8

Пн апр 25, 2016 16:17:46

korob писал(а):Да. Выпрямитель на ОУ. По остальным вопросам может ответить Аlex, я не совсем в курсе. Хотя опорное скорее всего всё таки 5В.
Спасибо, буду ждать ответа Аlex-а. И еще вопросик вдогонку: шить VUMeterMayak.hex из папки Debug ? Название папки както смущает. :dont_know:

Re: Изменение прошивки индикатора уровня на ATmega8

Пн апр 25, 2016 22:04:50

fedo® писал(а):Что с референсным? Оно 5В. или 2,56В.?
По всей видимости - 5В. Т.к. Vref по схеме подключен к +5V.

fedo® писал(а):В этой прошивке это реализовано и резистор можно удалять?
Нет, резистор всё также задаёт чувствительность.

fedo® писал(а):Что это значит? Сдвиг уровня сигнала? Чем это грозит?
Ничем не грозит, не обращайте внимания :)

шить VUMeterMayak.hex из папки Debug ?
Да, оно самое. Такое название папки создаёт Atmel Studio. Если честно, я не знаю почему :dont_know:
Ответить