Автомобильный стрелочный тахометр для новичка или немного шаманства с фиксированной точкой на AVR

Всем привет! Хотелось бы поделиться с сообществом своей историей модернизации тахометра ТХ-193
image

Неделю назад обратился ко мне один человек с довольно нестандартным заданием — нужно было обеспечить работу древнего тахометра ТХ-193(ВАЗ 2106) с современным двигателем ВАЗ21126(Приора), имеющем систему зажигания с индивидуальными катушками на каждый цилиндр, а значит просто подключить ТХ-193 к катушке зажигания уже не получится. К тому-же заказчик хотел повысить эксплуатационные качества прибора, оставив не тронутым его внешний вид и дизайн. В общем дело кончилось тем, что я взялся выпотрошить электронную начинку прибора и разработать свою, с блэкджеком и шлюхами. Информацию о частоте вращения коленчатого вала тахометр теперь будет получать от ЭБУ Январь 7.2, для чего в последнем имеется специальный вывод.

Под катом фото, видео, схема, исходники и много текста, повествующего о логарифмах и о том как правильно масштабировать данные и отделаться от запятой.


Хард
Начнем с устройства ТХ-193. Механическая часть прибора представляет из себя миллиамперметр классической конструкции, с постоянным магнитом и подвижной катушкой, приводящей в движение стрелку.

Для разработки схемы по сути достаточно было знать о миллиамперметре лишь то, что при токе порядка 10мА стрелка отклоняется до предела, а сопротивление обмотки равно примерно 180Ом. В качестве мозга был выбрал контроллер ATtiny2313A славной фирмы Atmel, тактируемый от внешнего кварцевого резонатора на 16МГц. Питание прибора осуществляется от бортовой сети автомобиля, а значит по ГОСТу он должен выдерживать «бороду» до 100В и стабильно работать в диапазоне от 9-15В. Ввиду незначительного потребления(несколько десятков миллиампер) было принято решение использовать линейный стабилизатор 7805 с индуктивным фильтром и сапрессором для защиты от импульсных помех. Прибор собирался из того, что было под рукой, поэтому в готовом изделии применяется мощная версия 7805, хотя вполне хватило бы и 78L05 на 100мА.
Миллиамперметром контроллер управляет, естественно, используя ШИМ. Для чего был задействован 16ти разрядный таймер в режиме Phase and Frequency Correct PWM.
Информация о частоте вращения коленчатого вала передается от ЭБУ в виде импульсов от 0 — 12В. Активный уровень низкий. 2 импульса за 1 оборот коленчатого вала. Для захвата этих импульсов используется внешнее прерывание INT0 и соответствующая цепочка из RC фильтра, подтяжек и защитных диодов. В общем и целом схемотехника устройства довольно типична и я с удивлением обнаружил, что только что так много написал о ней. Но да не судите строго, первая статья всё-таки.

Собранный прибор без циферблата теперь выглядит так:


Софт
На самом деле ещё до вычерчивания схемы я оперативно собрал всё это дело на макетке, взяв контроллер в DIP корпусе и сразу же принялся махать стрелкой))
В общем то софт оказался немного интереснее харда.

Начнем с общей архитектуры:
Таймер 0 тикает с частотой 250кГц, а значит период тика = 4мкс прерывание по переполнению происходит с частотой 250кГц / 256 = 0.976кГц
а значит прерывание происходит один раз в 1024мкс. Можно было заморочиться и подогнать это дело ближе к одной миллисекунде путем обновления счетчика таймера в прерывании, но в данной задаче это не к чему. Т.е. мы можем измерять время с точностью 4мкс, что вполне достаточно для заданной точности прибора.
Таймер 0 у нас не только отсчитывает время, но ещё и выставляет флажки для запуска тех или иных задач с определенной периодичностью.
Задачи у нас две. Давать отмашку прерыванию INT0 на измерение периода импульсов на входе и изменять положение стрелки.

Таймер 1 тикает с частотой 16мГц, но т.к. он 16ти битный и используется режим Phase and Frequency Correct PWM — итоговая частота ШИМ оказывается очень небольшой и составляет что-то около 122Гц. Это потому, что таймер тикает сначала вверх, а потом вниз. Зато имеем тру 16битный ШИМ и можем очень точно рулить стрелкой! В даташите найдутся все подробности.
Механика, к слову сказать, оказалась отвратительного качества, плавно двигать стрелку было не реально из-за повышенного трения в механизме, который пришлось для начала хотя-бы смазать трансмиссионным маслом. Но это уже детали.
Была составлена таблица соответствия показаний прибора с соответствующим значением регистра таймера в ШИМ попугаях.
В исходниках это дело называется GAUGE_TABLE и вынесено по привычке в отдельный файл.

Далее было обнаружено, что если просто одним махом изменить ток в цепи амперметра для того, чтобы к примеру передвинуть стрелку на 1000 вперед, то она совершит два-три-четыре колебания в районе целевой отметки, что было совершенно неприемлемо и на что заказчик обращал особое внимание. Дело в том, что эти тахометры изначально имеют такую проблему и несколько раз газанув в такт колебаниям можно заставить стрелку раскачиваться со значительной амплитудой(более половины шкалы!).
С этим нужно было что-то делать. Идея моя заключалась в том, чтобы подводить стрелку к отметке серией более мелких шагов, постепенно приближаясь к цели. Собственно говоря эта часть и является самой интересной и полезной для новичков, т.к. требует некоторой сноровки. Ведь имея дело с микроконтроллером вызов log2() в цикле является, мягко говоря, не самой удачной идеей. К тому-же 8битная архитектура накладывает ещё больше ограничений. Ну а про «плавучку» (floating point) и вовсе нужно забыть. Но все эти трудности, как всегда, приводят лишь к более глубокому пониманию процессов и расчётов, производимых процессором.

Текста почему-то получается всё больше, но не остановиться более подробно на этом моменте я просто не могу!
Итак, понятно, что нам нужна логарифмическая прогрессия. Шаг изменения тока в цепи миллиамперметра должен уменьшаться по мере приближения к целевой отметке. Ресурсы на вес золота, а значит только табличный метод. Точек тоже по возможности минимум.
Начнем с построения логарифмической таблицы.
Всё очень просто: запускаем excel и несколькими взмахами мыши получаем 50 значений логарифма по основанию 2 для последовательности от 1 до 50. Для наглядности строим красивый график.
Прекрасно! То, что нужно! Но во-первых — точек аж 50, а во вторых все числа с плавающей точкой. Это нам никак не подходит!
Поэтому отбираем из имеющегося массива 5 точек с шагом 10. Получаем что-то вроде этого:


Уже лучше. Последовательное приближение к цели всё ещё сохраняется, но точек в 10 раз меньше.
Дальше нужно нормировать полученный набор. Т.е. сделать так, чтобы все значения находились в диапазоне от 0 до 1. Для этого просто разделим каждый элемент на 5,64385618977472 (максимальное значение нашего массива).

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


Как видим, форма графика не изменилась, но цифры теперь укладываются в 16битный диапазон и нет никаких дробей.
В исходниках полученный массив называется logtable[]

Масштабирующий коэффициент(если можно его так назвать) 1024 появился здесь не случайно и нужно очень хорошо понимать почему именно 1024.
Во-первых это степень двойки и выбрана она потому, что дорогие операции деления и умножения на степень двойки можно заменить дешевым сдвигом влево/вправо и было-бы глупо не использовать такую возможность.
Во-вторых коэффициент должен выбираться и исходя из масштабов тех данных, к которым он будет применяться. В нашем случае это значения регистра 16ти разрядного таймера, который управляет заполнением ШИМа. Экспериментально было выявлено, что неудовлетворительные колебания стрелки обнаруживаются даже при её резком смещении на 200 об/мин. Т.е. если нужно двинуть стрелку на более чем ~200 об/мин — потребуется сглаживание. Из таблицы GAUGE_TABLE видно, что соседние ячейки в среднем отличаются на 4000 ШИМ попугаев, что соответствует примерно 500 об/мин на шкале прибора. Не трудно прикинуть, что в цифрах смещение стрелки на 200об будет 4000 / 2,5 = 1600 ШИМ попугаев.
Следовательно масштабирующий коэффициент нужно выбрать таким образом, чтобы во-первых он был как можно бОльшим, потому что иначе мы теряем разряды и точность, а во-вторых как можно меньшим, чтобы не заставлять нас переходить от 16ти разрядных переменных к 32х разрядным и не расходовать ресурсы понапрасну. В итоге выбираем наименьшую степень двойки, которая меньше 1600 и обеспечивает достаточную точность. Это и будет 1024.
Этот момент очень важен. Я сам до сих пор порою испытываю трудности с выбором правильных коэффициентов и размеров переменных.

Ну а дальше уж пошло-поехало. Находим в коде реализацию display_rpm() и видим, что для определения конкретного значения в ШИМ попугаях используется таблица GAUGE_TABLE[] и предположение, что между соседними отметками шкала линейна. Для организации изменения тока по логарифмическому закону введен массив на 5 точек pwm_cuve[] в котором содержится набор значений, который нужно последовательно отнять или прибавить(в зависимости от направления движения стрелки) от pwm_ocr1a_cur_val чтобы заставить стрелку двигаться плавно и чётко.
каждый шаг формируется путем умножения значения pwm_delta на коэффициент из нашей таблицы logtable[];
Перед умножением значение предварительно масштабируется путем деления на 1024.
Конечный расчётный пункт назначения стрелки target_pwm записывается в pwm_cuve[] как есть, потому что из-за проблем с округлением и из-за ограничения размерности переменных 16битами точное значение в результате расчётов будет там образовываться весьма не часто, поэтому приходится обеспечить гарантию того, что стрелка окончит свой путь в заданной точке.
В общем то всё вышесказанное по сути заключено в одной строке
pwm_cuve[ table_i ] = pwm_ocr1a_cur_val + (pwm_delta / LOG_TABLE_MAX * logtable[ table_i ]);

Далее главный цикл по сигналу от таймера0 раз в PWM_UPD_PERIOD выгребает значения из pwm_cuve и присваивает их переменной pwm_ocr1a_cur_val, значение которой в прерывании будет присвоено регистру OCR1A, что немедленно приведет к изменению заполнения ШИМа и изменению тока в цепи миллиамперметра.

Вот, собственно и почти все хитрости, за исключением перевода периода, представленного в тиках таймера в частоту вращения коленчатого вала, которая измеряется в об/мин.
Сократилось всё это до engine_rpm = (uint16_t)(15000000UL / (uint32_t)rot_time);
О том как получилась эта цифра мы можем поговорить или не поговорить в следующий раз, потому что и без того текста получилось не мало и явно не многие дочитают даже до этого места.

Честно гвооря в коде применено ещё несколько «хитростей», которые могут показаться новичкам не совсем очевидными. Если кому-то захочется подробнее разобраться — вэлкам в каменты и лс.

Немного видео, как и обещал
На точность показаний не обращайте внимание, стрелка нормально не одета + циферблат не закручен.
Движение стрелки с шагом 1000об/мин одним скачком.

Плавное изменение тока


Дело ясное, что в реальности скачков в 1000об/мин не будет и те незначительные перелеты стрелки, которые всё-же можно наблюдать на видео не станут проблемой. Просто если устранить и их — то можно здорово потерять в быстродействии прибора и его показания будут отставать от реальности.

P.S. Не сказать, что в архиве совсем говнокод, но да, местами можно было сделать красивее. Да, я знаю, что магические числа это плохо и да, я мог бы лучше. С другой стороны потеряться в исходнике в 200строк довольно сложно, поэтому кое-где я позволил себе немного на халтурить.
Просто зарегаться на хабре хотелось уже давно, а написать сколько-нибудь подробную статью по прошествии времени после реализации проекта становится всё сложнее, поэтому я решил, что сегодня будут «вести с полей».
Так что реальный код с реального устройства, собранного за реальный срок в 7 вечеров, которое завтра будет установлено на славный автомобиль ВАЗ 2108 с двигателем 21126 и надеюсь будет ещё долго радовать владельца, согласившегося выложить за мои труды аж 100 вечнозеленых.
Но мы то с вами знаем, что проделал я весь этот путь не только и не столько ради денег. Ведь так приятно, когда ты создал что-то и оно даже работает!

В архиве проект Atmel studio и схема+плата в Altium designer. Изготавливалась плата методом ЛУТ.
UPD: Архив был выложен на бесплатный файлообменник и потому скоропостижно скончался. Для хранения архива на habrastorage я встроил его в фото тахометра без циферблата(оно в верхней части статьи). В общем jpg нужно сохранить себе и открыть винраром. Можно ещё просто изменить расширение на zip.
UPD2: Схема и плата переработаны, картинки обновлены, архив по прежнему в картинке.
UPD3 Архив в картинки теперь не вставляется. Пишите в ЛС тут или найдете меня vk.com/trotskyi

До новых встреч!

Проверка прибора на автомобиле

Клиент очень доволен!
А когда увидел эту статью и все исходники, включая некоторые фото самого процесса изготовления платы — сказал, что его мозг взорван!
Поделиться публикацией
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 50

    +1
    На лабах по теории управления давали решать задачки с позиционированием головок HDD, а здесь живой тахометр, отлично!
      +1
      Спасибо!
      Кстати не поверите, но во время работы я задумывался над позиционированием головок.
      +8
      Это вы на видео повторяете как мантру?
      — Сукин сын… Сукин сын!
        +1
        Хахаха.
        Нет, это идет одна из последних серий Breaking Bad.
        0
        Я бы просто взял тахометр от приоры и засунул в обертку от жигулей :)
        И если возможно, дайте пожалуйста совета, да или нет, решение буду искать сам (в тексте не все понятно, но если окажется решение проблемы, перепрочту более внимательно). Я не ВАЗе езжу, на волге, и при переключении передач с 4 на 5 на скорости свыше 100 км\ч, стрелка тахометра прыгает как у вас в видео без сглаживания, даже чуточку сильнее. Двигатель инжектор. Возможно ли сгладить покачивание стрелки или это «приговор» с завода? Не смертельно, но приходится ждать около 3 секунд пока стрелка покажет точный оборот.
          0
          Приоровская панель приборов вся собрана на одном контроллере и одной большой печатке. Выпилить оттуда тахометр так, чтобы он вместился сюда считай не реально. Из приоровской панели можно было взять разве что микросерву, которая двигает стрелку и организовать уже управление не амперметром, а шаговым двигателем… Но приборки у нас не было и как-то на том и порешили.

          Ну сгладить то всегда можно. Другое дело, что на это придется потратить либо время и силы, либо деньги.
          В общем какого-то простого, быстрого решения я пока не знаю.
            +1
            Спасибо. Я ни разу не видел разобранную панель приоры, не знал что она на одной плате, беру свое решение обратно:)
          0
          Вопрос: стоило ли заморачиваться с МК?
          Этот самый январь выдает те же 2 импульса на один оборот коленвала, что и при обычном варианте использования, разве что импульсы инвертированы(активный уровень — низкий). Почему нельзя было поставить инвертирующую схемку?
            0
            Можно. Именно это и было первоначальной идеей. Но клиент очень настаивал на точности. Условием приёмки прибора является чёткое схождение показаний на всех делениях. Гарантировать этого при подобной доработке я не мог. Более того, в сети нашлось не мало отзывов о том, что этот прибор нагло врет уже с завода. Так что это нетривиальное решение было продиктовано именно поставленной задачей.
            0
            > будет установлено на славный автомобиль ВАЗ 2108

            Если возможно, сделайте фотку после монтажа. Интересно увидеть как в прямоугольную торпеду восьмерки будет вписан круглый тахометр.
              0
              Справа от приборки сделан полукруглый подиум, где уже давно были установлен этот тахометр и ещё пара приборчиков поменьше.
              Попробую завтра сфотографировать.
                0
                У восьмерки было два вида торпеды. И квадратная, и круглая. Сам переставлял, меняя квадратную на круглую.
                +4
                Почему-то ждал что посадите стрелку на вал сервопривода. Но так конечно теплее, «ламповей» получилось и серва сэкономлена .)
                  +2
                  Точность с обычным миллиамперметром, каковым является прибор от шестерки, будет зависеть от температуры, вязкости смазки в осях итд. Прав тот, кто предложил прибор от приоры — там стоят координатные указатели с двумя перпендикулярными обмотками и магнитом на оси (условно) — показания такого прибора всегда равны отношению токов в обмотках — соответственно из точность не зависит от мех потерь, так как токи (и следовательно, силы, действующие на стрелку) модно сделать большими (особенно в момент ищменения показаний). Отсюда же и хорошее демпфированик
                    0
                    Да, так было бы на много лучше.

                    В общем-то что главное при выполнении заказа?
                    Правильно — пройти приёмку, оговоренную в тех. задании) Думаю, что прибор её пройдет.
                      +4
                      Если чисто аналоговый шестерочный не только приемку на ВАЗе прошел, а 40 лет без малого на конвейере жил, то уж цифровой-то точно приемку пойдет — не только на ВАЗе, а даже у крутого тюнера :) На самом деле, судя по видео, алгоритмический демпфер стрелки работает прекрасно, и вообще, задача оживления ретроустройства решена блестяще.

                      Одно только добавление по железу: обмотка миллиамперметра — не чисто омическая, она обладает еще и индуктивностью — а значит, переход 0->1 на управляющем прибором выходе порта приведет к стремлению индуктивности поддержать протекающий через нее в землю ток в 10 мА (при показании полной шкалы), но теперь уже по цепи "+5 --> ограничительный резистор --> обмотка прибора --> вывод порта --> +5" — то есть индуктивность будет пытаться приложить к выводу порта еще одни 5 вольт сверх того, что там уже есть. Этому воспрепятствует встроенный в tiny защитный диод, однако я бы зашунтировал обмотку дополнительно внешним диодом Шоттки.
                        +2
                        На самом деле я ждал, пока кто-то заметит.
                        Такой диод конечно же существовал на макете и существует в готовом устройстве, но в схему и на печатку он не попал по запарке(скорее всего потому, что делалось всё это ночами после работы).
                        Припаян он под платой и его не видно сверху.
                        Вид сбоку всё прояснит
                        image
                          +2
                          Ну тогда еще позазанудствую: вход измерения частоты при отключенном от бортовой проводки приборе висит в воздухе — я бы его подтянул внешним резистором к нулю, чтобы не болтался на время инициализации ( я думаю в коде вы используете pull-up).
                          А в принципе, входы с активным нулем и пассивным уровнем выше логического лучше делать так — резистор подтяжки между выводом порта и питанием, а от вывода порта до внешней схемы — достаточно высоковольтный диод шоттки катодом наружу. Вроде все то же самое, но диод дешевле стабилитрона, нужный фронт не заваливается из-за отсутствия ограничительного резистора, да и входное сопротивление схемы можно сделать выше.

                          Теперь — рацпредложение: при подаче питания можно входить в тест-режим и последовательно показывать на приборе обороты от 1000 до 8000 с шагом 1000, удерживая каждое показание около пары секунд — будет выглядеть очень эффектно, и кроме того, служить калибровочным тестом. Для придирчивого юзера можно вообще сделать кнопки коррекции калибровочных показаний, запоминая коэффициенты в епром, и пересчитывая текущие в рабочем режиме соответственно. Тогда и резистор подбирать не надо будет — все можно будет сделать программно
                            0
                            Идея с диодом мне понравилась, спасибо.
                              0
                              Кстати мысль пришла, что помимо указанного вами входа, наверно было не очень правильно и неиспользуемые пины оставлять висящими в воздухе.
                                0
                                По олдскульным спецификациям на применение цифровых ИМС входы в воздухе оставлять не комильфо. Однако, в современных uC и SoC чипах такое количество выводов, что если все неиспользуемые сажать на землю, то никаких слоев печатки не хватит, чтобы развести функциональные ). Поэтому можно не сажать, а со сквозными токами и пробоями борятся внутренними средствами. Ну и вообще — на короткой ноге много не наведется…
                                  0
                                  Достаточно корпус прибора о шерстяной свитер потереть… Если оставить вывод АЦП висящим в воздухе, то устройство будучи на столе прекрасно реагирует на потенциал создающийся на человеке в результате вставания с кресла.

                                  Можно не сажать на землю, а просто активировать внутреннюю подтяжку вывода, тогда его потенциал зафиксируется встроенным стабилизатором тока к "+".
                                    0
                                    Почему-то думал, что пулапы по дефолту включены, но сейчас подумал и понял, что нет.
                                    А вообще надо бы, надо бы включить их. В автомобиле хватает всяких помех и наводок. Перепрошью девайсик по возможности.
                                    Я предусмотрительно оставил хвост с ISP разъемом, так что обновление прошивки проблем особых не вызывает.
                      0
                      Круто, нужно будет и себе попробовать тах сделать. Видео работы (со звуком само собой) на машине снимете?
                        0
                        Попробуем.
                          +2
                            0
                            Круто, очень плавно назад идет!
                              +1
                              А клиенту как понравилось!!!
                          0
                          А на обратном ходе стрелка резко прыгает. Не было желания сгладить и обратное движение?
                            0
                            Обратное движение сглаживается точно также. Просто в проверочном коде при достижении 8000 тупо стоит 0 и цикл повторяется заново.
                            +1
                            Возможно, было бы надежнее и проще реализовать алгоритм классического ПИ- или ПИД-регулятора, в качестве сигнала обратной связи для которого выступала бы модель поведения стрелки, все вычисления так же можно было бы проводить в целочисленном виде. Достоинства такого подхода — возможность гарантировать минимальный переходный процесс.
                            Заодно математику подтянуть…

                            Впрочем некоторые улучшения можно внести и на данном подходе — чтобы уменьшить вылет стрелки — на последнем этапе её необходимо притормозить дав на короткое время значение положения в противоположную сторону от текущего на 30...40%(подобрать экспериментально) от оставшегося до цели.
                              0
                              Про модель поведения стрелки задумывался, но это уже слишком.
                              Можно будет наверное тихими зимними вечерами как-нибудь заняться чисто ради спортивного интереса…
                                0
                                Да чего там моделировать — обычное интегрирование. Классический инерционный параметр. Главное подобрать нужный коэффициент определяющий зависимость изменения скорости стрелки к приложенной к ней силе(разница положений между текущим и установленным положением)
                                  0
                                  Боюсь там всё будет не так просто. Магнитному полю противодействует пружина, которая даже на глаз видно, что не линейная. Вращающийся механизм не сбалансирован и поэтому грузик до 4000 помогает катушке, а потом противодействует ей… Если ось стрелки параллельна земле — трение выше, чем если она перпендикулярна. Там, конечно, чем-то можно пренебречь, но если уж делать совсем правильно — то придется попотеть…
                                    0
                                    Основная проблема — инертность. Все остальное вторично. Влияние пружины можно учесть в разных коэффициентах на движение стрелки вперед/назад.

                                    Хотя, основная проблема возникает на этапе приближения стрелки к указанной позиции — надо её просто вовремя затормозить на последнем этапе «нацеливания», поможет некоторое нарушение логарифма в конце — загнуть кривую слегка вниз в конце — будет дополнительное торможение.
                                      0
                                      В общем-то тема очень интересная. Я когда-нибудь к ней вернусь.
                                      Просто пока я ни разу не применял регулирование с обратной связью от мат.модели.
                              0
                              Насколько сложно было бы просто переделать тахометр под датчик холла на одном из шкивов?
                                0
                                Под холла ничего и переделывать не нужно.
                                Только вот на шкивы обычно ставится не датчик холла и требуется компаратор на входе, чтобы сделать импульсы прямоугольными, ну и небольшие правки прошивки. Думаю за два-три вечера можно это всё дело прикрутить без проблем.
                                  0
                                  «на одном из шкивов» — имеются в виду шкивы распредвалов скорее всего. Там как раз Холл стоит, выдает соответственно один импульс на цикл — то есть на два оборота коленвала
                                    0
                                    Сейчас можно без особых проблем использовать тахометр с кол-вом импульсов от 1 на оборот и до упора в разрешение таймера.
                                    Один импульс на два оборота потребует немного большего, чем простое изменение константы в исходниках.
                                  0
                                  по хорошему нужна обратная связь и ПИД регулятор
                                    0
                                    По хорошему тут всё просто в несовершенство миллиамперметра упирается.
                                    Думаю, что самым грамотным решением задачи стрелочного тахометра является уже предложенный выше алгоритм скользящего среднего для входных данных и нормальный актуатор стрелки с двумя противодействующими катушками или микосерва с моторчиком и редуктором.
                                    Все эти ПИДы и матмодели чисто так, от любви к искусству и в академических целях рулят.
                                      +1
                                      «Все эти ПИДы и матмодели чисто так, от любви к искусству и в академических целях рулят.»
                                      хм… очень квалифицированное заявление в стиле
                                      www.youtube.com/watch?v=s3aYelkS0Yo
                                      вы бы изучили вопрос для начала, перед тем как такие заявления делать — например вот можно почитать www.cta.ru/cms/f/342946.pdf
                                        0
                                        «Все эти ПИДы и матмодели чисто так, от любви к искусству и в академических целях рулят.»
                                        Кажется вы не правильно меня поняли. Очевидно, что здесь я имел ввиду, что в контексте задачи разработки стрелочного тахометра он не нужен.
                                        К самому ПИД регулятору и моделированию у меня претензий нет. Более того — я неоднократно применял ПИД регулятор лично и имею представление как это работает, что будет легко доказать, если вы в этом усомнитесь.

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

                                        С удовольствием приму от вас обоснованные аргументы в пользу применения ПИДа с обратной связью от матмодели vs скользящее среднее+точный актуатор.
                                        Поскольку мы с вами «люди маленькие», давайте также для надежности разберем устройство и работу нескольких современных приборных панелей от мировых авто производителей.

                                        В общем то я думаю ясно, что там не миллиамперметры с ПИДами и матмоделями применяются
                                        Так что мне кажется разумно было бы на этом и остановиться.
                                    0
                                    замечу, что экспонента похожа на перевернутый логарифм…
                                    функцию log2(n) можно (в данном конкретном случае) заменить на -(2^(9-n)) — сравните:
                                    ваш логарифм:
                                    • image


                                    и перевернутая экспонента:
                                    • image

                                    а 2^(n) — это оператор "<<", а всё вместе:
                                    1024 — (1 << (9-n)) * 4
                                    или
                                    1024 — (1 << (11-n))
                                    или формула для Ёкселя:
                                    =1024-СТЕПЕНЬ(2;11-RC[-1])

                                      0
                                      И действительно же можно через << сделать
                                      Спасибо, взял на вооружение!
                                      0
                                      Прикольная штука! Давайте дружить проектами — я вот тоже автомобильной тематикой увлекаюсь.

                                      Вот только Altium designer у меня нет :(
                                        0
                                        Давайте дружить!
                                        Кстати проект был доработан. Вход с датчика потребовалось защитить по толковее. Ну и ещё даже на фото видно, что я в изделии забыл впаять тантал на +5В. В общем то не стал разбираться сбоило по этой причине или нет — переделал входняк, впаял тантал. Полет нормальный уже несколько месяцев.
                                          0
                                          ээ, подождите, так мы же уже дружим! по скайпу даже как-то общались. у меня было раннее утро, помните? )))
                                            0
                                            Точно, 23его октября. До чего добазарили хоть убей не помню :)

                                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                      Самое читаемое