Датчики температуры ds18b20

Neman
Offline
Зарегистрирован: 22.01.2017

Доброго для всем.

Собрал небольшой контроллер с двумя датчиками температуры ds18b20, жк диспелей 5110 и GSM m590 для удаленного контроля температур в теплопунктах домов.

Все работает, СМС отправляются, получаются, температура корректная, но при отключении от USB (программатора) перестают читаться датчики (показывают температуру -127). При чем если к программатору подключем только один провод GND, то все начинает работать корректно, как только отключаешь, перестаются видеть датчики температуры. 

Ардуино PRO mini. 

Ума не приложу, что может быть....

Помогите...

m-zzz
Offline
Зарегистрирован: 30.05.2015

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

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

m-zzz
Offline
Зарегистрирован: 30.05.2015

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

 

Neman
Offline
Зарегистрирован: 22.01.2017

 

На датчики стоит сопротивление 5К.

Если соединяешь GND с TTL преобразователем, то все находится и показывает, как только отсоединяешь, то проопадает

m-zzz
Offline
Зарегистрирован: 30.05.2015

точно ничего не напутано?

только контакт GND соединяешь, и все работает? отсоединяешь-теряются датчики...

в первую очередь померяй на дотчиках напряжение и по общему проводу и по питанию..

 

inspiritus
Offline
Зарегистрирован: 17.12.2012

На все то, что Вы подключили , 9-ти вольтовой батарейки явно мало, она такой ток не потащщит. Особенно gsm потребляет немеряно.

попробуй для начала подать питание от 12в сетевого источника

m-zzz
Offline
Зарегистрирован: 30.05.2015

какой именно ток не потащит щелочная "Крона" от например Duracell? 2-3А?  если новая, то запросто..

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

а вот 7805 может и не потянуть такие токи, которые жрет GSM-модуль, у него при 1,5А должна защита сработать.

в любом случае мой первоначальный совет в силе-меряй напряжение на контрольных точках...

если есть такая возможность-осциллографом.

Neman
Offline
Зарегистрирован: 22.01.2017

Запитал от БП, напряжение 10в, пиковый ток 0,17 а, напряжение на датчики 4,98 в, но при подключении осцилографа к минусу получатеся такая картина

 

С подключенным минусом к преобразователю:

при отключении от преобразователя:

Надо ставить фильтр, только куда и какой?

m-zzz
Offline
Зарегистрирован: 30.05.2015

Что то не так ты намерял...  не может быть, чтобы GSM-модуль работал, слал смс-ки, а потребление пиковое при этом было бы 0,17А, ну не бывает такого...

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

И фото конструкции выложи, там надеюсь, провода не толщиною в волос? соединено пайкой или пинами?

 

Еще раз намекаю, с телепатами тут туго.. 

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

Не надо никому ни о чем догадываться, все должно быть ПРЕДЕЛЬНО ЯСНО ИЗЛОЖЕНО.

Яркий пример "С подключенным минусом к преобразователю:"

Минус чего? Батарейки, Дуни, сотового модуля, датчиков, стабилизатора????

К преобразователю чего во что? Где этот преобразователь на твоей схеме?

Подключен только минус? А плюс что, висит в воздухе?

А то придет Клапауций, известный умник этого форума, он тебе выдаст советов!! замучаешься тему от гумна оттирать))))

Neman
Offline
Зарегистрирован: 22.01.2017

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

Красной стрелкой отмечен провод, который отключаю, он соединен с TTL преобразователем и далее через USB.

Сечение 0,4 кв.

Отсоединил провод, датчики пропали

Ток потребления при включенном модеме

Neman
Offline
Зарегистрирован: 22.01.2017

m-zzz пишет:

Что то не так ты намерял...  не может быть, чтобы GSM-модуль работал, слал смс-ки, а потребление пиковое при этом было бы 0,17А, ну не бывает такого...

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

И фото конструкции выложи, там надеюсь, провода не толщиною в волос? соединено пайкой или пинами?

 

 

Яркий пример "С подключенным минусом к преобразователю:"

Минус чего? Батарейки, Дуни, сотового модуля, датчиков, стабилизатора????

К преобразователю чего во что? Где этот преобразователь на твоей схеме?

Подключен только минус? А плюс что, висит в воздухе?

 

Минус от Дуни к преобразователю TTL, плюс от преобразователя TTL не подключен к дуне

solo7878
Offline
Зарегистрирован: 23.01.2017

Добрый вечер1 Вы не могли бы выложить скетч к этому проекту ( Датчики температуры ds18b20) , или ссылку. Заранее спасибо.

Neman
Offline
Зарегистрирован: 22.01.2017

#include <OneWire.h>

#include <LCD5110_Basic.h>
#include <SoftwareSerial.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 9 //Номер пина шины датчиков температуры

OneWire oneWire (ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
SoftwareSerial mySerial(2, 3); // RX, TX
int ch = 0;

String val = "";
LCD5110 myGLCD (8, 7, 6, 5, 4); //Номера пинов для дисплея




extern uint8_t SmallFont[]; // малый шрифт из библиотеки 


String master = "+7965476****"; //номер телефона
int Pins[] = {13}; // Массив задействованных номеров Pins Arduino, для управления реле. 

void sms(String text, String phone) { //процедура отправки СМС


  
  mySerial.println("AT+CMGS=\"" + phone + "\"");
  delay(500);

  mySerial.print("\"" + text + "\"");
  delay(500);

  mySerial.print((char)26);
  delay(500);
 
  delay(2000);
}

void setup() {

mySerial.begin(19200);
 delay(100); 
  myGLCD.InitLCD(); //инициализация дисплея 

  mySerial.begin(19200); //задаем скорость порта
  delay(100); 
  
  mySerial.println("AT+CMGD = 1,4");          //удаляет все смс
  delay(500); 
  mySerial.println("AT+CSQ");          //вывести в терминал уровень сигнала (если 99, то связи нет)
  delay(100);
  mySerial.println("AT+CLIP=1");  //включаем АОН
  delay(100);
  mySerial.println("AT+CMGF=1");  //режим кодировки СМС - обычный (для англ.)
  delay(100);
  mySerial.println("AT+CSCS=\"GSM\"");  //режим кодировки текста
  delay(100);
  mySerial.println("AT+CNMI=2,2");

  sensors.begin(); //поиск датчиков температуры
  
  for (int i = 0; i <= 30; i++)   {


    myGLCD.setFont(SmallFont); //размер шрифта
    myGLCD.clrRow(0); // Очистить строку
    myGLCD.print("GSM: " + String (30-i), LEFT, 0); //Выводим на строке 0
    delay(1000);        // ждем 1 сек
  }
    myGLCD.clrScr(); //отчистка экрана
    myGLCD.setFont(SmallFont); //размер шрифта
    myGLCD.print("GSM Start ", LEFT, 0);

  
    

  pinMode(Pins[0],OUTPUT);
  myGLCD.print("Found: " + String(sensors.getDeviceCount(), DEC) + " dev.", LEFT, 9); //Выводим количество датчиков
  
  
   
}

void loop() {
  sensors.requestTemperatures();

    myGLCD.clrRow(2); // Очистить строку
    myGLCD.clrRow(3); // Очистить строку
    myGLCD.print("T1=" + String(sensors.getTempCByIndex(0) , 1), CENTER, 17); // выводим в строке 
    myGLCD.print("T2=" + String(sensors.getTempCByIndex(1) , 1), CENTER, 26); // выводим в строке    

    if (mySerial.available()) {  //если GSM модуль что-то послал нам, то
      delay(200);
    while (mySerial.available()) { //сохраняем входную строку в переменную val
      ch = mySerial.read();
      val += char(ch);
      delay(50);
      }
    if (val.indexOf("+CMT") > -1) 
      { 

      if (val.indexOf(master) > -1) 
         { 

         if (val.indexOf("on") > -1) 
            { 

            digitalWrite(Pins[0],HIGH); 
            }
         if (val.indexOf("off") > -1) 
            { 

            digitalWrite(Pins[0],LOW);
            }
         if (val.indexOf("temp") > -1) 
            { 
            sms(String("T1=" + String(sensors.getTempCByIndex(0) , 1) + ",  T2=" + String(sensors.getTempCByIndex(1) , 1)), String(master)); 
            }
         }
      }
    else

      if (val.indexOf("CSQ") > -1)       {
        myGLCD.clrRow(4); // Очистить строку
        myGLCD.print(String(val), CENTER, 33);
    }
    val = "";
  }



mySerial.println("AT+CSQ");
delay(5000);
}

 

Как попробуете, отпишитесь

 

m-zzz
Offline
Зарегистрирован: 30.05.2015

Так, давай по порядку.. 

По поводу цифирек на амперметре, это просто ток потребления в режиме ожидания, он копеечный... ты приемо-передачу включи и померяй. 

7805 она же все время должна питать оборудование, а не только в режиме ожидания..

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

По сути, отрубая общий провод от USB-UART (TTL) ты просто отделаешь общий провод своей схемы, от общего провода(земли) своего компа.

Я правильно понимаю, что эффект полностью одинаков и при питании от БП, и при питании от батареи?

Показания теряются сразу после отключения, без задержки?(тоесть GSM-модуль не успевает включиться на передачу)

Вариант измерения таков - промерять напряжения на всех частях схемы (и по питанию и по общему проводу) за нулевую точку для снятия примем средний вывод 7805. Мерять осциллографом, ессно, чтоб видеть что там с помехами..

 

Neman
Offline
Зарегистрирован: 22.01.2017

Максимум по потреблению 0,2 а с учетом точности амперметра, принапряжении 9-10 вольт в момент запуска модуля gsm, в момент регистации в сеть также,

при питании от батареи еще не пробовл, села старая полностью, до новой дайти не могу.

показания теряются сразу после отключения, даже с отключенным gsm модулем.

НО заметил, когда прикасаюсь влажным пальцем до GND ардуино, датчики переодически находятся, и еще выяснил, что при подключении любого одного из проводов USB-UART (TTL) - ардуино,  будь то +5в, rx-tx, tx-rx, датчики начинают видеться нормально... ???

 

 

XOR
Offline
Зарегистрирован: 25.04.2015

привет!  как прочить ноль с датчика во время цикла преобразования температуры?