реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Проблемы с DS18B20
kolobok0
сообщение Oct 7 2010, 20:52
Сообщение #16


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(Letis @ Oct 7 2010, 12:45) *
Где оно должно быть - на кабеле датчика ?...


чисто пример.
есть такая проблема в автоэлектронике - помехи по всей бортовой от генератора, мотора и иже. лечится на ура = обмотка двойным проводом, в броневом. включаете через это хозяйство питание аудио с таким расчётом чтоб включение было встречным. Помехи исчезают. диаметр = по току. кол-во витков экспериментально. несколько пару десятков.

если у вас проблема по питанию - поискать соответствующий дросель. постоянка-переменка пофигу. на 'советских' БП от ЕС техники - стоял прям по вхоу 220В, с кондюками на корпус.


(круглый)
Go to the top of the page
 
+Quote Post
Letis
сообщение Oct 7 2010, 23:51
Сообщение #17


Частый гость
**

Группа: Участник
Сообщений: 124
Регистрация: 10-07-07
Пользователь №: 29 027



Цитата
Какая длина шнурка к датчику?

около 30м.
Цитата
Устройство без датчика с вкл/выкл частотником ведёт себя одинаково?
Еще непробывал, завтра напишу.
Цитата
Устройство с датчиком, подключённым без шнурка, с вкл/выкл частотником ведёт себя одинаково?

Нет, с выключеным частотником работает, с включенным неработает.
Цитата
Вы поминали, что экранирование шнурка ничего не дало. В какой (или каких?) точке был подключен экран?

Только возле устройства.

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

Go to the top of the page
 
+Quote Post
Kovrov
сообщение Oct 8 2010, 06:38
Сообщение #18


Мастер-фломастер
****

Группа: Свой
Сообщений: 611
Регистрация: 29-12-05
Пользователь №: 12 700



Цитата(Letis @ Oct 7 2010, 17:44) *
Здесь понятно. А как устранить со стороны питания устройства в целом?

главное что нужно помнить..
помехи не устраняют их обходят..
--------
лет 10 назад был проект зарядно подзарядного устройства АБ в Московском метро...
для термокомпенсации подзаряда АБ стоял также DS 1820
в цеху все это работало без проблем с длинной кабеля 20 метров...
на объекте ни в какую!!!
чтоб не городить огород - так как проблему начисто это полюбому не решит..
прошлось делать конвертор протокола
брал контроллер 2313 и преобразовывал интерфейс 1wire в RS485 (выбор протоколов широк)
что навсегда решило проблему.. и сомнения о будущем..
Советую и вам идти по этому пути...


--------------------
Вон ПОПОВ, клоун клоуном, а радио изобрел!!
Go to the top of the page
 
+Quote Post
xemul
сообщение Oct 8 2010, 07:32
Сообщение #19



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(Letis @ Oct 8 2010, 03:51) *
Цитата
Устройство без датчика с вкл/выкл частотником ведёт себя одинаково?
Еще непробывал, завтра напишу.

Имелось в виду: оторвать датчик, но оставить шнурок.
Цитата(Letis @ Oct 8 2010, 03:51) *
Цитата
Устройство с датчиком, подключённым без шнурка, с вкл/выкл частотником ведёт себя одинаково?

Нет, с выключеным частотником работает, с включенным неработает.

Т.е. устройство сбоит в непосредственной близости от частотника? Тогда Вам нужно разобраться с помехоустойчивостью устройства.
Можно начать с поиска по конфе и статьи Помехоустойчивые_устройства.
Цитата(Letis @ Oct 8 2010, 03:51) *
Цитата
В какой (или каких?) точке был подключен экран?
Только возле устройства.

И сразу соединён с минусом питания датчика? Если общий провод не приходит в эту точку обширным полигоном, от экрана толка чуть-да-ничего.
Цитата(Letis @ Oct 8 2010, 03:51) *
Я понимаю что прошу возможно слишком много, но не могли бы вы исходя с моего примера написать программу чтения с датчика более грамотно и более подробнее с оглашением всех переменных, тогда бы я был уверен что проблема в программе. Переменную ds я испозую, чтобы между операциями с датчиком работать с динамической индикацией. Я очень вас прошу.

Цитата
- Не вижу в этом никакого смысла! - сказал Кролик.
- Я тоже, - сказал Винни-Пух, - но когда я начинал говорить, он точно здесь был.

- лечить программно болячки неясной, но, предположительно, аппаратной, этиологии бессмысленно;
- я верю, что Вы легко справитесь самостоятельно. Инфы сейчас даже слишком много. Если будут конкретные вопросы, спрашивайте - здесь на грамотно заданный вопрос обычно можно получить такой же ответ.
Go to the top of the page
 
+Quote Post
Dx!
сообщение Oct 8 2010, 14:18
Сообщение #20


Частый гость
**

Группа: Участник
Сообщений: 108
Регистрация: 6-02-09
Из: Новочеркасск
Пользователь №: 44 469



Цитата(Letis @ Oct 8 2010, 03:51) *
Я понимаю что прошу возможно слишком много, но не могли бы вы исходя с моего примера написать программу чтения с датчика более грамотно и более подробнее с оглашением всех переменных, тогда бы я был уверен что проблема в программе. Переменную ds я испозую, чтобы между операциями с датчиком работать с динамической индикацией. Я очень вас прошу.

Писать вам ни кто ничего не будет. В интернете полно приличных сорцов. Отдаю то, с чем работаю я. Имхо - опросы в основном теле программы а динамическую индикацию делать через прерывания по таймеру.

Из вашего кода непонятно что вы делаете со считанной и проверенной CRC? Выкидываете ли вы неверные значения? Даже если бы чтение удавалось читать раз из десяти - с проверкой CRC работало бы прилично.

Код
//--------------------------------------------------------------------------------------------

// Безадресно запускаем преобразование во всех DS18b20 на линии

    if (!OW_DetectPresence())
    {
        OW_SendByte(OW_Net_SkipNetAddress);
        OW_SendByte(OW_DS18B20_Func_CONVERT_T);
    }


//--------------------------------------------------------------------------------------------


// По адресу (если датчик всего один то можно и безадресно) считываем. Если CRC8 Не совпадает,
// то вместо температуры передаем "код ошибки" 0x4000

    SomeVarT = 0x4000;

    if (!OW_DetectPresence())
    {
        uint8_t i;
        OW_SendByte(OW_Net_MatchNetAddress);
        for (i=0; i!=8; i++)
        {
            OW_SendByte(pgm_read_byte( &DS18B20_Addr[i] ));
        }

        OW_SendByte(OW_DS18B20_Func_READ_SCRATCHPAD);
        for (i=0; i!=4; i++)
        {
            Some16bitBuf[i] = (OW_ReceiveByte()) + (OW_ReceiveByte()<<8);
        }
        Some16bitBuf[i] = OW_ReceiveByte();    //CRC8

        if ((crc8( (uint8_t *)&Some16bitBuf[i-4], 8)) == Some16bitBuf[i])
            SomeVarT = usRegInputBuf[i-4];
    }


//--------------------------------------------------------------------------------------------

// Пример вывода на текстовый LCD
// Выводим для 16.25 градусов цельсия цифру 1625

    if(SomeVarT!=0x4000)
        LCD_PrintfS16Dec6_100(((int32_t)((int16_t)SomeVarT)*100)/16);

Прикрепленные файлы
Прикрепленный файл  DS18b20.rar ( 7.16 килобайт ) Кол-во скачиваний: 34
 
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 00:06
Рейтинг@Mail.ru


Страница сгенерированна за 0.01413 секунд с 7
ELECTRONIX ©2004-2016