Здравствуйте всем! помогите плззз... есть машинка с дизельным двигателем, но нет тахометра. в микроконтроллерах и программах для них я полный ноль (весь опыт это мигалка на пик16ф84). Хотелось бы что нибудь цифровое на пик контроллере, и не очень сложное, проблема в том что сигнал снимается индуктивным датчиком с внутренней шестерни ТНВД (вроде 64 зуба). Программатор есть только для PICов.
----------
ПЕРО
Ср Янв 07, 2009 3:54 pm
----------
timon4ik
"... есть машинка с дизельным двигателем, но нет тахометра.
... проблема в том что сигнал снимается индуктивным датчиком с внутренней шестерни ТНВД (вроде 64 зуба)..."
Здравствуйте. Принцип измерения скорости вращения вала двигателя можно найти здесь
http://www.radiokot.ru/forum/viewtopic.php?t=12082 Если нужен тахометр с конкретным коэффициентом преобразования или с устанавливаемым пользователем в пределах 1...199 переменным коэффициентом преобразования могу помочь через личку.
----------
timon4ik
Чт Янв 08, 2009 7:26 am
----------
подскажите на каком мк лучше и проще собирать на PIC или AVR? а то может зря зациклился на pic.
Какие данные надо изменить в прошивке схемы http://radiokot.ru/circuit/digital/measure/13/ чтоб получить пересчет на 64 зуба?
----------
nifashev
Сб Янв 10, 2009 8:31 am
----------
а у меня есть такая наметка. Дело в том, что по нужде рабочего положения столкнулся со схемой датчика оборота для дизельного двигателя. Вся суть заключается в том, что на вал генератора или коленвал крепится магнитик, а над валом устанавливается геркон. Вал вращаясь вместе с магнитиком периодически замыкает и размыкает геркон и поступающие от геркона импьульсы высчитываются схемой либо на микроконтроллере которую могу предложить позже либо наподобе следующей:
----------
myurrey
Сб Янв 10, 2009 8:41 am
----------
Хм... Ну даже если геркон успеет отработать обороты движка в 8000-10000 об/мин. То надолго ли геркона хватит?
----------
nifashev
Сб Янв 10, 2009 9:22 am
----------
лично мой движок хоть и жугулевский больше 4500 оборотов не разгонял не думаю что дизель более оборотистый хотя могу и заблуждать поправьте меня если не прав
----------
timon4ik
Сб Янв 10, 2009 5:00 pm
----------
timon4ik со схемой быть так предлагаю делать на АВР на выбор Мега8 или Атинни2313 так как они у меня есть, а в продаже стоят дешевле, писать на СИ.
У меня схожая задача нужно сделать тахометр, только у меня 103 импульса за 1 оборот двигателя. Програмированию учюсь.
Тему предлагаю перенести в раздел МИКРОКОНТРОЛЕРОВ. Когда определишся с контролером накидаю схему ну и будем пробывать начинать.
----------
timon4ik
Вт Янв 20, 2009 4:07 pm
----------
вопрос: как перенести тему? Чем Мега8 или Атинни2313 лучше пиков за исключением цены? в инете нарыл кучу самых разных схем тахометров на мк (могу сложить в архив и прислать может что и пригодится), пытался сибирать но похоже что то не так делаю (не подают признаков жизни) грешу на корявые программы (телевизоры с бытовой апаратурой ведь получается ремонтировать ). (мне проще двигатель разобрать и собрать чем соображать с программами )
AVR контроллеры? похоже придется соображать что то насчет программатора для них, а то у меня только для пиков, у тебя хоть какой то опыт, у меня вообще никакого.
----------
sheva_s
Чт Янв 22, 2009 10:07 pm
----------
В крайнем случае АВР можно прошивать 5 проводками, а так есть несложные программаторы.
Давай определимся с данными схемы в моем случае приходит 103 импульса за один оборот двигателя.
В твоем случае приходит как я понял 64 импульса за один оборот двигателя.
Есть два варианта подсчета :
1,Считать импульсы за еденицу времени и переводить в обороты.
2,Считать период и переводить в обороты .
Какие минимальные и максимальные обороты двигателя на котором ты хочеш ставить тахометр ?
У меня мин-500 об/мин, максимум-2100 об. в мин.
Теперь нужно разобраться каким способом нам лучше считать обороты двигателя БУДЕМ ждать совета ГУРУ в этом деле.
я ошибся по количеству зубьев, за один оборот тнвд проходит 37 зубьев, а за один оборот коленвала тнвд крутит 2раза, получается что за один оборот коленвала на датчике будет 74 зуба. на моем двигателе можно обороты выставить от минимальных 500 до 5000 (хотя учитывая что больше 110 не гоняю, думаю раскручивать движку больше 5000 опасно для его здоровья), хотя для проверки стартера минимальные обороты можно сделать от 100-150, т.е. стартер должен крутить со скоростью не менее 180-200 оборотов в минуту иначе движка будет хуже запускаться чем при 200-250.
1,Считать импульсы за еденицу времени и переводить в обороты.
2,Считать период и переводить в обороты .
Если честно то я даже не знаю, по идее лучше то что проще реализовать и то что будет точнее. Вопрос: программатор для avr от МАСТЕР КИТ нормальный или хватит простого самодельного на лпт порт?
----------
Ну немного подумал наверное будем считать по периоду. Вот нарыл немного теории по этому методу .
Цитата:
Например: Объект контроля вращается со скоростью 3210.987 об/мин; импульсы, сгенерированные датчиком поступают на вход микроконтроллера, работающего с тактовой частотой 1.000000МГц. Микроконтроллер обеспечивает выполнение следующих условий: Тизм=Тх*Nx*K и Тизм=to*nox, где Тизм- принятое время измерения; Тх-период измеряемой скорости; Nx-целое число периодов измеряемой скорости; to-период тактовой частоты микроконтроллера Fo; nox-целое число периодов тактовой частоты микроконтроллера Fo; K-коэффициент преобразования, т.е. число импульсов датчика за 1 оборот. Делаем преобразование Тх*Nx*K=to*nox
Тх=to*nox/Nx*K или Fx=Fo*Nx*K/nox. Переходим от частоты к оборотам S=60*Fx=60*Fo*Nx*K/nox Для взятого примера: Принимаем время измерения примерно 0.25 сек. 3210.987/60=53.51645 Гц> 1'000'000мкс/53.51645=18685.843ххх мкс за время измерения пройдет 250000/18685.843ххх=13.379ххх периодов Nx. Дожидаемся окончания текущего периода Nx=14> 18685.843ххх*14=261601.806ххх мкс и nox=261601. Подставляем в выражение S=60*1'000'000*14*1/261601=3210.997 об/мин. Достоинством данного метода, особенно для любительских условий, является: -Fo-может меняться в широких пределах. Просто она должна быть известна -отсутствие жесткого требования выдержки измерительного интервала, кратного единице времени -легкая реализация на любом микроконтроллере...
а вот еще одна статья с описанием этого метода подсчета
Цитата:
Единицей измерения скорости вращения (частоты) крыльчатки вентилятора обычно являются обороты в минуту (об/мин). Что это значит для нас с практической точки зрения? Это значит, что нужно взять секундомер и в течение одной минуты считать обороты. Очень долго и непрактично. Чтобы ускорить процесс измерения, можно посчитать количество оборотов за секунду, а затем полученное число умножить на 60 - должны получить то же самое, но время измерения уже заметно меньше. Однако есть некоторая проблема, связанная с точностью измерения. Суть проблемы вот в чем: предположим, что вентилятора вращается со скоростью 1754 об/мин.; если мы считали обороты в течение минуты, то такое число и получим в результате измерения; если мы считали обороты в течение секунды, то получим только 1740 об/мин. Куда потерялись еще 14 оборотов? Эта потеря связана с ошибкой округления - мы посчитали количество полных оборотов в секунду (целое число), а на самом деле крыльчатка вентилятора за секунду повернулась 29,23333333 раз. Вот эти отброшенные 0,23333333 об/сек и дали ошибку в 14 об/мин. Можно ли повысить точность измерения? При данном, укороченном цикле измерения нельзя - поскольку у нас нет возможности измерять доли оборота. Конечно, те, кто внимательно читал про устройство вентилятора тут же мне возразят, что можно измерять не целые обороты, а половинки, поскольку таходатчик вентилятора выдает сигнал дважды за оборот. И, конечно, будут правы. Но... (1754*2)/60 = 58.46666666, т.е. за секунду мы зафиксируем 58 импульсов таходатчика, тогда измеренных оборотов получим 58*30 = 1740. Как видите, то, что таходатчик выдает два импульса за оборот крыльчатки, нам не слишком помогло повысить точность измерения. Попробуем подойти к решению проблемы точности измерений с другой стороны. Вспомним, что частота и период связаны простым соотношением:F=1/T, здесь F-частота, T-период. Если измерять не частоту (как мы это делали в примерах выше), а период следования импульсов таходатчика, можно существенно повысить точность измерения, при этом время измерения будет достаточно малым. Как можно измерить период? Для этого нужно: использовать дополнительный генератор стабильного импульсного сигнала (измерительный генератор), период этого сигнала должен быть намного меньше периода измеряемого сигнала таходатчика; сформировать из сигнала таходатчика измерительный импульс, равный по длительности периоду вращения крыльчатки (два периода сигнала таходатчика); посчитать, сколько импульсов от измерительного генератора поступит за время измерительного импульса (период вращения крыльчатки). Теперь можно вычислить скорость вращения крыльчатки вентилятора:F=1/(N*tи) (об/сек.), F=60/(N*tи) (об/мин.) здесь tи - период следования импульсов измерительного генератора в секундах, N - количество импульсов, поступивших от измерительного генератора за время измерительного импульса (в секундах), равного периоду вращения крыльчатки. Посмотрим расчет на примере. Пусть время измерительного импульса (период вращения крыльчатки вентилятора) составляет 0,0342 с, а период следования импульсов измерительного генератора 0,00001 с (10 мкс), тогда за период вращения крыльчатки мы зафиксируем: N=0,0342/0,00001=3420 (импульсов), и скорость вращения будет F=60/(3420*0,00001)=1754 (об/мин.) что и требовалось. Конечно, все эти вычисления выполнить на простых логических микросхемах практически невозможно, поэтому измеритель сделаем на микроконтроллере.
взято отсюда http://atlab.narod.ru/articles.htm Вопрос к програмистам кто измерял обороты таким способом.
Как правильно организовать алгоритм работы программы для такого метода измерения оборотов ?
извиняюсь что молчал так долго. у нас тут морозы давят капец и на моем агрегате благополучно почти накрылся ремень грм, удовольствия маловато в холодном боксе на -20 менять ремень. жуть....
ДА, теория теорией, на бумаге все понятно а вот КАК организовать такие вычисления в программе я понятия не имею, может попробовать взять похожую программку и изменить данные (например время число импульсов и т.д.) чтоб она считала нужным образом. мне попалась программка называлась algoritm builder у меня разобраться с ней что то не получилось, единственно что понял так то что она пишет программу по составленному алгоритму (нужно рисовать блок-схему алгоритма с вводными данными). попытаюсь потренироваться на меге8 и светодиодах.
а в чём проблема? заводим таймер (желательно 16-ти битный), который тикает с частотой, ну скажем 1 МГц.
и вешаем на какую-нить ногу прерывание по изменению фронта импульса например.
в обработчике этой ноги читаем состояние таймера и тутже обнуляем счётчик таймера.
в результате мы получаем количество "тиков" таймера с момента прошлого прерывания "ноги".
задержкой обработки команды чтения состояния таймера в принципе можно пренебречь. но если вдруг кому-то она важна - делаем каптюринг таймера (capture), т.е. событие которое в момент изменения уровня на ноге аппаратно фиксирует "сколько таймер натикал"
проблемы, которые могут тут нас поджидать.
- если выбрать большую частоту таймера, он будет успевать переполняться на низких частотах вращения.
- если выбрать малую частоту, мы потеряем точность на высоких частотах вращения.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
... проблемы, которые могут тут нас поджидать. - если выбрать большую частоту таймера, он будет успевать ...
Не проблема - в прерываниях по переполнению таймера заводим счетчик (думаю 1 байта хватит, но ограничения на кол-во байт нет), который увеличивается на 1 каждый раз когда таймер переполняется, это будет старший (второй при счете с нулевого байта) байт счетчика тиков, т. е. счетчик тиков будет состоять из трех байт. Таким образом мы сможем обслужить даже низкие оброты, причем точность на них будет даже выше.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
с расчетами то все ясно, и с реализацией в железе тоже все понятно а вот как быть с ПРОГРАММОЙ для МК?????
кроме того нашел все таки W выход генератора (пришлось его разобрать). НУ НЕ МОГУ СООБРАЗИТЬ КАК СОСТАВИТЬ ЭТУ ПРОГРАММУ.
Попробуйте начать состалять программу на руском языке - это "псевдокод" называется. Примером может служить описание задания самому себе на один день жизни - алгоритма поведения, действий в течении дня.
ИМХО нужно использовать ногу внешних прерываний (int0, int1...) смотреть по фронтам думаю достаточно по возрастающему...как тока напруга начнет возрастать будит прерывание...щитай скока их за секунду пришло получишь кол-во оборотов за 1сек
P.S. к стати...если грамотно организовать схемотехнику то могу переделать свой проект в соседнем топике под генератор.
Последний раз редактировалось shtorm Ср мар 18, 2009 15:35:11, всего редактировалось 1 раз.
с расчетами то все ясно, и с реализацией в железе тоже все понятно а вот как быть с ПРОГРАММОЙ для МК????? кроме того нашел все таки W выход генератора (пришлось его разобрать). НУ НЕ МОГУ СООБРАЗИТЬ КАК СОСТАВИТЬ ЭТУ ПРОГРАММУ.
Здравствуйте.
Может из этой программы возьмете что то. ИМХО для Вас интересна процедура собственно измерения, а далее выведете в нужной Вам форме.
akl
Пасиба огромное. буду пробовать. Я так понял что эти светодиоды по сути являются аналоговой шкалой? Извиняюсь за наглость, если можно не могли бы Вы расписать в програме какие строки надо менять и как, для изменнения коэффициента пересчета?
"
заложена константа 60*5'000'000/74=4'054'054->00 3D DC 26h, которую и нужно откорректировать.
Для примера
Fo=4'608'956
K=74
60*4'608'956/74=3'736'991->00 39 05 9F
Загружаете это значение, прошиваете контроллер.
Если будет применен ATtiny2313 нужно будет обязательно правильно запрограмировать FUSE-биты.
Тоже решил добавить в свое авто цифровой тахометр.
Собрал http://www.hardlock.org.ua/mc/tiny/tahometr/index.html там тоже показания обнавляються 3 раза в секунду.
Неустроило то что резко даеш газу а тахометр тупит 1000 потом 3000 потом 5000 ,а хотелось бы плавного изменения показаний.
Решил переделать прошивку чтоб изменение показаний было от прерываний т.е. набрали 10 значений и сразу выводим на индикацию. (прошивку написал но без среднего да и косяки с таимерами)
Как думаете какой будет результат? Стоит ли заморачиваться? Или будут сильно мелькать показания?
Алгоритм
при int0 считываем зничения таимера1
делим константу(8 000 000/256=31250) на зничения таимера1 получаем 1/сек
умножаем на 60 получаем 1/мин
дешифратор 16битное в 4 числа 10чной системы
_________________ Чем больше думаеш, тем дольше уснуть не можеш...
...а хотелось бы плавного изменения показаний. ...
Можете здесь посмотреть мой исходник (Си) тахометра. Обрезиненная шкала с буфером на 8 значений. Возможно потребуется в реале добавить одну мелочь (задержку, для предотвращения ложного попадания в прерывание при переходных процессах при искрообразовании (для бензина), с последующим сбросом флага прерывания)... Дальше по ссылке можно модель в Протеусе найти и посмотреть работу...
_________________ Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения