Сколько DS18b20 можно повесить на одну шину?
- Войдите на сайт для отправки комментариев
Вс, 10/05/2015 - 22:57
В общем хотел подключить 6 датчиков но обломался при подключении более 5 перестают работать, подлючены дачики все паралельно через один резистор 4.7К, думал шестой датчик не рабочий но поменял его местами с пятым он работает.
использую мегу и такой скетчь
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 9
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress Thermometer1 = {
0x28, 0xFF, 0x45, 0xF7, 0x4C, 0x04, 0x00, 0x35 };
DeviceAddress Thermometer2 = {
0x28, 0xFF, 0x16, 0x50, 0x73, 0x04, 0x00, 0x40 };
DeviceAddress Thermometer3 = {
0x28, 0xFF, 0x17, 0x43, 0x3A, 0x04, 0x00, 0x82 };
DeviceAddress Thermometer4 = {
0x28, 0xFF, 0x1A, 0x19, 0x63, 0x14, 0x03, 0x56 };
DeviceAddress Thermometer5 = {
0x28, 0xFF, 0xD6, 0x33, 0x63, 0x14, 0x03, 0x3E };
DeviceAddress Thermometer6 = {
0x28, 0xFF, 0xCF, 0x41, 0x63, 0x14, 0x03, 0x1E };
void setup() {
sensors.begin();
sensors.setResolution(Thermometer1, 12);
sensors.setResolution(Thermometer2, 12);
sensors.setResolution(Thermometer3, 12);
sensors.setResolution(Thermometer4, 12);
sensors.setResolution(Thermometer5, 12);
sensors.setResolution(Thermometer6, 12);
Serial.begin(9600);
}
void printTemperature(DeviceAddress deviceAddress) {
float tempC = sensors.getTempC(deviceAddress);
Serial.println(tempC);
}
void loop() {
sensors.requestTemperatures();
Serial.print("Sensor1 ");
printTemperature(Thermometer1);
Serial.print("Sensor2 ");
printTemperature(Thermometer2);
Serial.print("Sensor3 ");
printTemperature(Thermometer3);
Serial.print("Sensor4 ");
printTemperature(Thermometer4);
Serial.print("Sensor5 ");
printTemperature(Thermometer5);
Serial.print("Sensor6 ");
printTemperature(Thermometer6);
}
В чем может быть проблема?
Не факт но попробуйте sensors.requestTemperatures(); delay(1000);
Одиннадцать штука параллельно работают без проблем. Резистор один.
Резистор поменьше- 1к5 поставьте.....
А что в данном случае вы понимаете под словом параллельно? Где и как расположены датчики?
А что в данном случае вы понимаете под словом параллельно? Где и как расположены датчики?
а как еще можно подключить эти датчики? Они же на одной шине...
А что в данном случае вы понимаете под словом параллельно? Где и как расположены датчики?
а как еще можно подключить эти датчики? Они же на одной шине...
раскидать звездой в параллель, достаточно длинными шлейфами.
Не факт но попробуйте sensors.requestTemperatures(); delay(1000);
Не помогло, такое ощущение что не хватает питания датчикам от ардуины к ней ещё tft экран подключен и реле.
раскидать звездой в параллель, достаточно длинными шлейфами.
примерно так и есть резистор у самой ардуины далее выходять 20см три провода и к ним уже цепляются разной длины провода ко всем датчикам
раскидать звездой в параллель, достаточно длинными шлейфами.
примерно так и есть резистор у самой ардуины далее выходять 20см три провода и к ним уже цепляются разной длины провода ко всем датчикам
Насколько помню, правильно - это один шлейф и от него ответвления максимально короткие.
Насколько помню, правильно - это один шлейф и от него ответвления максимально короткие.
Ну посути у меня отдин шлейф только короткий а отводы на датчики длиные по другому не как, датчики в разных сторонах и на разном растоянии самый далекой метров 15 остальные в пределах 2-5метров.
Подключил отдельное питание стало лучше кажет все 6 датчиков только один самый дальний переодически раз 5-10мин выдает -127
Нет таких температур, скорее всего библиотека чует что вы опрашиваете или не существующий или не ответивший датчик и получив 1111 1111 1111 1111 ( резистор привязки) выдаёт вам -127.
По поводу количества.......
Вторая колонка- номер канала (аналогового пина, так удобнее на Мега128) к которому подключен шлейф.
И это не на столе 20 сантиметров, каждый шлейф по метров 100, запутан по зданию.
Я на нулевом канале насчитал 17 датчиков......
Почитайте это.
Кроме того, из личного опыта:
- не используйте паразитное питание (1-wire по 2-м проводам), используйте отдельное питание (1-wire по 3-м проводам) лучше всего взять две витые пары из кабеля, по одной пустить питание, по второй данные, землю каждой пары соединить.
- резистор 4.7к это много, по оригинальным спецификациям 2.2к, но можно ещё меньше.
- на длинной и/или кривой лини без активной подтяжки никиак.
При использовании активной подтяжки у меня без проблем работает 20 датчиков на линии 200м+ с ответвлениями на датчики по 2-3 метра.
Почитайте это.
Кроме того, из личного опыта:
- не используйте паразитное питание (1-wire по 2-м проводам), используйте отдельное питание (1-wire по 3-м проводам) лучше всего взять две витые пары из кабеля, по одной пустить питание, по второй данные, землю каждой пары соединить.
- резистор 4.7к это много, по оригинальным спецификациям 2.2к, но можно ещё меньше.
- на длинной и/или кривой лини без активной подтяжки никиак.
При использовании активной подтяжки у меня без проблем работает 20 датчиков на линии 200м+ с ответвлениями на датчики по 2-3 метра.
У меня используется 3 провода питание минус и сигнальный пин на всех датчиках, попробую конечно уменьшить до 2К резистор просто у меня нет в наличии 2.2К есть по 1К.
Что такое активная подтяжка? если использовать к примеру вроли шины витую пару то как к ней цеплять датчики? разрезать шину на отводы к каждому датчику и скручивать?
У меня используется 3 провода питание минус и сигнальный пин на всех датчиках, попробую конечно уменьшить до 2К резистор просто у меня нет в наличии 2.2К есть по 1К.
-[1к]-+-[1к]- = -[2к]- , но и 1к будет работать.
Что такое активная подтяжка?
Что-то типа такого:
[/quote]
если использовать к примеру вроли шины витую пару то как к ней цеплять датчики? разрезать шину на отводы к каждому датчику и скручивать?
Блин замучался уже (((( не фига работать нормально не хочет, последний самый удаленный датчик переодически выдает ошибку -127 уже и повесил на одну шину и резистор поставил на 2К и датчик заменил и питание отдельное на датчики, незнаю что ещё придумать. Самое прикольное что чем больше датчиков тем чаще эта ошибка. К примеру если на шине 3 датчика то ошибка возникает где то раз в час иногда реже, если 6 датчиков то ошибка раз в 5-10 минут и уже глюкает не только последний на и предпоследний.
Самое печальное, что от этих датчиков работает реле то есть по разнице показаний температуры включается и выключается и когда ошика реле срабатывает (((
Ещё прикол в том что всю зиму эти же датчики только 4 штуки отработали с NANO без проблем, а вот решил всё перевести на мегу с tft и начались проблемы ((
Может есть варианты програмно обойти ошибку ну что бы её игнорировать?
...переодически выдает ошибку -127...
...если на шине 3 датчика то ошибка возникает где то раз в час иногда реже...
...если 6 датчиков то ошибка раз в 5-10 минут...
Так игнорируйте програмно и повторяйте опрос. Вы же космическим кораблем управляете, я надеюсь.
з.ы. ой очепятка "Вы же НЕ космическим кораблем управляете, я надеюсь."
Вот мой полный скетч который сечас работает
// термопары #include "max6675.h" int thermoDO = A1; int thermoCS = A2; int thermoCLK = A0; float termopara = 0; int thermo2DO = A4; int thermo2CS = A3; int thermo2CLK = A5; float termopara2 = 0; MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO); MAX6675 thermocouple2(thermo2CLK, thermo2CS, thermo2DO); // Экран #include <UTFT.h> extern uint8_t BigFont[]; extern uint8_t SevenSegmentFull[]; UTFT myGLCD(CTE32HR,38,39,40,41); #include <EEPROM.h> int addr = 0; //адрес в EEPROM int starts = LOW; int relestatus = 0; #include <OneWire.h> #include <DallasTemperature.h> int val = 0; float temp1 = 0; float temp2 = 0; float temp3 = 0; float temp4 = 0; float temp5 = 0; float temp6 = 0; #define ONE_WIRE_BUS 12 // пин DS18b20 boolean running = false; OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); DeviceAddress Thermometer1 = { 0x28, 0xFF, 0x17, 0x43, 0x3A, 0x04, 0x00, 0x82 }; // Котел DeviceAddress Thermometer2 = { 0x28, 0xFF, 0x16, 0x50, 0x73, 0x04, 0x00, 0x40 }; // подача в котел DeviceAddress Thermometer3 = { 0x28, 0xFF, 0x45, 0xF7, 0x4C, 0x04, 0x00, 0x35 }; // темп из дома DeviceAddress Thermometer4 = { 0x28, 0xFF, 0x1A, 0x19, 0x63, 0x14, 0x03, 0x56 }; // подача в дом DeviceAddress Thermometer5 = { 0x28, 0xFF, 0xD6, 0x33, 0x63, 0x14, 0x03, 0x3E }; // ТА DeviceAddress Thermometer6 = { 0x28, 0xFF, 0xCF, 0x41, 0x63, 0x14, 0x03, 0x1E }; // Улица void setup() { sensors.begin(); sensors.setResolution(Thermometer1, 9); sensors.setResolution(Thermometer2, 9); sensors.setResolution(Thermometer3, 9); sensors.setResolution(Thermometer4, 9); sensors.setResolution(Thermometer5, 9); sensors.setResolution(Thermometer6, 9); if (EEPROM.read(addr) == 0){ starts = LOW; } if (EEPROM.read(addr) == 1){ starts = HIGH; } pinMode(11,OUTPUT); digitalWrite(11, starts); pinMode(2, INPUT); digitalWrite(2, HIGH); Serial.begin(9600); randomSeed(analogRead(0)); // Setup the LCD myGLCD.InitLCD(); myGLCD.clrScr(); myGLCD.setColor(VGA_BLUE); myGLCD.fillRect(0, 0, 479, 30); myGLCD.fillRect(0, 100, 479, 120); myGLCD.fillRect(0, 180, 479, 200); myGLCD.setBackColor(VGA_BLUE); myGLCD.setColor(VGA_WHITE); myGLCD.drawLine(160, 1, 160, 200); myGLCD.drawLine(320, 1, 320, 200); //myGLCD.drawLine(340, 200, 340, 478); myGLCD.drawLine(1, 30, 478, 30); myGLCD.drawLine(1, 100, 478, 100); myGLCD.drawLine(1, 120, 478, 120); myGLCD.drawLine(1, 180, 478, 180); myGLCD.drawLine(1, 200, 478, 200); myGLCD.drawLine(1, 265, 478, 265); myGLCD.setFont(BigFont); myGLCD.print("TA", 50, 5); myGLCD.print("KOTEL", 185, 5); myGLCD.print("B KOTEL", 330, 5); myGLCD.print("DOM", 50, 102); myGLCD.print("IZ Doma", 185, 102); myGLCD.print("ULICA", 330, 102); myGLCD.print("T GAZOV", 20, 182); myGLCD.print("Temp", 205, 182); myGLCD.print("Nasos", 370, 182); myGLCD.setBackColor(VGA_BLACK); myGLCD.print("Kw", 200, 300); myGLCD.print("Kot-", 1, 287); myGLCD.print("Dom-", 236, 287); myGLCD.print("Kw", 440, 300); } void loop() { if (digitalRead(2) == LOW) { // выключатель нажат, т.к. подтягивающий резистор будет давайть HIGH на входе, если не замкнут напрямую на землю delay(500); // ждем 0.1сек running = !running; // меняем значение булевой переменной digitalWrite(11, running); EEPROM.write(addr, running); // включаем или выключаем светодиод. } sensors.requestTemperatures(); delay(1000); temp1 = sensors.getTempC(Thermometer1); temp2 = sensors.getTempC(Thermometer2); temp3 = sensors.getTempC(Thermometer3); temp4 = sensors.getTempC(Thermometer4); temp5 = sensors.getTempC(Thermometer5); temp6 = sensors.getTempC(Thermometer6); termopara = thermocouple.readCelsius(); termopara2 = thermocouple2.readCelsius(); relestatus = EEPROM.read(addr); if(Serial.available()>0){ // uint8_t inByte = Serial.read(); val = Serial.read(); if(val =='5') { digitalWrite(11, HIGH); EEPROM.write(addr, 1); digitalWrite(2, HIGH); } if(val =='6') { digitalWrite(11, LOW); EEPROM.write(addr, 0); } if(val =='3') { Serial.print(temp1); Serial.print(","); Serial.print(temp2); Serial.print(","); Serial.print(temp3); Serial.print(","); Serial.print(temp4); Serial.print(","); Serial.print(temp5); Serial.print(","); Serial.print(temp6); Serial.print(","); Serial.print(termopara); Serial.print(","); Serial.print(termopara2); Serial.print(","); Serial.print(digitalRead(11)); Serial.println(); } } if (temp1 > 89){ digitalWrite(11, HIGH); EEPROM.write(addr, 1); } if (temp2 > temp1){ digitalWrite(11, LOW); EEPROM.write(addr, 0); } int buf[478]; int x, x2; int y, y2; int r; // Clear the screen and draw the frame // myGLCD.clrScr(); myGLCD.setColor(VGA_WHITE); myGLCD.setBackColor(VGA_BLACK); myGLCD.setFont(SevenSegmentFull); if (temp5 > 80){ myGLCD.setColor(VGA_YELLOW); } if (temp5 > 85){ myGLCD.setColor(VGA_RED); } myGLCD.printNumF(temp5, 1, 25, 40);//температура ТА myGLCD.setColor(VGA_WHITE); if (temp1 > 85){ myGLCD.setColor(VGA_YELLOW); } if (temp1 > 89){ myGLCD.setColor(VGA_RED); } myGLCD.printNumF(temp1, 1, 185, 40); //Темпратура котла myGLCD.setColor(VGA_WHITE); myGLCD.printNumF(temp2, 1, 330, 40); //Темпратура входа в котла myGLCD.printNumF(temp4, 1, 25, 125); //Темпратура в дом myGLCD.printNumF(temp3, 1, 185, 125); //Темпратура из дома myGLCD.printNumF(temp6, 1, 325, 125); //Темпратура улица myGLCD.printNumF(termopara, 1, 5, 205); //Темпратура газов myGLCD.printNumF(termopara2, 1, 200, 205); //Темпратура доп датчик if(relestatus == 0){ // myGLCD.fillScr(0, 0, 255); myGLCD.setColor(VGA_RED); myGLCD.fillRoundRect(365, 202, 479, 264); myGLCD.setColor(VGA_WHITE); myGLCD.setBackColor(VGA_RED); myGLCD.print("OFF", 380, 210); //состояние насоса } if(relestatus == 1){ myGLCD.setColor(VGA_LIME); myGLCD.fillRoundRect(365, 202, 479, 264); myGLCD.setColor(VGA_WHITE); myGLCD.setBackColor(VGA_LIME); myGLCD.print("ON", 380, 210); //состояние насоса } myGLCD.setBackColor(VGA_BLACK); myGLCD.printNumF(0.0, 1, 70, 267); if(relestatus == 1){ myGLCD.printNumF((temp1-temp2)*1.2/1000*1.16*1000, 1, 70, 267); } myGLCD.printNumF((temp4-temp3)*1.2/1000*1.16*1000, 1, 300, 267); delay (4000); }програмно я бы хотел так что есть -127 то на экране остаются старые значения с датчика
Из вариантов, с бубном. Рядом с последним датчиком повесьте кондеры электролит мкФ на 100-1000 + керамику 0,1-10мкФ.
А по "-127" - If (переменная <=-127); {пропустить отображение, уйти на новый цикл измерения.}
Интересная строка имеется в файле DallasTemperature.h
#define DEVICE_DISCONNECTED -127
Вам это ничто не напоминает?
А в файлеDallasTemperature.cpp
// returns temperature in degrees F
// TODO: - when getTempC returns DEVICE_DISCONNECTED
// -127 gets converted to -196.6 F
Интересная строка имеется в файле DallasTemperature.h
#define DEVICE_DISCONNECTED -127
Вам это ничто не напоминает?
А в файлеDallasTemperature.cpp
// returns temperature in degrees F
// TODO: - when getTempC returns DEVICE_DISCONNECTED
// -127 gets converted to -196.6 F
Это я уже видел и понял что -127 возникает когда нет связи с датчиком, но как это решает проблему?
А датчики и соединения между ними у вас на пайке или разъемах?
А датчики и соединения между ними у вас на пайке или разъемах?
просто скрутка и изолента, что их паять если ещё сто раз пооду перебирать придется (( да и с nano так же все было.
Шина у меня ввиде провода ПВС 3х0,75 и отводы на датчики то же такие же, а около датчика 1метр роного тоненького кабеля датчики у меня водонепроницаемы в гильзах с 1метром провода.
Шина у меня ввиде провода ПВС 3х0,75.
А Вы знаете толк в извращениях. Возьмите витую пару.
А Вы знаете толк в извращениях. Возьмите витую пару.
думаете сечение проводов играет роль? вроде чем больше тем меньше потерь
А Вы знаете толк в извращениях. Возьмите витую пару.
думаете сечение проводов играет роль? вроде чем больше тем меньше потерь
Ну вы же не мощьность передаете :) Я не буду Вам сейчас лекцию читать почему витая пара для 1-wire гораздо предпочтительнее, чем Ваш провод. Попробуйте поверить так.
А Вы знаете толк в извращениях. Возьмите витую пару.
думаете сечение проводов играет роль? вроде чем больше тем меньше потерь
А Вы знаете толк в извращениях. Возьмите витую пару.
думаете сечение проводов играет роль? вроде чем больше тем меньше потерь
то есть нужно 2 GND провода цеплять к одному проводу GND датчика? так же кто как делает на витой паре просто у каждого датчика разрезаем её и вкручиваем датчик или может использует кто скажем тройники витой пары и обжимает? почему с nano в обще звездно образная система работала без проблем, а тут с мега такие косяки даже с шиной на тех же проводах? может косячат библиотеки с nano было всего три OneWire.h и DallasTemperature.h и EEPROM.h а в мегу засунул ещё две UTFT.h и max6675.h может они друг с другом так косячат?
1. При токах аж 1 миллиампер нужен ну очень толстый кабель..... ;)
2. Главная проблема Далласа- ёмкость кабеля.
Разряжает её на землю сам датчик, и с этим неплохо справляется его выходной транзистор, а вот заряжается она через резистор.
То есть фронты из " 0 " в " 1 " обычно затянуты.
И конденсатор по питанию обычно бесполезен.
1 миллиампер легко обеспечит ЛЮБОЙ кондёр на выходе ЛЮБОГО блока питания.
А вот уменьшить раз в 5 длительность именно этого фронта можно просто- уменьшив сопротивление в 5 раз.
Ток будет 5 миллиамперов, что полностью соответствует документации.
Я уже говорил вам об этом- но вы не слушаете.....
Да, и не путайте повышенную защищённость от внешних помех в витой паре с искажениями сигнала внутри кабеля.
1. При токах аж 1 миллиампер нужен ну очень толстый кабель..... ;)
2. Главная проблема Далласа- ёмкость кабеля.
Разряжает её на землю сам датчик, и с этим неплохо справляется его выходной транзистор, а вот заряжается она через резистор.
То есть фронты из " 0 " в " 1 " обычно затянуты.
И конденсатор по питанию обычно бесполезен.
1 миллиампер легко обеспечит ЛЮБОЙ кондёр на выходе ЛЮБОГО блока питания.
А вот уменьшить раз в 5 длительность именно этого фронта можно просто- уменьшив сопротивление в 5 раз.
Ток будет 5 миллиамперов, что полностью соответствует документации.
Я уже говорил вам об этом- но вы не слушаете.....
Да, и не путайте повышенную защищённость от внешних помех в витой паре с искажениями сигнала внутри кабеля.
Дак я и так уменьшил сопротивление заменив 4.7К на 2К вроде у меня и длина шины то всего метров 10-15 и датчиков 6 штук должно всего должно же хватать.
Про мой провод просто изначально он у меня был в наличии я на нем и собрал с nano и работало все и с резистором 4.7к и без внешнего питания, а тут перешол на мегу и получил косяки эти и с меньшим сопротивлением и с внешним питанием. буду пробовать витую пару последний вариант походу
А Вы знаете толк в извращениях. Возьмите витую пару.
думаете сечение проводов играет роль? вроде чем больше тем меньше потерь
Ну вы же не мощьность передаете :) Я не буду Вам сейчас лекцию читать почему витая пара для 1-wire гораздо предпочтительнее, чем Ваш провод. Попробуйте поверить так.
Соглашусь, что ПВС - это перебор.
Но вы попробуйтн меня аргументировано убедить, что витая пара в реальных условиях лучше, чем ШВВП.
Соглашусь, что ПВС - это перебор.
Но вы попробуйтн меня аргументировано убедить, что витая пара в реальных условиях лучше, чем ШВВП.
Зачем мне это? Если Вы этого не понимаете и ленитесь поискать и разобраться - это Ваши проблемы.
Вчера потратил несколько часов пересобирая шину на витойпаре (((( успел только подключить 4 датчика из 6 и все напрасно ошибка -127 все равно лезет но значительно реже то есть словил я её пару раз за 6 часов, думаю если подключу оставшиеся 2 дачика время участится ((( витую делал как предложили выше VCC x GND, SIG x GND
Попробую наверно со всеми 6 датчиками времено поставить nano без экрана посмотрю будет там ошибка или нет, бельше уже не знаю на что думать.
И чем Вам мешает -127 (сбой) один раз в 6 часов (даже раз в несколько минут при постоянном считывании оно не критично, имхо)? Там инертность датчика такая, что потратить ещё секунду-другую на повторное обращение к датчику ничего не должно изменить.
И чем Вам мешает -127 (сбой) один раз в 6 часов (даже раз в несколько минут при постоянном считывании оно не критично, имхо)? Там инертность датчика такая, что потратить ещё секунду-другую на повторное обращение к датчику ничего не должно изменить.
Она возникает на датчике самом дальнем который служит для управления циркулярным насосом то есть в коде есть условие когда температура датчика 6 меньше температуры дачика 5 насос отключается, вот и выходит что когда возникает -127 на шестом дотчике реле насоса отключается
Она возникает на датчике самом дальнем который служит для управления циркулярным насосом то есть в коде есть условие когда температура датчика 6 меньше температуры дачика 5 насос отключается, вот и выходит что когда возникает -127 на шестом дотчике реле насоса отключается
Фейспалм. А в программе задать условие при котором при считывании -127 попробовать считать повторно релингия не позволяет?
CRC на шине иногда могут и возникать - и это нормальное явление.
Но на ваших метрах.... Что-то здесь не так.
Подобное наблюдал когда два шлейфа на одном пине сидело- один с несколькими датчиками, а другой с одним на конце.
Длина кабелей была одинаковая.
Выяснилось что из-за длинных ( метров по 60) линий
при подключении второго переставал работать и первый и наоборот........
Предположил что при опросе дальнего датчика в любом из кабелей
со второго приходил отражённый сигнал от его "оборванного" конца ( а его не спрашивали- поэтому он молчал).
И это эхо приходило одновременно с тем, полезным, с первого кабеля.
Вылечилось вставлением в тот кабель что был с одним датчиком куска метров 20...... в бухте.....
Эхи "разбежались" по времени и больше не мешали.
Но это не правильно, просто выхода другого не было- кабеля были замазаны в стенки
Вот моя приблизительная схема обозначил растояние по шине мужду датчиками и длину отводов от шины до датчиков
Пока прикрутил пятый датчик и дописал условие
if (temp1 <= -127){
temp1 = sensors.getTempC(Thermometer1);
}
если датчик выдает -127 то повторно опрашивается
вроде пару часов без глюков уже работает, но все равно смущает такой выход датчик может и повторно прислать -127 тогда реле вырубится и котелок закипит (((
гыы сколько всего понаписали.... мне так видиться что советчикам просто скучно и они намеренно пропустили одну забавную штуку.
ДИКТУЮ БОЛЬШИМИ БУКВАМИ
просто скрутка и изолента, что их паять
Или еще добавить 8 метров кабеля и соединить по правильному.
куда добавить ещё 8 метров? как раз осталось витой столько ))) соеденить я хочу вот на такие троиники все
http://ru.aliexpress.com/item/Free-shipping-khaki-Plastic-3-Way-RJ45-LAN-Network-Ethernet-Splitter-Connector-1-to-2/32341956822.html
что бы было возможно легко снимать и менять датчики.
Пока вроде изменения в коде вернее условие повтора опроса последнего датчика при ошибке работает без проблем со всеми 6 датчиками по крайне мере за 10 часов не одной ошибки
куда добавить ещё 8 метров? как раз осталось витой столько ))) соеденить я хочу вот на такие троиники все
http://ru.aliexpress.com/item/Free-shipping-khaki-Plastic-3-Way-RJ45-LAN-Network-Ethernet-Splitter-Connector-1-to-2/32341956822.html
что бы было возможно легко снимать и менять датчики.
Пока вроде изменения в коде вернее условие повтора опроса последнего датчика при ошибке работает без проблем со всеми 6 датчиками по крайне мере за 10 часов не одной ошибки
маразм крепчает? зачем снимать и менять датчики? они у вас что гореть будут? тут на форуме есть товарищ у него эти датчики гроздьями висят почти по 100 штук на ветке... воду он там куда то дистилирует... паять нужно, а не скручивать изолентой.. тогда и сигнал перестанет пропадать.
а они работают в таких условиях один греется ежедневно от 40 до 95г иногда по недосмотру и до 110 бывает, другой погружной в воду то же греется и остывает постоянно, так что иногда выходят из строя в основном погружной и основная причина выхода из строя это окисляются ножки их и отваливаются по крайне мере за 2 года я поменял 5 штук и спайкой будет геморно менять
куда добавить ещё 8 метров? как раз осталось витой столько ))) соеденить я хочу вот на такие троиники все
http://ru.aliexpress.com/item/Free-shipping-khaki-Plastic-3-Way-RJ45-LAN-Network-Ethernet-Splitter-Connector-1-to-2/32341956822.html
что бы было возможно легко снимать и менять датчики.
Пока вроде изменения в коде вернее условие повтора опроса последнего датчика при ошибке работает без проблем со всеми 6 датчиками по крайне мере за 10 часов не одной ошибки
маразм крепчает? зачем снимать и менять датчики? они у вас что гореть будут? тут на форуме есть товарищ у него эти датчики гроздьями висят почти по 100 штук на ветке... воду он там куда то дистилирует... паять нужно, а не скручивать изолентой.. тогда и сигнал перестанет пропадать.
нууу не сто конечно а максимум что было 86, только макимум энтот не потому, что не шмогла, а потому, что на одной шине больше не нужно было , и шин таких теперь уже ПЯТЬ. И шина с 86 датчиками длиной, порядка 50 метров и поболее. И сбоила только когда рядом варили электросваркой и когда гроза была ( по сбоям есть статистика за пару лет). И вообще по моему мнению, если её правильно готовить, 1-wire классная штука.
Avgaz-у я посоветовал бы вертикальные сегменты делать не более 50см, резитор подтяжки поставить в конце линии, на питание в конце линии повесить электролит порядка 47 мкф. Питание ( плюс и минус) пустить витой парой, сигнал и минус пустить второй парой. Горизонталь неразрывным шлейфом, ответвления через rj-45.
Хрень вся эта работает у мну из-под бунты через адаптеры USb-1-Wire не помню название, есть на сайте радуги. Дрова owfs. Все остальное писано на пхп , пихается в мискл и показывается апачем - собственное.
ЗЫ. Не дистиллирую я воду , а ректифицирую вакуумно, с целью удаления из оной СТРАШНАГО ДЕЙТЕРИЯ. То есть из H2O+HDO удаляю HDO.
Не читал все ответы по этому вопросу, но я бы попробовал следующее:
- возле КАЖДОГО датчика (на проводах питания) запаял бы электролитический конденсатор ёмкостью 4,7 мкФ, 10 В;
- к КАЖДОМУ датчику (возле самого датчика) подключил бы резистор "подтяжки" 10 кОм;
- на выводе платы ардуины, идущего на линию IO датчиков, тоже установил бы "подтягивающий" резистор 4,7 кОм.
Не читал все ответы по этому вопросу, но я бы попробовал следующее:
- возле КАЖДОГО датчика (на проводах питания) запаял бы электролитический конденсатор ёмкостью 4,7 мкФ, 10 В;
- к КАЖДОМУ датчику (возле самого датчика) подключил бы резистор "подтяжки" 10 кОм;
- на выводе платы ардуины, идущего на линию IO датчиков, тоже установил бы "подтягивающий" резистор 4,7 кОм.
А ты сделай труд и почитай :)
У него все собрано на скрутках и изоленте... чему тут удивляться то? паять ему кажеться долго и не выгодно.
У него все собрано на скрутках и изоленте... чему тут удивляться то? паять ему кажеться долго и не выгодно.
Не думаю что в этом проблема, так как все 6 на скрутке и только один глюкает последний. и то при условии повторного опроса датчика при ошибке -127 глюков больше нет, уже двое суток.
Не думаю что в этом проблема, так как все 6 на скрутке и только один глюкает последний. и то при условии повторного опроса датчика при ошибке -127 глюков больше нет, уже двое суток.
мдаааа ну тогда конечно. я щас все платы выкину и буду просто скручивать и заматывать изолентой.. не подскажете как к чипу со 144 ногами прикрутить изолентой провода?
повторное опрашивание это костыль! там чтение может раза с 15 проходит.. а не со второго..
не ваш проект случайно? тож через повторное чтение сделали :)
Не думаю что в этом проблема, так как все 6 на скрутке и только один глюкает последний. и то при условии повторного опроса датчика при ошибке -127 глюков больше нет, уже двое суток.
мдаааа ну тогда конечно. я щас все платы выкину и буду просто скручивать и заматывать изолентой.. не подскажете как к чипу со 144 ногами прикрутить изолентой провода?
повторное опрашивание это костыль! там чтение может раза с 15 проходит.. а не со второго..
не ваш проект случайно? тож через повторное чтение сделали :)
Ну не преувеличивайте, согласен что пайка намного лучше, но нормальная скрутка в 1см то же сойдет я же не к ногам скручивал, к ножкам датчика припаян провод, а уже этот провод в общею шину на скрутку, выше писал что у меня датчики в гильзах с 1метром провода.
Повторный опрос происходит всего один раз, а не циклически пока не придут данные то есть вот так
if (temp1 <= -127){
temp1 = sensors.getTempC(Thermometer1);
}
спорим если взять витую пару как советовали выше и пропаять все датчики. то легко можно и пару сотен повесить?