Всё по DS18(B/S)20.
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Всё по DS18(B/S)20.
Посмотрите этот проект http://forum.cxem.net/index.php?showtop ... try1263038
В хидерах всё настраивается под любые выводы. Думаю, под 16-ую мегу переделать не составит труда.
В хидерах всё настраивается под любые выводы. Думаю, под 16-ую мегу переделать не составит труда.
Re: Всё по DS18(B/S)20.
Спасибо Вам) попробую поковырять) о результатах сообщу)
- Ckfdf
- Первый раз сказал Мяу!
- Сообщения: 26
- Зарегистрирован: Ср ноя 28, 2012 07:09:50
- Откуда: Казахстан, Алматы
- Контактная информация:
Re: Всё по DS18(B/S)20.
Добрый день, господа! Т.к. я новичек, прошу строго не судить.
Проблема в обще такова. Начал изучать Атмелы, так вышло что под руку попался Code visionAVR. Стал подключать DS18B20 к ATtyny2313, оказалось пользоваться сандартной библиотекой не выгодно! Много места занимает. Решил воспользоваться процедурой. Все заработало! Теперь не знаю, как второй датчик подключить. Может поможет кто?
Проблема в обще такова. Начал изучать Атмелы, так вышло что под руку попался Code visionAVR. Стал подключать DS18B20 к ATtyny2313, оказалось пользоваться сандартной библиотекой не выгодно! Много места занимает. Решил воспользоваться процедурой. Все заработало! Теперь не знаю, как второй датчик подключить. Может поможет кто?
- Вложения
-
- 2xDS12B20.rar
- Тут исходник и Proteus
- (64.41 КБ) 225 скачиваний
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Всё по DS18(B/S)20.
В этой теме уже обсуждалось подобное, поищите.Теперь не знаю, как второй датчик подключить. Может поможет кто?
Опять DS18b20 и Codevision, очень поможите нубу!
Вот написал прогу где просто отражается температура на 2х сегментном индикаторе. Температура меряется 2 раза в минуту, но часто вместо нужных данных высвечивается какаято фигня. Что это за сбой? неправильная программа или может надо было кварц использовать? Не могли бы вы написать что нужно добавить в прогу (канкретно) ! Провод до датчика экранированный - 0.5 метра.
Перенёс сюда. Пользуйтесь поиском.
ploop
Спойлер
Код: Выделить всё
/*****************************************************
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.
Проверка контрольной суммы и опрос заного, если она не совпадает.Не могли бы вы написать что нужно добавить в прогу
Re: Всё по DS18(B/S)20.
Спасибо Алекс, а как это написать чтоб мк понял и куда? 
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Всё по DS18(B/S)20.
На счёт "как" - читаем документацию на датчик и на протокол 1-wire.
А на счёт "куда" - не знаю, это Ваша программа, Вам видней
А на счёт "куда" - не знаю, это Ваша программа, Вам видней
-
uk8amk
- Поставщик валерьянки для Кота
- Сообщения: 2222
- Зарегистрирован: Вт ноя 27, 2007 11:32:06
- Откуда: Tashkent
Re: Всё по DS18(B/S)20.
amid0027 писал(а):что нужно добавить в прогу (канкретно) !
кАнкретно кут либо перейти на полностью статическую индикацию, либо правильно написать программу:
1. Повесить индикацию на таймер;
2. Использовать другую библиотеку(желательно собственноручно написанную) для работы с датчиком.
А так вы на целую секунду тормозите индикацию, вот фигня всякая и вываливается.
Re: Всё по DS18(B/S)20.
Тогда я совсем обнаглею, может у кого нибудь есть готовая прога(для codevision) где значение температуры храниться в переменной, без индикации и прочего. Ну и желательно проверка crc. Ведь спецам такую прогу навоять 30 секунд, и новичкам париться не нужно будет отпадёт миллиард вопросов. Вы скажете - тогда новички так и останутся новичками! Но многим это надо раз в 5 лет!
Re: Всё по DS18(B/S)20.
Для CVAVR у меня нет, но если сможеш перевернуть из WINAVR, то на прошлой страничке, в конце, я кидал ссылочку на проект.
Re: Всё по DS18(B/S)20.
здесь я давал пример проверки контрольной суммыamid0027 писал(а):Тогда я совсем обнаглею, может у кого нибудь есть готовая прога(для codevision) где значение температуры храниться в переменной, без индикации и прочего. Ну и желательно проверка crc. Ведь спецам такую прогу навоять 30 секунд, и новичкам париться не нужно будет отпадёт миллиард вопросов. Вы скажете - тогда новички так и останутся новичками! Но многим это надо раз в 5 лет!
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Всё по DS18(B/S)20.
Выше глаза поднимите - я давал ссылку на проект. Там и crc и индикация.... И , как раз, на Вашем CV. Всё, что не нужно, выкиньте из программы.amid0027 писал(а):Тогда я совсем обнаглею, может у кого нибудь есть готовая прога(для codevision) где значение температуры храниться в переменной, без индикации и прочего.
Re: Всё по DS18(B/S)20.
Здравствуйте. У меня небольшой вопрос насчет подключение датчика. Если я подключаю через провода небольшой длины (на макетной плате), все работает замечательно, датчик отвечает, контрольная сумма совпадает.
У меня в планах вынести датчик за окно и я взял провод от трансформатора, длиной ~ 2-3 метра и датчик не хочет работать вообще ну никак. Что можете посоветовать? Спасибо.
У меня в планах вынести датчик за окно и я взял провод от трансформатора, длиной ~ 2-3 метра и датчик не хочет работать вообще ну никак. Что можете посоветовать? Спасибо.
-
borys
- Держит паяльник хвостом
- Сообщения: 927
- Зарегистрирован: Вт сен 07, 2010 19:27:48
- Откуда: Ташкент
Re: Всё по DS18(B/S)20.
510 Ом - это слишком жестко. Изготовитель не рекомендует делать меньше 1,5 кОм. При длине проводов 2-3
метра будет работать без проблем и при 4,7 кОм.
метра будет работать без проблем и при 4,7 кОм.
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: Всё по DS18(B/S)20.
Добрый день! можно ссылку на эту рекомендацию?borys писал(а):Изготовитель не рекомендует делать меньше 1,5 кОм
Ставим плюсы: )
Re: Всё по DS18(B/S)20.
bit-d писал(а):взял провод от трансформатора, длиной ~ 2-3 метра и датчик не хочет работать вообще ну никак. Что можете посоветовать? Спасибо.
Ну если на совсем коротком работает - то может плохо подобраны константы задержек функции 1WIRE..... Попробуйте другую библиотеку.....
Я чужими никогда не пользовался, сам себе на Си написал..... Если интересно могу скинуть.....
А кварц стоит на контроллере, или от внутреннего RC работает?
Из личного опыта - контроллер работает от внутреннего RC, на расстоянии метров 20, кабель обычный неэкранированный - без проблем.....
-
evgenich
- Родился
- Сообщения: 14
- Зарегистрирован: Чт дек 06, 2012 20:20:29
- Откуда: Питер
- Контактная информация:
Re: Всё по DS18(B/S)20.
Друзья, получилось ли у кого-нибудь заставить работать поиск 1-wire устройств на МК серии msp430?
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Всё по DS18(B/S)20.
Интересно, а какая разница какой МК ? Или какие-то, как видят датчик, отказываются работать ?
Что не получается ?
Что не получается ?