Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя
Показано с 21 по 30 из 38
  1. #21
    Пользователь
    Регистрация
    01.11.2010
    Возраст
    42
    Сообщений
    57
    Вес репутации
    177

    По умолчанию Re: Цифровой датчик температуры на Carduino.

    отлично, мне более и не надо) посмотрим как будут вести себя датчики, ведь у меня их 4 шт и весят параллельно

  2. #22
    Пользователь
    Регистрация
    01.11.2010
    Возраст
    42
    Сообщений
    57
    Вес репутации
    177

    По умолчанию Re: Цифровой датчик температуры на Carduino.

    Цитата Сообщение от SBorovkov Посмотреть сообщение
    Ниже приведенный код делает следующее: берет температуру с каждого из датчиков ds18B20, выводит ее на LCD экран и печатает инфу в UART.

    Мог маленько накосячить, ибо из сурсов выкидывал еще обработку сервы.

    Стоит отметить, что на arduino.cc есть несколько библиотек для однопроводной связи и не все из них работают с большим количеством параллельно подключенных датчиков.

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

    Код:
    
    #include <LCD4Bit.h> 
    #include <OneWire.h>
    
    #include "WProgram.h"
    void setup(void);
    void loop(void);
    LCD4Bit lcd = LCD4Bit(2); // две строки. Пины описаны в LCD4Bit.cpp.
    OneWire  ds(3);  // on pin 3
    
    
    void setup(void) {
      pinMode(13, OUTPUT);  //we'll use the debug LED to output a heartbeat
    
      lcd.init();
      
      Serial.begin(9600);
    }
    
    
    void loop(void) 
    {
      byte i;
      byte present = 0;
      byte data[12];
      byte addr[8];
      int Temp;
      if ( !ds.search(addr)) {
    	//Serial.print("No more addresses.\n");
    	ds.reset_search();
    	return;
      }
    
      Serial.print("R=");  //R=28 Not sure what this is
      for( i = 0; i < 8; i++) {
        Serial.print(addr[i], HEX);
        Serial.print(" ");
      }
    
      if ( OneWire::crc8( addr, 7) != addr[7]) {
    	Serial.print("CRC is not valid!\n");
    	return;
      }
    
      if ( addr[0] != 0x28) {
    	Serial.print("Device is not a DS18S20 family device.\n");
    	return;
      }
    
      ds.reset();
      ds.select(addr);
      ds.write(0x44,1);	   // start conversion, with parasite power on at the end
    
      delay(1000);     // maybe 750ms is enough, maybe not
      // we might do a ds.depower() here, but the reset will take care of it.
    
      present = ds.reset();
      ds.select(addr);
      ds.write(0xBE);	   // Read Scratchpad
    
      Serial.print("P=");
      Serial.print(present,HEX);
      Serial.print(" ");
      for ( i = 0; i < 9; i++) {	     // we need 9 bytes
        data[i] = ds.read();
        Serial.print(data[i], HEX);
        Serial.print("  ");
      }
      Temp=(data[1]<<8)+data[0];//take the two bytes from the response relating to temperature
    
      Temp=Temp;//divide by 16 to get pure celcius readout
    
      Serial.print("T=");//output the temperature to serial port
      Serial.print(Temp/16);
      Serial.print(".");
      Serial.print(((Temp%16)*100)/16);
      
        Serial.print("  ");
    
    
      Serial.print(" CRC=");
      Serial.print( OneWire::crc8( data, 8), HEX);
      Serial.println();
      
      lcd.clear();
      
      for ( i = 0; i < 8; i++) {	     
        if (addr[i]<16) {
          lcd.print("0");   
        }
        lcd.print(addr[i],HEX);
      }
      lcd.cursorTo(2, 0);  //line=2, x=0.
      lcd.print("Temp=");
      lcd.print(Temp/16,DEC);
      lcd.print(".");
      lcd.print(((Temp%16)*100)/16,DEC);
    
    
      lcd.print("S ");
    
    }
    по поводу библиотеки "LCD4Bit.h": читал на офф сайте, то она устаревшая и лучше использовать "LiquidCrystal.h". Недавно написал один проект так он тормозит ужасно, думаю что именно из-за нее так получается. на днях попробую передать под стандартную библиотеку, как сделаю - отпишусь

  3. #23
    Пользователь
    Регистрация
    05.03.2009
    Сообщений
    29
    Вес репутации
    191

    По умолчанию Re: Цифровой датчик температуры на Carduino.

    Подскажите, как и на что нужно(?) крепить датчики, например для правильного замера температуры воздуха? В моем конкретном случае интересует температура в сухом террариуме размером 100х50х50см. Есть теплый и холодный углы (в теплом лампа накаливания). Повесил оба датчика на высоте в 2-3 сантиметра от грунта. Показания были 28 и 26 градуов.

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

  4. #24
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,376
    Вес репутации
    10

    По умолчанию Re: Цифровой датчик температуры на Carduino.

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

  5. #25
    Новичок
    Регистрация
    25.11.2011
    Сообщений
    1
    Вес репутации
    0

    По умолчанию Re: Цифровой датчик температуры на Carduino.

    Время опроса n датчиков DS1821 ~7 мс (периодичность опроса 1с) и практически не зависит от количества (подключены к портам параллельно). Но на такое подключение расходуются порты. Поэтому рассматриваю возможность использования DS18x20. Но поскольку при опросе этих датчиков используется уникальный 64 битный адрес, боюсь время опроса существенно возрастёт (актуально для разработок с использованием нескольких прерываний). Кто нибудь замерял минимальное время опроса датчика(ов) DS18x20? Разве необходимо каждый раз программировать режим работы и запуск измерения!? В DS1821 есть режим непрерывного измерения, т.е. раз запустил и считывай, пока не решил изменить режим работы.

  6. #26
    Продвинутый
    Регистрация
    19.02.2010
    Возраст
    46
    Сообщений
    244
    Вес репутации
    222

    По умолчанию Re: Цифровой датчик температуры на Carduino.

    Из-за писецовой задержки опроса 18b20 был вынужден от них отказаться совсем.
    Возможно, что-то криво было написано, но перепробовав кучу вариантов, плюнул.
    Перешел на LM335. Но у меня задачи элементарные.

  7. #27
    Местный Аватар для avgaz
    Регистрация
    22.07.2008
    Возраст
    40
    Сообщений
    125
    Вес репутации
    233

    По умолчанию Re: Цифровой датчик температуры на Carduino.

    Цитата Сообщение от Chip Посмотреть сообщение
    Удобство цифрового датчика в том , что его показания не зависят от изменения напряжения питания и прочих парамметров, не требует калибровки, прост в реализации и повторяем.
    Подключаем датчик DS18B20 к Carduino nano(Arduino) по приведенной ниже схеме
    Вложение 5459

    Без библиотеки DallasTemperature компилироватся не будет.
    Скачиваем и распаковываем Библиотеку, потом кладем ее в папку \arduino-0018\libraries\DallasTemperature

    Скачать программу для PC.

    Код для Carduino Nano.
    PHP код:
    #include <DallasTemperature.h>

    DallasTemperature tempSensor;

    void setup(void
    {
      
    Serial.begin(115200);
      
    tempSensor.begin(12); //Вешаем Датчик на 12 порт
    }  

    void loop(void
    {
        switch(
    tempSensor.isValid())
        {
            case 
    1:
                
    Serial.println("Invalid CRC");
                
    tempSensor.reset(); // сбросить девайс
                
    return;
            case 
    2:
                
    Serial.println("Invalid device");
                
    tempSensor.reset(); // сбросить девайс
                
    return;
        }
      
    Serial.print(tempSensor.getTemperature()); //отправить температуру 
      
    Serial.println(); //перенос строки

    Наверно дуратский вопрос, но все таки куда ложить библиотеку написано в arduino-0018\libraries\DallasTemperature у меня таких папок нет! нужно ещё что то ставить?
    Мои действия подключил к компу Carduino Nano к нему подключил датчик DS18B20 без резистора пока, скачал прогу запускаю вылетает ошибка. Что ещё нужно поставить что бы заработало, первый раз пробую Carduino Nano!

  8. #28
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,376
    Вес репутации
    10

    По умолчанию Re: Цифровой датчик температуры на Carduino.

    Папка ...\libraries есть? Какая версия IDE?

  9. #29
    Местный Аватар для avgaz
    Регистрация
    22.07.2008
    Возраст
    40
    Сообщений
    125
    Вес репутации
    233

    По умолчанию Re: Цифровой датчик температуры на Carduino.

    Цитата Сообщение от Chip Посмотреть сообщение
    Папка ...\libraries есть? Какая версия IDE?
    Есть, туда положил, но выдает ошибки
    C:\Program Files (x86)\Arduino\libraries\DallasTemperature\BSeries. cpp:32:24: error: WConstants.h: No such file or directory
    C:\Program Files (x86)\Arduino\libraries\DallasTemperature\BSeries. cpp: In member function 'virtual float BSeries::getTemperature(NewOneWire*)':
    C:\Program Files (x86)\Arduino\libraries\DallasTemperature\BSeries. cpp:43: error: 'byte' was not declared in this scope
    C:\Program Files (x86)\Arduino\libraries\DallasTemperature\BSeries. cpp:43: error: expected `;' before 'lowByte'
    C:\Program Files (x86)\Arduino\libraries\DallasTemperature\BSeries. cpp:44: error: expected `;' before 'highByte'
    C:\Program Files (x86)\Arduino\libraries\DallasTemperature\BSeries. cpp:48: error: 'highByte' was not declared in this scope
    C:\Program Files (x86)\Arduino\libraries\DallasTemperature\BSeries. cpp:48: error: 'lowByte' was not declared in this scope
    IDE использую последнею http://arduino.cc/en/Main/Software

    Может есть инструкция для совсем новичков, какие IDE ставить и тд

  10. #30
    Местный Аватар для avgaz
    Регистрация
    22.07.2008
    Возраст
    40
    Сообщений
    125
    Вес репутации
    233

    По умолчанию Re: Цифровой датчик температуры на Carduino.

    Скачал версию arduino-0018 скетч вроде бы загрузился, резистора 4.7К под рукой не нашлось, повесил на 27К вроде за показывало, вопрос из за резистора я так понимаю будет неправильно?
    Последний раз редактировалось avgaz; 21.09.2014 в 18:32.

Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •