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

 
 
> Проблемы с DS18B20
Letis
сообщение Oct 6 2010, 14:53
Сообщение #1


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

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



Разработал устройство на меге8 с датчиком DS18B20. До этого все работало отлично, даже в промышленных условиях. Но возникла проблема, когда возле устройства установить и запустить частотник (для регулировки оборотов двигателя) то температура на устройстве показывает -1. В чем может быть проблема. Я уже использовал для связи с датчиком экранированную витую пару, но это не помогло. Подскажите.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Letis
сообщение Oct 7 2010, 23:51
Сообщение #2


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

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



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

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

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

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

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

Go to the top of the page
 
+Quote Post
Dx!
сообщение Oct 8 2010, 14:18
Сообщение #3


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

Группа: Участник
Сообщений: 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

Сообщений в этой теме
- Letis   Проблемы с DS18B20   Oct 6 2010, 14:53
- - Dx!   Помеха. Смотреть осциллоскопом. CRC8 не считаем ра...   Oct 6 2010, 17:57
- - Letis   СRC я считую, вот внизу, или чтото не так : inter...   Oct 6 2010, 18:02
- - Dx!   -1 приходит без ошибок в CRC ? Видимо помеха не в ...   Oct 6 2010, 18:03
- - Letis   А вот так будет правильно ? struct __ds18b20_scr...   Oct 6 2010, 18:25
- - WHALE   ужос... Куда у вас р смотрит?И вы про свитч знаете...   Oct 6 2010, 20:06
- - Letis   Да работает оно все. Я использую библиотеку, и все...   Oct 6 2010, 20:20
|- - kolobok0   Цитата(Letis @ Oct 7 2010, 00:20) ...испо...   Oct 6 2010, 20:49
- - Letis   Цитатагасящие элементы ставят. Какие гасящие элем...   Oct 6 2010, 21:29
- - Kovrov   Феррит кольцо... в помощь.. или в макс близости от...   Oct 7 2010, 06:09
- - alexeyv   Были похожие проблемы. Длина линии с датчиком 30м...   Oct 7 2010, 08:12
- - Letis   ЦитатаФеррит кольцо... в помощь.. Где оно должно б...   Oct 7 2010, 08:45
|- - kolobok0   Цитата(Letis @ Oct 7 2010, 12:45) Где оно...   Oct 7 2010, 20:52
- - Kovrov   кольцо берете с мин проницаемостью: лучше 400нн бе...   Oct 7 2010, 13:26
- - Letis   Здесь понятно. А как устранить со стороны питания ...   Oct 7 2010, 13:44
|- - xemul   Цитата(Letis @ Oct 7 2010, 17:44) Дело в ...   Oct 7 2010, 20:41
|- - xemul   Цитата(Letis @ Oct 8 2010, 03:51) ЦитатаУ...   Oct 8 2010, 07:32
- - Kovrov   Цитата(Letis @ Oct 7 2010, 17:44) Здесь п...   Oct 8 2010, 06:38


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

 


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


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