Считываем обороты компьютерного вентилятора, с его встроенного тахометра при помощи ардуино. //код arrduinolab.blo... поддержать канал материально. www.donationale...
CHANGE - прерывание будет срабатывать всякий раз, когда меняется состояние вывода это 4 прерывания на оборот, если два импульса Видео интересное спасибо.
У кого странные показания , особенно на не максимальных оборотах делайте так: void setup() { attachInterrupt(D7, rpm, FALLING); void loop() { val = 0; delay(1000); Serial.print(val*30); }
Нет ли ошибки в программе? В строке delay(500) уже учитывает, что срабатываний в 2 раза больше, НО, Serial.print((val*60) */2* ) происходит деление на 2, т.е. по сути это количество оборотов за 30 секунд. Может я не прав, конечно, потому что туговато соображаю.
arduinoLab 2 импульса на оборот, поэтому delay(1000/2) Проще - совершил он 100 оборотов, посчиталось 200 имульсов. Поэтому мы ЛИБО время подсчета делим на 2, либо 200*60/2 * Иначе же количество оборотов получится не 100 в секунду, а 50... потому что мы 2 раза поделили. Но фактически их было 100
arduinoLab Я мог бы предложить прокрутить вентилятор 60 раз за минуту, но пожалуй, допилю работу и пойду посплю. Если оборотов 100, то откуда появились 400 импульсов, когда их 2 на оборот приходится. Максимум может быть 200? Разве нет?
Отличное видео. Все работает, спасибо. Но если я при этом хочу управлять кулером через транзистор от ардуино - в этом случае тахометр показывает ерунду какую-то, наверное (я так подумал)потому, что управляющий сигнал импульсный, как в этом случае быть?
Тоже целый день голову ломал. Потом допёрло, что транзистор то n-канальный и, соответственно, управление вентилятором происходит за счёт земли. А тахометр замыкается как раз на землю, которая в итоге сама смыкается/размыкается с частотой ШИМ сигнала. Поэтому к показаниям прибавляется частота ШИМ. Но я не электронщик, так что это не точно. Попробую p-канальный транзистор, чтобы земля постоянно была подключена.
Не смог разобраться, как правильно подключать p-канальный транзистор. В процессе случайно закоротил и сжёг ардуинку... Второй раз. Но это был последний, так как я впаял слишком мощный диод и вместо него сгорел сам МК. Но обороты даже с p-канальным транзистором неправильно считывались. Так что придётся придумывать что-то дополнительное для регулировки оборотов. Пришла новая nano. Разобрался с p-канальным транзистором и тахометром. Как оказалось, ложное срабатывание прерывания происходит из-за наводок. Провода были скреплены вместе, поэтому провод от тахометра как антенна ловил сигналы ШИМ. При подключении отдельного провода наводок нет и показания корректны. Но как оно будет на конечной плате себя вести хз, с защитой от наводок вообще проблема, как я понял. В любом случае, как минимум, нужно p-канальный транзистор использовать, чтобы земля вентилятора всегда была подключена.
Здравствуйте! Возможно ли регулировать скорость вращения моторчика, от времени срабатывания между двумя датчиками? Так чтоб изменения происходили в соответствии с граффиком прямой, или по синусойде к примеру.
Вовсе не обязательно. Но он будет показывать, что крутится только с одной скоростью - 0 оборотов в единицу времени. Насчет питания - пробовал питать от двух аккумов, разной степени разряженности. Аккум, выдающий 3,8 В - показания выдавались, 2,5 - не выдавались.
Собрал схемку по вашему ролику,но вместо вентилятора поставил датчик холла. Задержку изменил на 1000 и не делил на 2. Мне кажется в коде что то не правильно. выдает только четные и целые значения типа 60,90,220,540 ну и тд. Почему так? Планирую использовать в качестве тахометра на парамоторе. czcams.com/video/b746UKdIcVI/video.html Сам я очень далек от электроники,программирования и ардуино. Так что не пинайте за тупой вопрос. Спасибо.
На ардуине есть несколько входов на прерывания. К примеру вот моя learn.sparkfun.com/tutorials/pro-micro--fio-v3-hookup-guide/hardware-overview-pro-micro interrupt that pin triggers: pin 3 maps to interrupt 0, pin 2 is interrupt 1, pin 0 is interrupt 2, pin 1 is interrupt 3, and pin 7 is interrupt 4. В коде менять примерно так: attachInterrupt(4, rpm, CHANGE);
rpm = revolutions per minute = оборотов в минуту. Устанавливаем счетчик на ноль и ждем пол секунды, чтобы собрать информацию о количестве срабатываний за пол секунды. Т.к. прерываний происходит в 2 раза больше, то считайте, что 0.5*2 = 1 сек
я не понял - каким боком там нужны батарейки? собственно мне нужно просто запустить кулер, запускаю от разобранного компа, но наверное с ардуино попроще будет?
CHANGE - прерывание будет срабатывать всякий раз, когда меняется состояние вывода
это 4 прерывания на оборот, если два импульса
Видео интересное спасибо.
Подключил таким образом китайский модуль геркона, приклеил на крылья вентилятора маленький магнит (домашний напольный вентилятор), плюс подключил экранчик 1602, получился классный тахометр. Спасибо!
Не работает ваш пример, на всех вентиляторах при остановленной крыльчатке показывает 1500 rpm 50 val, а при крутящейся 0 rpm 0 val.
Всё гениальное просто.
Спасибо.
можно еще проще и точнее но 15 сек надо ждать
delay(15000)
Serial.println(val)
sssserya1 ну можно делать как захочется, главное сама концепция.
Очень спасибо за урок !!! все получилось как у вас
На картинке выход тахометра на 2 пине, а говорите 0. Сопротивление подтягивающего резистора тоже можно было бы указать
У кого странные показания , особенно на не максимальных оборотах делайте так:
void setup() {
attachInterrupt(D7, rpm, FALLING);
void loop() {
val = 0;
delay(1000);
Serial.print(val*30);
}
Нет ли ошибки в программе?
В строке delay(500) уже учитывает, что срабатываний в 2 раза больше, НО,
Serial.print((val*60) */2* ) происходит деление на 2, т.е. по сути это количество оборотов за 30 секунд. Может я не прав, конечно, потому что туговато соображаю.
кулер дает 2 импульса на оборот.
хм, можно же было задержку 250 сделать и нечего не делить.
arduinoLab 2 импульса на оборот, поэтому delay(1000/2)
Проще - совершил он 100 оборотов, посчиталось 200 имульсов.
Поэтому мы ЛИБО время подсчета делим на 2, либо 200*60/2
* Иначе же количество оборотов получится не 100 в секунду, а 50... потому что мы 2 раза поделили. Но фактически их было 100
Вадим Лихачев нет, на 100 оборотов будет в val 400.
arduinoLab Я мог бы предложить прокрутить вентилятор 60 раз за минуту, но пожалуй, допилю работу и пойду посплю. Если оборотов 100, то откуда появились 400 импульсов, когда их 2 на оборот приходится. Максимум может быть 200? Разве нет?
arduinoLab все, я понял.
При прерывании срабатывает два CNANGE = HIGH, LOW
Объясните пожалуйста, зачем нужен резистор?
Я без резистора подсоединял, и всё нормально обороты показывает, только делал без ручного написания кода
Ни чего не понял, но очень интересно.
Отличное видео. Все работает, спасибо. Но если я при этом хочу управлять кулером через транзистор от ардуино - в этом случае тахометр показывает ерунду какую-то, наверное (я так подумал)потому, что управляющий сигнал импульсный, как в этом случае быть?
Тоже целый день голову ломал. Потом допёрло, что транзистор то n-канальный и, соответственно, управление вентилятором происходит за счёт земли. А тахометр замыкается как раз на землю, которая в итоге сама смыкается/размыкается с частотой ШИМ сигнала. Поэтому к показаниям прибавляется частота ШИМ. Но я не электронщик, так что это не точно. Попробую p-канальный транзистор, чтобы земля постоянно была подключена.
Не смог разобраться, как правильно подключать p-канальный транзистор. В процессе случайно закоротил и сжёг ардуинку... Второй раз. Но это был последний, так как я впаял слишком мощный диод и вместо него сгорел сам МК. Но обороты даже с p-канальным транзистором неправильно считывались. Так что придётся придумывать что-то дополнительное для регулировки оборотов.
Пришла новая nano. Разобрался с p-канальным транзистором и тахометром. Как оказалось, ложное срабатывание прерывания происходит из-за наводок. Провода были скреплены вместе, поэтому провод от тахометра как антенна ловил сигналы ШИМ. При подключении отдельного провода наводок нет и показания корректны. Но как оно будет на конечной плате себя вести хз, с защитой от наводок вообще проблема, как я понял. В любом случае, как минимум, нужно p-канальный транзистор использовать, чтобы земля вентилятора всегда была подключена.
Что изменить в схеме если я хочу измерять обороты нескольких вентиляторов? (5 шт.)
Спасибо!
А как на дисплей вывести данные ???
я подключаю по этой схеме свою есп32 у меня юсб порты уходят в защиту от кз.
Здравствуйте! Возможно ли регулировать скорость вращения моторчика, от времени срабатывания между двумя датчиками? Так чтоб изменения происходили в соответствии с граффиком прямой, или по синусойде к примеру.
Да.
Какого номинала резистор ?
Обычно 10 кОм.
Подскажите пожалуйста что делать если мне надо за 4-5 куллерами следить ведь прерывание 1.
Спасибо!!!
прицепить крыльчатку к валу и получится тахометр :) спасибо,интересная идея
А обязательно ли подавать питание на кулер, если да, то какое минимальное питание может быть? И какой диапозон замера оборотов?
Вовсе не обязательно. Но он будет показывать, что крутится только с одной скоростью - 0 оборотов в единицу времени. Насчет питания - пробовал питать от двух аккумов, разной степени разряженности. Аккум, выдающий 3,8 В - показания выдавались, 2,5 - не выдавались.
Это 5в кулер??
Подтягивающий резистор. Номинал не могу понять
10 кОм
видел тест, там работало от 1.5 до 40кОм. Значения больше и меньше не пробовали. У меня работает 2.2кОм
одна проблема пока не подашь 12в на кулер результаты почему то , рандомные ((
Кулер подключается к выходу ардуино без мосфета?
а зачем защита) купит ардуинку еще)))
Собрал схемку по вашему ролику,но вместо вентилятора поставил датчик холла. Задержку изменил на 1000 и не делил на 2.
Мне кажется в коде что то не правильно. выдает только четные и целые значения типа 60,90,220,540 ну и тд. Почему так? Планирую использовать в качестве тахометра на парамоторе. czcams.com/video/b746UKdIcVI/video.html
Сам я очень далек от электроники,программирования и ардуино. Так что не пинайте за тупой вопрос.
Спасибо.
тогда и прерывание нужно сменить с CHANGE на RISING чтобы он считал только включение.
Спасибо!!! Ждём формулу на скорость;)
доброго времени суток) можно узнать, какие батарейки/аккумуляторы используете?
+Дима Салихов
всмысле? на видео 4 дешевых китайских аккума, которые я бы не рекомендовал покупать.
спасибо за урок! есть вот такой вопрос, а если нужно 2 датчика подключить то как быть?
На ардуине есть несколько входов на прерывания. К примеру вот моя learn.sparkfun.com/tutorials/pro-micro--fio-v3-hookup-guide/hardware-overview-pro-micro interrupt that pin triggers: pin 3 maps to interrupt 0, pin 2 is interrupt 1, pin 0 is interrupt 2, pin 1 is interrupt 3, and pin 7 is interrupt 4.
В коде менять примерно так: attachInterrupt(4, rpm, CHANGE);
Можно ли из кулера сделать по такой схеме анемометр ?
Было бы интересно 🤔 Отличная идея для нового видео👍
Скажите пожалуйста, какую максимальную частоту вращения (об/мин) может измерить УНО?
таких скоростей вращения вентиляторов ещё не придумали :)
А если подумать? У меня охлаждение водяное. Материнка не понимает обороты выше где-то 6000. А ардуина?
@@alexeyborisov9766 У меня считывает 14000 rpm с серверного sunon psd1204pqbx-a, дальше обороты не растут почему-то (не в ардуине дело)
зачем сигнальный вывод заводить на плюс? На землю надо
затем, что земля там есть от кулера. Нужна разница с землёй от кулера, а это плюс.
Не понял зачем задержка пол секунды...
***** что там непонятного? delay на прерывание не влияет.
rpm = revolutions per minute = оборотов в минуту.
Устанавливаем счетчик на ноль и ждем пол секунды, чтобы собрать информацию о количестве срабатываний за пол секунды. Т.к. прерываний происходит в 2 раза больше, то считайте, что 0.5*2 = 1 сек
я не понял - каким боком там нужны батарейки?
собственно мне нужно просто запустить кулер, запускаю от разобранного компа, но наверное с ардуино попроще будет?
Батарейки - источник питания.