Официальный сайт компании Arduino по адресу arduino.cc
Автоматизация оборотов хх на карбюраторных авто
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Втр, 11/02/2014 - 18:50
Загорелся идеей автоподсоса на карбюратор, перечитал можество инфы - вариантов куча, только доверия не внушают (термостаты воздушные и т. д.), электронику же не обманешь. Заказал на ебэй ардуино мини и серв от вертолета, имею термистор от сигналки. По сути в электронике ни ни. Из языков только паскаль знаю. Подскажите как это дело лучше оформить, может у кого идеи есть.
ЗЫ с тех. частью разберусь
то есть в зависимости от показаний термистора серво (который будет соединен с воздушной заслонкой) должен принимать определенное значение.
Ардуино нано, а не мини
Ваша задача сводится к написанию программы ПИД-регулятора желательно самообучающегося, который учитывает температуры (воздуха и двигателя) а также частоту вращения коленвала. Поскольку процесс колебательный, будет иметь значение постоянная времени (быстродействие) сервомашинки.
Вот про постоянную времени: здесь, я думаю, не так важна частота сигналов. Можно же её сделать меньше (вплоть до ~5 герц)? В следствии и износ меньший будет
А разве не будет достаточно П-регулятора?
Я думаю на практике покажется нужное положение заслонки, в зависимости от параметров сенсоров, то есть их показания в формулу и на выходе длину сигнала. Это не п-рег разве будет? Или я чего не понимаю?
"медленный" элемент способен выполнять роль интегратора и реально получится ПИД, а не П регулятор
Я думаю нужно следить за темпиратурой двигателя и за оборотами, и газом тоже надо работать - на холодном движке может не хватить вытащеного подсоса и свечи просто закидает. Езжу на ИЖ-2126.
По сути программа должна держать обороты и контролировать прирост темпиратуры. Причем темпиратура не главное - главное держать обороты при прогреве 1500...2000 при работе 1000...1200. Точность темпиратуры имеет меньший приоритет перед стабильностью оборотов, да и реакция оборотов на подсос и газ точнее прослеживается и почти моментальна по сравнению с темпиратурой.
Начинать надо с карба. Он должен идеально работать(что не всегда получается).Он очень не устойчив в работе. дрос.заслонка в теории используется только для прогрева.
а на прогреве можно использовать серву с LCD и переменником - самому контролировать прогрев. а после некоторых опытов автоматизировать прогрев.
Почитайте, как "Инжекторный впрыск" контроллирует ХХ.
Там и привод обычно проще - ШД.
А в карб для сервы опасны механические ограничители крайних положений заслонки
Там и привод обычно проще - ШД.
А в карб для сервы опасны механические ограничители крайних положений заслонки
Согласен о приводе, но еще и длительность впрыска топлива меняется.. при куче контроля всяких параметров.. Я уже не говорю о таких системах как VVT-I.
По поводу ограничений - можно опытным путем ограничить "края" заслонки и подправить прогу.Или поставить демпфер, что бы не сломать механику . Или на крайний случай "микрухи-концевики".
А вообще уже много инфы в нете есть на эту тему..
Всем привет!
Вот тоже думал сделать автоподсос на семёрке! Затея интересная, особенно тем, что появляется возможность установить автозапуск!
Собственно датчик температуры нужен лишь для того, чтобы определить, нужен ли вообще подсос при запуске. Ещё нужна сервомашинка и данные с тахометра (импульсный сигнал с катушки, который сначала надо как-то преобразовать в 5V, может с помощью какого-нибудь АЦП (посоветуйте!), или простого резистора, или оптопары. Потом считаем количество импульсов за период (скажем, 1с), получаем значение RPM.
Опытным путём устанавливаем положение подсоса, при котором холодный двигатель гарантированно запускается, ну или делаем (опять же опытным путём) таблицу значений НАЧАЛЬНОГО положения заслонки в зависимости от температуры двигателя. Сразу после запуска (произведённый запуск надо ещё как-то распознать, например просто по оборотам, хотя бывает, что движок запускается еле-еле с оборотами ненамного выше стартерных, и в этом случае такой способ не сработает) запускается процедура регулирования оборотов, мне кажется оптимально будет собрать среднее значение RPM за секунду и в течение следующей секунды установить значение заслонки на шаг ниже/выше, в зависимости от разницы с требуемыми оборотами (скажем, 1700RPM). По достижению двигателем температуры 40 градусов снижаем обороты до 1500, при 60 - до 1200, при 70 - 1100, при 80 - отключаем подсос. Делать частоту операций чаще 1Гц мне кажется чревато скачками и автоколебаниями, но можно поэкспериментировать.
Еще можно поколдовать с шагом заслонки, например, если обороты сильно выше оптимальных (на 300+ оборотов), закрывать подсос с двойным или тройным шагом для более быстрой стабилизации оборотов. Но в обратную сторону так лучше не делать, может заглохнуть.
Также необходимо распознавать остановку двигателя для сброса программы, ну хотя можно и ничего не делать, работать будет и так, просто при падении оборотов ниже "живых" (400-500) программа переходит в режим, предшествующий запуску - установка заслонки в положение, соответствующее температуре.
Предлагаю, товарищ, совместно трудиться. Каждый у себя и делимся результатами, правками.
Хорошо, но я займусь этим не раньше лета, когда тепло станет) Сейчас лень и негде
А ещё нет датчиков((( У меня только дуины и сервы есть
Та же история. Пришел нано и жду серво. Есть термистр от старлайна и все. Главное чтобы желание не угасло. Предлагаю обменяться адресами почты. Вот моя
K_rka@bk.ru
Да, и на счет преобразования в пять вольт: где то видел (может и на этом сайте) вариант подключения сервы с отдельным питанием 12в, которое преобразовывалось транзистором и конденсатором. Транзистор попробовать можно, а вот конд не надо.
Опять же, как определить завелся двиг или нет - с клемы стартера на замке зажигания. Появился сигнал - заслонка в положение для запуска, пропал - значит завелся
Давай лучше писать здесь, может умные люди что подскажут)
По поводу определения запуска - с клеммы стартера мы ничего не узнаем. Стартер может крутить хоть 5 минут, а движок не заведётся. И наоборот, движок может работать, а стартер крутить вхолостую. Мне кажется наиболее точно об этом скажут обороты, т.к. ниже 300-400 оборотов движок работать не может, а стартер не может крутить быстрее 150-200, но более точно это нужно устанавливать опытным путём с применением точного тахометра, можно сделать из той же ардуины и цифрового табло, примеров в инете куча. Только опять же, проблема преобразования импульсного сигнала с катушки в прямоугольный 5-вольтовый, я знаю есть такие АЦП, надо поискать, стоят недорого. Нам так и так нужен определитель оборотов.
По поводу термистора. Нужно выяснить его точную модель и найти даташит. Либо ковыряться опытным путём с тестером, но лучше первый вариант
Думаю, температурный датчик нужен такой - DS18B20 (-55..125C), водонепроницаемый
http://dx.com/p/diy-ds18b20-stainless-steel-temperature-sensor-probe-black-151327#.UyvZOlkq1XY
Цифровой сенсор, я так понял. С него и показания более точные
Да на точность пофиг, нам точность не нужна, плюс-минус два градуса роли не играют. Вот если строить автоматическую теплицу, там да, важно. Такая задумка тоже есть и скоро будет реализована.
А вот удобство подключения цифры - другое дело, не нужно мудохаться с подгонкой под 5В аналогового входа.
Вот, кстати, инструкция по подключению именно этого датчика http://zelectro.com.ua/dallas-18b20
Такая задумка, я тебе больше скажу, продается. САУВЗ называется. Система автоматического упр. возд. заслонкой. Только тратить >5к на то, что можно сделать самому и не дороже штуки
Да разве в деньгах дело? Дело в интересе))))
Естественно в интересе) ох чувствую веселое лето предстоит. Ты откуда будешь?
МО, Одинцово
Пока сайт не работал наткнулся на статью
Статья непонятная.
ПИД нам нахрен не нужен, нам за глаза и за уши обычного П-регулятора (пропорциональный). Как он работает: слушаем обороты, берём РАЗНИЦУ оборотов текущих и требуемых, эту разницу умножаем на экспериментально вычисленный коэффициент и получаем значение СКОРОСТИ поворота сервопривода заслонки. Вроде так. Получается, чем больше обороты "упрыгали" от заданных, тем быстрее будет поворачиваться заслонка для их компенсации, и при приближении оборотов к заданным заслонка будет поворачиваться всё медленнее и медленнее. Только надо обязательно мёртвую зону сделать ~100rpm, а то прыгать будет.
Щас тоже с чем-то подобным вожусь...
Из того что показал "настольный прототип", еще играет рояль качество самой сервы. Желательно цифровую.
У аналоговых есть проблемки с поворотом на малые градусы. Перейти, скажем от с 0 на 30 - без проблем. А вот с 30 на 31 - серва может даже не начать шевелится. Пока не накопится ошибка требующая поворота градусов на 5-ть.
Правда я сервой кручу саму заслонку и мне обороты нужно выдерживать +-50 (а лучше +-10ть). В подсосе возможно потребуется поменьше точность. И мне кажется, что линейный актуатор был-бы попроще сервы в монтаже к подсосу.
По поводу сервы. Я свою аналоговую тестировал (синенькая мини, не помню как называется, что-то на Т), самая дешевая, за 3 доллара, у неё точность более 1 градуса, ощутимый и стабильный шаг не более 5мкс при использовании команды write.microseconds (в диапазоне 544-2400мкс), что составляет 370 шагов или 1/2 градуса. Если твоя серва не чувствует целый градус, то это совсем говно, а не серва)
Ну конечно, цифровая всё равно лучше, если есть возможность её использовать.
А что такое линейный актуатор?
По поводу сервы. Я свою аналоговую тестировал (синенькая мини, не помню как называется, что-то на Т), самая дешевая, за 3 доллара, у неё точность более 1 градуса, ощутимый и стабильный шаг не более 5мкс при использовании команды write.microseconds (в диапазоне 544-2400мкс), что составляет 370 шагов или 1/2 градуса.
Ну 1/2 градуса, по крайней мере стандартной либой, в любом случае не выставишь. Уголо-то int :)
Если твоя серва не чувствует целый градус, то это совсем говно, а не серва)
Никто не спорит :) Говно. Да еще под нагрузкой (хоть и небольшой).
Ну конечно, цифровая всё равно лучше, если есть возможность её использовать.
А что такое линейный актуатор?
Ну а гугл спросить?
Актуатор - Популярная робототехника
Выставишь. написал же - writeMicroseconds() в диапазоне 544-2400. Изучаем тут http://arduino.ru/Reference/Library/Servo
Я всегда только этой функцией и пользуюсь, т.к. гораздо точнее работает, чем в градусах.
Линейный актуатор - ну почитал, да, прикольно, но сколько он будет стоить? Как им управлять? Надо ли оно? Мне кажется серва удобнее и проще. Хотя, думаю, есть у таких актуаторов преимущество - лучшая влагозащищённость, но какая проблема обернуть серву с приводом в воздушный шарик?)
Моя серва примерно такая http://www.poprobot.ru/_/rsrc/1342969881101/ideologia/aktuator/servo_sm.jpg
Выставишь. написал же - writeMicroseconds() в диапазоне 544-2400. Изучаем тут http://arduino.ru/Reference/Library/Servo
Хм... затмение какое-то. Почему-то никогда не замечал этого метода. Слепое пятно. Спасибо.
Кстати, по вашей ссылки указан диапазон 1000-2000 (или 700-2300). Но похоже что это "бага документации". Так как в дефолтном конструкторе, действительно используется 544-2400
Линейный актуатор - ну почитал, да, прикольно, но сколько он будет стоить?
А фиг его знает. ВОзможно где-то "наковырять можно" (скажем в старом сканере).
Как им управлять? Надо ли оно? Мне кажется серва удобнее и проще. Хотя, думаю, есть у таких актуаторов преимущество - лучшая влагозащищённость, но какая проблема обернуть серву с приводом в воздушный шарик?)
Управлять. Как правило там внутри или обычный DC мотор, или шаговик. Плюс червячная передача. Так что управление как степпером или мотором :)
Удобнее вам серва - так я не спорю. Просто предлагаю рассмотреть альтернативы. А как удобней/дешевле - это уже вам на месте виднее.
А можно и самому подобный "актуатор" сколхозить. Гайка, шпилька (или длинный болт) плюс шаговик.
Плюс в том, что если "в дороге заглючило", то можно просто обесточить,подкрутить болт пальцами в нужное положение и доехать (с сервой насильно ее крутить руками - велики шансы убить шестеренки).
Что шаговик, что обычный мотор требуют дополнительных микрух и не могут управляться непосредственно от мк. Что является минусом) К тому же шаговики дороже серв. А по поводу вращения рукаии - не согласен, крутил десятки серв много-много раз руками, брал на работу как антистресс))))) вжик-вжик, вжик-вжик... ничего не ломается, если резко не давить. Ну и можно взять серву с металл. шестернями, эту вообще фиг сломаешь. Занимаюсь авиамоделизмом, много раз при посадках резко выворачивало управляющие плоскости, и ничего, сервы выдерживали. Они сейчас достаточно надёжны. Один минус - начинают "шуметь" со временем из-за износа потенциометра. Но это не наш случай, с нашими запросами серва 100 лет проживёт)
В сканере насколько я знаю обычный шаговик с ременной передачей на каретку. Тогда уж лучше старый дисковод 3.5 дюйма. Но у всех этих колхозных шаговиков из офисной техники есть недостаток - они не рассчитаны на работу в экстремальных температурных режимах, в отличие от авиамодельных серв. Заржавеют, откажут в -20... Сервы правда тоже могут, ну время покажет.
Обязательно нужен концевой выключатель на карбюраторе (у меня заводской стоит, думаю, можно купить в любом автомагазине), который включается при снятии ноги с педали. То есть распознаёт режим хх/торможения двигателем. Потому что в противном случае при нажатии на педаль наш мк будет делать фигню. А должен - оставить заслонку в последнем положении, а при отпускании педали - снова начать регулировку.
Разве обязательно? При прогретом двигателе и без этого работать будет. Концевик надо на ручник - сига заведет мотор при поднятом ручнике ( смотря как подключить). Ручник поднят, сига вкл зажигание-включается дуина-крутит стартер. Пришел хозяин-опустил ручник-контроллирует подсос сам. А про торможение не понял. Бросишь педаль-дуина опять регулирует, а если непрогретый следовательно обороты высокие будут, то есть ты уже не тормозить будешь.
И по статье немного разобрался. Я выше в теме писал просто про п-рег, на что мне про самовозбуждающийся генератор ответили- ниче не понял да и хрен с ним. Сейчас ясно. По датчику: есть термистор у меня, делителем напряжения через аналог буду в мк вводить значения. Там числа от 0 до 1023. Думаю еще проще с ними работать.
Граждане Хорошие, загорелся подобной идеей, но количество оборотов и автозапуск мне не к чему, мне нужно только, чтобы при повороте ключа включалась Arduina и поворачивала серво по полученной с датчика темперетаре на указанной мной градус и при достижении определённой температуры воротала его в положение исходное, как реализовать, подскажите пожалуйста?
Элементарно
как подключить датчик - например тут http://zelectro.com.ua/dallas-18b20
вот пример зависимости угла сервы от освещения:
http://arduino.ru/forum/programmirovanie/upravlenie-servoi-cherez-fotore...
вам нужно то же самое, только не от освещения, а от температуры, думаю нетрудно найти готовый код в гугле
В том то и дело, что особо готового не нашёл, из частей не могу не как собрать, данные слишком разняться, с датчиком я определился, спасибеще огромное, мне хотябы пример кода, именно того где будет описанно, что нужно брать за источник температурный датчик и при такой то температуре, токой то угол ставить
Нашёл код, но он с терморегулятором, как выкинуть от туда часть про терморегулятор
не понял, что именно вы не можете найти
есть переменная значения температуры, напримет tempC
Циклически опрашиваем температуру и выполняем код вроде этого:
if (tempC > 10 && tempC < 11) { servo.write(90) }; //если температура между 10 и 11 то установить серву на угол 90
if (tempC > 11 && tempC < 12) { servo.write(95) };
if (tempC > 12 && tempC < 13) { servo.write(100) };
if (tempC > 13 && tempC < 14) { servo.write(105) };
if (tempC > 14 && tempC < 15) { servo.write(110) };
и так далее, ну разумеется с вашими экспериментальными данными углов
Вместо диапазона температуры можно округлять значение до целых и спрашивать напрямую if (temp == 10) {};
не понял, что именно вы не можете найти
есть переменная значения температуры, напримет tempC
Циклически опрашиваем температуру и выполняем код вроде этого:
if (tempC > 10 && tempC < 11) { servo.write(90) }; //если температура между 10 и 11 то установить серву на угол 90
if (tempC > 11 && tempC < 12) { servo.write(95) };
if (tempC > 12 && tempC < 13) { servo.write(100) };
if (tempC > 13 && tempC < 14) { servo.write(105) };
if (tempC > 14 && tempC < 15) { servo.write(110) };
и так далее, ну разумеется с вашими экспериментальными данными углов
Вместо диапазона температуры можно округлять значение до целых и спрашивать напрямую if (temp == 10) {};
map
ну да, можно и map, это для получения данных с аналогового датчика
Для начала вам нужен рабочий код получения температуры для именно вашего датчика, затем подцепить к нему то что я написал выше
У вас зависимость не может быть пропорциональная, поэтому использовать map для перевода температуры в угол нельзя
ну да, можно и map, это для получения данных с аналогового датчика
Для начала вам нужен рабочий код получения температуры для именно вашего датчика, затем подцепить к нему то что я написал выше
У вас зависимость не может быть пропорциональная, поэтому использовать map для перевода температуры в угол нельзя
Да вообщем-то map-пу все равно откуда данные взялись. С аналогового датчика, с цифрового, распарсены из Serial. Главное что он умеет траслировать один диапазон, в другой.
Вообщем map подойдет для любого датчика, если зависимость между температурой и улом линейная.
Если не линейная - ну можно подобрать апроксимирующую функцию (полином какой-нибудь). Всяко лучше чем выписывать каждый градус в коде.
И только если зависимость "ну совсем ступеньками" имеет смысл "харкодить саму зависимость". И то.. лучше это делать не кучей if, а завести табличку (массив). Пробегатся по ней for-ром и находить "нужный угол".
ну так в чём проблема?
Я просто написал одно из решений, как бы сделал я (подумаешь 100 строк расписать, зато быстродействие какое!)
Можно взять диапазоны по 5 грудусов, уже будет не 100 а 20-30 строк
ну так в чём проблема?
Я просто написал одно из решений, как бы сделал я (подумаешь 100 строк расписать, зато быстродействие какое!)
Можно взять диапазоны по 5 грудусов, уже будет не 100 а 20-30 строк
Как в чем проблемма!!!!!!!????? Программист должен быть ленивым!!!!!!!!!!!!!!
Лень - есть первеший двигатель прогресса.
Мне и 10-ть строк харило-бы писать. Лучше пару дней потрачу на гугление и чтение что такое интерполяция и как ее делать.....
А вообще вы зря кипятитесь. Никто же не говорит что "вы сделали что-то плохое". Нормальный, рабочий код...
Но если я вижу как его можно сделать более компактным, почему об этом не сказать?
Вообще любое "дублирование кода" - это уже признак "давайте посмотрим как тут можно улучшить". Конечно, идеальный код "сходу", никто не пишет (и даже не рекомендуется). Обычно это итерационный процесс.
1. Добавляем какую-то фишку. Пофиг как, лиш бы работало.... главное - быстро добавить.
2. Смотрим код, и НЕ МЕНЯЯ ЕГО ЛОГИКИ (внешнего поведения) реоргазинуем его (компактность, читабильность, сопровождаемость).
3. Переходим к пункту 1 (добавляе следующу фишку).
Вы сделали пунк (1), я намекнул на пункт (2). И не более того. Обидеть вас никто не пытался.
А по поводу "зато какое быстродействие" - это еще бабка надвое гадала какой вариант будет быстрее работать.
А вот то что "сопроводждать" 100 строк намного трудней чем 5 строк - это факт.
А ну как нужно будет "перекалибровать"? В map - пара цифр поменять, а в 100 строках? Да еще не опечайся нигде...
Но вообщем, конечно дело ваше. Откуда я знаю. Может у вас зарплата зависит от того сколько строк кода написали за день :) Когда-то индусам именно так и платили. За строки кода. Отсюда и возник их особый "индуский стиль" :)
Есть конечно и другая крайность. Оптимизация ради оптимизации..., причесывание кода "по феншую" до маразма. Баланс, для себя, каждый ищет сам. У вас точка равновесия находится в одном месте, у меня в другом. Ничего страшного в этом нет.
Да какие обиды) У кого-то бзик на красоту кода, у кого-то - на быстродействие... ясен пень, что по факту скорость работы не отличишь без скоростной видеосъёмки, но всё же:
Читаем значение - и началось: запускается процедура: перебираются варианты из массива, с каждым элементом массива проводится операция сравнения, а значит и скорость возврата значения каждый раз будет не только относительно долгой, но и каждый раз разной... А если вычисление - ещё хуже.. сколько тактов займёт одно вычисление по формуле? А так - напрямую, без лишних тактов, без запросов в триггеры переменных, значение угла прямо из кода в серву. Я бы делал даже не так. Я бы отправлял в серву не угол, а значение в микросекундах - это еще быстрее и к тому же точнее. Понятное дело, я не делал бы так, если бы количество значений превышало мыслимый порог (200-250), а так - что тут - контрол-цэ, контрол - вэ! А нелинейность? Как её учитывать? Вычислять и апроксимировать математическую функцию зависимости угла от температуры? Да нафига мне это надо... С линейной - согласен, map в зубы и х@й с ним. Но линейной она не будет. А учитывая довольно ощутимую тормознутость ардуины... Был бы это какой-нить 40-100Mhz чип, другой вопрос...
>? Вычислять и апроксимировать математическую функцию зависимости угла от температуры?
А шо, великая проблема? Тем более что есть куча софта который за вас это сделает. Только дай ему намерянные данные.
Даже если софта нет - онлайн сервисы есть. Wolfram тот же самый. Скормил ему точки, он тебе предложил несколько вариантов функций. Показало погрежность. Выбрал себе "какая подходит и закодить ее не сложно" - и вперед. Одна строчка.
Ну не хотите апроксимацией мозг хмурить. Могу понять. Но "табличные значения", почему не сделать массивом?
По быстродействию еще не факт что быстрее будет. Например в вашем варианте проверки IF будут делатся ВСЕ. Вне зависимости от температуры.
Да, я понимаю, что исправить это "ну подумаешь, вставить else if". Ага. Только вставить его нужно 100 раз.
Едем дальше, эксперементы показывают что "вот нужно тоже самое", но хотелось бы угол везде на 3 градуса больше. Я в одном месте поменяю, сделаю Servo.write(angle+3);, а вам в 100 местах нужно. Да еще везде +3 в уме правильно сделать.
Потом нам захотелось добавить отладки (или заказчик в ТЗ захотел что-бы "были логи"). Я в одном месте сделаю Serial.println(), а вам в 100 менять. (вот тут уже возможно вы заподозрите, что неплохобы вынести вычесленный угл в переменную, и делать Serial.println() в конце, то есть все-таки "начнете причесывать код").
А потом заказчику захочется иметь два набора "табличных значений" и переключатся между ними, скажем по кнопке. Вам опять раскопиписчивать, а мне просто объявить второй массив и по кнопке менять ссылку на текущий.
А потом сказали "а двайте у нас будет три датчика и три сервы". И у каждой свой набор соответсвия углов и температуры. Я просто вынесу это в функцию, которой будет передаватся ссылка на датчик, ссылка на серву, ссылка на табличные значения...
А у вас будет уже 300 строк. (и не дай бог, опять какая-то логика изменится, уже в 300 менять нужно будет).
А потом поступит требование "а теперь мы хотим что-бы с ноутбука можно было менять эта табличные значения". Я просто допишу интерфейс рабоыт через Serial, который будет принимать данные с компа и обновлять значение в табличке, а вы.... а все. Либо таки переходить на массивы, либо учить заказчика запускать ардуиноIDE, менять код скетч и перезаливать его.
Дальше я смогу предложить (если захотят оплачивать) сделать програмку на комп, для настройки всех параметров (что-бы не мучатся командами в терминале), а в вашем варианте... ну можно конечно что-то придумать (макросами в excel-льке, и набором .bat-ников или powerhell), но про "красоту" и УДОБСТВО - клиенту полюбому нужно забыть....
Так шо..... Писать с помощью copy-paste можно. Куда же мы от этого денемся :) Но вот пропагандировать это.... ну наверное не стоит.
P.S. А и еще забыл. А вы представляете как будет колбасить вашу серву, когда температура встанет на 12 градусов, и будет плавать, из-за шума датчика "туда-сюда" на десятые доли? Я-то при использовании массива и цикла легко реализую гистерезис, а вот какой вам потребуется уже поправить 200 цифр. (или 600 если сервы три).
P.S.S. Кстати, в вашем коде, на какой угл станет серва, если температура будет РОВНО 12-ть градусов? А это кстати более чем реально. Например решили объявить переменную tempC как int. Ну типа "точность до долей градуса нам не важна" или из-за той же "борьбы с дребезгом". В вашем коде не сработает ни одно условие. Серва будет стоять как параличная. Можно конечно поправить и это.... опять 100 раз. Ух.... если у вас почасовая оплата - вам очень повезло :)
В том то и дело, что особо готового не нашёл, из частей не могу не как собрать, данные слишком разняться, с датчиком я определился, спасибеще огромное, мне хотябы пример кода, именно того где будет описанно, что нужно брать за источник температурный датчик и при такой то температуре, токой то угол ставить
а, зачем такой геморой ??? может проще контролировать обороты, а при достижении определённой температуры (нагретый двигатель) просто открыть заслонку...