PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : راهنمایی در مورد سنسور DS18B20



naeemafar
23-02-2009, 11:06
همانطور که می دانید سنسور دما DS18B20 یک سنسور دیجیتال هست که توسط 1 Wire با AVR ارتباط برقرار می کند

در کد ویژن هم یک فایل هدر برای این سنسور طراحی شده است که کار با این سنسور را ساده سازد

اگر کسی در مورد نحوه کار با این سنسور در محیط کد ویژن ارطلاعاتی داشته باشد ممنون می شوم در اختیار من بگذارد

kavir
23-02-2009, 11:26
سلام
اینجا رو ببینید (You can see links before reply)

naeemafar
23-02-2009, 11:41
با تشکر از راهنمایی شما

این پروژه با بسکام بود
من دنبال فراگیری روش استفاده از DS18S20 در کدویژن هستم

با تشکر

kavir
23-02-2009, 12:05
حق با شماست
دقت رو نوشته شما نداشتم
Code for multiple DS1820/DS18B20 and parasite power:
You can see links before reply
منبع:
You can see links before reply

naeemafar
23-02-2009, 13:29
با تشکر ولی باز هم WinAVR بود
شما با این سنسور کار کرده اید ؟

kavir
23-02-2009, 14:03
سلام
یه جستجو توی گوگل بکنید خیلی مثال هست
و توی خود کدوِِیژن در قسمت مثال هاش ببینید
به صورت عملی خیر نبستم

/* Multipoint thermometer with LCD display
using the Maxim DS18B20
1 Wire bus temperature sensors

CodeVisionAVR C Compiler
(C) 2000-2005 HP InfoTech S.R.L.
You can see links before reply

Chip: ATmega8515
Memory Model: SMALL
Data Stack Size: 128 bytes

PLEASE MAKE SURE THAT THE CKSEL0..3 FUSE
BITS ARE PROGRAMMED TO USE THE EXTERNAL
3.6864MHz CLOCK SOURCE OF THE STK500 AND NOT
THE INTERNAL 1MHz OSCILLATOR.
The ATmega8515 chip comes from the factory
with CKSEL0..3 fuse bits set to use the
internal 1 MHz oscillator.

The DS18B20 sensors are connected to
bit 6 of PORTA of the ATmega8515 as follows:

[DS18B20] [STK500 PORTA HEADER]
1 GND - 9 GND
2 DQ - 7 PA6
3 VDD - 10 +5V

All the temperature sensors must be connected
in parallel

AN 4.7k PULLUP RESISTOR MUST BE CONNECTED
BETWEEN DQ (PA6) AND +5V !
*/
#asm
.equ __w1_port=0x1b
.equ __w1_bit=6
#endasm

/* Use an 2x16 alphanumeric LCD connected
to PORTC as follows:

[LCD] [STK500 PORTC HEADER]
1 GND- 9 GND
2 +5V- 10 VCC
3 VLC- LCD contrast control voltage 0..1V
4 RS - 1 PC0
5 RD - 2 PC1
6 EN - 3 PC2
11 D4 - 5 PC4
12 D5 - 6 PC5
13 D6 - 7 PC6
14 D7 - 8 PC7
*/

#asm
.equ __lcd_port=0x15
#endasm

#include <lcd> // LCD driver routines
#include <ds18b20>
#include <delay>
#include <stdio>

char lcd_buffer[33];

/* maximum number of DS18B20 connected to the 1 Wire bus */
#define MAX_DEVICES 8

/* DS18B20 devices ROM code storage area */
unsigned char rom_code[MAX_DEVICES][9];

main()
{
unsigned char i,j,devices;

lcd_init(16);
lcd_putsf("CodeVisionAVR\n1 Wire Bus Demo");
delay_ms(2000);
lcd_clear();

/* detect how many DS18B20 devices
are connected to the 1 Wire bus */
devices=w1_search(0xf0,rom_code);
sprintf(lcd_buffer,"%u DS18B20\nDevice detected",devices);
lcd_puts(lcd_buffer);
delay_ms(2000);

/* display the ROM codes for each device */
if (devices)
{
for (i=0;i<devices;i++)
{
sprintf(lcd_buffer,"Device #%u ROM\nCode is:",i+1);
lcd_clear();
lcd_puts(lcd_buffer);
delay_ms(2000);
lcd_clear();
for (j=0;j<8;j++)
{
sprintf(lcd_buffer,"%02X ",rom_code[i][j]);
lcd_puts(lcd_buffer);
if (j==3) lcd_gotoxy(0,1);
};
delay_ms(5000);
};
}
else
while (1); /* stop here if no devices were found */

/* configure each DS18B20 device for 12 bit temperature
measurement resolution */
for (i=0;i<devices;)
if (!ds18b20_init(&rom_code[i++][0],20,30,DS18B20_12BIT_RES))
{
sprintf(lcd_buffer,"Init error for\ndevice #%u",i);
lcd_clear();
lcd_puts(lcd_buffer);
while (1); /* stop here if init error */
};

/* measure and display the temperature(s) */
while (1)
{
j=1;
for (i=0;i<devices;i++)
{
sprintf(lcd_buffer,"t%u=%+.3f\xdfC",j++,ds18b20_temperature(&rom_code[i][0]));
lcd_clear();
lcd_puts(lcd_buffer);
delay_ms(500);
};
};
}

naeemafar
24-02-2009, 08:39
من بیشتر دنبال آشنایی با خود سنسور و پروکل ارتباطی اون هستم نه پروژه های انجام شده با اون

kavir
24-02-2009, 12:08
خوب پروتکل که معموله اگه می خواین با تمامی قسمت ها آشنا بشین اون لینک هایی که دادم برای winavr رو بررسی کنید کتابخانه ها به صورت دستی هست و اگه روی دیتا شیت هم زوم کنید که چیز خاصی نمی مونه .فقط کمی وقت!!!

1nafar
26-02-2009, 09:38
سلام
شما در صورتی که به مسیر زیر در مکان نصب پروتوس برید یه پروژه حاضر و اماده وجود داره:
Labcenter Electronics\Proteus 7 Professional\SAMPLES\VSM for AVR\One-Wire\DS18X20

naeemafar
26-02-2009, 21:51
با تشکر
لازم شد که برم دنبال winAVR چون تمام کدها بر اساس اون هست که من هیچی متوجه نمی شوم

naeemafar
27-04-2009, 15:53
این المان چی هستش ؟
You can see links before reply

1nafar
27-04-2009, 21:31
سلام

این المان ، خروجی rs232 رو نسشون میده ، با شروع شدن شبیه سازی یه پنجره باز میشه و در داخل ان چیز های رو که شما با دستور print (توی بسکام ) به پروت rs232 فرستادی نمایش داده میشه
توی همون چنجره امکان تایپ داده هم وجود داره

naeemafar
28-04-2009, 11:56
پس مقادیری که تو پنجره دیده می شود اگر با RS232 میکرو را به کامپیوتر وصل کنیم تو پنجره ترمینال کدویژن نمایش داده میشه درسته ؟

با تشکر از راهنمایی شما

یک سوال دیگر هم داشتم اگر هر دو سنسور را DS18B20 بزاریم بدون تغییر در کدها جواب میده ؟

hd_uni_pro
23-10-2014, 12:08
سلام امیدوارم بهترین انتخاب رو برای مطرح کردن سوالم تو این تاپیک کرده باشم :
من یک سیستم یوپی اس دارم درست می کنم و می خوام یک قابلیت رو بهش اضافه کنم و اون هم اینه که می خوام سنسوردمایی تعبیه کنم و با avr و یا arm که این سنسور رو متصل به باتری کنم و تا زمانی که دمای باتری اسیدی به 50 در جه نرسیده(برای مدت مشخص ) یو پی اس باتری رو از مدار خارج نکنه حال از چه سنسور و از چه میکرویی استفاده کنم بهتره ؟ smt 160 و یا lm 35DT و یا max 6577 البته نقشه ساخت یو پی اس رو ندارم البته اون چیزی که مشخصه اینه که میکرو باید یک رله رو قطع کنه که ب ه ترانسی وصل هست که برق شهر خروجی رو تامین میکنه !
البته این رو هم بگم که اینجا یک رک باتری داریم (8 تا باتری داریم) البته این رو هم باید بگم ایا متصل کردن سنسور ها به تک تک باتری ها کار مناسب و مهندسی است یا نه و ایا سنسور ها رو به هد سینک وصل کنم و سپس روی باتری ها قرار بدم آیا دمای 50 درجهرو به من میده به صورت نسبتا دقیق این جا رو چه کار کنم دوستان ؟
ممنون میشم دوستان راهنمایی کنن و نقشه هایی رو هم دارن بذارن یک دنیا ممنون (البته خودم سرچ کردم-)

sadmonew
23-03-2017, 21:32
سلام دوستان
سال نو مبارک
سوال دارم اگه دوستان میتونن لطفا کمک کنن
1- حساسیت سنسور دمای DS18B20 به تغذیه در چه حدیه؟ خیلی حساس؟ یا....؟
2- آیا میشه از تغذیه سوئیچینگ(LM2576-adj) برای تغذیه این سنسور استفاده کرد؟ یا حتما باید تغذیمون لینیر(LM7805 یا LM317) باشه؟

bascom2
23-03-2017, 22:21
سلام مهندس جان
حیر سنسور بسیار دقیق هستش و من کلی با هاش کارکردم اگر برنامه ات درست باشه اصلا به تغذیه حساس نیست و اتفاقا خیلی در برابر نویز مقاوم هستش

sadmonew
24-03-2017, 02:32
ممنون بابت پاسخ
حالا دو تا سوال دیگه:
فرض کنید سنسور DS18B20 از طریق یه سیم 60 متری(سیم فلت 3 رشته) به میکرو وصل شده و با ولتاژ حدودا 3.8 ولت تغذیه میشه...
1- چه مقاومتی پیشنهاد میکنید که با اون مسیر دیتا رو pull-up کنیم؟
2- آیا فرمول خاصی برای محاسبه مقدار مقاومت به نسبت متراژ سیم وجود داره؟