Подключение DS18B20 к Arduino pro mini

На самом деле я пытаюсь подключить датчик DS18B20 к самодельной плате с процессором ATmega328P, работающим с напряжением 3,3 В и частотой 8 МГц.

Чтобы получить адрес, я подключил плату к контакту 5 моей платы по следующей схеме. схема соединений (отредактированная)

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

Для части кода я загрузил это:

// Этот скетч ищет однопроводные устройства и
// печатает их адреса (серийные номера) в
// UART в формате, удобном для скетчей Arduino
// Руководство:
// http://www.hacktronics.com/Tutorials/arduino-1-wire-address-finder.html

#include <OneWire.h>

OneWire  ds(5);  // Подключите ваше 1-проводное устройство к контакту 5

void setup(void) {
  Serial.begin(9600);
  discoverOneWireDevices();
}

void discoverOneWireDevices(void) {
  byte i;
  byte present = 0;
  byte data[12];
  byte addr[8];

  Serial.print("Looking for 1-Wire devices...\n\r");
  while(ds.search(addr)) {
    Serial.print("\n\rFound \'1-Wire\' device with address:\n\r");
    for( i = 0; i < 8; i++) {
      Serial.print("0x");
      if (addr[i] < 16) {
        Serial.print('0');
      }
      Serial.print(addr[i], HEX);
      if (i < 7) {
        Serial.print(", ");
      }
    }
    if ( OneWire::crc8( addr, 7) != addr[7]) {
        Serial.print("CRC is not valid!\n");
        return;
    }
  }
  Serial.print("\n\r\n\rThat's it.\r\n");
  ds.reset_search();
  return;
}

void loop(void) {
  // Здесь нечего смотреть
}


Когда я запускаю его на карте Arduino Uno, я могу получить адрес датчика, но когда я запускаю его на своей карте, я получаю только это:

Ищем устройства 1-Wire...

Вот и все.

У кого-нибудь есть идеи, почему на Arduino Uno это работает, а на моей карте — нет?

схема оборудования

, 👍0

Обсуждение

На схеме подключены **два** контакта, в описании вопроса и коде только **один** контакт., @domen

Это мосфет? Используется ли он для сокращения данных до 3,3 В? почему?, @Jot

Извините @domen, я поместил неправильную диаграмму в свой пост, я отредактировал свой пост., @Maxence Ginet

Вы хотите сказать, что это тот же чип (и аналогичное оборудование) и то же программное обеспечение? Есть ли схема вашего же оборудования, потому что вы наверняка там допустили какую-то ошибку. Включите подробную информацию обо всех различиях в рабочей настройке., @domen

@domen я добавил в пост аппаратную схему чипа, мы используем PD5 (D5), @Maxence Ginet

Возможно, вы основывались на этом, но если RX, TX и D5 не подключены, ваше оборудование может быть совсем другим :) Ваше программное обеспечение такое же (по сравнению с рабочей настройкой)? Каковы аппаратные различия?, @domen

Вы пробовали уменьшить значение подтягивающего резистора? 2к2 например. Проверьте спецификацию., @Mikael Patel


1 ответ


1

Наконец-то мне это удалось, спасибо @domen.

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

Спасибо всем за помощь.

,