Цифровой тахометр на микроконтроллере pic16f628a. Бесконтактный тахометр на PIC16F685. Описание работы тахометра на микроконтроллере PIC16F628

Тахометр предназначен для измерения оборотов практически любого двигателя. Начиная от мопедного 1-целиндрового двухтактного и заканчивая 16-ти целиндровым 4-х тактным двигателем. Индикация на 4-х разрядном цифровом индикаторе, точность имерения 50
оборотов в минуту.

После включения питания - тахометр сразу начинает измерять обороты. Первое нажатие кнопки - вызовет индикацию установленных количества импульсов на 1 оборот (по умолчанию 2 имп на 1 оборот, что соответствует 4-х тактному 4-х целиндровому двигателю). На дислее будет Р-2,0. Повторное нажатие кнопки, вызовет перебор всех допустимых значений - от 0,5 до 8 импульсов на 1 оборот. Пусть кажется немного странно - 0,5 импулсов, но это всего лишь означает что 1 имульс будет за 2 оборота. После установки нужного количества импульсов, через примерно 5 секунд - прибор запишит изменения в энергонезависимой памяти EEPROM (т.е. при повторном включении питания, не требуе вновь устанавливать количество импульсов), и перейдет в режим измерения оборотов с вновь установленными количеством импульсов.

Печатная плата с двух частей

Фото от lawyer

Нередко в радиолюбительской практике требуется определить частоту вращения валов различных устройств. Примерами тому служат контроль вращения вентиляторов (в частности, компьютерных), автомобильные приложения, измерение параметров моторов в робототехнике и пр. В большинстве случаев неудобно иметь механическое соединение с измеряемым аппаратом для подключения датчика вращения. Соответственно, бесконтактные измерители имеют несомненное преимущество.

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

Предлагаемый вниманию тахометр предназначен для измерения частоты вращения в пределах от 50 до 9999 оборотов в минуту. Показания высвечиваются на 4-значном 7-сегментном светодиодном индикаторе. Для связи с вращающимся объектом используется инфракрасный луч, излучаемый соответствующим светодиодом. Регистрация отраженного луча производится инфракрасным фототранзистором.

Для измерений необходимо прерывать луч синхронно с вращением объекта. Для этого на вращающийся объект следует наклеить бумажный датчик, поделенный на черную и белую области. Например, вращающийся вал можно обернуть полоской самоклеющейся белой бумаги, используемой для печати адреса на конвертах или посылках. Половину длины полоски следует закрасить в черный цвет. Если сам вал недоступен, на торец вала можно наклеить картонный кружок, половина которого закрашена в черный цвет. Чередование черных и белых областей при вращении приведет к прерыванию отраженного луча с частотой вращения. Чувствительность прибора достаточна для проведения измерений при удалении фотодатчика от вращающегося объекта до 5 см.

Принцип работы

Тахометр состоит из трех функциональных блоков: инфракрасного излучателя и приемника; усилителя-формирователя принимаемых импульсов и цифрового обработчика сигналов, выполненного на микроконтроллере и имеющего выход на 7-сегментный индикатор. В качестве излучателя/приемника могут быть использованы практически любые инфракрасные светодиоды и фототранзисторы. Нами применены детали в круглых корпусах типа Т1 (диаметр 5 мм) Для исключения влияния излучателя на приемник, оба они заключены в отрезки черной полихлорвиниловой трубки длиной около 2 см. Так как инфракрасный фототранзистор также чувствителен и к видимому свету, трубка на нем в значительной мере препятствует попаданию в него прямых лучей от посторонних источников. В любом случае следует избегать измерений при ярком солнечном или ламповом свете на пути следования луча, так как это может помешать нормальной работе прибора.

Для повышения чувствительности фотодатчика сопротивление в коллекторной цепи транзистора VT1 выбрано достаточно большим, что потребовало применение усилителя с высоким входным сопротивлением. Усилитель выполнен на левом (на схеме) операционном усилителе (ОУ) DA1A, коэффициент усиления которого определяется отношением сопротивлений резисторов R4/R3. Конденсатор С2 в цепи обратной связи DA1A предотвращает самовозбуждение усилителя.

Оба входа DA1A подключены к резистивному делителю R6R7, обеспечивающему половину напряжения питания в общей точке. Выход усилителя DA1A подключен к компаратору DA1B, существенно улучшающему форму выходных сигналов и приближающему их к практически прямоугольной.

Резистор R8 увеличивает гистерезис компаратора, что способствует уменьшению влияния помех на выходе датчика. Работоспособность усилителя-формирователя во многом зависит от параметров ОУ. Он должен обеспечивать полный размах сигнала на выходе при питании напряжением ±2,5 В. Примененный нами ОУ типа TLV2372 , выпускаемый фирмой Техаs Instruments, идеально соответствует поставленной цели.

Сигнал с выхода усилителя-формирователя поступает на аналоговый вход микроконтроллера DD1. Следует отметить, что
микроконтроллер также имеет встроенный компаратор, но нам не удалось добиться его устойчивой работы без самовозбуждения вблизи точки переключения. Вход DD1 сконфигурирован для использования совместно со встроенным в него модулем ССР1. Этот модуль используется для измерения периода входного импульса в единицах эталонной частоты. В качестве последней использована тактовая частота микроконтроллера 2,5 МГц.

Очевидно, частота вращения F связана с периодом вращения Т посредством формулы:

Fоб/мин=(10^6/Тмкс)х60

Если за время измерения периода вращения будет зарегистрировано N периодов эталонной частоты 2,5 МГц, то Tмкс=N/2,5. Таким образом, мы приходим к окончательной формуле:

Fоб/мин=(2,5x10^6/N)x60=15x10^7/N

Это значение вычисляется микроконтроллером и высвечивается на индикаторе, состоящем из четырех 7-сегментных модулей для индикации одной цифры. Нами применены широко распространенные индикаторы SC36-11 фирмы Kingbright, имеющие общие катоды. Соответствующие аноды индикаторов соединены параллельно и подключены к микроконтроллеру через токоограничительные резисторы R10-R16, которые определяют яркость свечения сегментов. Следует отметить, что максимальный по паспорту ток через сегмент, который может обеспечить микроконтроллер, составляет 25 мА, что при падении напряжения на сегменте порядка 2,5 В, определяет минимальную величину резисторов в 100 Ом.

Мультиплексное управление индикаторами обеспечивается микроконтроллером через ключевые полевые транзисторы VT2-VT5. Использование полевых ключевых транзисторов имеет несомненное преимущество перед биполярными - отпадает надобность в базовых резисторах и обеспечивается пренебрежимо малое падение напряжения на ключах. К тому же маломощные полевые транзисторы сейчас не дороже соответствующих биполярных.

Каждый сегмент индикатора высвечивается в течение 4 мс при мультиплексировании, что соответствует частоте обновления всего дисплея порядка 65 Гц, чем полностью исключается его мерцание.

При указанных на схеме сопротивлениях резисторов R10-R16, тахометр потребляет ток порядка 80 мА. Это позволяет питать всю схему через стандартный маломощный регулятор напряжения типа 78L05 с фиксированным выходным напряжением 5 В. На вход устройства можно подавать напряжение порядка 7,5...9 В, например, от любого имеющегося в распоряжении практически каждого пользователя стандартного малогабаритного блока питания, выполненного в сетевом штепселе.

Программное обеспечение

Программа микроконтроллера написана на языке Ассемблер и предназначена для компиляции в среде MPLAB, бесплатно предоставляемой фирмой Microchip на ее веб-сайте. Программа достаточно полно прокомментирована для возможной ее модификации, поэтому здесь мы ограничимся лишь ее общим и кратким описанием.

После необходимой конфигурации регистров микроконтроллера программа переходит в основной цикл. Цикл начинается с высвечивания текущего значения частоты вращения, цифра за цифрой, начиная с левого разряда. Незначащие нули слева от первого действительного разряда (при частоте вращения менее 1000 об/ мин) не высвечиваются. Частота обновления показаний дисплея определяется переменной SPEED и при указанном в программе значении составляет около 160 мс. Этим предотвращается быстрое мелькание цифр на дисплее, затрудняющее чтение показаний. В течение этого времени тахометр высвечивает прежнее значение частоты вращения независимо от наличия новых данных измерений.

По истечении контрольного времени индикации старых показаний программа переходит в одно из трех состояний. В первом состоянии производится запрос на новое измерение периода вращения. При этом активизируется ССР1 модуль микроконтроллера и разрешаются прерывания от таймера TMR1, считающего периоды эталонной частоты FOSC/4 Поступление первого импульса от датчика скорости вращения ожидается в течение 0,8 с. В случае не поступления импульса производится повторный запрос, и показания дисплея обнуляются.

После поступления первого импульса от датчика вращения, программа переходит во второе состояние, которое длится до получения второго импульса от датчика В этом состоянии обрабатывается соответствующее прерывание от модуля ССР1 и начинается подсчет числа импульсов эталонной частоты таймером TMR1. Каждое переполнение таймера вызывает аппаратное прерывание, производящее подсчет числа переполнений. Как только это число превзойдет 255 (что соответствует остановке вала или слишком медленному его вращению), на дисплее высвечиваются символы «_ _ _ _», сигнализирующие об ошибке. В этом случае программа переходит в состояние 1, и показания дисплея обнуляются.

Class="eliadunit">

Получение второго импульса от датчика переводит устройство в третье состояние. В этом состоянии происходит вычисление частоты вращения по формуле, проведенной выше. Если полученное значение оказывается меньше 50, высвечивается код ошибки «_ _ _ _». Если же полученное значение больше 10000, кратковременно высвечивается «- - - -». В любом случае, программа переходит в режим 1 с последующим обнулением дисплея

Новое измерение частоты вращения усредняется с последними тремя измерениями перед индикацией (скользящее среднее). Как показывает практика, частота вращения редко остается постоянной и всегда изменяется в небольших пределах. Усреднение способствует уменьшению диапазона отклонений последовательных измерений и облегчению.

Архив для статьи "Бесконтактный тахометр на PIC16F685" Электронная почта
Добрый день.
Выношу на Ваше рассмотрение схему простенького цифрового тахометра на AVR ATtiny2313 , КР514ИД2 , и оптопаре спроектированного мною.
Сразу оговорюсь: аналогичных схем в интернете много. У каждой реализации свои плюсы и минусы. Возможно, кому-то мой вариант подойдет больше.

Начну, пожалуй, с тех. задания.
Задача : нужно сделать цифровой тахометр для контроля оборотов электрического двигателя станка.
Вводные условия : Есть готовый реперный диск на 20 отверстий от лазерного принтера. В наличии много оптопар от сломанных принтеров. Средние (рабочие) обороты 4 000-5 000 оборотов/минуту. Погрешность отображаемых результатов не должна превышать ± 100 оборотов.

Ограничение : питание для блока управление составляет 36В (тахометр будет установлен в один корпус с блоком управления – об этом ниже).

Маленькое лирическое отступление. Это станок моего друга. На станке установлен электромотор PIK-8, обороты которого контролируются согласно найденной в интернете и модифицированной схеме. По просьбе друга и был разработан простенький тахометр для станка.

Изначально в схеме планировалось применить ATMega16, но рассмотрев условия, решено было ограничиться ATtiny2313, работающего от внутреннего (RC) генератора на частоте 4 Мгц.

Общая схема выглядит следующим образом:

Как видно, ничего сложного. Для преобразования двоичного кода в семисегментный, я применил дешифратор КР514ИД2, это дает сразу три плюса.

  • Во первых – экономия места в памяти ATtiny2313 за счет уменьшения рабочего кода (т.к. процедура программного преобразования двоичного кода в семисегментный отсутствует в прошивке за ненадобностью).
  • Во вторых: уменьшение нагрузки на выходы ATtiny2313, т.к. светодиоды «засвечивает» КР514ИД2 (при высвечивании цифры 8 максимальное потребление составит 20-30 мА (типичное для одного светодиода) * 7 = 140-210 мА что «много» для ATtini2313 с её полным паспортным максимальным (нагруженным) потреблением 200 мА).
  • В третьих – уменьшено число «занятых» ног микроконтроллера, что дает нам возможность в будущем (при необходимости) модернизировать схему путём добавления новых возможностей.

Сборка устройства осуществлена на макетной плате. Для этого была разобрана завалявшаяся в закромах плата от нерабочей микроволновой печи. Цифровой светодиодный индикатор, ключевые транзисторы (VT1-VT4) и ограничительные резисторы (R1 – R12) были взяты комплектом и перенесены на новую плату. Все устройство собирается, при наличии необходимых компонентов, с перекурами за пол часа. Обращаю внимание: у микросхемы КР514ИД2 плюсовая ножка питания - 14, а минус - 6 (отмечены на схеме) . Вместо КР514ИД2 можно применить любой другой дешифратор двоичного кода в семисегментный с питанием от 5В. Я взял то, что было под рукой.
Выводы «h» и «i» цифрового светодиодного индикатора отвечают за две точки по центру между цифрами, не подключены за ненадобностью.
После сборки и прошивки, при условии отсутствия ошибок монтажа, устройство начинает работать сразу после включения и в настройке не нуждается.

При необходимости внесения изменений в прошивку тахометра на плате предусмотрен разъем 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 (при параллельном соединении между собой ножек одного сегмента), или любой другой преобразователь двоичного в семисегментный (при соответствующих изменениях подключения выводов микросхем).

При условии правильного переноса монтажа на МК ATMega8/ATMega16 данная прошивка будет работать, как и на ATtiny2313, но нужно подправить код (изменить названия констант) и перекомпилировать. Для других МК AVR сравнение не проводилось.

Транзисторы 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 или заменить схему подключения оптопары. Возможен вариант обратного подключения оптотранзистора с подтяжкой к минусу, с включенным или нет внутренним подтягивающим резистором МК. Также возможно применить транзистор в ключевом (инвертирующем) режиме работы.
оптопара

  • AVR
  • Добавить метки

    Тахометр измеряет частоту вращения деталей, механизмов и других агрегатах автомобиля. Тахометр состоит из 2-х основных частей — из датчика, который измеряет скорость вращения и из дисплея, где будет показать значения. Во основном тахометр градуируется в оборотах в минуту.

    Сделать такой прибор самостоятельно конечно же можно, предлагаю схему с микроконтроллером AVR Attiny2313. С таким микроконтроллером можно получить 100 — 9990 об /мин. , точность измерения составляет +/-3 оборотов в минуту.

    Характеристики микроконтроллера ATtiny2313

    EEPROM 1 Кб
    Аналоговые входы (АЦП) 0
    Входное напряжение (предельное) 5,5 Вольт
    Входное напряжение (рекомендуемое) 4,5-5 Вольт
    ОЗУ 128 байт
    Тактовая частота 20 МГц
    Flash-память 2кБ

    На выводе 11 установлен резистор с номиналом 4.7 кОм, не изменяйте номинал, а то датчик начнет работать нестабильно при включение по однопроводной схеме.

    В отличие других схем, тут использовались 4 транзистора и 4 резистора, таким образом схему упростили.

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

    Из графики можно заметить что ток может достигнуть от 60мА до 80мА на выход пин. Для точной настройки нужно подбирать ограничительные резисторы с номиналом 470 оМ.

    Выбор дисплея не критичен, выбирайте любой светодиодный индикатор на четыре цифры, либо собирайте из отдельных светодиодов. Используйте красный индикатор, чтобы на солнце было все хорошо видно. Тахометр питается от 12 вольт.

    Кварцевый резистор выбран на частоту 8МHz, для точного и стабильного измерения. Входной фильтр используется для подключения к выводу катушки зажигания.

    В прошивке в 17-й строке найдите следующее.

    17. #define byBladeCnt 2 //1- две катушки, 2 — одна катушка, 4 — мотоцикл…

    Этот параметр нужно менять, если у вас советский автомобиль то поставьте 2, если мотоцикл то 4, а если автомобиль с системой зажигания с двумя катушками то 1.



    Что такое вообще тахометр ? Тахометр - это устройство, используемое для измерения об/мин (обороты в минуту) любого вращающегося тела. Тахометры делают на основе контактных или безконтактных. Бесконтактные оптические тахометры обычно используют лазерный или инфракрасный луч для контроля вращения любого тела. Это делается путем вычисления времени, затраченного на одно вращение. В этом материале, взятом на одном английском сайте, мы покажем вам, как сделать портативный цифровой оптический тахометр с помощью Arduino Uno . Рассмотрим расширенную версию прибора с ЖК-дисплеем и модифицированным кодом.

    Схема тахометра на микроконтроллере

    Список деталей для схемы

    • Микросхема - Arduino
    • Резисторы - 33k, 270 Ом, 10k потенциометр
    • LED элемент - синий
    • ИК-светодиод и фотодиод
    • 16 x 2 LCD экран
    • 74HC595 регистр сдвига

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

    Итак, прежде всего для датчика вам потребуется излучающий ИК-светодиод и фотодиод. Как его собрать - показано в пошаговой инструкции. Нажимаем на фото для увеличения размера.

    • 1. Для начала нужно зашкурить светодиод и фотодиод, чтобы сделать их плоскими.
    • 2. Затем сложите полоску бумаги лист, как показано на рисунке. Сделайте две такие структуры так, чтобы светодиод и фотодиод плотно сесть в него. Соедините их вместе клеем и покрасьте в черный цвет.
    • 3. Вставить светодиод и фотодиод.
    • 4. Склеить их с помощью суперклея и припаять провода.

    Номиналы резисторов могут различаться в зависимости от того, какой фотодиод вы используете. Потенциометр помогает уменьшить или увеличить чувствительность датчика. Припаяйте провода датчика как показано на рисунке.

    Схема тахометра использует 8-разрядный регистр сдвига 74HC595 с LCD дисплеем 16х2. Сделайте в корпусе небольшое отверстие, чтобы зафиксировать LED индикатор.

    Припаяйте 270-омный резистор на светодиод и вставьте в контакт 12 Arduino. Датчик введён в кубическую трубку, чтобы дать дополнительную механическую прочность.

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

    Видео работы самодельного тахометра


    Охранное устройство с высоким напряжением - электрический ежик. Сегодня мы продолжим беседы про конструкции которые нужны для оxраны нашего жилища. Устройство, которое мы сейчас будем рассматривать предназначено для оxраны квартиры, офиса, дачи и автомобиля. Называется устройство - высоковольтный электрический ежик!

    Читайте также: