Перейти к содержанию

Термостат На Attiny2313 И Ds18B20


Yanshun

Рекомендуемые сообщения

заметил странность не стабильность данной схемы.

Один терморегулятор встроен в блок питания и управляет вентилятором охлаждения , так вот как только к блоку питания подключаю микродрель терморегулятор глючит постоянно вылетает ошибка 01.

Второй терморегулятор включает сварочный инвентор через реле в нужный момент  (используется вместо мощного источника питания) тоже самое ошибка 01

Что делать ? что это ? Как с этим бороться?

 

Ссылка на комментарий
Поделиться на другие сайты

@tolp Доброе утро.
На данный момент, на лицо проблемы питания терморегулятора.

По возможности переложите датчик провода от Силы, попробуйте использовать экранирующий провод.

Изменено пользователем Yanshun

Корпорация Mars

Ссылка на комментарий
Поделиться на другие сайты

2 часа назад, Yanshun сказал:

По возможности переложите датчик провода от Силы, попробуйте использовать экранирующий провод.

скорее всего это не поможет, т.к. датчики DS18B20 имеют свойство зависать (скорее всего от помех, причём DS18S20 этим не страдали). Необходимо снимать питание с датчика после опроса и подавать перед опросом. Мы ставили для этих целей LP2985-5.0, ну и конечно необходимо корректировать ПО контроллера для управления питанием датчика (LP2985-5.0).

Ссылка на комментарий
Поделиться на другие сайты

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Только что, technik-1017 сказал:

датчики DS18B20 имеют свойство зависать

Очень интересно! Можно какие-то пруфы? Впервые об этом слышу.

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Ссылка на комментарий
Поделиться на другие сайты

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Терморегулятор запитан нормально через кренку , электролиты стоят ,подпаял конденсатор 100нано прям к микроконтроллеру по питанию ничего не меняется ГЛЮЧИТ.

Понятно что скорее всего дело в помехах ,но как еще от них избавиться ? Экранированного кабеля нет , а покупать наверное он не дешевый ,да и результат не известен.

Ссылка на комментарий
Поделиться на другие сайты

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

8 часов назад, ARV сказал:

Очень интересно! Можно какие-то пруфы? Впервые об этом слышу.

личный опыт эксплуатации в течении 18 лет датчиков DS1820, DS18S20, DS18B20

Ссылка на комментарий
Поделиться на другие сайты

8 минут назад, technik-1017 сказал:

личный опыт

Я просто очень удивлен - в мире эти датчики эксплуатируют наверняка поболее, чем вы, как по сроку, так и по числу проектов... И только вы заметили проблему. Есть еще кто-либо, кто столкнулся с аналогичной бедой? Может, на иноземных форумах?

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Ссылка на комментарий
Поделиться на другие сайты

36 минут назад, ARV сказал:

Есть еще кто-либо, кто столкнулся с аналогичной бедой?

можно просто погуглить и почитать, вопрос отпадёт сам собой

8 часов назад, tolp сказал:

Понятно что скорее всего дело в помехах ,но как еще от них избавиться ?

если решили бороться с помехами, то можно попробовать поставить фильтры: посмотрите подавление синфазных, кондуктивных...  помех. Но это мне кажется лишнее нагромождение, когда можно просто питание сбросить.

https://www.compel.ru/lib/ne/2013/4/3-sluzhba-podavleniya-pomeh-resheniya-kompanii-sumida

https://www.compel.ru/lib/ne/2014/5/6-sinfaznyie-drosseli-kompanii-sumida-dlya-poverhnostnogo-montazha

можно ещё подключить особым образом жилы в кабеле для подавления помех, получается фильтр из жил самого кабеля (активное экранирование, журнал Радиохобби 3/2009, стр 26)

Изменено пользователем technik-1017
Ссылка на комментарий
Поделиться на другие сайты

  • 6 месяцев спустя...

ребят помогите к данному девайсу прикрутить еще один датчик... не прошу подсказок в алгоритме переключения между ними или выбора...

поправьте с опросом их.

Сократив код обработки прерывания, без отображения ошибов (с этим понятно), получилось так:

interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
  BYTE i,j; 
  int Temp;
  int *val;
          
  TCNT1=0x85EE;
  TCNT1H=0x85;
  TCNT1L=0xEE; 
  
  #ifdef NO_BLINK
  skipDelay = 1;
  #endif 
  
  devices=w1_search(0xf0,w1buffer); //определим сколько устройств подключено к шине 1-Wire

  w1_init();              //инициализация шины 1-wire
    
  ShowDisplayData11Times();

  w1_write(0xCC);         //выдаём в шину 1-wire код 0xCC, что значит "Skip ROM"     
    
  //ShowDisplayData11Times();

  Updating = !Updating;   //это шоб читать температуру через раз                
  
if (Updating)           //если в этот раз читаем температуру, то 
  {
  w1_write(0xBE);       //выдаём в шину 1-wire код 0xBE, что значит "Read Scratchpad"
  ShowDisplayData11Times();
  
  AllDataFF = 1;
  NonZero = 0;
  for (j=0; j<devices-1; j++)
  { 
    for (i=0; i<9; i++)
   {
    w1buffer[j][i]=w1_read();
    ShowDisplayData11Times();
    
   }
  }   
                      
  Initializing = 0;//хватит показывать заставку
  
  // Тут выбираю какой датчик показывать
   val = (int*)&w1buffer[0][0];
   Tnew =(*val)* 10 / 16;
   
  RefreshDisplay();               //Обновление данных на индикаторе.

}
 else
 {
  w1_write(0x44);          //выдаём в шину 1-wire код 0x44, что значит "Convert T"
 } 

 if (ErrorCounter == 0)
 {
  PORTD.3 = 0;  //LoadON Охлаждение
  NeedResetLoad = 1;
  LoadOn = ShowDotWhenError;              
 }
 else 
 if (!Initializing)
   {
    Temp = T_LoadOn + DeltaT;      //Temp - временная переменная.


    if (Tnew >= Temp) if (LoadOn || NeedResetLoad) //Если температура выше (установленной + Дэльта) и нагрузка включена,
    {                              //то выключаем нагрузку
     PORTD.3 = 1;
     LoadOn = 0;
     NeedResetLoad = 0;              
    }             

    Temp = T_LoadOn;                //Temp - временная переменная.

    if (Tnew <= Temp) if (!LoadOn  || NeedResetLoad) //Если температура ниже (установленной) и нагрузка выключена,
    {                               //то включаем нагрузку
     PORTD.3 = 0;
     LoadOn = 1;  
     NeedResetLoad = 0;              
    } 
   }//if errorCounter

 if (Counter > 0)                //Counter - переменная для подсчёта времени отображения различных режимов
 {                               
  Counter --;                   //если она больше "0", то значит кто-то переключил режим отображения и
 }                               //присвоил ей значение отличное от "0". Значит надо екрементировать, 
 else                            //пока не станет равной "0".
 {
  View = 0;                     //если она =0, то сбрасываем текущий режим на "0"
 }                                                           
 RefreshDisplay();               //Обновление данных на индикаторе.
// #ifdef NO_BLINK
// skipDelay = 0;
// #endif
}

Вроде как понятно, выяснил сколько датчиков, опросил...

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

натолкните на путь истинный.

Ссылка на комментарий
Поделиться на другие сайты

когда на линии несколько датчиков, нельзя делать "Skip ROM". а нужно к каждому обращаться по его ROM-коду .

а так у тебя все датчики одновременно дают ответ, и ответы искажают друг друга.

Мудрость приходит вместе с импотенцией...

Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.

Ссылка на комментарий
Поделиться на другие сайты

на просторах можно много чего найти. но, к сожалению, далеко не все такие находки являются правильными.

чтобы не связываться с ROM-кодом каждого датчика, а использовать команду Skip ROM, нужно каждый датчик посадить на свой вывод порта, чтобы на линии было по одному датчику.

Мудрость приходит вместе с импотенцией...

Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.

Ссылка на комментарий
Поделиться на другие сайты

я же тебе уже сказал, что на одной линии нужно к каждому обращаться по его ROM-коду .

а для этого прочитать коды с каждого датчика и вписать их в прошивку.

инициализацию, запуск конвертации можно делать через команду Skip ROM, тогда оба датчика отреагируют одновременно.

а чтение температуры уже делать отдельно для каждого датчика через его собственный ROM-код.

Мудрость приходит вместе с импотенцией...

Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.

Ссылка на комментарий
Поделиться на другие сайты

06.11.2019 в 14:47, ser_ega сказал:

 


interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
  BYTE i,j; 
  int Temp;
  int *val;
          
  TCNT1=0x85EE;
  TCNT1H=0x85;
  TCNT1L=0xEE; 
  
  #ifdef NO_BLINK
  skipDelay = 1;
  #endif 
  
  devices=w1_search(0xf0,w1buffer); //определим сколько устройств подключено к шине 1-Wire

  w1_init();              //инициализация шины 1-wire
    
  ShowDisplayData11Times();

  w1_write(0xCC);         //выдаём в шину 1-wire код 0xCC, что значит "Skip ROM"     
    
  //ShowDisplayData11Times();

  Updating = !Updating;   //это шоб читать температуру через раз                
  
if (Updating)           //если в этот раз читаем температуру, то 
  {
  w1_write(0xBE);       //выдаём в шину 1-wire код 0xBE, что значит "Read Scratchpad"
  ShowDisplayData11Times();
  
  AllDataFF = 1;
  NonZero = 0;
  for (j=0; j<devices-1; j++)
  { 
    for (i=0; i<9; i++)
   {
    w1buffer[j][i]=w1_read();
    ShowDisplayData11Times();
    
   }
  }   
                      
  Initializing = 0;//хватит показывать заставку
  
  // Тут выбираю какой датчик показывать
   val = (int*)&w1buffer[0][0];
   Tnew =(*val)* 10 / 16;
   
  RefreshDisplay();               //Обновление данных на индикаторе.

}
 else
 {
  w1_write(0x44);          //выдаём в шину 1-wire код 0x44, что значит "Convert T"
 } 

 if (ErrorCounter == 0)
 {
  PORTD.3 = 0;  //LoadON Охлаждение
  NeedResetLoad = 1;
  LoadOn = ShowDotWhenError;              
 }
 else 
 if (!Initializing)
   {
    Temp = T_LoadOn + DeltaT;      //Temp - временная переменная.


    if (Tnew >= Temp) if (LoadOn || NeedResetLoad) //Если температура выше (установленной + Дэльта) и нагрузка включена,
    {                              //то выключаем нагрузку
     PORTD.3 = 1;
     LoadOn = 0;
     NeedResetLoad = 0;              
    }             

    Temp = T_LoadOn;                //Temp - временная переменная.

    if (Tnew <= Temp) if (!LoadOn  || NeedResetLoad) //Если температура ниже (установленной) и нагрузка выключена,
    {                               //то включаем нагрузку
     PORTD.3 = 0;
     LoadOn = 1;  
     NeedResetLoad = 0;              
    } 
   }//if errorCounter

 if (Counter > 0)                //Counter - переменная для подсчёта времени отображения различных режимов
 {                               
  Counter --;                   //если она больше "0", то значит кто-то переключил режим отображения и
 }                               //присвоил ей значение отличное от "0". Значит надо екрементировать, 
 else                            //пока не станет равной "0".
 {
  View = 0;                     //если она =0, то сбрасываем текущий режим на "0"
 }                                                           
 RefreshDisplay();               //Обновление данных на индикаторе.
// #ifdef NO_BLINK
// skipDelay = 0;
// #endif
}

Вроде как понятно, выяснил сколько датчиков, опросил...

Это все делается в обработчике прерывания таймера?! Оррригинальный вы человек.

Я делал библиотечку 1-wire, поддерживающую до 8 девайсов, подключенных к 8 линиям одного порта, если найду, выложу. Но под avr-gcc, а не это вот...

Изменено пользователем ARV

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Ссылка на комментарий
Поделиться на другие сайты

  • 1 год спустя...

Здарвствуйте!

Я сделал ето чудо.Микруха шил на програматор версия 4.0.9.Мигает ошобка Е 0.4.

Мне нужнъй кодъй ошибки?

Изменено пользователем ivan_pop
Ссылка на комментарий
Поделиться на другие сайты

@ivan_pop Добрый день.
Индикация ошибок в линии данных

E 0.1 - ошибка контрольной суммы.
E 0.2 - обрыв.
E 0.3 - после нескольких ошибок от датчика получено значение 85С.
E 0.4 - короткое замыкание на землю.

Корпорация Mars

Ссылка на комментарий
Поделиться на другие сайты

5 часов назад, Yanshun сказал:

@ivan_pop Добрый день.
Индикация ошибок в линии данных

E 0.1 - ошибка контрольной суммы.
E 0.2 - обрыв.
E 0.3 - после нескольких ошибок от датчика получено значение 85С.
E 0.4 - короткое замыкание на землю.

Спасибо!Разобрался.Перепутал подключение датчика.Уже работает!

А почему в первий сегмент не отображается точка когда нагрузка включена?

Изменено пользователем ivan_pop
Ссылка на комментарий
Поделиться на другие сайты

Добрый вечер.

2 часа назад, ivan_pop сказал:

А почему в первий сегмент не отображается точка когда нагрузка включена?

Это отключено в прошивки. Я просил автора ПО, это сделать, так как у меня параллельно реле стоит светодиод и мне лишняя точка в первом сегменте не нужна было.
Если Вам это нужно, используйте прошивку, где это включено или самостоятельно включите ее в исходнике (разумеется если Вы разбираетесь в программировании).

Корпорация Mars

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...