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


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

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


Лейтенант


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



1)Нагревается оба тенами
2)для упращения задачи,я сделал отключения оба тенов без ступени
3)остывает,должен включится тен1,включается тен1,за след включается тен2
4)по достижению температуры,отключаются оба тена
5)остывает,включается тен2,за след включается тен1
6)и.т.д
(Добавление)
Вообщем надо как то сделать условие чтобы при включение тена1,тен2 ожидал отключения тена1,после этого тен2 включался
 
 Top
central30 Post Id


Лейтенант


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



Уважаемые,ну неужели никто ничего не может мне подсказать?
 
 Top
mihail Post Id



Гуру


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



Для начала неплохо было бы понять как все должно работать.

central30 пишет:
ступенчатый термостат для управления тремя тэнами.Отключает с разницей в 3 градуса.Поставили к примеру 50 градусов,первый отключается по достижению 43 градусов,второй 46,и последний 50.После отключения и падения температуры опять включается последний,то есть первый уже так и будет отдыхать,а последний постоянно работать


Если температура меньше 43, работают все три ТЭН.
Если температура от 43 до 46, работают второй и третий ТЭН.
Если температура от 46 до 50, работает третий ТЭН.
Если температура больше 50, все ТЭН отключены.

Так?

(Отредактировано автором: 28 Ноября, 2013 - 00:36:22)

 
 Top
central30 Post Id


Лейтенант


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



Все правильно.Но только при температуре 46-50 градусов,должна менятся очередь включения тенов
 
 Top
mihail Post Id



Гуру


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



central30 пишет:
при температуре 46-50 градусов, должна меняться очередь включения тенов


Пытаться писать программу мне пока рано :-)

Итак...

Если температура меньше 43, то включаются первый ТЭН, второй ТЭН и третий ТЭН.
Если температура поднимается до 43, то первый ТЭН отключается. Второй ТЭН и третий ТЭН включены.
Если температура поднимается до 46, то второй ТЭН отключается. Первый ТЭН отключен. Третий ТЭН включен.
Если температура поднимается до 50, то третий ТЭН отключается. Второй ТЭН и третий ТЭН отключены.

Если температура снижается до 46, то включается третий ТЭН. Первый ТЭН и второй ТЭН отключены.
Если температура снижается до 43, то включается второй ТЭН. Первый ТЭН отключен. Третий ТЭН включен.
Если температура снижается ниже 43, то включается первый ТЭН. Второй ТЭН и третий ТЭН включены.

Оно?

(Отредактировано автором: 28 Ноября, 2013 - 22:18:40)

 
 Top
central30 Post Id


Лейтенант


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



Все правильно уважаемый mihail.Ступень я написал,работает.Единственная загвоздка у меня в смене очереди.
 
 Top
mihail Post Id



Гуру


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



central30 пишет:
Все правильно


Программа
char t3, t2, t1, t;

char termometer( void )
{
return 0;
}

int main( void )
{
DDRD |= ((1<<7)|(1<<6)|(1<<5));
PORTD &= ~((1<<7)|(1<<6)|(1<<5));

t3 = 50;
t2 = t3 - 4;
t1 = t2 - 3;

t = 0;

for(;;)
{
t = termometer();

if ( t < t1 )
{
PORTD |= ((1<<7)|(1<<6)|(1<<5)); // 1 on, 2 on, 3 on
}

if ( t == t1 )
{
PORTD &= ~(1<<7); // 1 off
PORTD |= ((1<<6)|(1<<5)); // 2 on, 3 on
}

if ( t == t2 )
{
PORTD &= ~((1<<7)|(1<<6)); // 1 off, 2 off
PORTD |= (1<<5); // 3 on
}

if ( t >= t3 )
{
PORTD &= ~((1<<7)|(1<<6)|(1<<5)); // 1 off, 2 off, 3 off
}

// delay(1000);
}

return 0;
}


Первый ТЭН управляется PD7. Второй ТЭН управляется PD6. Третий ТЭН управляется PD5.

Функция termometer() возвращает измеренную температуру. В примере она всегда возвращает 0. Функция delay(1000) обеспечивает задержку в 1 секунду. Она необязательна. Поэтому я ее закомментировал.

(Отредактировано автором: 29 Ноября, 2013 - 22:58:10)

 
 Top
mihail Post Id



Гуру


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



Я тут еще немного подумал и
char t3, t2, t1, t;

char termometer( void )
{
return 0;
}

int main( void )
{
DDRD |= ((1<<7)|(1<<6)|(1<<5));
PORTD &= ~((1<<7)|(1<<6)|(1<<5));

t3 = 50;
t2 = t3 - 4;
t1 = t2 - 3;

t = 0;

for(;;)
{
t = termometer();

if ( t < t1 ) PORTD |= (1<<7); // 1 on
if ( t >= t1 ) PORTD &= ~(1<<7); // 1 off
if ( t <= t1 ) PORTD |= (1<<6); // 2 on
if ( t >= t2 ) PORTD &= ~(1<<6); // 2 off
if ( t <= t2 ) PORTD |= (1<<5); // 3 on
if ( t >= t3 ) PORTD &= ~(1<<5); // 3 off

// delay(1000);
}

return 0;
}

Так намного лучше.
 
 Top
central30 Post Id


Лейтенант


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



Большое спасибо Михаил,буду пробовать и отлаживать.О результатах сообщу
 
 Top
mihail Post Id



Гуру


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



Не стоит благодарности Улыбка

(Отредактировано автором: 10 Декабря, 2013 - 21:01:40)

 
 Top
central30 Post Id


Лейтенант


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



Всем привет!Наконец то написал чередование с помощью счетчика.Привожу пример для двух ТЭНов
CODE:

int cnt=0; //переменная счетчика
int temp ; //переменная температуры
int porog; //
while(1){
if(temp>=porog){
PORTC.1=0;
PORTC.2=0;
cnt=cnt+1;//прибавляем после отключения единицу к нашей переменнной
}
if(temp<=(porog-3) && cnt==0){
PORTC.1=1;
if(temp<=(porog-6){
PORTC.2=1
}
}
if(temp<=(porog-3) && cnt==1){
PORTC.2=1;
if(temp<=(porog-6){
PORTC.1=1
}
}
if(cnt==2){ //сбрасываем счетчик на ноль
cnt=0
}

Считаю тему закрытой.Всем большая благодарность и спасибо за помощь и поддержку
 
 Top
cjA Post Id



Генерал


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




это не Си, вот смотрел и думал- почему я не понимаю. В Си не может идентификатор начинаться с чеслительного
 
 Top
central30 Post Id


Лейтенант


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



По вашему я должен был весь код написать на 3 страницы.Это небольшой примерик.А си это или не си,главное у меня получился требуемый результат.Трехступеньчатый термостат с отдельным термостатом на Бойлер.
 
 Top
Страниц (2): « 1 [2]
« Программирование микроконтроллеров »


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





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