Как вам такой тахометр?
День добрый.
Хочу сделать тахометр для измерения скорости вращения электродвигателя.
Прочитал все посты на форуме, просмотрел все схемы. Есть ряд вопросов.
Вопросы касаются непосредственно разработки данных устройств, а не простого копирования данных схем.
- Принцип измерения.
1.1 По принципу измерения периода? Имеем выход с датчика (фототранзистора). Сигналом датчика запускаем таймер, по приходу второго импульса останавливаем. Вычисляем период. Дальше математика. Недостаток в том, что дребезг фронтов сигнала влечет за собой погрешность измерения. Усреднять на малых оборотах, значит замедлить процесс вычисления.
1.2 По подсчету импульсов за одну секунду. Дальше математика. Как минимум погрешность 60 оборотов в минуту. При скорости вращения 300 об/мин – погрешность в 60 об/мин это очень много. При малых оборотах большая погрешность.
2. Датчик (чувствительный элемент)
На форуме речь идет о тахометре использующий фототранзистор (для лопастей это хорошо). недостаток - влияние освещенности.
В моем случаи максимум - это доступ к карданному валу. Есть индуктивные датчики, датчики холла. В общем, есть реальная проблема размещение датчика и съем информации.Поделитесь плиз теоретическими соображениями.
P.S. Нужна теория, а прогу на проц напишем.С уважением, Пётр
Делал как то себе тахометр. Точных данных убейте не помню! Смысл такой: на оборотах выше 1000 об/мин подсчет количества импульсов за определенное время(считал сразу в двоично десятичном чтоб младший разряд разряд откинуть и за раз прибавлял по три чтоб потом не умножать и сразу получалось в об\мин), если частота меньше тысячи проц считал таймером между двумя прерываниями.
Начинал с самого большого периода, если таймер не досчитывал до середины, то менял предделитель и снова считал- так погрешность сводиться к минимуму.
Все эти переколбасы для человеческого глаза не очень то заметны!
Привет всем.
Всё забацал на MSP430F149.
Песня. стоит как вкопанный. Измеряет с точностью до оборота. Дергается второй знак после запятой. Измеряет от 60 до 12000 об/мин. (в рамках поставленной задачи). И это не предел. Без всяких перенастроек таймера. Используем таймер в режиме счета вверх. Определяем число приходящих импульсов (N) по прерыванию таймера (юзаем в режиме захвата, для точного определения общего времени, за которое пришло N импульсов), число переполнений таймера (для задания времени измерения). Дальше математика. Это, если в двух словах. Выбран МСП430 так как в нем таймер имеет широкие возможности в стравнени с тем же PIC от Микрочип.
Всем спасибо за участие в обсуждении. Отдельное спасибо за предложенный способ получения импульсов (с помощью принтера в 100dpi 😃 ).
С уважением, Пётр
Тахометр отличный. Однако объясните ,пожалуйста, как пользоваться режимом проверки РМ. В чем смысл их проверки на разных скоростях отработки угла и какая именно информация дает мне знать - исправна РМ или нет??
Заранее спасибо.
filippov
Хочу сделать тахометр. Напряг только с датчиком.
www.geocities.com/ilufa/DST.jpg - хочу этот датчик использовать, но, прочтя топ, так и не понял, что лучше, этот или на операционнике. Сам пока не могу оценить. И зачем 4013 нужна? Можно сразу на int контроллера подавать?
Датчик, правда не такой красивый как рекомендованный, можно легко выдрать из дохлой мыши. Во многих мышах стоит 2 сдвоенных фототранзистора, часто еще и в черном корпусе. То-есть готовый ИК фильтр на халяву! С операционником лучше, только не забыть емкость на делитель повесить как где-то тут рекомендовали.
Ок, а делитель - 4013? Я хочу на 2313 без делителя подавать? Возможно такое? Делитель только делит, или ещё и уровни преобразовывает?
А почему датчик ИК-диапазона? Я думал, обычный, видимого светового спектра.
Потому что L53какеготамнепомню 😃 - это фототранзистор ИК диапазона. И если отсчечь видимую часть спектра, то работать будет, а в насыщение иногда перестанет уходить. Делитель на 4013 - это банальный к 561 тм2 котрый делит частоту входных импульсов на 2. Без операционника с этой микросхемой могут быть засады, т.к она очень чувствительна к длительности фронтов входных импульсов. Программа, зашитая в ПИК, считает импульсы уже с поправкой на то, что на входе стоит делитель на 2. Поэтому без этой микрухи обороты на дисплее будут в 2 раза выше реальных.
Программа будет своя 😉
Выкину нафих этот тригер 😃
Тогда ждем реультатов, и если сохранится та же функциональность, что и у прототипа, то народ не забудет своих героев!
Программа будет своя 😉
Выкину нафих этот тригер 😃
Давай Паша! Даваааай! 😃 😃 😃
Железяка заводится, текст там выводт всякий на экран. Сейчас осталось только подглючить фототранзистор и софтину написать. Только вот с ними проблема в магазине. Не подскажете ли пару марок? А то в ихней базе данных на “фототранзистор” ничо не находит 😃 А фт-2к и ещё какого-то тут выше указанного нету.
Первая рабочая версия. Число пока в шестнадцатеричном представлении и за секунду, а не за минуту, как там написано. При закрытом датчике кажет 0, но от лампы показания скачут и в среднем равны где-то 180 😃
По питанию поставил ещё один 104 😃 Теперь показывает 64, то бишь 100 гц. Я то думал раньше, что лампа не мигает. Этож как на зрение влияет!
Столкнулся с проблемой деления двух байт на один. ну чтоб количество лопастей учитывать. 2313 функции деления не имеет. Думаю… Мож кто знает, как лучше сделать? Реализацию уж так и быть, соображу 😃 Просто неохота столбиком делить. Долго 😃
Итак, готово 😃
Несколько фоток. Весят почти мег. Пережимать было лень т.к. там не особо много полезной информации.
ТТХ 😃 :
обновление информации - 1 сек.
индикация - об/мин, об/сек
точность - 60 об, время измерения - 1 сек. (без делителей, честное измерение 😃 )
количество лопастей винта - 1-255шт.
датчик - из мышки нерабочей, купленной в Сплайне за 10 рублей (купил 3 шт, 4-ая бесплатно 😃 )
контроллер - AT90S2313, разъем ISP
кнопки - 3 шт тоже из той же мышки
дисплей - МЭЛТ 16S2D (16 символов, 2 строки)
чувствителен к лампочке под потолком, честно показывает 100 гц.
себестоимость примерно 1000. Даже меньше: дисплей 345, контроллер 99, монтажка 125, кварц - 15, мышка - 10, ОУ - 9 и дальше по мелочи резюки и кондеры.
Итак, готово 😃
Супер! Как решили проблему с делением ?
Prikupets, написал процедуру деления 16/16 😃 Быстрая, но не думаю, что оптимальная. Слышал, что 16/16 есть за 100 тактов, и даже за 25 😃 , но это наверно на 16-тибитной платформе
Пока это не оформлено и представляет некоторую комерческую тайну. Но как только, так сразу 😃 Если есть вопросы - пишите в личку/на мыло. Помогу/поделюсь, чем смогу 😉
На форуме было обсуждение звукового тахометра.
Посоветовали мне тогда обратиться в Украину - написал дважды - молчат насмерть!
Может кто подскажет как решить этот вопрос. Звуковой нужен для автомодельных двигателей, желательно и для 2-х и для 4-х тактных моторов.
Prikupets, написал процедуру деления 16/16 😃 Быстрая, но не думаю, что оптимальная. Слышал, что 16/16 есть за 100 тактов, и даже за 25 😃 , но это наверно на 16-тибитной платформе
Пока это не оформлено и представляет некоторую комерческую тайну. Но как только, так сразу 😃 Если есть вопросы - пишите в личку/на мыло. Помогу/поделюсь, чем смогу 😉
деление 16/8 примерно так
clrf rem
movlw d’16’
movwf cnt
loop rlf val, f
rlf val+1, f
rlf rem, f
movfw div
subwf rem, w
btfsc STATUS, C
movwf rem
decfsz cnt, f
goto loop
rlf val, f
rlf val+1, f
val/div - val частное, rem остаток. 10*16 тактов или 7*16 если без цикла.
тем же способом 16/16, но уже с goto. чего существенно быстрее придумали для 16/16 в общем случае не представляю. Для частных случаев деления на конкретную константу - деление заменяется умножением и иногда ускоряется более чем существенно.
а применительно к счетчикам куда проще (не быстрее, но короче код) считать сразу в bcd с дробной частью. допустим если тебе посчитанное значение в конце каждый раз нужно поделить на 1234 и вывести в десятичном виде, то считать сразу так:
rem16 = rem16+ 0x35; // 0x10000 / 1234
if( carry ) bcdincrement(val)
Gold, это наверно для пиков. Щаз буду долго и упорно втыкать т.к. что-то совсем не понятен язык.
Можно хотя бы в двух словах алгоритм?
Gold, это наверно для пиков. Щаз буду долго и упорно втыкать т.к. что-то совсем не понятен язык.
Можно хотя бы в двух словах алгоритм?
rem = 0;
for(1..16) {
shift_left(rem,val_hi,val_lo, carry);
if( rem >= div ) {
rem -= div;
carry = 1;
}
else
carry = 0;
}
shift_left(val_hi,val_lo,carry)
обычное деление в столбик. в процессе делимое замещается на частное, чтоб лишних переменных не плодить
Ну у меня почти так же 😃
Итак, у нас появилась небольшая большая проблема. При проверке выяснилось, что фототранзисторы из мышек никак не реагируют на дневной свет 😮
Ну у меня почти так же 😃
Итак, у нас появилась небольшая большая проблема. При проверке выяснилось, что фототранзисторы из мышек никак не реагируют на дневной свет 😮
исправный фототранзистор ДОЛЖЕН реагировать на IR его составляющую.
как включали?
исправный фототранзистор ДОЛЖЕН реагировать на IR его составляющую.
И реагирует. Второй вариант более душный, но результативный. В уже разобранной мышке есть ИК светодиод (даже два, как и фототранзисторы 😃 ). Вешаем его через токоограничивающий резистор ну хотя бы на выход трансформатора 220/5 В с выпрямительным мостиком без емкостного фильтра и имеем так необходимые для настройки 100 Гц в инфракрасном диапазоне.
Добавлено: Вот приаттачил файлик в PDF с характеристиками фототранзистора от мышки.
Д. Заточник, все это, конечно, хорошо, но 100 гц есть т.к. свет от лампы ловится просто здорово. А вот с выключенной лампой, если пальцем помахать перед фототранзистором, то кажет 0 все равно.
Minus, ну дак коллектор эмиттер. Не помню, как именно. Именно при дневном свете у меня ничо не пашет.
В инструкции к фирменному тахометру написано примерно следующее: “Поместите тахометр позади пропеллера так, чтобы на пропеллер падал свет. В качестве источника освещения может выступать небо.”
Т.е. если просто дома ткнуть тахометром в пропеллер, то он ничего не намеряет. А вот если поднести самолет к окну, а потом померять…
Д. Заточник, все это, конечно, хорошо, но 100 гц есть т.к. свет от лампы ловится просто здорово. А вот с выключенной лампой, если пальцем помахать перед фототранзистором, то кажет 0 все равно.
Minus, ну дак коллектор эмиттер. Не помню, как именно. Именно при дневном свете у меня ничо не пашет.
Я правильно понял что 100 гц с лампы ентим фототранзистором “ловятся здорово” ?
Дабы вспомнили как именно енти “коллектор - эмитер” вот пару более - менее стандартных схем использования ентих фототранзисторов как сенсоров…
Ежли и включили правильно и транзистор рабочий а на пропеллер не реагирует - попробуйте ентот пропеллер подсвечивать IR же светодиодами…
Короче, статья, прошивки, исходники: www.radiokot.ru/circuit/digital/measure/03/ Если есть вопросы, то можно туда на форум, ну или ищите меня или того, кто ответит 😃