|
stoyanoff
Ранг: Форумен бог
Регистриран на: Чет Юни 25, 2009 1:01 pm Мнения: 2251
|
 Re: Проблем с DS18B20
Аз скоро имах подобен проблем. Оказа се, че не захранвам правилно датчика. Като размених Vcc и GRD(противно на дейташийта) всичко тръгна. И използвам една готова библиотека вместо да си играя да пиша програма. Поздрави!
_________________www.elkran.com
|
|
shokata07
Ранг: Минаващ
Регистриран на: Пет Сеп 07, 2012 11:17 pm Мнения: 2
|
 Re: Проблем с DS18B20
/* Ow_Reset(&PORTE,2); // Onewire reset signal Ow_Write(&PORTE,2,0xCC); // Issue command SKIP_ROM Ow_Write(&PORTE,2,0x44); // Issue command CONVERT_T Delay_us(120);
Ow_Reset(&PORTE,2); Ow_Write(&PORTE,2,0xCC); // Issue command SKIP_ROM Ow_Write(&PORTE,2,0xBE); // Issue command READ_SCRATCHPAD Delay_ms(400);
unsigned short Ow_Read(unsigned short *port, unsigned short pin);
unsigned short Ow_Reset(unsigned short *port, unsigned short pin); void Ow_Write(unsigned short *port, unsigned short pin, unsigned short par); */ #define Broi_Datchici 4 #define D_PIN_PORT PORTA #define D_PIN_NUM 0 #define D_TRIS_PORT TRISA //***********************************
void D_ReadRom(char *address) { char count; Ow_Write(& D_PIN_PORT, D_PIN_NUM, 0x33); //-- Read Rom //-- Read in the ROM code from the Device for(count=0;count<8;count++) { address[count]=Ow_Read(& D_PIN_PORT, D_PIN_NUM); // *address=D_Read(); // address++; } }
void D_MatchRom(char *address) { char count; Ow_Write(& D_PIN_PORT, D_PIN_NUM,0x55); //-- Match Rom //-- Send the Address ROM Code. for(count=0;count<8;count++) { Ow_Write(& D_PIN_PORT, D_PIN_NUM, address[count]); } }
void ReadTemperature(void) { char count; Ow_Reset(& D_PIN_PORT, D_PIN_NUM); // Onewire reset signal Ow_Write(& D_PIN_PORT, D_PIN_NUM,0xCC); // Issue command SKIP_ROM Ow_Write(& D_PIN_PORT, D_PIN_NUM,0x44); // Issue command CONVERT_T Delay_us(120); //-- Read First Device Ow_Reset(& D_PIN_PORT, D_PIN_NUM); // Reset the Bus Again #if (Broi_Datchici ==1) { Ow_Write(& D_PIN_PORT, D_PIN_NUM,0xCC);// Skip ROM } #else { D_MatchRom(ADDR1); } #endif Ow_Write(& D_PIN_PORT, D_PIN_NUM,0xBE); // Read Scratch Pad Command // Delay_ms(400); for(count=0;count<9;count++) { DATA1[count]=Ow_Read(& D_PIN_PORT, D_PIN_NUM); } }
|
|
stoyanoff
Ранг: Форумен бог
Регистриран на: Чет Юни 25, 2009 1:01 pm Мнения: 2251
|
 Re: Проблем с DS18B20
Момци, имам малък проблем. Залях един такъв индикатор с епоксидна смола(с цел да стане водоустойчив), но сега не показва вярно. Датчикът е свързан към контролера с кабели 1.5м. Резултата, който ми връща контролера е 208-212 градуса за стайна температура. Като го хвана с ръка се качва до 230++ и после като го пусна спада пак до първоначалните стойности. Някой имал ли е подобен проблем???
_________________www.elkran.com
|
|
palavrov
Ранг: Форумен бог
Регистриран на: Вто Окт 11, 2011 11:53 pm Мнения: 4582 Местоположение: Brussels / Пловдив
|
 Re: Проблем с DS18B20
Можеш ли, да постнеш целият scratch pad тук? Тези градуси, които четеш са извън обхвата на този сензор, ако не бъркам ...
_________________ Мразя да мразя ...
|