Atmega и DS18b20

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Synaptic
Родился
Сообщения: 11
Зарегистрирован: Вс ноя 06, 2011 00:15:36

Atmega и DS18b20

Сообщение Synaptic »

Добрый день! У меня есть arduino(Atmega16), температурный датчик DS18b20.
Подсоединил все правильно! Скопировал код с оф. сайта arduino, запускаю, а он мне в ответ : Т= -1.
Попробовал другой код, но там все еще серьезнее: Т= -127.
Скажите, что я могу не правильно делать?
Реклама
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Atmega и DS18b20

Сообщение Аlex »

Я вот нажимаю на кнопку на пульте а телек у меня не показыват. Нажимаю правильно, с нужным усилием.
Пробовал другой пульт, но там вообще не жмётся.
Что я не правильно делаю ?
Реклама
Synaptic
Родился
Сообщения: 11
Зарегистрирован: Вс ноя 06, 2011 00:15:36

Re: Atmega и DS18b20

Сообщение Synaptic »

Ok!
Делаю так:

Код: Выделить всё

#include <OneWire.h>
#include <DallasTemperature.h>

// Data wire is plugged into pin 3 on the Arduino
#define ONE_WIRE_BUS 3



// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);

// Assign the addresses of your 1-Wire temp sensors.
// See the tutorial on how to obtain these addresses:
// http://www.hacktronics.com/Tutorials/arduino-1-wire-address-finder.html

DeviceAddress insideThermometer = { 0x28, 0x94, 0xE2, 0xDF, 0x02, 0x00, 0x00, 0xFE };
DeviceAddress outsideThermometer = { 0x28, 0x6B, 0xDF, 0xDF, 0x02, 0x00, 0x00, 0xC0 };
DeviceAddress dogHouseThermometer = { 0x28, 0x59, 0xBE, 0xDF, 0x02, 0x00, 0x00, 0x9F };

void setup(void)
{
  // start serial port
  Serial.begin(9600);
  // Start up the library
  sensors.begin();
 
  // set the resolution to 10 bit (good enough?)
  sensors.setResolution(insideThermometer, 10);
  sensors.setResolution(outsideThermometer, 10);
  sensors.setResolution(dogHouseThermometer, 10);
}

void printTemperature(DeviceAddress deviceAddress)
{
  float tempC = sensors.getTempC(deviceAddress);
  if (tempC == -127.00) {
    Serial.print("Error getting temperature");
  } else {
    Serial.print("C: ");
    Serial.print(tempC);
    Serial.print(" F: ");
    Serial.print(DallasTemperature::toFahrenheit(tempC));
  }
}

void loop(void)
{
  delay(2000);
  Serial.print("Getting temperatures...\n\r");
  sensors.requestTemperatures();
 
  Serial.print("Inside temperature is: ");
  printTemperature(insideThermometer);
  Serial.print("\n\r");
  Serial.print("Outside temperature is: ");
  printTemperature(outsideThermometer);
  Serial.print("\n\r");
  Serial.print("Dog House temperature is: ");
  printTemperature(dogHouseThermometer);
  Serial.print("\n\r\n\r");
}


Схема соединения:

Изображение


DS18b20 подключен так:
Изображение

GND - GND
VDD + 5V
DQ - к 3-му порту.
Причем VDD и DQ соединены резистором 4,7 кОм
В коде присутствует определение ошибки, ошибки на температуру "-127"
Вопрос: почему этот датчик может такое выдавать, вроде все правильно подключил?
Все делал по статье:
http://cxem.net/arduino/arduino17.php
alexsis_76
Открыл глаза
Сообщения: 46
Зарегистрирован: Ср апр 29, 2009 04:11:48

Re: Atmega и DS18b20

Сообщение alexsis_76 »

а где Вы взяли серийнитки датчиков
Реклама
Эиком - электронные компоненты и радиодетали
Synaptic
Родился
Сообщения: 11
Зарегистрирован: Вс ноя 06, 2011 00:15:36

Re: Atmega и DS18b20

Сообщение Synaptic »

Реклама
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»