Всё по DS18(B/S)20.

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Всё по DS18(B/S)20.

Сообщение Аlex »

Посмотрите этот проект http://forum.cxem.net/index.php?showtop ... try1263038
В хидерах всё настраивается под любые выводы. Думаю, под 16-ую мегу переделать не составит труда.
Аватара пользователя
CATmega
Родился
Сообщения: 2
Зарегистрирован: Вт июл 10, 2012 20:38:29

Re: Всё по DS18(B/S)20.

Сообщение CATmega »

Спасибо Вам) попробую поковырять) о результатах сообщу)
Аватара пользователя
Ckfdf
Первый раз сказал Мяу!
Сообщения: 26
Зарегистрирован: Ср ноя 28, 2012 07:09:50
Откуда: Казахстан, Алматы
Контактная информация:

Re: Всё по DS18(B/S)20.

Сообщение Ckfdf »

Добрый день, господа! Т.к. я новичек, прошу строго не судить.
Проблема в обще такова. Начал изучать Атмелы, так вышло что под руку попался Code visionAVR. Стал подключать DS18B20 к ATtyny2313, оказалось пользоваться сандартной библиотекой не выгодно! Много места занимает. Решил воспользоваться процедурой. Все заработало! Теперь не знаю, как второй датчик подключить. Может поможет кто?
Вложения
2xDS12B20.rar
Тут исходник и Proteus
(64.41 КБ) 225 скачиваний
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Всё по DS18(B/S)20.

Сообщение Аlex »

Теперь не знаю, как второй датчик подключить. Может поможет кто?
В этой теме уже обсуждалось подобное, поищите.
amid0027
Родился
Сообщения: 3
Зарегистрирован: Чт ноя 29, 2012 09:41:00

Опять DS18b20 и Codevision, очень поможите нубу!

Сообщение amid0027 »

Вот написал прогу где просто отражается температура на 2х сегментном индикаторе. Температура меряется 2 раза в минуту, но часто вместо нужных данных высвечивается какаято фигня. Что это за сбой? неправильная программа или может надо было кварц использовать? Не могли бы вы написать что нужно добавить в прогу (канкретно) ! Провод до датчика экранированный - 0.5 метра.


Спойлер

Код: Выделить всё

/*****************************************************

Chip type               : ATmega8
Program type            : Application
AVR Core Clock frequency: 8,000000 MHz
Memory model            : Small
External RAM size       : 0
Data Stack size         : 256
*****************************************************/

#include <mega8.h>
#include <delay.h>
#include <ds18b20.h>             //библиотека для работы с датчиком ds18b20
#include <1wire.h>

unsigned char rab;
unsigned char secund;
unsigned char minute;
unsigned char hours;
unsigned char set_mode=1;
unsigned char set_tempera;
unsigned char set_light;
unsigned char indic_tempera;
unsigned char indic_tentempera;
unsigned char indicacia;
unsigned char tenindicacia;
unsigned char edinindicacia;
int tempera;
unsigned int rab2;
bit mercan;
bit set_mode1;
bit set_mode2;
bit set_mode3;
bit bit_set_rejim;
char digits[] = {      //создаём массив с цифрами   //hgfedcba
  0b10100000,                   //0
  0b11111100,                   //1
  0b10010010,                   //2
  0b10011000,                   //3
  0b11001100,                   //4
  0b10001001,                   //5
  0b10000001,                   //6
  0b10111100,                   //7
  0b10000000,                   //8
  0b10001000,                   //9
  0b11111110,                   //знак минуса
  0b11111111                    //пустота
 };                 
// Timer1 output compare A interrupt service routine
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{

         rab=rab+1;            //каждые 100 мсек к раб прибавл 1
                if (rab>=100)                       {           // когда дошло до 10 сбрасывается в 0, а порт ,0 = 1
                      rab=0;                             
                        secund++;                   }   
                       
          if (secund>=60) {secund=0; minute++;}                                       
          if (minute>=60) {minute=0; hours++;}         
                                                                           
}

// Declare your global variables here

void main(void)
{
// Declare your local variables here
PORTB=0xC0;
DDRB=0x3F;
PORTC=0x00;
DDRC=0x7F;
PORTD=0xFF;
DDRD=0x00;
TCCR0=0x00;
TCNT0=0x00;
TCCR1A=0x00;
TCCR1B=0x0B;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x04;
OCR1AL=0xE2;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
MCUCR=0x00;
TIMSK=0x10;
UCSRB=0x00;
ACSR=0x80;
SFIOR=0x00;
ADCSRA=0x00;
SPCR=0x00;
TWCR=0x00;
// 1 Wire Bus initialization
// 1 Wire Data port: PORTD
// 1 Wire Data bit: 7
// Note: 1 Wire port settings must be specified in the
// Project|Configure|C Compiler|Libraries|1 Wire IDE menu.
w1_init();
 
// Global enable interrupts
#asm("sei")

while (1)
      {
        if ((secund==30)+(secund==1)) {                              // меряем температуру только 2 раза в минуту                   
               tempera=ds18b20_temperature(0);
                 delay_ms(1000);
                  if (tempera>1000){               //если датчик выдаёт больше 1000
                    tempera=4096-tempera;            //отнимаем от данных 4096
                      tempera=-tempera;   }             //и ставим знак "минус"  }
                                                                 
             
                                       }                                 
      PORTB.4=0; PORTB.3=1; PORTC=digits[tenindicacia];  PORTB.5=PINC.6;         // выводим на индикатор
                   delay_ms(1);
                     PORTC=0xFF;
                           PORTB.4=1; PORTB.3=0; PORTC=digits[edinindicacia]; PORTB.5=PINC.6;
                        delay_ms(1);
                          PORTC=0xFF;
                       tenindicacia=tempera/10;
                          edinindicacia=tempera%10;                                 
      }
}



Перенёс сюда. Пользуйтесь поиском.
ploop
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Всё по DS18(B/S)20.

Сообщение Аlex »

Не могли бы вы написать что нужно добавить в прогу
Проверка контрольной суммы и опрос заного, если она не совпадает.
amid0027
Родился
Сообщения: 3
Зарегистрирован: Чт ноя 29, 2012 09:41:00

Re: Всё по DS18(B/S)20.

Сообщение amid0027 »

Спасибо Алекс, а как это написать чтоб мк понял и куда? :)
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Всё по DS18(B/S)20.

Сообщение Аlex »

На счёт "как" - читаем документацию на датчик и на протокол 1-wire.
А на счёт "куда" - не знаю, это Ваша программа, Вам видней :)
uk8amk
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Re: Всё по DS18(B/S)20.

Сообщение uk8amk »

amid0027 писал(а):что нужно добавить в прогу (канкретно) !

кАнкретно кут либо перейти на полностью статическую индикацию, либо правильно написать программу:
1. Повесить индикацию на таймер;
2. Использовать другую библиотеку(желательно собственноручно написанную) для работы с датчиком.

А так вы на целую секунду тормозите индикацию, вот фигня всякая и вываливается.
amid0027
Родился
Сообщения: 3
Зарегистрирован: Чт ноя 29, 2012 09:41:00

Re: Всё по DS18(B/S)20.

Сообщение amid0027 »

Тогда я совсем обнаглею, может у кого нибудь есть готовая прога(для codevision) где значение температуры храниться в переменной, без индикации и прочего. Ну и желательно проверка crc. Ведь спецам такую прогу навоять 30 секунд, и новичкам париться не нужно будет отпадёт миллиард вопросов. Вы скажете - тогда новички так и останутся новичками! Но многим это надо раз в 5 лет!
Аватара пользователя
shads
Опытный кот
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

Re: Всё по DS18(B/S)20.

Сообщение shads »

Для CVAVR у меня нет, но если сможеш перевернуть из WINAVR, то на прошлой страничке, в конце, я кидал ссылочку на проект.
a_skr
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

Re: Всё по DS18(B/S)20.

Сообщение a_skr »

amid0027 писал(а):Тогда я совсем обнаглею, может у кого нибудь есть готовая прога(для codevision) где значение температуры храниться в переменной, без индикации и прочего. Ну и желательно проверка crc. Ведь спецам такую прогу навоять 30 секунд, и новичкам париться не нужно будет отпадёт миллиард вопросов. Вы скажете - тогда новички так и останутся новичками! Но многим это надо раз в 5 лет!
здесь я давал пример проверки контрольной суммы
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Всё по DS18(B/S)20.

Сообщение Аlex »

amid0027 писал(а):Тогда я совсем обнаглею, может у кого нибудь есть готовая прога(для codevision) где значение температуры храниться в переменной, без индикации и прочего.
Выше глаза поднимите - я давал ссылку на проект. Там и crc и индикация.... И , как раз, на Вашем CV. Всё, что не нужно, выкиньте из программы.
bit-d
Родился
Сообщения: 1
Зарегистрирован: Ср дек 05, 2012 07:18:55

Re: Всё по DS18(B/S)20.

Сообщение bit-d »

Здравствуйте. У меня небольшой вопрос насчет подключение датчика. Если я подключаю через провода небольшой длины (на макетной плате), все работает замечательно, датчик отвечает, контрольная сумма совпадает.
У меня в планах вынести датчик за окно и я взял провод от трансформатора, длиной ~ 2-3 метра и датчик не хочет работать вообще ну никак. Что можете посоветовать? Спасибо.
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: Всё по DS18(B/S)20.

Сообщение ibiza11 »

уменьшить подтягивающий резистор. Можно вплоть до 510 Ом.
Ставим плюсы: )
borys
Держит паяльник хвостом
Сообщения: 927
Зарегистрирован: Вт сен 07, 2010 19:27:48
Откуда: Ташкент

Re: Всё по DS18(B/S)20.

Сообщение borys »

510 Ом - это слишком жестко. Изготовитель не рекомендует делать меньше 1,5 кОм. При длине проводов 2-3
метра будет работать без проблем и при 4,7 кОм.
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: Всё по DS18(B/S)20.

Сообщение ibiza11 »

borys писал(а):Изготовитель не рекомендует делать меньше 1,5 кОм
Добрый день! можно ссылку на эту рекомендацию?
Ставим плюсы: )
Аватара пользователя
shads
Опытный кот
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

Re: Всё по DS18(B/S)20.

Сообщение shads »

bit-d писал(а):взял провод от трансформатора, длиной ~ 2-3 метра и датчик не хочет работать вообще ну никак. Что можете посоветовать? Спасибо.

Ну если на совсем коротком работает - то может плохо подобраны константы задержек функции 1WIRE..... Попробуйте другую библиотеку.....
Я чужими никогда не пользовался, сам себе на Си написал..... Если интересно могу скинуть.....

А кварц стоит на контроллере, или от внутреннего RC работает?
Из личного опыта - контроллер работает от внутреннего RC, на расстоянии метров 20, кабель обычный неэкранированный - без проблем.....
evgenich
Родился
Сообщения: 14
Зарегистрирован: Чт дек 06, 2012 20:20:29
Откуда: Питер
Контактная информация:

Re: Всё по DS18(B/S)20.

Сообщение evgenich »

Друзья, получилось ли у кого-нибудь заставить работать поиск 1-wire устройств на МК серии msp430?
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Всё по DS18(B/S)20.

Сообщение Аlex »

Интересно, а какая разница какой МК ? Или какие-то, как видят датчик, отказываются работать ? :))
Что не получается ?
Ответить

Вернуться в «Периферия»