Jump to content
Yanshun

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

Recommended Posts

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

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

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

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

 

Share this post


Link to post
Share on other sites

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

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

Edited by Yanshun

Корпорация Mars

Share this post


Link to post
Share on other sites
2 часа назад, Yanshun сказал:

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

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

Share this post


Link to post
Share on other sites

Повышаем уровень передаваемой мощности в однопарной сети Ethernet

В статье приведено описание новых гибридных разъемов для использования в SPE-приложениях. По сравнению с традиционными разъемами, в основе структуры которых лежит технология PoDL (Power over Data Line), предлагаемое решение содержит в себе дополнительные контакты питания, но сохраняет при этом компактные размеры. А работа с более высокими значениями тока значительно расширяет возможности применения предлагаемых разъемов в различных топологиях, по сравнению с PoDL.
Подробнее

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

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

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


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

Share this post


Link to post
Share on other sites

Вебинар «Новинки и решения Traco для промышленных и отраслевых приложений» (28.10.2021)

Компэл 28 октября приглашает всех желающих принять участие в вебинаре, где будет рассмотрена новая и перспективная продукция компании Traco. Мы подробно рассмотрим сильные стороны и преимущества продукции Traco, а также коснемся практических вопросов, связанных с измерением уровня шумов, промывкой изделий после пайки и отдельно разберем, как отличить поддельный ИП Traco от оригинала.

Подробнее

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

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

Share this post


Link to post
Share on other sites

Популярные пружинные клеммники Degson со склада Компэл

Пружинные разъемные клеммники Degson с технологией Push-In обеспечивают надежное и безопасное электрическое соединение. При их использовании исключается возможность короткого замыкания в точке контакта, что гарантирует надежное соединение. Электрическая безопасность клеммных блоков подтверждается соответствием мировым стандартам UL, IEC и VDE.
Подробнее

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

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

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

Share this post


Link to post
Share on other sites

Датчики дальности ST обеспечивают безопасность в период COVID-19

Оптические датчики приближения STMicroelectronics из семейства Flight Sense™, средства разработки и программное обеспечение для них позволяют как организовать бесконтактную работу торговых и информационных точек и соблюдение социальной дистанции в непростой эпидемический период, так и строить сложные пространственные системы вплоть до трехмерных моделей. Рассмотрим устройство для обнаружения и измерения расстояний до объектов без физического контакта, и инструментарий для его разработки, а также другие примеры.
Подробнее

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

личный опыт

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


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

Share this post


Link to post
Share on other sites
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)

Edited by technik-1017

Share this post


Link to post
Share on other sites

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

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

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

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
}

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

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

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

Share this post


Link to post
Share on other sites

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

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


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

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

Share this post


Link to post
Share on other sites

честно говоря не сам это придумал а нашел подобное на просторах...

как же все таки подправить?

Share this post


Link to post
Share on other sites

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

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


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

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

Share this post


Link to post
Share on other sites

об этом я думал, но пока хотелось бы опросить на одной шине два датчика.

Поможете правильным примерчиком, для кода указанного выше...?

Share this post


Link to post
Share on other sites

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

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

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

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


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

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

Share this post


Link to post
Share on other sites
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, а не это вот...

Edited by ARV

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

Share this post


Link to post
Share on other sites
Posted (edited)

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

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

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

Edited by ivan_pop

Share this post


Link to post
Share on other sites

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

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


Корпорация Mars

Share this post


Link to post
Share on other sites
Posted (edited)
5 часов назад, Yanshun сказал:

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

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

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

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

Edited by ivan_pop

Share this post


Link to post
Share on other sites

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

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

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

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


Корпорация Mars

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Сообщения

    • Больше спасибо , что подсказали , как всё сделаю , то напишу о результатах. А кстати, увеличивать надо только проволочник 470ом или можно омлт 1ком увиличить?
    • Увеличивать катодное сопротивление что бы получить нужный режим. Я уже писал выше.  Целевые параметры примерно 50 ма. и 50 вольт. Так указано в "даташит". 
    • Да . I=29.5÷320=0,095=95мА и P=75,5ватт , от сюда возможен и нагрев , вы правы. Подскажите пожалуйста , как правильно и что  сделать в этом случае? И как раз нагрев то небольшой при свете не видно , а видно лишь когда в темноте выключаю.
    • Зачем? У них два шустрых карлсона неплохо дуют. Что касаемо охлаждения, то чудес не бывает и простая прикидка по кпд и выходной мощности даёт кол-ва тепла, кое нужно утилизировать тем или иным способом. Так что, как не крути, а минвелу на 200 ватт потребно рассеивать 22 ватта тепла с заданным перегревом в данном габарите корпуса. И чем бОльшую рабочую температуру допускают используемые ЭРЭ, тем в меньшие габариты можно уложиться.
    • Моя тема
    • с тех самых как начали  емкость АКБ измерять в киловаттах
    • Своими занимайтесь https://kp.ua/politics/690289-kolomoiskyi-pod-sanktsyiamy-ssha-chto-eto-oznachaet-dlia-ukraynskoi-vlasty-y-druhykh-olyharkhov

  • Выжигатель с регулировкой температура и набором жал

×
×
  • Create New...