Изменить зависимость резистора программно
- Войдите на сайт для отправки комментариев
Ср, 25/05/2016 - 17:03
Есть резистор с логарифмической зависимостью(А), но нужно получить от него линейное изменение значений (0-1023)
Реально ли это сделать программно или проще поменять резисторы на характеристику В?
Аппаратное решение полагаю предпочтительнее программного, за исключением случаев абсолютной невозможности оного.
А чего тут нереального? Функцию обратную логарифму знаете? Правильно - экспонента! Вот и домножайте на неё, делов-то.
Хотя, согласен с коллегой - поставить нормальный резистор более грамотное решение.
Насколько я помню, группа А как раз с линейной характеристикой. http://www.go-radio.ru/parametri-peremennix-rezistorov.html Подстроечные резисторы, например, раньше делали только с линейной характеристикой. На мой взгляд, существенно проще найти нужный резистор, чем делать математические преобразования.
Российские А -линейные, а вот импортные нет.
Если было бы проще, не спрашивал бы. Как вычислить экспоненту в Си?
Как вычислить экспоненту в Си?
В как таковом Си - никак, только в лоб, через ряд или иную какую математику.
С использованием стандартной библиотеки попроще, там готовые функции есть. Вот список математических функций библиотеки avr-libc.
А вообще, я бы не вычислял экспоненту "в лоб" - дорогое удовольствие. Я бы составил таблицу заранее посчитанных значений (штук 10-15) и интерполировал бы всё остальное. Но это от задачи зависит.
Делать или нет сказать сложно, непонятно назначение. Я бы не стал. Вы можете пошаманив найти некоторую функцию y=F(x) преобразующую в целом зависимость к желаемому виду. Но надо помнить что при нелинейных преобразованиях мы получим неприятный эффект из-за дискретности и округления представления. Допустим на входе у нас ряд чисел 100, 101, 102, 103 то на выходе получим следующего вида 200, 201, 201, 203. Т.е. некоторые значения повторяются, а некоторых вообще не будет никогда. Критично ли это для вас, я не знаю. Если это просто крутилка громкости - делайте по любому, все сойдет, а если это гдето в контуре автоматики то можно и отгрести.
По поводу расчета экспоненты. Не заморачивайтесь, используйте стандартное из либы, главное вызывать пересчет не слишком часто, а с реально требуемой частотой, для ручного переменника 5 раз в сек хватит свободно. Покажется тормознутым - ну сделаете сохранение предыдущего аргумента и результата и если новый аргумент равен старому то и результат старый, можно и не считать вообще. Всеравно изменения аргумента относительно редкие.