duvidas controle de temperatura!

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Mensagempor fabim » 28 Out 2009 08:45

O marciano maconheiro.
Diganos, o seguinte.
Tu quer ajuda, mais tipo ajuda mesmo. tipo dicas etc ?

O que exatamente o seu tabajaras temp meassurement equip, vai fazer?
Tipo ele vai fazer monitoramento do que ?.
quantos sensores o seu projeto pede ?
qual seria a precisão ou margem de erro aceitavel?
Qual a distancia máxima entre os sensores e o uC ?
qual é a velocidade entre medida ? frames de medida dos sensores?
nome do pai, da mãe, da irmã filesão que eu sei que tem "de preferencia com o numero de celular"..

Coisas assim, rendem mais frutos.
Pois os Fodistas ficam dando dicas, as vezes incoerentes, mais aqui ninguem tem bola de cristal menos ainda estrela na testa, chifre pode até ser, mais estrela não.

Detalhe a sua gambiarra.
Dessa forma o pessoal vai socar a azeitona no alvo.

Abraços
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor verd » 28 Out 2009 09:48

hahahaha dae fabim! sempre me esculachando neh bocudo!! :lol:

então cara é o seguinte eu montei um circuito com o sensor DS18b20, ai estava lendo o datasheet e me interesei pelo 1-wire, achei legal o protocolo,crc.. e aplicação do mesmo! como trabalho com desenvolvimento na area de termometria em cilos de grãos e cereais, utilizo na termometria termopar (cobre/constantan) ai de curioso queria montar um circuito para testes com o barramento, tipo colocando varios sensores no memso barramento só isso! a aplicação é apenas desenvolvimento! tipo montar e deixar funcionando hehe, algum dia quem sabe pode ser implementado em algum equipamento novo entende!!

já montei o código, entendi os comandos do mesmo, mas num vai, ta faltando alguma coisa! ligo um sensor mas quando ligo outro ja dá problema na leitura!! ele mede a diferêça!!

não entro na minha cabeça o funcionamento ainda:
alimento todos os sensores com + e - ai saio com um fio e vou ligando todos os DQ dos sensores nesse fio!

no meu códiog envio reset, selção do comando [0xcc], e peço a conversão de temperatura[0x44]

void main(void)
{
int buffer[9], conta;
float temp;
while (true)
{

reset_1w ();
escreve_byte_1w (0xcc); // comando skip Rom
escreve_byte_1w (0x44); // inicio da conversão da temperatura

reset_1w (); // reseta o dispositivo
escreve_byte_1w (0xcc) ; //comando skip rom
escreve_byte_1w (0xbe); //comando de leitura da memória de rascunho



//efetua a leitura dos nove bytes da memória de rascunho
for (conta = 0; conta<9; conta++)
buffer[conta]=le_byte_1w ();

printf ("temp LSB = %u\r\n",buffer[0]);
printf ("temp MSB = %u\r\n",buffer[1]);
printf ("TH = %u\r\n",buffer[2]);
printf ("TL = %u\r\n",buffer[3]);



printf ("contagem Remanescente = %u\r\n",buffer[6]);
printf ("Contagem por grau C = %u\r\n",buffer[7]);
printf ("CRC = %u\r\n",buffer[8]);
printf ("CRC calculado = %u\r\n", calc_crc (buffer,8));
reset_1w ();
escreve_byte_1w (0xcc);
escreve_byte_1w (0xb4);

if (le_bit_1w()) printf ("modo alimentado\r\n");
else printf ("Modo parasita\r\n");
printf ("temperatua = %Ld" , ((long)(buffer[1]<<8) + buffer[0]>>1));


if (bit_test(buffer[0],0)) printf (".5");
printf (" graus celsius (menor preciso)\r\n");
temp = (long) (buffer[1]<<8) + buffer[0];

temp = (temp / 2) - 0.25 + (float) ((buffer[7] - buffer[6])/buffer[7]);
printf ("temperatura = %3.2f graus celcius\r\n", temp);
printf ("Proximo ?\r\n");
while (getc() !=13);
verd
Byte
 
Mensagens: 262
Registrado em: 28 Ago 2008 10:15

Mensagempor fabim » 28 Out 2009 10:18

ta mas veja bem uma coisa.
imagina 5 DQ numa mesma via.
Tu vai lá e soca os comandos.
Certo, mais veja.
Uma sala com 10 pessoas.
"ei você seu corno"
Os 5 vão te olhar e te mandar a m%#$¨%#@$, a menos que você diga.
"ei filisbrino seu corno"
Todos vão ficar quietos, olhando para você e para o filisbrino, pois você não falou com eles. Eles escutaram o nome "endereço do DS" e tambem o chingamento "comando". Porêm vão ficar quietos, apenas o filisbrino vai te mandar À #$#$#$#iu.
Para se utilizar este sensor.
Primeiro tu deve conhecer o endereço de cada um deles.
Segundo, veja no datasheet o comando de leitura endereçado, pois assim os outros não vão se ofender, e apenas o que você chamou a atenção vai responder ao seu insulto."nunca usei este DS, porem é logico e apenas esta forma"

O seu problema esta exatamente aí.
Ta mandando os N DS a ¨%#$%#$, e todos estão respondendo pois não tem um nome "endereço" na jogada.

Sacou?
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor verd » 28 Out 2009 10:22

hahahaha gostei do exemplo!! rachei o bico aqui!! agora ficou mais claro!!! hahahahaha!

valeu fabim!!!
verd
Byte
 
Mensagens: 262
Registrado em: 28 Ago 2008 10:15

Mensagempor Djalma Toledo Rodrigues » 28 Out 2009 10:23

Verd se for dois ou mais DS18S20 não basta o Resistor de 4k7, há que chavear a linha de Dados para +5V após o Comando Converte 0x44 durante 800 ms

Isto é feito com outro pino do uC acionando um Transistor ou Mosfet Canal P

Repetindo:

No Artigo da Elektor #90 esta bem explicado.

Se não tiver a Revista pode baixar esse artigo PDF
no site :

http://www.elektorbrasil.com.br/revista ... ynkx?tab=4

É pago, 10 Créditos

Mas, a Elektor te da Crédito Inicial ao se registrar.
.
Editado pela última vez por Djalma Toledo Rodrigues em 28 Out 2009 10:58, em um total de 2 vezes.
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor verd » 28 Out 2009 10:28

fala djalma eu cadastrei na elektor estou esperando eles me enviarem a resposta para olhar o artigo!!
verd
Byte
 
Mensagens: 262
Registrado em: 28 Ago 2008 10:15

Mensagempor Djalma Toledo Rodrigues » 28 Out 2009 10:29

ok
.
Editado pela última vez por Djalma Toledo Rodrigues em 28 Out 2009 10:55, em um total de 2 vezes.
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor fabim » 28 Out 2009 10:40

mimememi

Figure 1 shows a block diagram of the DS18S20, and pin descriptions are given in the Pin Description
table. The 64-bit ROM stores the device’s unique serial code. The scratchpad memory contains the 2-byte
temperature register that stores the digital output from the temperature sensor. In addition, the scratchpad
provides access to the 1-byte upper and lower alarm trigger registers (TH and TL). The TH and TL registers
are nonvolatile (EEPROM), so they will retain data when the device is powered down.


64-BIT LASERED ROM CODE
Each DS18S20 contains a unique 64-bit code (see Figure 6) stored in ROM. The least significant 8 bits of
the ROM code contain the DS18S20’s 1-Wire family code: 10h. The next 48 bits contain a unique serial
number. The most significant 8 bits contain a cyclic redundancy check (CRC) byte that is calculated from
the first 56 bits of the ROM code. A detailed explanation of the CRC bits is provided in the CRC
Generation section. The 64-bit ROM code and associated ROM function control logic allow the
DS18S20 to operate as a 1-Wire device using the protocol detailed in the 1-Wire Bus System section.
1-Wire BUS
DS18S20
GND VDD DQ
TO OTHER
1-WIRE DEVICES
VDD (EXTERNAL SUPPLY) DS18S20
GND VDD DQ
TO OTHER

ROM COMMANDS
After the bus master has detected a presence pulse, it can issue a ROM command. These commands
operate on the unique 64-bit ROM codes of each slave device and allow the master to single out a specific
device if many are present on the 1-Wire bus. These commands also allow the master to determine how
many and what types of devices are present on the bus or if any device has experienced an alarm
condition. There are five ROM commands, and each command is 8 bits long. The master device must
issue an appropriate ROM command before issuing a DS18S20 function command. A flowchart for
operation of the ROM commands is shown in Figure 14.

READ ROM [33h]
This command can only be used when there is one slave on the bus. It allows the bus master to read the
slave’s 64-bit ROM code without using the Search ROM procedure. If this command is used when there
is more than one slave present on the bus, a data collision will occur when all the slaves attempt to
respond at the same time.

MATCH ROM [55h]
The match ROM command followed by a 64-bit ROM code sequence allows the bus master to address a
specific slave device on a multidrop or single-drop bus. Only the slave that exactly matches the 64-bit
ROM code sequence will respond to the function command issued by the master; all other slaves on the
bus will wait for a reset pulse.
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor verd » 30 Out 2009 07:08

pessoal desculpe a falta de postagens de resultados, precisei dar um tempo neste projeto pra desenvolver outra coisa para empresa! dentro de alguns dias posto resultados!

obrigado a todos!

Obrigado fabim! dentro de alguns dias volto a encher seu saco com aquelas perguntas mirabolantes que você adora! hahahah! Abraço!
verd
Byte
 
Mensagens: 262
Registrado em: 28 Ago 2008 10:15

Anterior

Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x