Стрільний індикатор на мікроконтроллері Attyny13 «показометр» для підсилювача - Журнал
↑ Хочу стрілочний!

Вдалося знайти здвоєну, з жовтою панеллю. Підсвічування від виробника було зроблено коаксіальною лампою розжарювання на 12 Вольт. Яка була успішно замінена на 4 жовті світлодіоди. Але це сталося пізніше. А поки що довелося замислитись, як же мікроамперметри підключати до виходу підсилювача? А підключати треба через спеціальний логарифмічний підсилювач, тому що динамічний діапазон звуку набагато більший, ніж діапазон роботи мікроамперметра. Теоретично це всі знають, хто стикався із саморобними стрілочними індикаторами.
↑ Передання старовини глибокої. К157ДА1

Різних варіацій цієї схеми в мережі ставок ставки. Ну що сказати. Не пішла вона в мене.

Перший екземпляр згорів від неправильно поданого харчування. Протягом місяця мені дістали ще дві штучки, але вже було пізно, я переключився на іншу схему (на LM324), люб'язно надану меніAlexD. Заради інтересу потім я все ж таки включив плату з ДА1. Чи не сподобалося, плавності руху не спостерігалося. Модифікація схеми проводилася у тісній співпраці з Олексієм, за що ще раз "данці шон"!
↑ Нумеро дуе - LM324
Потім був згаданий варіант LM324. Але воно в мене так і не запрацювало, як хочеться. Болтання стрілок, його треба підбирати глибиною ОС. Та й по суті харчування треба двополярне, може все через неправильно організовану середню точку. Ні, ліньки народилася раніше за мене. А разом з лінню ми народили ось що:
↑ Вік XXI, Attyny13

Просто та зі смаком: випрямляємо та згладжуємо сигнал, потім подаємо його на АЦП мікроконтролера. Обробляємо програмно та за допомогою вбудованого ШІМ видаємона навантаження (резистор). Обробка включає в себе практично тільки натуральне логарифмування (Attyny13 прямий як створена для таких простеньких завдань, та й щоб прошивку можна було спекти на швидку руку).
І тут починається для мене найцікавіше.Функція натурального логарифмування є в бібліотеці математичних функцій для контролерів Atmel і знаходиться у файлі math.h. Але тільки не лізе він у цей контролер — пам'яті обмаль. Вирішити завдання в лоб не вдається, починаємо його морщити (чоло). Застосування сильнішого контролера не розглядалося — не цікаво. Тут і пам'яті начебто вистачає, і зручний, і недорого, і невеликі габарити. Перше, що спало на думку: замінити цю функцію схожою, але простіше. А форму їй надати погравши коефіцієнтами. Згадуємо графік зворотної функції. Не «та ну його!», а згадуємо! Якщо нижній правий квадрат змістити вгору щодо осі X, і трохи потягати сюди-туди коефіцієнтами, то цілком можна підігнати під потрібну форму. Ось вона, формула, що замінює логарифм: Y = -8196 / (X + 28) +284. Уявляєте жах контролера, приреченого прораховувати ці значення тисячі разів на секунду з забаганки господаря, який побажав згадати «дитинство золоте»?
Але неприємні емоції було гарантовано і господареві контролера. Для обробки результатів мало було коротких цілих значень, а вхід і вихід повинні бути саме такими. Для мене переклад форматів представлення даних у контролерах одного в інший завжди був важким. Зморшки на лобі збільшилися.
Народився другий варіант- прорахувати все заздалегідь, і контролеру просто залишиться вибирати з масиву дані, які відповідають вхідним значенням і викидати їх на вихід. Готуємо значення, задаємо масив – помилка компіляції. Розмірність масиву занадто велика дляцього контролера. А робити кілька масивів і лазити у них залежно від вхідного значення АЦП не кошерно. Народжувалися думки про біном Ньютона, але були відкинуті через неконструктивність.
Тут у пам'яті випливла фраза лектора з вищої математики з ВНЗ: «За допомогою кубічної сплайн-апроксимації можна описати будь-яку функцію» Ну кубічна нам і не потрібна, а лінійний сплайн цілком піде! Таким чином, я трохи повправлявся в OO Calc, і написав систему рівнянь, що досить точно повторюють графік логарифмічної функції за допомогою прямих відрізків:
Все навмисно помножено на 10, щоб "хвостики", що відкидаються, були поменше. Я потім його поділяю у програмі перед виведенням на індикатори. А ось графіки:

Упевнений, багатьом з вас таке рішення спаде на думку відразу і здасться очевидним. Тим не менш, я впевнений, що комусь це знову і згодом стане в нагоді. Принаймні як інструмент у своєму арсеналі мати зайвим не буде.
↑ Підсумки та примітки за схемою
Індикатор-показометр чудово заробив із першого включення. Було залито кілька прошивок. Найбільш проста виявилася найуспішнішою.За схемою:конденсатори С1 і С2 у процесі налаштування були замінені на 10,0 мкф - вони забезпечують плавність. Підстроювальні резистори на вході зменшують максимальний сигнал до 5 Вольт. Теоретично треба було б поставити стабілітрон з резистором, але ліньки. Ну ви вже знаєте, хто з нас народився раніше Я навантажив підсилювач максимальним на мій погляд сигналом (так, що еквіваленти на виході розжарилися), і вивів резистори на 5 Вольт. Мені досить. Потім подав на вхід 1 кГц з генератора та синхронізував канали, трохи зменшивши показання одного з мікроамперметрів. R4 і R5 залежать від повного струму відхилення мікроамперметрів,на схемі вказано для 50 мкА, у мене такі.
Схему можна тюнінгувати.У Тиньки залишилися вільними 2 ноги. Ніхто не заважає приліпити туди світлодіоди для індикації перевантаження, коли модно було. Не моє – не люблю, коли щось на підсилювачі моргає, тому й не робив. Реалізація елементарна: за певним рівнем запалюємо світлодіод та тримаємо запаленим N мілісекунд. Рівень і N підбираються до смаку, як сіль і перець. Не забудьте тільки, що одна з вільних ніжок – Reset. Отже експерименти робіть на одному каналі, бо якщо поставити відповідний фьюз при прошивці, Reset стане просто портом, і перешити контролер після цього не вдасться.
Здрастуйте, читачу! Мене звуть Ігор, мені 45, я сибіряк і затятий електронник-аматор. Я вигадав, створив і утримую цей чудовий сайт з 2006 року.Вже понад 10 років наш журнал існує тільки на мої кошти.
Здрастуйте, читачу! Мене звуть Ігор, мені 45, я сибіряк і затятий електронник-аматор. Я вигадав, створив і утримую цей чудовий сайт з 2006 року.Вже понад 10 років наш журнал існує тільки на мої кошти.