• Welcome to LusoRobótica - Robótica em Português.
 

Temperature Analyser

Started by GnGz, 21 de February de 2011, 21:10

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

GnGz


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.


Como usar:


  • Ligar o microcontrolador ao Computador.
  • Executar o programa, selecionar uma porta serial e de seguida clicar no botão "LER".
  • Caso a porta não esteja a ser usado por outro software. Os dados aparceram na area "DADOS".

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

Espero que seja útil a alguém.

senso

E o respectivo codigo para o micro-controlador?
Avr fanboy

GnGz

Mais tarde posto um de exemplo em Arduino e secalhar ainda mais tarde um em AVR GCC.
Gostaste?

andre_f_carvalho

basta entao enviar o valor por serial nessa com?

GnGz

Tens de selecionar a porta do teu microcontrolador , no caso da imagem é a COM3.

Cumprimentos,

andre_f_carvalho

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,

GnGz

No teu  caso acho que funciona , quando conectas ao pc não ficas com uma porta com equivalente a esse mcu?

microbyte

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.

GnGz

Receber dados de um bus ou entrada ,  e mandar por serial , sem formatação o resto trata o software.

Quote
Serial.print(temp)


microbyte

Quote from: GnGz on 21 de February de 2011, 22:07
Receber dados de um bus ou entrada ,  e mandar por serial , sem formatação o resto trata o software.

Quote
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.

GnGz

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

senso

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.
Avr fanboy

metRo_

Quote from: GnGz on 21 de February de 2011, 23:11
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!

GnGz

Quote from: senso on 22 de February 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.

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

Quote from: metRo_ on 22 de February de 2011, 01:14
Quote from: GnGz on 21 de February de 2011, 23:11
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,

microbyte

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".