Подключение 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 это работает, а на моей карте — нет?
@Maxence Ginet, 👍0
Обсуждение1 ответ
Наконец-то мне это удалось, спасибо @domen.
Я посмотрел на другую часть схемы и обнаружил, что использую неправильный вывод — у меня есть два LDO, и тот, который я использовал, был отключен для датчика.
Спасибо всем за помощь.
- Эмуляция 1-проводных устройств
- Ошибка компиляции в nodeMCU вместе с датчиком температуры oneWire ds18b20 и ЖК-дисплеем 2x16 (не I2C)
- DS1820 плохие показания 4-го датчика
- DS18b20 Заказ датчиков на кабеле
- Несколько РАЗРЫВОВ I2C с подтягивающими резисторами не работают
- Как я могу получить сигнал от пульта дистанционного управления с помощью сенсорного модуля tcrt5000
- Обнаружение датчиков DS18B20 и правильное назначение их реле
- Как найти время точки на графике на последовательном плоттере Arduino или ПО для обработки?
На схеме подключены **два** контакта, в описании вопроса и коде только **один** контакт., @domen
Это мосфет? Используется ли он для сокращения данных до 3,3 В? почему?, @Jot
Извините @domen, я поместил неправильную диаграмму в свой пост, я отредактировал свой пост., @Maxence Ginet
Вы хотите сказать, что это тот же чип (и аналогичное оборудование) и то же программное обеспечение? Есть ли схема вашего же оборудования, потому что вы наверняка там допустили какую-то ошибку. Включите подробную информацию обо всех различиях в рабочей настройке., @domen
@domen я добавил в пост аппаратную схему чипа, мы используем PD5 (D5), @Maxence Ginet
Возможно, вы основывались на этом, но если RX, TX и D5 не подключены, ваше оборудование может быть совсем другим :) Ваше программное обеспечение такое же (по сравнению с рабочей настройкой)? Каковы аппаратные различия?, @domen
Вы пробовали уменьшить значение подтягивающего резистора? 2к2 например. Проверьте спецификацию., @Mikael Patel