Page 56 of 109

Re: Термостат ∆T=0,1°C

Posted: 20 Jul 2012 17:01
by space_s
Собрал устройство.
Изменил прошивку под свои нужны (добавил функцию диммирования как в тахометре).
Прошил контроллер ATTINY2313A через режим параллельного программирования используя программатор Uniprog.
Запустил устройство.
Всё заработало нормально, все функции отрабатывались как положено, единственное, пришлось подбирать номинал резистора для термодатчика.
После удачного запуска системы решил подправить прошивку на предмет изменения яркости свечения индикатора.
Прошил новую прошивку - устройство не работает (даже дисплей не светится).
Проверил питание, промыл и просмотрел плату, проверил индикатор - устройство не работает.
Купил новый контроллер залил оригинальную прошивку автора, вернул аппаратную часть в первозданный вид - устройство не работает.
После прошивки контроллера всегда сверял записанные данные и исходные - все идентично.
Фьюз биты выставлял как указано:
CKSEL0=1
CKSEL1=1
CKSEL3=1
SUT0=1
SPMEN=1
Остальные=0

Поломал голову и не могу понять в чем дело?

Re: Термостат ∆T=0,1°C

Posted: 20 Jul 2012 23:23
by hardlock
space_s, если не работает то, что работало, то либо сопли где-то , либо софт. Если софт исключили, то значит сопли. ищите.

Re: Термостат ∆T=0,1°C

Posted: 22 Jul 2012 00:09
by hvurt
ZimA wrote:hvurt а судьи кто? С чем сравниваешь? Эталон?
сравнивал с ртутным термометром и мультиметром(не китайским Proskit 3PK – 8205С).

Re: Термостат ∆T=0,1°C

Posted: 31 Jul 2012 18:51
by Artem
Доброго времени суток.
Собирал данный термостат - все работало. Возникла необходимость собрать еще один - при включении светятся "8" и точки во всех разрядах. Разводка плат - абсолютно идентичная ибо обе платы делались из одного шаблона с помощью фоторезиста. В чем может быть дело?

P.S. датчик подключен по трехпроводной схеме.

Спасибо за внимание.

Re: Термостат ∆T=0,1°C

Posted: 31 Jul 2012 20:50
by hardlock
Artem, ОА/ОК. Проверяйте.

Re: Термостат ∆T=0,1°C

Posted: 31 Jul 2012 21:14
by Artem
Сменил прошивку на противоположную - при включении загорается левый ноль и кратковременно точка в первом разряде. Что это означает? Не определяется датчик?
При нажатии на кнопку - во всех разрядах 4-ки.

Обнаружился еще один глюк - при нажатии на "+" значение на дисплей выводит, но изменить его нельзя в большую сторону. Кнопка "-" функционирует как положено.
Спасибо за внимание.

Re: Термостат ∆T=0,1°C

Posted: 01 Aug 2012 04:59
by ZimA
Artem- перешить

Re: Термостат ∆T=0,1°C

Posted: 01 Aug 2012 07:01
by hardlock
Artem, не прошился eeprom. Прошить заново.

Re: Термостат ∆T=0,1°C

Posted: 01 Aug 2012 11:35
by ironn
А можно ли приобрести уже собранную данную конструкцию?

Re: Термостат ∆T=0,1°C

Posted: 01 Aug 2012 12:00
by hardlock
ironn, нет.

Re: Термостат ∆T=0,1°C

Posted: 01 Aug 2012 21:21
by Artem
Спасибо, помогло. Затурканый какой-то я, до простых вещей не догадался :(.

Re: Термостат ∆T=0,1°C

Posted: 02 Aug 2012 18:23
by within
Так вот. Откопал я на работе термометр 1959 года для отопительного котла. Приглянулся он мне уж.
И решил я туда вставить современную начинку. После не очень долгих размышлений было принято
решение использовать трёхфазный моторчик от флоппика + часть механики от старых часов. После
опять же не очень долгих опытов исполнительная часть, шкала и плата были готовы. Для проверки и
подгонки шкалы переменную Tnew увеличивал на каждом прерывании на 10. Короче говоря, механика
работает неплохо. Хоть и не идеально. Проблема холостого хода механики при изменении направления
вращения будет решена позже. Да и вопрос, что же делать, если свет откючили? Не разбирать же его
каждый раз) Но это всё потом, а пока... Самая главная проблема: а как же получить это значение
Tnew от датчика? К слову, формат типа "больше/меньше 1000" меня устраивает очень-очень) Ведь знак
мне совершенно не нужен. Расчет вращения двигателя относительно предыдущего значения. Видать
сильно я раскинул мозгами, когда всё это задумал, что на остальное не очень хватило. Так вот,
скопировал я получение Tnew из проэкта термостата. И тут началось... Начал Вижн ругаться...
Сначала ему не нравилось объявление переменных. После перемещения их из прерывания и замены типов
типа "BYTE" и "WORD" на "char" и "unsigned int" он их вроде принял. Потом всё пошло нормально, но...
Если правильно понимаю, то это и есть чтение температуры:

Code: Select all

Updating = !Updating;   //это шоб читать температуру через раз

if (Updating)           //если в этот раз читаем температуру, то 
{       
w1_init();             //инициализация шины 1-wire
w1_write(0xCC);       //выдаём в шину 1-wire код 0xCC, что значит "Skip ROM"     
w1_write(0xBE);       //выдаём в шину 1-wire код 0xBE, что значит "Read Scratchpad"
t1=w1_read();   //LSB //читаем младший байт данных
t2=w1_read();   //MSB //читаем старший байт данных     
  

  
  Ff = (t1 & 0x0F);           //из LSB выделяем дробную часть значения температуры
  t2 = t2 << 4; 
  t1 = t1 >> 4;
  T = (t2 & 0xF0) | (t1 & 0x0F);    //после объедининия смещённых частей LSB и MSB объединяем 
                                    //их и получаем целую часть значения температуры.
                                    //подробней - смотри даташит.
  
  if (T & 0b10000000) //если отрицательная температура
  { 
    Ff = ~Ff + 1;         //инвертируем значение дробной части и добавляем адын.
    Ff = Ff & 0b00001111; //убираем лишние биты
   
    if (!Ff)              //если дробная часть равна "0"
    {
      T--;                //значение температуры уменьшаем на адын
    }   
    
    Tnew = 1000 - (((~T & 0xFF) * 10) + (Ff * 10 / 16));  //вычисляем значение температуры если T < 0. 
                                                          //Формат хранения - смотри строку 58 этого файла.
  }
  else
  { 
    Tnew = 1000 + (T * 10) + ((Ff * 10) / 16);            //вычисляем значение температуры если Т > 0. 
                                                          //Формат хранения - смотри строку 58 этого файла.
  }
  
}   
        
else
{
 w1_write(0x44);          //выдаём в шину 1-wire код 0xCC, что значит "Convert T"
}      
 


Симуляция в Протэусе показала, что при первом чтении единицы градусов равны 5(Я так понимаю, это 85. Посмотреть полностью не
имею возможности, так как на индикатор вывожу только единицы для контроля положения стрелки). И все. При последующих
прерываниях на чтение ничего не меняется. Хотя температура датчика не имеет 5 в единицах.
Обьясните, пожалуйста.

Re: Термостат ∆T=0,1°C

Posted: 03 Aug 2012 09:14
by hardlock
Плюньте на протеус и попробуйте в железе.
И ещё. Посмотрите даташит на датчик, там вроже между посылками должны быть паузы, которые я заменил обновлением экрана.

Re: Термостат ∆T=0,1°C

Posted: 03 Aug 2012 18:23
by bilan
Ребята подскажите: собрал девайс, прошил, после подачи питания - дисплей молчит, PD2=1 PD3=1. В чем проблема? Кто подскажет, шил прошивкой termostat 3.2, дисплей с общим катодом GNQ-5641as-21f. Спасибо!

Re: Термостат ∆T=0,1°C

Posted: 04 Aug 2012 18:48
by Artem
При прошивке МК этой прошивкой термостат запускается, показывает правильно температуру, но при попытке установить температуру срабатывания - работает только кнопка "-" и температура перебирается начиная с 999 градусов и по кругу до 0. Далее опять все повторяется, при этом сам порог выставить невозможно. В чем может быть дело? При симуляции в протеусе - происходит то же самое.
При прошивке старой версией (где точность установки 1 градус) все отлично работает.

Спасибо за внимание.

Re: Термостат ∆T=0,1°C

Posted: 04 Aug 2012 22:55
by hardlock
Artem,
hardlock wrote:Artem, не прошился eeprom. Прошить заново.

Re: Термостат ∆T=0,1°C

Posted: 04 Aug 2012 23:07
by Artem
Спасибо, попробую.

Re: Термостат ∆T=0,1°C

Posted: 05 Aug 2012 13:21
by bilan
bilan wrote:Ребята подскажите: собрал девайс, прошил, после подачи питания - дисплей молчит, PD2=1 PD3=1. В чем проблема? Кто подскажет, шил прошивкой termostat 3.2, дисплей с общим катодом GNQ-5641as-21f. Спасибо!
Кто-нибудь сталкивался, с похожей проблемой, подскажите, в каком направлении копать!

Re: Термостат ∆T=0,1°C

Posted: 05 Aug 2012 20:09
by Artem
Перепрошивка не помогла. При моделировании в протеусе такая же картинка, значит проблема не в железе получается. В чем еще может быть дело? :(

Re: Термостат ∆T=0,1°C

Posted: 05 Aug 2012 21:55
by hardlock
Artem, ни в чём. Проблема именно в непрошитом еепроме. Посмотрите в понипроге содержимое еепром - будут все ФФ-ки
bilan, прошивка точно для катода? Хотя обе единицы говорят про то, что МК не работает, либо висит либо ещё что-то. Может с фьюзами напутали, может с прошивкой...

Re: Термостат ∆T=0,1°C

Posted: 07 Aug 2012 18:48
by space_s
Кто-нибудь сталкивался, с похожей проблемой, подскажите, в каком направлении копать!
Я столкнулся с такой-же проблемой но пока решить не смог.

Re: Термостат ∆T=0,1°C

Posted: 07 Aug 2012 19:20
by hardlock
Artem, space_s, а проблема всё там же. Ну гляньте вы в еепром - там пусто. Я устал на каждой странице по 10 раз писать про это.

Re: Термостат ∆T=0,1°C

Posted: 07 Aug 2012 21:54
by Artem
Ниже скрин считанного с МК ЕЕПРОМа. И он далеко не пустой.

Image

Re: Термостат ∆T=0,1°C

Posted: 07 Aug 2012 22:01
by hardlock
Artem, а вот что должно быть по умолчанию:
t3.2.png
Ну прошейте же из Кодевижена :wall:

Re: Термостат ∆T=0,1°C

Posted: 08 Aug 2012 21:51
by Artem
МК зависает после пуска двигателя, полностью тухнет дисплей. Я так понимаю - помехи по питанию? Как избавиться? Подтянуть 1 ногу к плюсу? Резистор 4,7 кОм подойдет?

Спасибо за внимание.