Re: Замена ручного управления печкой
за свое отвечу:
#define DeltaConst 3
Есть текущее значение CurrentInput и есть нужное положение var_n. Если CurrentInput<var_n, то CurrentInput нужно увеличить, наоборот - уменьшить. Так?
Делаем мы это включая двигатель в разные стороны.
Можно написать что-то вроде
Код:
if (CurrentInput<var_n)
{
digitalWrite(m3_r,HIGH);
digitalWrite(m3_l,LOW);
}
else
if (CurrentInput>var_n)
{
digitalWrite(m3_r,LOW);
digitalWrite(m3_l,HIGH);
}
else
{
digitalWrite(m3_r,LOW); //выключаем двигатель, мы в нужной точке!
digitalWrite(m3_l,LOW);
}
Написав такой код мы столкнемся с одной проблемой: жужжание.
Связано оно с тем, что двигатель имеет инерцию, в редукторе есть люфты, а аналого-цифровой преобразователь шумит - даже при одном и том же входящем напряжении может выдавать, к примеру, то 170, то 171, то 169. А если еще по шине питания процессора идет какой-то ток, то и на 10-20 прыгать.
Что с этим делать? Надо заменить точку назначения интервалом, положение внутри которого считается нормальным и двигатель выключать. Обозначим начало интервала var_n1, а конец var_n2.
Код:
if (CurrentInput<var_n1)
{
digitalWrite(m3_r,HIGH);
digitalWrite(m3_l,LOW);
}
else
if (CurrentInput>var_n2)
{
digitalWrite(m3_r,LOW);
digitalWrite(m3_l,HIGH);
}
else
{
digitalWrite(m3_r,LOW);
digitalWrite(m3_l,LOW);
}
так? Делаем интервал достаточно широким и наслаждаемся тишиной.
Но для этого нам же придется вместо одного значения var_n хранить два var_n1 и var_n2! А это нехорошо, учитывая, что у нас на самом деле не одно значение, а массив! Сделаем интервал чуть по-другому - будем хранить только середину интервала var_n и точность DeltaConst.
То есть
var_n1=var_n-DeltaConst
var_n2=var_n+DeltaConst
получаем
Код:
if (CurrentInput<var_n-DeltaConst)
{
digitalWrite(m3_r,HIGH);
digitalWrite(m3_l,LOW);
}
else
if (CurrentInput>var_n+DeltaConst)
{
digitalWrite(m3_r,LOW);
digitalWrite(m3_l,HIGH);
}
else
{
digitalWrite(m3_r,LOW);
digitalWrite(m3_l,LOW);
}
А теперь еще раз оптимизируем - меняем этот код на
if (CurrentInput<var_n-DeltaConst)
digitalWrite(m3_r,HIGH);
else
digitalWrite(m3_r,LOW);
if (CurrentInput>var_n+DeltaConst)
digitalWrite(m3_l,HIGH);
else
digitalWrite(m3_l,LOW);
Он становится менее понимаемым, но результат у него абсолютно тот же.
Проверить несложно, поставив мысленный эксперимент - что происходит при всех трех положениях
CurrentInput<var_n-DeltaConst
var_n-DeltaConst<CurrentInput<var_n+DeltaConst
CurrentInput>var_n+DeltaConst
Re: Замена ручного управления печкой
sensors.requestTemperatures();
temp2 = sensors.getTempC(Thermometer2);
temp3 = sensors.getTempC(Thermometer3);
Думаю, что речь идет о далласовских датчиках. Тогда у них протокол такой - им дают команду на измерение, а через некоторое время считывают отдельной командой результат. При этом команда на измерение может даваться сразу всем датчикам, что тут и делается.
Вложений: 1
Re: Замена ручного управления печкой
Ух,блин как много всего,есть пища для размышлений.Спасибо,однако.
Дисплей кстати показывает все нормально,просто фонт 5х7 убрать захотел и вместо него символы,как у иносранных авто.Дисплей приспособил другой,мелт по размерам не влазил.Может быть и не озадачился я бы электронным отопителем,но есть но и не одно.Во-первых после переделки рамки под моник ,родные крутилки смотрятся коряво,во вторых чтобы подкрастца к монитору надо пол торпеды разобать(инженеры вольво "гении" не иначе) и в-третьих декоративная накладка сильно постарела и место ей на помойке.:D
Re: Замена ручного управления печкой
Блин,но мотор почему то всеравно дергаеся иногда,как будто резистор протерт. Залил свою писанину не дергается,встает сразу,заливаю переделанную трясется.:confused:
Re: Замена ручного управления печкой
Попробуй увеличить DeltaConst где-нибудь до 10-15. Резистор там +- километр, да и привод не мгновенно останавливается. Что интересно, на десятке в стоке используется шаговый двигатель для одной из заслонок (в подробности не вникал). Подозреваю, что как раз из-за точности позиционирования.
Re: Замена ручного управления печкой
Совсем ослеп
Цитата:
#define DeltaConst 3 установлен диапазон значений для АЦП
.И кстати проверят резистор в приводе,работает четко,все таки буржуи умеют запчасти делать(привод от ауди).
Re: Замена ручного управления печкой
Поставил 10 все работает четко.Спасибо всем еще раз.
Re: Замена ручного управления печкой
А чем дисплеи WG12864 от МТ-12864 отличаются кроме названий выводов ? А то повторил схему а изображения нет:confused:
Re: Замена ручного управления печкой
Нужно даташиты обоих дисплеев смотреть
Re: Замена ручного управления печкой
Приветствую. У меня вот такой модуль получился. Управление за счет джойстика Sony, который под рулем стоит. Плюсом еще стоит эквалайзер.
http://i070.radikal.ru/1209/c4/8a8712dfa1bd.jpg
http://s018.radikal.ru/i521/1209/d7/6fb9dadd46fe.jpg
http://s45.radikal.ru/i110/1209/dc/8ea875e2e328.jpg
http://s54.radikal.ru/i146/1209/fc/2b00f188eddb.jpg
Сделан усилитель для колонок и линейный выход для саба.
Усилитель от автомагнитолы и цифровой эквалайзер от конструктора. Питание через Кренки. Ваше мнение ?