MBR (mbr) wrote,
MBR
mbr

Categories:

программирование для чайников

С развитием технологий привычные термины начинают менять значение.

Сломался у меня автомобильный электрочайник - сгорел therm-a-disc, или попросту биметаллическая пластина. Просто пойти и купить сломанную запчасть, я, конечно, не мог.

Любая вещь становится лучше, если в нее добавить bluetooth микропроцессор. Заодно решил сделать контроль температуры цифровым термометром DS1820. Ну а следующим логичным шагом - естественно, индикацию температуры на 7-сегментах. Да и лампа индикации нагрева потребляла аж целых 65 миллиампер. Никуда не годится - надо заменить светодиодом. Схемотехнически это выглядит примерно так:


Монтаж получился достаточно плотный: 13 резисторов, 4 конденсатора, микропроцессор, 2 7-сегментника, диод, транзистор, кренка:

Односторонней платой обойтись не удалось. На вторую сторону вывел силовую часть, некоторые подтяжки и коммутацию:

Если кому интересны детали - использовал динамическую индикацию, 1-wire по схеме с основным питанием - лишнего вывода особо не жалко, а скорость конвертации сильно выше. В качестве микропроцессора взял Atmega48 без внешнего кварца - встроенных 8мгц более чем под эти задачи.

Доработка напильником была минимальна - силовое реле, термовыключатель и термопредохранитель были уже в комплекте. Прорезал лишь окошко под индикацию, вставил оргстекло, зафиксировал прозрачной эпоксидкой. Также эпоксидкой и пластмассой заклеил окошко для термодиска, загерметезировал выводы датчика температуры - для меньшей инертности вывел его непосредственно внутрь чайника. Основную плату зафиксировал на месте термоклеем - вроде больше 40 градусов температура в ручке не поднимается. В итоге без крышек выглядит это так:


Программно: TIMER2 завел на динамическую индикацию. TIMER0 пошел под софтовые таймеры. Не то, что они там особо нужны, просто был годный кусок кода, лень было выбрасывать. Обработка дребезга - самым примитивным образом - жду 59мс и снова сверяю. Операционную систему встраивать не стал, вполне обошелся superloop. Итого, 1.4кб кода из 4кб доступных. Вот из main.c:

инициализация:

timer_init();
LED_INIT;
RELAY_INIT;
display_init();
key_init();
ds1820_init();
 
if((ds1820_found = ds1820_lookup()) == TRUE)
  ds1820_convert(TRUE);
refresh_temp();
timer_create(refresh_temp, TEMP_REFRESH_MS);
main_loop();

superloop:

void main_loop(void)
{
  for(;;)
  {
    timer_poll();
 
    if(key_poll())
      started ? stop() : start();
  }
}

обновление данных дисплея:

void refresh_temp()
{
  if (ds1820_found)
  {
    if (state_convert)
      ds1820_convert(FALSE);
    else
    {
      unsigned char temp = ds1820_temp();
      if (temp >= TEMP_BOILING)
      {
        stop();
        //99 с точками - цифр-то две
        display[0] = display[1] = S7_SYMBOLS[9] | S7_DP;
      }
      else
      {
        display[0] = S7_SYMBOLS[(temp >> 1) / 10];
        //т.к. точность ds1820 .5 градуса, дробные градусы обозначаем точкой во второй цифре
        display[1] = S7_SYMBOLS[(temp >> 1) % 10] | ((temp & 1) ? S7_DP : 0);
      }
    }
    state_convert = !state_convert;
  }
  else
    display[0] = display[1] = S7_SYMBOLS[0xf];
}
  
Subscribe

  • Самодельный антисептик

    Небольшой отчет по самостоятельному изготовлению антисептика. По компонентам понадобятся: - бихромат натрия - медный купорос - стабилизатор осадка.…

  • Победил битрикс

    Раньше рассказывал, как мы пытаемся битрикс внедрить. Сначала просто дал задачу вебщику подергать странички и собрать отчет по линкам. Ад. Там…

  • Советский инженер - это звучит гордо

    Порадовался с последнего стеба vladimir_akinin над программистами. Однако в комменты выползло какое-то количество старых пердунов,…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 19 comments

  • Самодельный антисептик

    Небольшой отчет по самостоятельному изготовлению антисептика. По компонентам понадобятся: - бихромат натрия - медный купорос - стабилизатор осадка.…

  • Победил битрикс

    Раньше рассказывал, как мы пытаемся битрикс внедрить. Сначала просто дал задачу вебщику подергать странички и собрать отчет по линкам. Ад. Там…

  • Советский инженер - это звучит гордо

    Порадовался с последнего стеба vladimir_akinin над программистами. Однако в комменты выползло какое-то количество старых пердунов,…