Страница 1 из 2
Изменение прошивки индикатора уровня на ATmega8
Добавлено: Сб апр 23, 2016 23:11:44
fedo®
Мяу коты! На одном ресурсе есть
индикатор уровня, но он кажет от фонаря вместо децибелов. Можно изменить пороговые напряжения чтобы он показывал согласно шкале? Автор прохладно отнесся к моей просьбе, а сам не умею.

Вот я посчитал нужные напряжения и даже нужные пороговые значения результатов преобразования АЦП. Но как в прогу вставить понятия не имею.
Код: Выделить всё
(-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В., чтоб на весь диапазон преобразования растянуть.
Спасибо.

Re: Изменение прошивки индикатора уровня на ATmega8
Добавлено: Вс апр 24, 2016 20:34:11
korob
Поддержу
fedo®.

Тоже заинтересовал сей индикатор (имеется штуки 3 нерабочих "Маяковских" блоков индикации), и по сему присоединюсь к просьбе
fedo®.
Спойлер
Действительно, "программистов" порой не поймёшь.
Вроде сделал отличный "девайс", написал отличный алгоритм, всё красиво, наглядно и т.д. Но вот из-за одного недостатка (отображаемый уровень не соответствует шкале) все старания напрасны, так как вместо индикатора уровня получился "показометр". 
Re: Изменение прошивки индикатора уровня на ATmega8
Добавлено: Вс апр 24, 2016 23:08:40
Аlex
Там на схеме есть масштабирующий переменник. Может попробовать им порулить ?
Re: Изменение прошивки индикатора уровня на ATmega8
Добавлено: Вс апр 24, 2016 23:11:12
korob
По описанию автора это чувствительность.
Резистор R24 регулирует чувствительность обеих каналов.

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

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

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

Re: Изменение прошивки индикатора уровня на ATmega8
Добавлено: Вс апр 24, 2016 23:44:39
Аlex
korob писал(а):Ну вот и ещё один недочёт.
В принципе, никаких недочётов. Делим данные в его таблице на 4 и всё

Re: Изменение прошивки индикатора уровня на ATmega8
Добавлено: Вс апр 24, 2016 23:47:39
korob
А точность?

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

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

Это вот если бы у Вас был дисплей на 1000 точек, то требования к такой точности были бы оправданы. А тут...

Re: Изменение прошивки индикатора уровня на ATmega8
Добавлено: Пн апр 25, 2016 01:21:44
korob
Максимальная точность здесь нужна не для того чтобы "высветить" 1000 точек, а для того чтобы
максимально близко к истине высвечивать 14.

Хотя может и правда смысла мало. Надо посчитать значения при 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)
Re: Изменение прошивки индикатора уровня на ATmega8
Добавлено: Пн апр 25, 2016 01:29:53
Аlex
Ну вот светится у Вас 1 точка, сколько это в dB ? Правильно, от -15(включительно) до -10. Или, к примеру, 7 точек, показывает 0 dB, хотя уровень на входе от 2.5В до 2.8В.
Ну и к чему тут 10-ти битная точность нужна ? Тут 4-х бит хватит

Re: Изменение прошивки индикатора уровня на ATmega8
Добавлено: Пн апр 25, 2016 01:38:52
korob
Весь цимес в том - когда засветится эта точка?

Например уровень плавно нарастает с -10,2dB. до -10dB., при 8 бит точка -10dB. засветится например при -10,08dB., а при 10 бит при -10,009dB.

Это как пример, значения не считал, но смысл думаю будет понятен.

Re: Изменение прошивки индикатора уровня на ATmega8
Добавлено: Пн апр 25, 2016 02:03:25
Аlex
Ну, это Вы уже какие то сотые ловите
Вот, держите :
Пробуйте

Re: Изменение прошивки индикатора уровня на ATmega8
Добавлено: Пн апр 25, 2016 02:10:18
korob
Аlex писал(а):Ну, это Вы уже какие то сотые ловите
Ну раз уж если такой, достаточно мощный МК, выполняет такую простую задачу, так пускай делает её на 5+, а не "на отъе...сь".

Аlex писал(а):Вот, держите :
Низкий поклон.

Правда пробовать не скоро придётся. Может у
fedo® всё на мази, уже собрано.

Re: Изменение прошивки индикатора уровня на ATmega8
Добавлено: Пн апр 25, 2016 02:31:49
Аlex
Ну коли очень хочется 10 бит, пожалуйста :

Только выравнивание АЦП пришлось выкручивать обратно вправо программно, ибо в АВРах я не силён

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

Re: Изменение прошивки индикатора уровня на ATmega8
Добавлено: Пн апр 25, 2016 02:39:22
korob
Re: Изменение прошивки индикатора уровня на ATmega8
Добавлено: Пн апр 25, 2016 13:31:07
fedo®
Парни! Огромное спасибо за проявленный интерес.

Радиокот лучший.

Сколько обращаюсь, сразу помогают. А вот автор проекта оказался нубом, послал подальше.

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

Но это очень приятный сюрприз, завтра вечером займусь.
З.Ы Радиокот лучшие!

Re: Изменение прошивки индикатора уровня на ATmega8
Добавлено: Пн апр 25, 2016 14:46:29
korob
fedo® писал(а):Этот неприятный момент решит выпрямитель на ОУ, если да то что это такое?
Да.
Выпрямитель на ОУ.

По остальным вопросам может ответить
Аlex, я не совсем в курсе.

Хотя опорное скорее всего всё таки 5В.

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

Re: Изменение прошивки индикатора уровня на ATmega8
Добавлено: Пн апр 25, 2016 22:04:50
Аlex
fedo® писал(а):Что с референсным? Оно 5В. или 2,56В.?
По всей видимости - 5В. Т.к. Vref по схеме подключен к +5V.
fedo® писал(а):В этой прошивке это реализовано и резистор можно удалять?
Нет, резистор всё также задаёт чувствительность.
fedo® писал(а):Что это значит? Сдвиг уровня сигнала? Чем это грозит?
Ничем не грозит, не обращайте внимания

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