роботы робототехника микроконтроллеры


 Страниц (2): [1] 2 »   

> Без описания
central30 Post Id


Лейтенант


Сообщений всего: 30
Дата рег-ции: Апр. 2012  



Всем добрый день.Вобщем собрал ступеньчатый термостат для управления тремя тэнами.Отключает с разницой в 3 градуса.Поставили к примеру 50 градусов,первый отключается по достижению 43 градусов,второй 46,и последний 50.После отключения и падения температуры опять включается последний,тоесть первый уже так и будет отдыхать,а последний постоянно работать.В чем собственно вопрос,как мне реализать на Си смену очереди включения тенов.Подскажите если не трудно.Заранее благодарю.
 
 Top
Predator Супермодератор Post Id


Супермодератор


Сообщений всего: 1307
Дата рег-ции: Июль 2012  



CODE:

if (temp<=tempporog)
{
switch (curent_order)
case 0:
PowerOnTEN(0);
curent_order=1;
break;
case 1:
PowerOnTEN(1);
curent_order=2;
break;
case 2:
PowerOnTEN(2);
curent_order=0;
break;
}


как-то так...
 
 Top
elmot Post Id



Гуру


Сообщений всего: 1141
Дата рег-ции: Дек. 2010  



Телепат вернулся из отпуска.
 
 Top
central30 Post Id


Лейтенант


Сообщений всего: 30
Дата рег-ции: Апр. 2012  



не совсем понятен код.А как мне ступень реализовать тогда
CODE:

if (temp<=(porV-3)) // устанавливаем порог включения
{
PORTC.0=1;
t1 =1; // ставим значение переменной для тригера порта
}


if (temp>=porV) // установим верхний порог отключения
{
PORTC.0=0;
t1=0; //ставим значение переменной для тригера порта
}
if ( temp >= (porV - 9) )//устанавливаем верхний порог PORTC 2
{
PORTC.2=0;
}
if (temp<=(porV-12))//устанавливаем нижний порог РС2
{
PORTC.2=1;
}

if ( temp >= (porV - 4) )//верхний порог РС1
{
PORTC.1=0;
}
if (temp<=(porV-7)) //нижний порог РС1
{
PORTC.1=1;
}


вот это мой код для работы ступени
 
 Top
Predator Супермодератор Post Id


Супермодератор


Сообщений всего: 1307
Дата рег-ции: Июль 2012  



во вот. всплыла тема.
а чего непонятного?
curent_order - текущая очередь - при необходимости включить еще один тэн - включается тот "чья" очередь и очередь передается следующему.
это дело можно упаковать в функцию и вызывать при достижении каждого порога. ну а выключать - дело не хирое.
 
 Top
Artem Post Id


Главнокомандующий


Сообщений всего: 347
Дата рег-ции: Май 2012  



central30 пишет:
управления тремя тэнами

Можно глупый вопрос: что такое тен?
 
 Top
mihail Post Id



Гуру


Сообщений всего: 1065
Дата рег-ции: Март 2010  



http://ru.wikipedia.org/wiki/%D0...0%B5%D0%BB%D1%8C
 
 Top
central30 Post Id


Лейтенант


Сообщений всего: 30
Дата рег-ции: Апр. 2012  



Прошу прощение за тупость,хотя это у меня не редкость,что то до меня не доходит.
Я в своих условиях написал,что если температура установлена на 60 градусов,то по достижению temp >= (porog - 9),отключаем PORTC.2,тоесть дал конкретную задачу именно на отключение этого порта.Так как же мне сделать что бы он сменил Порт в следующий раз?
Получается типо так: temp >= (porog - 9) curent_order PORTC.2?
 
 Top
Predator Супермодератор Post Id


Супермодератор


Сообщений всего: 1307
Дата рег-ции: Июль 2012  



я с трудом понимаю задачу, пишу отталкиваясь от первого поста:
для начала упростите себе жизнь: сделайте функции PowerOnTEN(order) и PowerOffTEN(order), где order-номер тена.
Далее у вас при включении питания должны включиться все 3, потом понемногу поотключаться и потом поочереди поддерживать температуру.
получаем что-то типа того:
CODE:

void main (void)
{
config_all();
PowerOnTEN(0);
PowerOnTEN(1);
PowerOnTEN(2);
while (temper<=temper_porog-9)
{
temper=gettemper();
}; // ждем пока нагреется до порог-9
PowerOffTEN(2);

while (temper<=temper_porog-6)
{
temper=gettemper();
}; // ждем пока нагреется до порог-6
PowerOffTEN(1);
curent_order=0;// текущий включен номер 0

while(1) // бесконечный цикл поддержания температуры
{
keep_temperature();
}


}


keep_temperature -функция из поста от 28 февраля.
 
 Top
central30 Post Id


Лейтенант


Сообщений всего: 30
Дата рег-ции: Апр. 2012  



Попробую написать и отладить,о результатах сообщу
 
 Top
central30 Post Id


Лейтенант


Сообщений всего: 30
Дата рег-ции: Апр. 2012  



CODE:
if (temp<=tempporog)
{
switch (curent_order)
case 0:
PowerOnTEN(0);
curent_order=1;
break;
case 1:
PowerOnTEN(1);
curent_order=2;
break;
case 2:
PowerOnTEN(2);
curent_order=0;
break;
}

Не получается:После Break идет дальнейшая операция.Надо как то сделать условие бесконечного цикла
 
 Top
central30 Post Id


Лейтенант


Сообщений всего: 30
Дата рег-ции: Апр. 2012  



Уважаемые форумчане,ну никак не получается сделать мне очередь.Совсем застрял на маленьком кусочке кода.Вообщем мой код
CODE:
if (temp2<=(porV2-3)){
switch (t2) {
case 0 : PORTC.1=1;
t2=1;
break;

case 1 : PORTC.2=1;
t2=0;
break;
}

}
//temp2-переменная измерения температуры
//porV2-переменная установки порога включения
//t2-переменная установки очереди,триггер

Пока пытаюсь сделать на 2 тена.Проверяю в протеусе,меняется очередь PORTC после отключения,но заслед включается следующий порт,а мне надо по одному.Упала,температура,включился PORTC.1,набрал-отключился,упала температура-включился PORTC.2 и.т.д.
 
 Top
Predator Супермодератор Post Id


Супермодератор


Сообщений всего: 1307
Дата рег-ции: Июль 2012  



так а отключение у вас вообще работает?
 
 Top
central30 Post Id


Лейтенант


Сообщений всего: 30
Дата рег-ции: Апр. 2012  



Отключение работает,просто ставлю условия на оба порта по достижению температуры.
 
 Top
Predator Супермодератор Post Id


Супермодератор


Сообщений всего: 1307
Дата рег-ции: Июль 2012  



т.е. работает примерно так:
1) нагревается 2-мя тенами
2) оба тена отключаются
3) остывает - включается тен 1
4) нагревается - отключаются оба (второй и был отключен, но для упрощения сделано так)
5) остывает - должен включиться тен 2, а включаются оба.
я правильно понял?
 
 Top
Страниц (2): [1] 2 »
« Программирование микроконтроллеров »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 





Powered by Exclusive Bulletin Board
ExBB FM 1.0 RC1 Smiles by Fool from Foolstown
  Яндекс.Метрика   Рейтинг@Mail.ru