LusoRobótica - Robótica em Português

Software => Software e Programação => Tópico iniciado por: GnGz em 21 de Fevereiro de 2011, 21:10

Título: Temperature Analyser
Enviado por: GnGz em 21 de Fevereiro de 2011, 21:10
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg842.imageshack.us%2Fimg842%2F874%2Ftemperatue.png&hash=fdd48090c73d3aa398bc5090fb030bb299e25e65)

Temperature Analyser é um software que lê dados em formato de temperatura os vindos por uma porta serial através de um microcontrolador.

Este software está em fase de desenvolvimento tendo já saido a versão 0.1.

(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg517.imageshack.us%2Fimg517%2F6899%2Fsobreg.jpg&hash=656ab75e849ccfb421f9f6cb414ff5cf7d47aff0)

Como usar:


Para Programadores:

Enviar para o computador os dados sem nenhuma formatação.

Na proxima versão:

Identificação de Dispositivo

Diferenciação de Graus Centigrados ou Farenight e possivelmente a sua conversão.

Caracterisiticas:

Windows NT ou Superior

.Net Framework 2.0

Download & Run

Download: Mediafire (http://www.mediafire.com/?dn1cvihebpd7c8g)

Espero que seja útil a alguém.
Título: Re: Temperature Analyser
Enviado por: senso em 21 de Fevereiro de 2011, 21:15
E o respectivo codigo para o micro-controlador?
Título: Re: Temperature Analyser
Enviado por: GnGz em 21 de Fevereiro de 2011, 21:20
Mais tarde posto um de exemplo em Arduino e secalhar ainda mais tarde um em AVR GCC.
Gostaste?
Título: Re: Temperature Analyser
Enviado por: andre_f_carvalho em 21 de Fevereiro de 2011, 21:32
basta entao enviar o valor por serial nessa com?
Título: Re: Temperature Analyser
Enviado por: GnGz em 21 de Fevereiro de 2011, 21:34
Tens de selecionar a porta do teu microcontrolador , no caso da imagem é a COM3.

Cumprimentos,
Título: Re: Temperature Analyser
Enviado por: andre_f_carvalho em 21 de Fevereiro de 2011, 21:38
no meu caso penso que n consiga fazer isso no micro controlador, visto que uso um conversor de usb ara serial para usar num picaxe,
Título: Re: Temperature Analyser
Enviado por: GnGz em 21 de Fevereiro de 2011, 21:43
No teu  caso acho que funciona , quando conectas ao pc não ficas com uma porta com equivalente a esse mcu?
Título: Re: Temperature Analyser
Enviado por: microbyte em 21 de Fevereiro de 2011, 21:47
Mas é enviado como? A conversão é feita em que fase? O microcontrolador mede uma entrada analógica, converte para graus e envia, ou envia directamente o que lê?
ASCII, 2 bytes?

Não adianta lançar "software" se não se documentar muito bem, para as outras pessoas saberem como o podem usar.
Título: Re: Temperature Analyser
Enviado por: GnGz em 21 de Fevereiro de 2011, 22:07
Receber dados de um bus ou entrada ,  e mandar por serial , sem formatação o resto trata o software.

Citar
Serial.print(temp)

Título: Re: Temperature Analyser
Enviado por: microbyte em 21 de Fevereiro de 2011, 22:36
Receber dados de um bus ou entrada ,  e mandar por serial , sem formatação o resto trata o software.

Citar
Serial.print(temp)


Mas mandar sem formatação é o que? Tem de ir numa norma... Podes enviar o valor de 10bits em pacotes de 2bytes, como podes enviar caracteres do número decimal correspondente em ASCII.
Título: Re: Temperature Analyser
Enviado por: GnGz em 21 de Fevereiro de 2011, 23:11
A temperatura em principio pode ser num int . Caramba é assim tão dificil mandar dados por uma serial?
Título: Re: Temperature Analyser
Enviado por: senso em 22 de Fevereiro de 2011, 00:28
O arduino de certeza que esta a enviar um int, porque se esse temp é uma leitura do adc que é de 10 bits, ele tem de enviar 16 bits, nao existe nenhuma dificuldade em enviar dados por Serial, mas podias por exemplo ter um protocolo em que tinhas um caracter para indicar inicio e fim de pacote de dados e processar a temperatura no Arduino e so enviar a temperatura ja processada.
Título: Re: Temperature Analyser
Enviado por: metRo_ em 22 de Fevereiro de 2011, 01:14
A temperatura em principio pode ser num int . Caramba é assim tão dificil mandar dados por uma serial?

Enviar pela porta série não é difícil mas garanto-te que envio 100 coisas diferentes que obedecem a isto "Enviar para o computador os dados sem nenhuma formatação." e nenhuma a tua aplicação vai conseguir interpretar.

Eu pelo menos continuo sem perceber o que ele quer que envie ao certo mas desconfio que seja uma string já com a temperatura como por exemplo:
Serial.print("18.43") //Arduino

Se temp é um inteiro então tem 16bits no mínimo é verdade mas então há outro problema que é como representas o numero, põe o código que usas no Arduino que o pessoal tira-te já essa duvida!
Título: Re: Temperature Analyser
Enviado por: GnGz em 22 de Fevereiro de 2011, 09:51
O arduino de certeza que esta a enviar um int, porque se esse temp é uma leitura do adc que é de 10 bits, ele tem de enviar 16 bits, nao existe nenhuma dificuldade em enviar dados por Serial, mas podias por exemplo ter um protocolo em que tinhas um caracter para indicar inicio e fim de pacote de dados e processar a temperatura no Arduino e so enviar a temperatura ja processada.

O Protocolo será criado na próxima versão. Por acaso vem de um dispositivo i2c.

A temperatura em principio pode ser num int . Caramba é assim tão dificil mandar dados por uma serial?

Enviar pela porta série não é difícil mas garanto-te que envio 100 coisas diferentes que obedecem a isto "Enviar para o computador os dados sem nenhuma formatação." e nenhuma a tua aplicação vai conseguir interpretar.

Eu pelo menos continuo sem perceber o que ele quer que envie ao certo mas desconfio que seja uma string já com a temperatura como por exemplo:
Serial.print("18.43") //Arduino

Se temp é um inteiro então tem 16bits no mínimo é verdade mas então há outro problema que é como representas o numero, põe o código que usas no Arduino que o pessoal tira-te já essa duvida!

Quando falo em formatar é enviar a temperatura somente sem texto adicional. E sim cheira-te a uma string e é uma string mas podes enviar também em INT.

Cumprimentos,
Título: Re: Temperature Analyser
Enviado por: microbyte em 22 de Fevereiro de 2011, 19:17
GnGz, não leves a mal estarmos a fazer estas questões, estamos a tentar perceber como funciona o programa, para outras pessoas o poderem usar. O que "envias por serial" são simples bytes...

Toma por exemplo a temperatura que tens na imagem: 18.43º
Assim de repente surgem-me várias possibilidades:
1. Enviar como string, em ASCII
1.1. Enviar 6 caracteres, ou seja 6 bytes - '1' (0x31), '8' (0x38), ... (+ terminador)
1.2. Enviar 7 caracteres, ou seja, incuires o símbolo de graus (+ terminador)
1.3. Variantes com caracteres de inicio e terminadores pre-determinados
2. Enviar como float: sempre 32 bits - sempre 4 bytes
3. Enviar como double: o dobro da precisão - 8 bytes
4. Enviares 2 bytes (10 bits do ADC extendidos para 16 bits)

Por isso como vês tens uma quantidade de formas diferentes, e todas se incluem na tua frase "enviar por serial".
Agora, não percebi como é que podes enviar como "INT".
Título: Re: Temperature Analyser
Enviado por: GnGz em 22 de Fevereiro de 2011, 19:40
Em principio ele lê dessas maneiras?

Para a int é dificil ? :

Código: [Seleccione]
Int temp = 18
Int dev = 48

Serial.print = temp
Serial.print = "."
Serial.print = dev

Título: Re: Temperature Analyser
Enviado por: senso em 22 de Fevereiro de 2011, 23:02
Os teus posts sao sempre semi-enigmaticos GnGz..
Mas efectivamente estas a ler uma temperatura em que?
O arduino como tem funçoes overloaded se lhe enfiares com um int para o serial ele manda dois bytes sem tu veres isso.
Título: Re: Temperature Analyser
Enviado por: andre_f_carvalho em 22 de Fevereiro de 2011, 23:47
boas,


acho o que ele esta a querer dizer no enviar a temperatura, é como se usar-mos picaxe, lemos o valor do sensor e com os calculos normais na programação definimos o valor final numa memoria (exemplo "b0" no caso de usar picaxe) e depois utiliza-se o comando debug (usado para verificar os valores que estao a ser usados nas memorias "b" e ou "w" no microcontrolador) e assim se obtem os valores da temperatura, no caso de enviar por serial utiliza-se um outro comando, que não sei como se chama :P e assim da para o que ele quer fazer no programa..

cump
Título: Re: Temperature Analyser
Enviado por: GnGz em 23 de Fevereiro de 2011, 13:37
Sim , envias para o pc normalmente ..


Código para o Arduino:
Citar
#include <Wire.h>
#define address 0x4F // A0|A1|A2 a High
#define baudrate 9600

void setup() {
  Wire.begin(); // I2C Arranque
  Serial.begin(9600); // Serial Arranque
}

void loop(){
  // Configuração do ds1631+
  Wire.beginTransmission(address); //Inicio
  Wire.send(0xAC); // Configuração
  Wire.send(B00001111); // POL | 12 bit | OneShot
  Wire.endTransmission(); //Fim
  delay(10); // Delay necessária

  // Conversão da Temperatura
  Wire.beginTransmission(address); 
  Wire.send(0x51);
  Wire.endTransmission(); 
  delay(10);

  // Espera que a conversão esteja acabada
  byte conf = 0;
  while ( conf & B1000000 != B10000000 ) {
    delay( 100 );
    Wire.beginTransmission(address); 
    Wire.send(0xAC); 
    Wire.endTransmission();
    conf = Wire.receive();
  }

  // Pedir a Temperatura
  Wire.beginTransmission(address); 
  Wire.send(0xAA); 
  Wire.endTransmission();

  Wire.requestFrom(address, 2); // Pedir 2bytes


  int temp = Wire.receive();
  // read second byte
  int frac = Wire.receive();
  
  if (temp == 0) {Serial.println("Erro");} else{
  
  Serial.print(temp);
  Serial.print( "." );

  frac = 100 * (frac & 0xF0 )/ 256;
  if ( frac < 10 ) {
    Serial.print("0");
  }
  Serial.print( frac );

  delay(1000);

  }

  
 
}