Автор Тема: Термостат на led7  (Прочитано 22841 раз)

mim

  • Hero Member
  • *****
  • Сообщений: 2700
    • Просмотр профиля
Re:Термостат на led7
« Ответ #40 : Февраль 20, 2011, 16:22:32 »
Павел Пенза пишет:
Цитировать
температура измеряется в канале по воздуху и управляеться нагревом ТЕН, по достижению заданного значения например 23 градуса (установленного значения по однократному нажатию кнопки УСТАН и выбору температуры + и -)тены отключаются. при подение температуры в канале ниже 21 градуса (дифференциал около 2градусов) ТЭН включаеться, хотел еще дополнить: если например температура не достигает 23 заданных в течение 5 мин срабатывает порт к примеру В7 если после этого опять 23 не достигнуто в течение 10 мин то срабатывает порт В6.

Теперь в точности как в ТЗ.
Найдешь переменные (длительности времени) и подправишь я поставил меньше, чтобы моделировалось быстрей. Проверку В6 и В7 делай резистором, а все остальное на автомате.  

Yak

  • Jr. Member
  • **
  • Сообщений: 66
    • Просмотр профиля
Re:Термостат на led7
« Ответ #41 : Февраль 22, 2011, 20:55:19 »
Приветствую, mim проверил прошлую программу в железе, работает очень четко индикатор не мерцает, кнопки плюс и минус после нажатия ожидают пока не отпустишь, то что надо четко, во второй программе заметил изменение в подпрограмке нагрев, с завязкой 2х таймеров от общего таймера по переменной. (варируя величиной одной переменной отлично избавляет от лишних нагромождений) хорошее решение!
 :))  
сейчас ищу где то было на форуме описано как расчитать под резистивный датчик АЦП. ато получаеться выставил 25 градусов на напряжение 2,5 вольт, при изменение температуры на 35 гр. напр изменяеться не линейно  :sad:
Датчик NTC10K при 25 гр.
подключаю одну ногу на +5 в вторую ногу на проц АЦП через резюк 100к и 2 резюк на 10к (подстроечный) от минуса к ноге рермистора. пытаюсь промоделить в протеусе но как бароться с нелинейностью пока не пойму. характеристики датчика.

mim

  • Hero Member
  • *****
  • Сообщений: 2700
    • Просмотр профиля
Re:Термостат на led7
« Ответ #42 : Февраль 22, 2011, 22:03:41 »
С нелинейностью бороться сложно, обычно делают так.
1. Строят график по точкам и подбирают функцию которая дает похожий изгиб.
2. Строят график по точкам и аппроксимируют линейными участками (например, пологую дугу разбивают на несколько прямых линейных участков от 3 до 5), получают 3-5 линейных уравнения. А на точках излома ставят условия (если значение функции больше, то нужно использовать следующую функцию и т.д)
3. Строят таблицу в памяти и сравнивают с измеренным значением.
Во всех случаях присутствует ошибка...

Yak

  • Jr. Member
  • **
  • Сообщений: 66
    • Просмотр профиля
Re:Термостат на led7
« Ответ #43 : Февраль 22, 2011, 22:19:28 »
3й вариант для меня более приемлим (програмно понятен) попытаюсь реализовать через делитель как в подобных рода уст-х схему брал, может датчики специально делают нелинейными т. к. из за специфики их подключения к процу как я описал выше, нелинейность компенсируеться путем косого делителя тоесть один резюк постоянен например 10 ком а второй который термистор меняеться осталось подобрать велечину постоянного резюка.  :sad:

LEV-PRAV

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1091
    • Просмотр профиля
Re:Термостат на led7
« Ответ #44 : Февраль 23, 2011, 00:38:27 »
Второй вариант меньше памяти хавает.
Вот доступненько довольно таки написано.
Давай на "ты "

Yak

  • Jr. Member
  • **
  • Сообщений: 66
    • Просмотр профиля
Re:Термостат на led7
« Ответ #45 : Февраль 23, 2011, 13:13:56 »
Всех С праздником!
LEV-PRAV интересная статья изучаю сижу
подобие 2 го варианта который предлагал mim!
вот отрезок из даташита датчика линия красная показывает зависимость сопротивления от температуры.
получаеться 3 линейных участка.  :sad:

И Еще как можно FC обьяснить что Х и Y это кординатные прямые со значениями,
и как выразить в калькуляторе
X = -4Y + 320 при Y от 0 до 56
X = -Y + 150 при Y от 56 до 118
X = -0.25Y +60 при Y от 118 до 250
и формулы:
Участок 1) X=63+255-4Y
Участок 2) X=150-Y
Участок 3) X=63-0.25Y

Еще график зависимости красная линия напряжение а синяя температура.

mim

  • Hero Member
  • *****
  • Сообщений: 2700
    • Просмотр профиля
Re:Термостат на led7
« Ответ #46 : Февраль 24, 2011, 08:36:51 »
Павел Пенза пишет:
Цитировать
И Еще как можно FC обьяснить что Х и Y это кординатные прямые со значениями,
и как выразить в калькуляторе
X = -4Y + 320 при Y от 0 до 56
X = -Y + 150 при Y от 56 до 118
X = -0.25Y +60 при Y от 118 до 250
и формулы:
Участок 1) X=63+255-4Y
Участок 2) X=150-Y
Участок 3) X=63-0.25Y

Все немного не так. Линию напряжения нужно положить на ось Х.
Таким образом изменение напряжения (линейно) должно пересчитываться по твоим формулам (но коэффициенты пересчитай - наклон друго получится).
Ты же должен построить зависимость от напряжения (а не понятно что по оси Х).
Определил напряжение, если оно в диапазоне от .. и до... - формула 1, если в диапазоне от ... и до...- формула 2... и.т.д

Yak

  • Jr. Member
  • **
  • Сообщений: 66
    • Просмотр профиля
Re:Термостат на led7
« Ответ #47 : Февраль 25, 2011, 13:37:11 »
mim. вот набросал алгоритм опроса датчика как понял, исходил из проверки датчика на протеусе то есть каждое значение ADC_bit указанное в програмке соответствует температуре.
только вот проблемка немогу сделать так чтобы програмка не округляла до 10х например 9,1 и 9,9 это 10 и подсчет не совсем верен может значем >> как то поможет (не до понял как сделать)
Исходя из таблички замеров значения:
Темп.   напр.   Бит         факт
0,00   1,17   58,50        0  
10,00   1,67   83,50        9
20,00   2,22   111,00       19
25,00   2,5   125,00       25
30,00   2,77   138,50       29
40,00   3,26   163,00       40
50,00   3,68   184,00       49

Мне конечно достаточно чтобы отображалось только 2 числа на дисплее без дробных напр. (23,27.) но все же как бы округление исправить?

mim

  • Hero Member
  • *****
  • Сообщений: 2700
    • Просмотр профиля
Re:Термостат на led7
« Ответ #48 : Февраль 25, 2011, 13:51:10 »
Смотреть сейчас времени нет. Я думаю Десятые в данной задаче совсем не нужны (при таком датчике и таких приближениях) - это полная чушь.
Такое округление делает компилятор. Чтобы это исправить нужно писать коррекцию, нужно повысить порядок (умножить число на 10), а затем принудительно подсветить точку на сегментах.

Yak

  • Jr. Member
  • **
  • Сообщений: 66
    • Просмотр профиля
Re:Термостат на led7
« Ответ #49 : Февраль 26, 2011, 18:18:01 »
Доброго вечера!
Подскажите пожалуйста, добавил в программу еще одно прерывание TRM0 и появилась проблема непойму в чем дело пробовал разные варианты иногда один цикл отработает и перестает отзываться на прерывание иногда вообще отсчет не идет, где ляп не пойму, суть в том что подпрограмма "PID" в зависимости от значения ACD_B меняет велечину паузы на выходе В5. и толком работы добиться так и не удается, укажите верное направление мысли.