Подключение тахометра к компьютеру
Тахометр – индикатор загрузки процессора.
Мне давно хотелось организовать в своем компьютере панель управления стилизованную под автомобильную. Спидометр для этой панели малопригоден, а вот тахометр… Этот прибор отображает количество оборотов двигателя автомобиля, а в компьютере мог бы отображать либо загрузку процессора, либо показывать загрузку винчестера. Использовать тахометр для отображения загрузки винта не сложно, а вот с загрузкой процессора у меня ничего не получалось.
Просто я пошел в магазин автоэлектрики и купил там отечественный тахометр ТХ-193. Продается в двух видах – в корпусе и без. Достоинства первого варианта - встроенная подсветка, легко встроить, установить. Недостатки – сложность разборки, для необходимой доработки, подсветка здорово греется.. Стоит дороже, чем без корпуса. Выбор за вами.
Я купил в корпусе. Подключил девайс к 12вольтам и СОМ порту. Разъем DB9.
Контакт3 ком порта – вход тахометра
Контакт5 ком порта – общий провод
. Установил софт. Врубил. И. Ничего. Подключено верно, но не работает. Нашел в сети схему тахометра и понял в чем дело. А дело во входном делителе напряжения. Делитель делит входное напряжение примерно на сорок. Если порт выдает импульсы амплитудой около 12 вольт, на схему тахометра попадает 0,3 вольта, что явно недостаточно.
После этой небольшой модернизации все заработало как надо. Смотрим фотографии. Панель не готова, поэтому некий беспорядок в проводах
На фото тахометр работает как индикатор загрузки процессора. Для подключения тахометра в качестве индикатора HDD, необходимо, те два провода, что припаяны непосредственно к микроамперметру тахометра, подключить к разъему IDE LED материнской платы.
Дополнение к статье: Тахометр – индикатор загрузки процессора.
К моему удивлению статья про тахометр вызвала большой интерес у читателей моей странички. Пришла куча писем с вопросами. Постарался ответить на все письма. Пишите, обязательно отвечу.
А для уважаемых читателей, кому по какой либо причине писать влом а что-то не понятно решил сделать небольшой FAQ.
1. Схема и принцип работы тахометра
Тахометр типа ТХ-193 установлен на щитке приборов и прикреплен к нему с помощью двух скоб 40 и гаек 38.
Тахометр имеет пластмассовый корпус 20, к которому спереди металлическим хромированным рантом 16 крепятся пластмассовые стеклодержатель 17 и ободок 15, а сзади тремя винтами прикреплен корпус 37 миллиамперметра. Электронная часть тахометра смонтирована на плате 36 из фольгированного гетинакса. Шкала крепится к корпусу миллиамперметра двумя винтами. На шкале цветными линиями выделены зоны опасных оборотов коленчатого вала. Предварительная зона опасных оборотов (5500-6000) выделена линиями желтого цвета, а зона опасных оборотов (свыше 6000) линиями красного цвета. Шкала прибора освещается лампой 19 типа АМН 12-3, которая вставляется в ламподержатель, привальцованный к верхней части корпуса. Свет от лампы проходит через голубой пластмассовый светофильтр 18, приклеенный к корпусу, затем через зазор между шкалой и корпусом и равномерно освещает шкалу. В нижней части шкалы имеются три отверстия, закрытые цветными пластмассовыми светофильтрами 41, 42 и 43. Через них проходит свет от контрольных ламп типа АМН12-3, которые устанавливаются в отдельных ламподержателях, привальцованных к нижней части корпуса прибора. Для контрольных ламп в нижней части корпуса имеется специальный отсек, разделенный перегородками на три отдельные секции.
Принцип действия тахометра основан на измерении частоты следования импульсов напряжения в первичной цепи системы зажигания двигателя. В четырёхцилиндровом четырёхтактном двигателе за один оборот валика распределителя зажигания контакты прерывателя размыкаются и замыкаются четыре раза (два раза за один оборот коленвала). Следовательно, за один оборот валика в первичной цепи системы зажигания создается четыре импульса тока и напряжения (два импульса за один оборот коленвала). Чем выше частота вращения коленчатого вала двигателя, тем больше частота следования импульсов.
Рис. 2. Принципиальная схема тахометра ТХ-193.
Импульсы напряжения в форме затухающей синусоиды (А) снимаются с конца первичной обмотки катушки зажигания и подаются на вход формирователя запускающих импульсов, который состоит из звеньев R1-C1, R2-C2, VI и CЗ-C4. От формирователя запускающие импульсы уже определенной величины и формы (Б) подаются на вход ждущего мультивибратора, собранного на транзисторах V2 и V4. Мультивибратор преобразует их в импульсы тока прямоугольной формы (В) с постоянной амплитудой и длительностью. Эти импульсы проходят через катушку миллиамперметра, включенную в коллекторную цепь транзистора V2. В зависимости от частоты следования импульсов меняется средняя величина силы тока, проходящего через обмотку катушки миллиамперметра, и тем на большую величину отклоняется стрелка прибора. Прибор обеспечивает отклонение стрелки на угол 270° при силе тока 10 мА.
Стабилитрон V5 стабилизирует напряжение питания, чтобы его колебания не влияли на точность показаний прибора. Терморезистор RЗ служит для компенсации температурной погрешности прибора. Диод VЗ предназначен для защиты транзистора V2 от пробоя ЭДС самоиндукции, возникающей в обмотке миллиамперметра.
Миллиамперметр применен магнитоэлектрического типа. Его магнитная система состоит из постоянного магнита 44, зажатого между двумя магнитопроводами - наружным 47 и внутренним 48. Магнит и магнитопроводы прикреплены к пластмассовому корпусу 37. Внутренний магнитопровод имеет кольцевую часть, которую охватывает катушка 45, закрепленная на держателе 46. Ось миллиамперметра вращается в двух втулках. Передняя втулка закреплена в корпусе 37, а задняя крепится к наружному магнитопроводу 47. Концы оси смазываются при сборке специальной силиконовой жидкостью, которая обладает демпфирующий свойством - гасит колебания стрелки при движении автомобиля. На оси закреплены стрелка, держатель 46 катушки и спиральные пружины. Чтобы уравновесить катушку, у держателя 46 на трех плечах закреплены свинцовые балансировочные грузики. Ток в обмотку катушки подводится через две спиральные пружины, концы которых припаяны к контактным лепесткам текстолитовой шайбы 49, закрепленной на корпусе миллиамперметра. Пружины изолированы друг от друга и от оси пластмассовой дистанционной втулкой. Протекающий по обмотке катушки 45 электрический ток создает вокруг нее магнитное поле. В результате взаимодействия магнитных полей катушки и постоянного магнита 44 на катушку действует сила, которая преодолевает сопротивление пружины и поворачивает ее вместе с осью и стрелкой на некоторый угол. Этот угол тем больше, чем больше величина силы тока, протекающего на обмотке катушки.
С 1983 г. несколько изменена схема входной части тахометра (до конденсатора C4). Новый вариант входной части показан на рисунке слева от основной схемы тахометр
2. Схема подключения тахометра к компу.
Я покупал тахометр в корпусе за 350 рублей. Без корпуса стоит поцентов на 20 дешевле. Разъем DB9 на радиорынке стоит 10 рублей.
Еще раз подчеркиваю, разбирать тахометр довольно большой гимор. Но потом гораздо проще встроить в комп. Для разборки нужно отверткой разогнуть один борт хромированного кольца отверткой. Большая вероятность поцарапать кольцо и корпус.
Тахометр довольно большой. Диаметр отверстия под установку 100 мм. Подсветка сделана на лампе накаливания 12В. Греется прилично.
Тахометр – индикатор загрузки процессора.
Мне давно хотелось организовать в своем компьютере панель управления стилизованную под автомобильную. Спидометр для этой панели малопригоден, а вот тахометр… Этот прибор отображает количество оборотов двигателя автомобиля, а в компьютере мог бы отображать либо загрузку процессора, либо показывать загрузку винчестера. Использовать тахометр для отображения загрузки винта не сложно, а вот с загрузкой процессора у меня ничего не получалось.
Просто я пошел в магазин автоэлектрики и купил там отечественный тахометр ТХ-193. Продается в двух видах – в корпусе и без. Достоинства первого варианта - встроенная подсветка, легко встроить, установить. Недостатки – сложность разборки, для необходимой доработки, подсветка здорово греется.. Стоит дороже, чем без корпуса. Выбор за вами.
Я купил в корпусе. Подключил девайс к 12вольтам и СОМ порту. Разъем DB9.
Контакт3 ком порта – вход тахометра
Контакт5 ком порта – общий провод
. Установил софт. Врубил. И. Ничего. Подключено верно, но не работает. Нашел в сети схему тахометра и понял в чем дело. А дело во входном делителе напряжения. Делитель делит входное напряжение примерно на сорок. Если порт выдает импульсы амплитудой около 12 вольт, на схему тахометра попадает 0,3 вольта, что явно недостаточно.
После этой небольшой модернизации все заработало как надо. Смотрим фотографии. Панель не готова, поэтому некий беспорядок в проводах
На фото тахометр работает как индикатор загрузки процессора. Для подключения тахометра в качестве индикатора HDD, необходимо, те два провода, что припаяны непосредственно к микроамперметру тахометра, подключить к разъему IDE LED материнской платы.
Дополнение к статье: Тахометр – индикатор загрузки процессора.
К моему удивлению статья про тахометр вызвала большой интерес у читателей моей странички. Пришла куча писем с вопросами. Постарался ответить на все письма. Пишите, обязательно отвечу.
А для уважаемых читателей, кому по какой либо причине писать влом а что-то не понятно решил сделать небольшой FAQ.
1. Схема и принцип работы тахометра
Тахометр типа ТХ-193 установлен на щитке приборов и прикреплен к нему с помощью двух скоб 40 и гаек 38.
Тахометр имеет пластмассовый корпус 20, к которому спереди металлическим хромированным рантом 16 крепятся пластмассовые стеклодержатель 17 и ободок 15, а сзади тремя винтами прикреплен корпус 37 миллиамперметра. Электронная часть тахометра смонтирована на плате 36 из фольгированного гетинакса. Шкала крепится к корпусу миллиамперметра двумя винтами. На шкале цветными линиями выделены зоны опасных оборотов коленчатого вала. Предварительная зона опасных оборотов (5500-6000) выделена линиями желтого цвета, а зона опасных оборотов (свыше 6000) линиями красного цвета. Шкала прибора освещается лампой 19 типа АМН 12-3, которая вставляется в ламподержатель, привальцованный к верхней части корпуса. Свет от лампы проходит через голубой пластмассовый светофильтр 18, приклеенный к корпусу, затем через зазор между шкалой и корпусом и равномерно освещает шкалу. В нижней части шкалы имеются три отверстия, закрытые цветными пластмассовыми светофильтрами 41, 42 и 43. Через них проходит свет от контрольных ламп типа АМН12-3, которые устанавливаются в отдельных ламподержателях, привальцованных к нижней части корпуса прибора. Для контрольных ламп в нижней части корпуса имеется специальный отсек, разделенный перегородками на три отдельные секции.
Принцип действия тахометра основан на измерении частоты следования импульсов напряжения в первичной цепи системы зажигания двигателя. В четырёхцилиндровом четырёхтактном двигателе за один оборот валика распределителя зажигания контакты прерывателя размыкаются и замыкаются четыре раза (два раза за один оборот коленвала). Следовательно, за один оборот валика в первичной цепи системы зажигания создается четыре импульса тока и напряжения (два импульса за один оборот коленвала). Чем выше частота вращения коленчатого вала двигателя, тем больше частота следования импульсов.
Рис. 2. Принципиальная схема тахометра ТХ-193.
Импульсы напряжения в форме затухающей синусоиды (А) снимаются с конца первичной обмотки катушки зажигания и подаются на вход формирователя запускающих импульсов, который состоит из звеньев R1-C1, R2-C2, VI и CЗ-C4. От формирователя запускающие импульсы уже определенной величины и формы (Б) подаются на вход ждущего мультивибратора, собранного на транзисторах V2 и V4. Мультивибратор преобразует их в импульсы тока прямоугольной формы (В) с постоянной амплитудой и длительностью. Эти импульсы проходят через катушку миллиамперметра, включенную в коллекторную цепь транзистора V2. В зависимости от частоты следования импульсов меняется средняя величина силы тока, проходящего через обмотку катушки миллиамперметра, и тем на большую величину отклоняется стрелка прибора. Прибор обеспечивает отклонение стрелки на угол 270° при силе тока 10 мА.
Стабилитрон V5 стабилизирует напряжение питания, чтобы его колебания не влияли на точность показаний прибора. Терморезистор RЗ служит для компенсации температурной погрешности прибора. Диод VЗ предназначен для защиты транзистора V2 от пробоя ЭДС самоиндукции, возникающей в обмотке миллиамперметра.
Миллиамперметр применен магнитоэлектрического типа. Его магнитная система состоит из постоянного магнита 44, зажатого между двумя магнитопроводами - наружным 47 и внутренним 48. Магнит и магнитопроводы прикреплены к пластмассовому корпусу 37. Внутренний магнитопровод имеет кольцевую часть, которую охватывает катушка 45, закрепленная на держателе 46. Ось миллиамперметра вращается в двух втулках. Передняя втулка закреплена в корпусе 37, а задняя крепится к наружному магнитопроводу 47. Концы оси смазываются при сборке специальной силиконовой жидкостью, которая обладает демпфирующий свойством - гасит колебания стрелки при движении автомобиля. На оси закреплены стрелка, держатель 46 катушки и спиральные пружины. Чтобы уравновесить катушку, у держателя 46 на трех плечах закреплены свинцовые балансировочные грузики. Ток в обмотку катушки подводится через две спиральные пружины, концы которых припаяны к контактным лепесткам текстолитовой шайбы 49, закрепленной на корпусе миллиамперметра. Пружины изолированы друг от друга и от оси пластмассовой дистанционной втулкой. Протекающий по обмотке катушки 45 электрический ток создает вокруг нее магнитное поле. В результате взаимодействия магнитных полей катушки и постоянного магнита 44 на катушку действует сила, которая преодолевает сопротивление пружины и поворачивает ее вместе с осью и стрелкой на некоторый угол. Этот угол тем больше, чем больше величина силы тока, протекающего на обмотке катушки.
С 1983 г. несколько изменена схема входной части тахометра (до конденсатора C4). Новый вариант входной части показан на рисунке слева от основной схемы тахометр
2. Схема подключения тахометра к компу.
Я покупал тахометр в корпусе за 350 рублей. Без корпуса стоит поцентов на 20 дешевле. Разъем DB9 на радиорынке стоит 10 рублей.
Еще раз подчеркиваю, разбирать тахометр довольно большой гимор. Но потом гораздо проще встроить в комп. Для разборки нужно отверткой разогнуть один борт хромированного кольца отверткой. Большая вероятность поцарапать кольцо и корпус.
Тахометр довольно большой. Диаметр отверстия под установку 100 мм. Подсветка сделана на лампе накаливания 12В. Греется прилично.
Добрый день.
Выношу на Ваше рассмотрение схему простенького цифрового тахометра на AVR ATtiny2313, КР514ИД2, и оптопаре спроектированного мною.
Сразу оговорюсь: аналогичных схем в интернете много. У каждой реализации свои плюсы и минусы. Возможно, кому-то мой вариант подойдет больше.
Начну, пожалуй, с тех. задания.
Задача: нужно сделать цифровой тахометр для контроля оборотов электрического двигателя станка.
Вводные условия: Есть готовый реперный диск на 20 отверстий от лазерного принтера. В наличии много оптопар от сломанных принтеров. Средние (рабочие) обороты 4 000-5 000 оборотов/минуту. Погрешность отображаемых результатов не должна превышать ± 100 оборотов.
Ограничение: питание для блока управление составляет 36В (тахометр будет установлен в один корпус с блоком управления – об этом ниже).
Маленькое лирическое отступление. Это станок моего друга. На станке установлен электромотор PIK-8, обороты которого контролируются согласно найденной в интернете и модифицированной схеме. По просьбе друга и был разработан простенький тахометр для станка.
Изначально в схеме планировалось применить ATMega16, но рассмотрев условия, решено было ограничиться ATtiny2313, работающего от внутреннего (RC) генератора на частоте 4 Мгц.
Общая схема выглядит следующим образом:
При необходимости внесения изменений в прошивку тахометра на плате предусмотрен разъем ISP.
На схеме подтягивающий резистор R12, номиналом 30 кОм, подобран опытным путём для конкретной оптопары. Как показывает практика – для разных оптопар он может отличаться, но среднее значение в 30 кОм должно обеспечить устойчивую работу для большинства принтерных оптопар. Согласно документации к ATtiny2313, величина внутреннего подтягивающего резистора составляет от 20 до 50 кОм в зависимости от реализации конкретной партии микроконтроллеров, (стр. 177 паспорта к ATtiny2313), что не совсем подходит. Если кто захочет повторить схему, может для начала включать внутренний подтягивающий резистор, возможно у Вас, для Вашей оптопары и вашего МК работать будет. У меня, для моего набора не заработало.
Так выглядит типичная оптопара от принтера.
Светодиод оптопары запитан через ограничивающий резистор на 1К, который я разместил непосредственно на плате с оптопарой.
Для фильтрации пульсаций напряжения на схеме два конденсатора, электролитический на 220 мкФ х 25В (что было под рукой) и керамический на 0,1 мкФ, (общая схема включения микроконтроллера взята из паспорта ATtiny2313).
Для защиты от пыли и грязи плата тахометра покрыта толстым слоем автомобильного лака.
Замена компонентов.
Можно применить любой светодиодный индикатор на четыре цифры, либо два сдвоенных, либо четыре поодиночных. На худой конец, собрать индикатор на отдельных светодиодах.
Вместо КР514ИД2 можно применить КР514ИД1 (которая содержит внутри токоограничивающие резисторы), либо 564ИД5, К155ПП5, К155ИД9 (при параллельном соединении между собой ножек одного сегмента), или любой другой преобразователь двоичного в семисегментный (при соответствующих изменениях подключения выводов микросхем).
Транзисторы VT1-VT4 – любые слаботочные, работающие в режиме ключа.
Принцип работы основан на подсчете количества импульсов полученных от оптопары за одну секунду и пересчет их для отображения количества оборотов в минуту. Для этого использован внутренний счетчик Timer/Counter1 работающий в режиме подсчета импульсов поступающих на вход Т1 (вывод PD5 ножка 9 МК). Для обеспечения стабильности работы, включен режим программного подавления дребезга. Отсчет секунд выполняет Timer/Counter0 плюс одна переменная.
Расчет оборотов, на чем хотелось бы остановиться, происходит по следующей формуле:
M = (N / 20) *60,
где M – расчетные обороты в минуту (60 секунд), N – количество импульсов от оптопары за одну секунду, 20 – число отверстий в реперном диске.
Итого, упростив формулу получаем:
M = N*3.
Но! В микроконтроллере ATtiny2313 отсутствует функция аппаратного умножения. Поэтому, было применено суммирование со смещением.
Для тех, кто не знает суть метода:
Число 3 можно разложить как
3 = 2+1 = 2 1 + 2 0 .
Если мы возьмем наше число N сдвинем его влево на 1 байт и приплюсуем еще одно N сдвинутое влево на 0 байт – получим наше число N умноженное на 3.
В прошивке код на AVR ASM для двухбайтной операции умножения выглядит следующим образом:
Mul2bytes3:
CLR LoCalcByte //очищаем рабочие регистры
CLR HiCalcByte
mov LoCalcByte,LoInByte //грузим значения полученные из Timer/Counter1
mov HiCalcByte,HiInByte
CLC //чистим быт переноса
ROL LoCalcByte //сдвигаем через бит переноса
ROL HiCalcByte
CLC
ADD LoCalcByte,LoInByte //суммируем с учетом бита переноса
ADC HiCalcByte,HiInByte
ret
Проверка работоспособности и замер точности проводился следующим образом. К вентилятору компьютерного куллера был приклеен картонный диск с двадцатью отверстиями. Обороты куллера мониторились через BIOS материнской платы и сравнивались с показателями тахометра. Отклонение составило порядка 20 оборотов на частоте 3200 оборотов/минуту, что составляет 0,6%.
Вполне возможно, что реальное расхождение составляет меньше 20 оборотов, т.к. измерения материнской платы округляются в пределах 5 оборотов (по личным наблюдениям для одной конкретной платы).
Верхний предел измерения 9 999 оборотов в минуту. Нижний предел измерения, теоретически от ±10 оборотов, но на практике не замерялся (один импульс от оптопары в секунду дает 3 оборота в минуту, что, учитывая погрешность, теоретически должно правильно измерять скорость от 4 оборотов в минуту и выше, но на практике данный показатель необходимо завысить как минимум вдвое).
Отдельно остановлюсь на вопросе питания.
Вся схема питается от источника 5В, расчетное потребление всего устройства не превышает 300 мА. Но, по условиям ТЗ, тахометр конструктивно должен находится внутри блока управления оборотами двигателя, а к блоку от ЛАТРа поступает постоянное напряжение 36В., чтобы не тянуть отдельный провод питания, внутри блока установлена LM317 в паспортном включении, в режиме понижения питания до 5В (с ограничивающим резистором и стабилитроном для защиты от случайного перенапряжения). Логичнее было бы использовать ШИМ-контроллер в режиме step-down конвертера, на подобии МС34063, но у нас в городе купить такие вещи проблематично, поэтому, применяли то, что смогли найти.
Фотографии платы тахометра и готового устройства.
К сожалению, сейчас нет возможности сфотографировать на станке.
После компоновки плат и первой пробной сборки, коробка с устройством отправилась на покраску.
В случае, если у Вас тахометр не заработал сразу после включения, при заведомо верном монтаже:
1) Проверить работу микроконтроллера, убедится, что он работает от внутреннего генератора. Если схема собранна правильно – на циферблате должно отображаться четыре нуля.
2) Проверить уровень импульсов от оптопары, при необходимости подобрать номинал резистора R12 или заменить схему подключения оптопары. Возможен вариант обратного подключения оптотранзистора с подтяжкой к минусу, с включенным или нет внутренним подтягивающим резистором МК. Также возможно применить транзистор в ключевом (инвертирующем) режиме работы.
P.S. по желанию заказчика тахометр отображает не один ноль, а четыре при отсутствии импульсов от оптопары.
P.P.S. Тахометр оказался очень чувствителен к перепадам оборотов двигателя. Незначительные пульсации напряжения вызывают отклонение частоты вращения, что незамедлительно отображается на экране тахометра. В будущем планирую сделать обработку для округления отображаемых результатов в пределах ±50 оборотов, если это будет нужно заказчику.
Всем привет! Хотелось бы поделиться с сообществом своей историей модернизации тахометра ТХ-193
Неделю назад обратился ко мне один человек с довольно нестандартным заданием — нужно было обеспечить работу древнего тахометра ТХ-193(ВАЗ 2106) с современным двигателем ВАЗ21126(Приора), имеющем систему зажигания с индивидуальными катушками на каждый цилиндр, а значит просто подключить ТХ-193 к катушке зажигания уже не получится. К тому-же заказчик хотел повысить эксплуатационные качества прибора, оставив не тронутым его внешний вид и дизайн. В общем дело кончилось тем, что я взялся выпотрошить электронную начинку прибора и разработать свою, с блэкджеком и шлюхами. Информацию о частоте вращения коленчатого вала тахометр теперь будет получать от ЭБУ Январь 7.2, для чего в последнем имеется специальный вывод.
Под катом фото, видео, схема, исходники и много текста, повествующего о логарифмах и о том как правильно масштабировать данные и отделаться от запятой.
Хард
Начнем с устройства ТХ-193. Механическая часть прибора представляет из себя миллиамперметр классической конструкции, с постоянным магнитом и подвижной катушкой, приводящей в движение стрелку.
Софт
На самом деле ещё до вычерчивания схемы я оперативно собрал всё это дело на макетке, взяв контроллер в DIP корпусе и сразу же принялся махать стрелкой))
В общем то софт оказался немного интереснее харда.
Начнем с общей архитектуры:
Таймер 0 тикает с частотой 250кГц, а значит период тика = 4мкс прерывание по переполнению происходит с частотой 250кГц / 256 = 0.976кГц
а значит прерывание происходит один раз в 1024мкс. Можно было заморочиться и подогнать это дело ближе к одной миллисекунде путем обновления счетчика таймера в прерывании, но в данной задаче это не к чему. Т.е. мы можем измерять время с точностью 4мкс, что вполне достаточно для заданной точности прибора.
Таймер 0 у нас не только отсчитывает время, но ещё и выставляет флажки для запуска тех или иных задач с определенной периодичностью.
Задачи у нас две. Давать отмашку прерыванию INT0 на измерение периода импульсов на входе и изменять положение стрелки.
Таймер 1 тикает с частотой 16мГц, но т.к. он 16ти битный и используется режим Phase and Frequency Correct PWM — итоговая частота ШИМ оказывается очень небольшой и составляет что-то около 122Гц. Это потому, что таймер тикает сначала вверх, а потом вниз. Зато имеем тру 16битный ШИМ и можем очень точно рулить стрелкой! В даташите найдутся все подробности.
Механика, к слову сказать, оказалась отвратительного качества, плавно двигать стрелку было не реально из-за повышенного трения в механизме, который пришлось для начала хотя-бы смазать трансмиссионным маслом. Но это уже детали.
Была составлена таблица соответствия показаний прибора с соответствующим значением регистра таймера в ШИМ попугаях.
В исходниках это дело называется GAUGE_TABLE и вынесено по привычке в отдельный файл.
Текста почему-то получается всё больше, но не остановиться более подробно на этом моменте я просто не могу!
Итак, понятно, что нам нужна логарифмическая прогрессия. Шаг изменения тока в цепи миллиамперметра должен уменьшаться по мере приближения к целевой отметке. Ресурсы на вес золота, а значит только табличный метод. Точек тоже по возможности минимум.
Начнем с построения логарифмической таблицы.
Всё очень просто: запускаем 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об/мин не будет и те незначительные перелеты стрелки, которые всё-же можно наблюдать на видео не станут проблемой. Просто если устранить и их — то можно здорово потерять в быстродействии прибора и его показания будут отставать от реальности.
До новых встреч!
Проверка прибора на автомобиле
Клиент очень доволен!
А когда увидел эту статью и все исходники, включая некоторые фото самого процесса изготовления платы — сказал, что его мозг взорван!
Сразу оговорюсь, речь идет о праворульной Toyota Corolla-II с двигателем 4E-FE, объемом 1,3 в кузове EL-51. Я нашел два способа подключения: через диагностический разъем, который находится под капотом; напрямую, в компьютер, он же ECU. Для себя я выбрал второй метод. Преимущество его в том, что не нужно тянуть и без того короткие и тонкие провода тахометра в подкапотное пространство, да и в момент установки на улице шел дождь, что, откровенно говоря, и стало решающим фактором выбора метода подключения. Итак, займемся установкой тахометра. Для начала, давайте найдем место, где расположен компьютер, он же мозг автомобиля. Находится он за бардачком. Чтобы добраться до заветной коробочки, бардачок снимать не надо. Достаточно сдавить его крепко по бокам и он добровольно сам все вам расскажет и даст доступ.
Теперь надо определиться, куда именно разместить само табло электронного тахометра. Я решил положить его рядом со штатными часами. И провода наращивать не надо, и отверстие не нужно делать лишнее, и видно хорошо с водительского места.
Конечно, перед тем, как подключать провода, я изучил распиновку разъемов и нашел, где находится нужные провода. Теперь я расскажу эту тайну и вам… Конечно, прежде чем вынимать фишку из компьютера, необходимо скинуть плюсовую клемму с аккумулятора, но вы же понимаете, что на улице идет дождь? Ну да ладно… Вот фишка, два правильных провода отгорожены моим указательным пальцем.
И только после этого клемма поддается. Вы думаете я такой умный, что сразу до всего этого допер? Неет. Это я такой упертый. Я вертел фишку в руках и дергал за клеммы минут сорок. Итак, клемма на свободе! Аккуратно при помощи ножа раздвигаем металлическое крепления провода и просовываем нужный провод. Получается как-то вот так:
Показания электронного тахометра 590 оборотов в минуту, что есть в пределах нормы для агрегата с механической коробкой переключения передач при выключенных потребителях (габариты, фары, вентилятор, кондиционер, …). Вот теперь, глядя на этот нехитрый прибор можно крутить двигатель с умом. Вас съели? Не беда. И здесь у вас есть два… выхода.
Читайте также: