Re: Замена ручного управления печкой
Цитата:
пишет ошибку на вот этой строчке
tempSensor.begin(12); //Вешаем Датчик на 12 порт
какая библиотека используется для датчика температуры?
Цитата:
у меня будет три датчика температуры,три сервопривода,и вот с положениями привода мотора печки как быть,что бы скорость постепенно регулировать.
имеющаяся программа скорость мотора как раз плавно регулирует. кнопками. надо сделать ползунки на каждый привод? крайние значения как устанавливать? ход заслонки и ход привода скорее всего не равны.
Цитата:
Можно написать один скетч ,наподобие программы ,с информацией для выводов, что этот Пин идёт туда то ,а этот туда то, и что чего будет делать,было бы супер , таких желающих как я тысячи наверное ))
имхо, надо максимально конкретизировать задачу. я же не программист))
Re: Замена ручного управления печкой
Библиотека на DS18B20 и DS18S20 .Наверное надо добавить вашу библиотеку EEPROM
ход заслонки это я думаю не очень сложно узнать ,когда уже сервопривод будет смонтирован.
Пока на данный момент мысли
1)Двигатель отопителя ,(можно просто сделать 4 кнопки) будет работать через релюшки
2)Сервопривод заслонки направления потока воздуха ( здесь лучше ползунок)
3)Сервопривод заслонки горячего и холодного воздуха (два положения,кнопка)
3)Сервопривод заслонки забора воздуха улица-салон (два положения,кнопка)
4)Подсветка RGB панелb приборов и салона ( три кнопки )
5)Уровень топлива(снимать показания с прибора на панели приборов ,аналоговый)
6)температура за бортом, в салоне, и двигателя
остальное можно добавлять по мере возможностей и фантазии.
ещё не очень понял какие контакты на Ардуине за что отвечают ,и что на каких сидит
Re: Замена ручного управления печкой
raskor, сейчас какой-нибудь скетч залит для управления сервами?
Re: Замена ручного управления печкой
Вечер добрый. Вопрос может прост может нет незнай Собрал я на ардуинке меге управление отопителем все классно все работает но вот беда стал переделывать управление заслонкой тепло-холод и уперся. Ну ни в какую ниче не получается програмист я не то что плохой скорей никакой.Обратиться решил к вам так как девайс оч иочень нужен.Очень хотелось бы знать как правильно переписать скетч под третий мотор
#define m1_l 39 //первый влево
#define m1_r 40 //первый вправо
#define m2_l 41 //второй влево (боковые)
#define m2_r 42 //второй вправо(стекло)
#define m3_l 44 //третий влево(заслонка горячий-холодный)
#define m3_r 43 //третий вправо(заслонка горячий-холодный)
#define JOY 1 //АЦП джойстик
#define val2 5 //АЦП второго мотора
#define val1 6 //АЦП первого мотора
#define val3 7 //АЦП третьего мотора
#define vent 31 //ШИМ вентилятора
int res_dt1;//джойстик
int min_3 = 190; //(заслонка горячий-холодный)
int max_3 = 900; //(заслонка горячий-холодный)
int min_2 = 185; //боковые
int max_2 = 450; //стекло
int centr_1 = 310; //среднее первый
int min_1 = 310; //ноги
int max_1 = 490; //ноги закрыто
int centr_2 = 370; //среднее второй
int vent_s=0;
int vent_speed=0;
int t=5, f=0;
int flow=5;
unsigned long time;
void setup(void)
{
pinMode(m1_l,OUTPUT);
pinMode(m1_r,OUTPUT);
pinMode(m2_l,OUTPUT);
pinMode(m2_r,OUTPUT);
pinMode(m3_l,OUTPUT);
pinMode(m3_r,OUTPUT);
pinMode(vent,OUTPUT);
digitalWrite(m1_l,LOW);
digitalWrite(m1_r,LOW);
digitalWrite(m2_l,LOW);
digitalWrite(m2_r,LOW);
digitalWrite(m3_l,LOW);
digitalWrite(m3_r,LOW);
digitalWrite(vent,LOW );
sensors.begin();
Serial.begin(115200);
TCCR2B = TCCR2B & 0b11111000 | 0x04;
/*
if(analogRead(val1) > max_1-10 && analogRead(val2) < min_2+10) flow=2;
if(analogRead(val1) > max_1-10 && analogRead(val2) > max_2-10) flow=0;
if(analogRead(val1) > min_1-10 && analogRead(val1) < min_1+10) flow=1;
???????????
*/
void motors()
{
if(flow==0)//стекло
{
if (analogRead(val2)<max_2)digitalWrite(m2_r,HIGH);
else digitalWrite(m2_r,LOW);
if (analogRead(val1)<max_1)digitalWrite(m1_l,HIGH);
else digitalWrite(m1_l,LOW);
}
if(flow==1)//в ноги
{
if (analogRead(val1)>min_1)digitalWrite(m1_r,HIGH);
else digitalWrite(m1_r,LOW);
}
if(flow==2)//боковые
{
if (analogRead(val2)>min_2)digitalWrite(m2_l,HIGH);
else digitalWrite(m2_l,LOW);
if (analogRead(val1)<max_1)digitalWrite(m1_l,HIGH);
else digitalWrite(m1_l,LOW);
}
if(flow==3)//стекло и ноги
{
if (analogRead(val2)<max_2)digitalWrite(m2_r,HIGH);
else digitalWrite(m2_r,LOW);
if (analogRead(val1)>min_1)digitalWrite(m1_r,HIGH);
else digitalWrite(m1_r,LOW);
}
if(temp_s+1)//регулировка температуры
{ ??????????????
}
if(temp_s-1)//регулировка температуры
{ ???????????????
}
void buttons()
{
if(res_dt1>=715 && res_dt1<=725)//temp_s++. кнопка VOL UP
{
if(temp_s<40)
{
if (analogRead(val3)) ????????????
temp_s=temp_s+1;
delay(30);
}
bytes[0] = 0x5A; //префикс
bytes[1] = temp_s;
bytes[2] = 0;
bytes[3] = 0;
Serial.write( bytes,4);
delay(150);
}
if(res_dt1>=635 && res_dt1<=645)//temp_s--. кнопка VOL DOWN
{
if(temp_s>10)
{
temp_s=temp_s-1;
if (analogRead(val3))?????????????
delay(30);
}
bytes[0] = 0x5A; //префикс
bytes[1] = temp_s;
bytes[2] = 0;
bytes[3] = 0;
Serial.write( bytes,4);
delay(150);
}
я знаков вопросительных наставил где мне кажется чето надо делать
Заранее спасибо
Re: Замена ручного управления печкой
basurman971,
Функция buttons не меняется - там просто задается требуемое значение температуры.
Управление приводом можно сделать из функции motors или из функции termometer.
В самом простом варианте для теста:
PHP код:
if(temp<temp_s)
{
if (analogRead(val3)<max_3)digitalWrite(m3_r,HIGH);
else digitalWrite(m3_r,LOW);
}
Ну и соответственно при temp>temp_s в другую сторону.
Тогда заслонку будет гонять от края до края при каждом переходе через заданную температуру. Для клапана печки это нормально, для заслонки не очень.
Необходимо либо линейно, либо по какой-то зависимости привязать положение заслонки к температуре.
Для настройки можно ввести digitalWrite(m3_l,HIGH) и digitalWrite(m3_r,HIGH) на кнопки и двигать заслонку для поиска правильного положения.
Re: Замена ручного управления печкой
Re: Замена ручного управления печкой
manu_245,
Ага крутиться начал,уже хорошо но сдается мне что датчик положения он не видит и тупо крутит то вправо то влево причем на кнопки не реагирует
Re: Замена ручного управления печкой
manu_245,
а в
PHP код:
/*
if(analogRead(val1) > max_1-10 && analogRead(val2) < min_2+10) flow=2;
if(analogRead(val1) > max_1-10 && analogRead(val2) > max_2-10) flow=0;
if(analogRead(val1) > min_1-10 && analogRead(val1) < min_1+10) flow=1;
*/
этих штуках случайно не задаются параметры аналогового входа
Re: Замена ручного управления печкой
Эта часть вообще закомментирована, не используется.
Для проверки кнопками можно так сделать:
PHP код:
if(res_dt1>=556 && res_dt1<=566)//vent_s ++. кнопка TRACK UP или другая кнопка (соответственно переназначить надо)
{
digitalWrite(m3_r,HIGH);
}
else digitalWrite(m3_r,LOW);
if(res_dt1>=475 && res_dt1<=485)//vent_s --. кнопка TRACK DOWN
{
digitalWrite(m3_l,HIGH);
}
else digitalWrite(m3_l,LOW);
другие обращения к m3_l и m3_r при этом необходимо отключить.
Должен крутить влево в право только при нажатии кнопок.
Для проверки и настройки можно в loop добавить:
Serial.println(val3);
и в терминале посмотреть как меняются значения. при этом остальные обращения к порту для удобства лучше отключить.
Соответственно можно будет увидеть увеличивается или уменьшается значение АЦП при движении m3_r и тогда возможно поправить код из предыдущего поста.
Re: Замена ручного управления печкой
manu_245
Спасибо за внимание может хоть к старости чонить понимать буду в энтих языках и каракулях.Но помоему я мозг не токо себе полосчу.
Надоело мне извращаться и решил драйвер ипонский проверить ,а он редиска возьми и дух испусти. Счас прилужу 293 и уж помучаю его.