Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Carlos Filho_448131

Programa para leitura de termopar tipo k através do Pic18f1320

Recommended Posts

Galera, tudo beleza??? :D

Sou novo na parte de programação, ai tava precisando de ajuda. Faço engenharia mecânica e estou fazendo um projeto para leitura de 3 termopares que ficarão em cantos distintos de um motor afim de medir a variação de temperatura em função da eficiência do motor.

Eu pretendo usar o Pic18f1320 que contem 18 pinos. Pretendo usar 14 nos quais sao 3 para os termopares, queria colocar um display em um dos termopares que sao 7 pinos, o oscilador de cristal 2, o AD595 que no caso será um para cada termopar totalizando 3 pinos e 2 da alimentação que da no total 14 pinos. 

 

Estou apanhando no MPLAB pra fazer o programa e levando uns tapas do ISIS do Proteus quando tento fazer o circuito.

 

Nao sei quase nada de programação(só sei mexer no matlab mas nao ajuda muito em C)

 

Agradeço muito ^^


kkkkk esqueci de dizer o que eu queria

 

Se estou no caminho certo mesmo. E se é muito trabalho para um iniciante pois meu orientador ainda quer q eu envie os dados via radio do pic diretamente pra o computador. 

 

valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Carlos Filho_448131,

 

Bom, primeiro de tudo, começe com um esquema do que voce está fazendo, pode ser no ISIS mesmo, fica mais fácil alguém te ajudar.

 

Acho que voce vai ter de aprender mais de C, a turma pode te ajudar nas suas dúvidas, mas é você que vai ter de fazer o programa.... pois é para voce aprender, não é ?

 

Primeiro, os termopares.... tem vários circuitos, mas profissionalmente se usa uma junção fria , verifique bem estes circuitos, e pense como voce vai usar os conversores A/D do Pic, o fundo de escala, a referência, etc.....

 

Quanto à transmissão de dados, se vai usar um computador, melhor usar um par de transceptores seriais... fica muito mais simpls de fazer a interface com o Windows.

 

Mas voce vai precisar usar algo do lado do micro, tipo um Visual Studio para fazer o programa.... ou seja, tem bem mais coisa para voce aprender ! 

 

Mas lembre do que eu falei aqui, voce vai pecisar aprender bem a programação em C, existem livros, tutoriais, assim voce poderá fazer o corpo do programa inteiro, e onde você tiver dificuldades, as respostas irão aparecer, ok ?

 

E seja bem vindo !

 

Paulo

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • Valeu pelas dicas parceiro! É pra meu tcc. É que meu orientador não é muito presente ¬¬ .Vou começar agora ^^

    Qualquer apareço por aqui pra perturbar de novo kkkkk

    vlwww

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Olha eu!!
    Seguinte consegui fazer um programa com base em alguns que vi na net no CCS C. Daí ficou assim:
    #include <18F2550.h>#DEVICE ADC = 10#FUSES NOWDT                    #FUSES NOUSBDIV                 #FUSES HS                       #FUSES PUT                      #FUSES NOBROWNOUT               #FUSES MCLR#FUSES NOLVP                    #use delay(clock=8000000)#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,stream=PORT1)// PINOS LCD#define LCD_DB4   PIN_B0#define LCD_DB5   PIN_B1#define LCD_DB6   PIN_B2#define LCD_DB7   PIN_B3#define LCD_E     PIN_C0#define LCD_RS    PIN_C1#include <flex_lcd.c>#include <math.h>float reading;float temperature, fahrenheitTemp;void main(){   setup_adc(ADC_CLOCK_INTERNAL);    setup_adc_ports(AN0);          lcd_init();                      // INICIAR LCD   lcd_putc("\f");                  // LIMPAR LCD   delay_ms(500);   while(true)   {                           set_adc_channel(1);   // CANAL SELECIONADO         reading = read_adc();            delay_ms(1000);             temperature = (((reading*0.0048828125f))*100);  // Transformação dos dados para Celsius (Calibração!!)         fahrenheitTemp = (temperature*1.8) + 32;     // Para Fahrenheit         printf(lcd_putc,"\n%3.2f%CC, %3.2fF",temperature,0xdf, fahrenheitTemp);              }}

    Nesse ai to pegando os dados do segundo termopar no Pino A1

     

    Ai (não sei se tem, mas nao achei na net) queria saber se tem algum jeito de gravar os dados dos 3 termopares e salvar (pelo que eu vi acho que pode salvar os dados no proprio pic e depois retirar) para depois fazer  grafico dos 3. To mais acostumado com Matlab e lá tem :P
     
    Se liga como ficou a interface 
    www.imageshack.com/i/nm82hcj
    Editado por Carlos Filho_448131

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    @Carlos Filho_448131,

     

    Gostei do "com base" ... tipo 99% de base né kkkkk !

     

    Eis o projeto original :

     

    http://stephenawotula.blogspot.com.br/

     

    Mas não se esqueça desta frase do autor : Please, note that this is for educational purposes ONLY.

     

    Deve ter um motivo, qual será ? Isso é para voce pensar !

     

     

    Nada te impede de ler cada uma das entradas analógicas, fazer a conversão, e guardar em três variáveis, e ao final voce envia as três em sequência...

     

    Paulo

    Editado por aphawk

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • kkkkkkk de fato. Isso é pra fazer um equipamento pra eu poder usar no meu tcc. O que vou usar só são os dados que vou obter. Só vou fazer porque pra pegar um emprestado nessa gota de universidade é uma burocracia da gota na qual eu nao tenho tempo (mas tambem desejo aprender e entender se possivel) :/

    . O que deu trabalho foi no ISIS pra ver se daria certo, ai fui testando um por um. estou aqui tentando aprender o WRITE_EEPROM e o READ_EEPROM mas não entendo os endereços. Pensei que endereço era PIN_A1

    Editado por Carlos Filho_448131

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Boa noite,

     

    Uma dica pra você, pesquise sobre o componente MAX6675, usei em vários projetos e facilita muito a leitura do termopar pois entrega a temperatura através de uma comunicação SPI 3 vias.

     

     

    Att,

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • olha eu!

    O que ta errado nessa gota??

    To tentando fazer com que os termopares apareçam no lcd a manhã toda e nada

         set_adc_channel(0);   // CANAL SELECIONADO         reading = read_adc();            delay_ms(250);             temperature0 = (((reading*0.0048828125f))*100);  // Transformação dos dados para Celsius (Calibração!!)                                      set_adc_channel(1);   // CANAL SELECIONADO         reading = read_adc();            delay_ms(250);             temperature1 = (((reading*0.0048828125f))*100);  // Transformação dos dados para Celsius (Calibração!!)                                     set_adc_channel(2);   // CANAL SELECIONADO         reading = read_adc();            delay_ms(250);             temperature2 = (((reading*0.0048828125f))*100);  // Transformação dos dados para Celsius (Calibração!!)                  while(1){         lcd_gotoxy (1, 1);         printf(lcd_putc,"\n%3.2f%C,%3.2f",temperature0,0xdf,temperature1);                  lcd_gotoxy (1, 2); // Posiciona cursor no LCD         printf(lcd_putc,"\n%3.2f%C",temperature2); 

    e ainda ta dando erro de ADC nas entradas


    Consegui ^^

      while(true){         lcd_gotoxy (1, 1);         printf(lcd_putc,"1:%3.2f%C,2:%3.2f%c",temperature0,0xdf,temperature1, 0b11011111);                  lcd_gotoxy (1, 2); // Posiciona cursor no LCD         printf(lcd_putc,"3:%2.1f%cC",temperature2, 0b11011111);          }

    Só que ainda ta dando erro. O unico PIC disponivel é o PIC16F877. To lendo o datasheet pra ver se ajuda

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    set_adc_channel(0);   // CANAL SELECIONADO
    reading = read_adc();  

     

    E na parte do datasheet onde diz que devemos ter um intervalor da ordem de 20uS para que o PIC consiga trocar de canal AD?

     

    Tenter colocar esse delay.

     

    Não conferi o resto do código.

     

    Falou
     

    Editado por MatheusLPS

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Deu em nada a troca :/. Ta do mesmo jeito

    agora o bicho pegou.

    O erro era que eu nao tinha configurado as portas como analogicas. Ficou assim:

    #include <16F877.h>#DEVICE ADC = 10#FUSES NOWDT                    #FUSES HS                       #FUSES PUT                      #FUSES NOBROWNOUT               #FUSES NOLVP                        #use delay(clock=8000000)#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,stream=PORT1)// PINOS LCD#define LCD_DB4   PIN_B0#define LCD_DB5   PIN_B1#define LCD_DB6   PIN_B2#define LCD_DB7   PIN_B3#define LCD_E     PIN_C0#define LCD_RS    PIN_C1#include <flex_lcd.c>#include <analo.h>float reading;float temperature0,temperature1,temperature2 ;void main(){   setup_adc(ADC_CLOCK_INTERNAL);    setup_adc_ports(AN0_AN1_AN2_AN3_AN4);   setup_adc(ADC_CLOCK_INTERNAL);   setup_psp(PSP_DISABLED);   setup_spi(SPI_SS_DISABLED);   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);   setup_timer_1(T1_DISABLED);   setup_timer_2(T2_DISABLED,0,1);        lcd_init();                      // INICIAR LCD   lcd_putc("\f");                  // LIMPAR LCD   printf ("TempPictronics\r");    delay_ms(500);      while(true)   {                           set_adc_channel(0);   // CANAL SELECIONADO         reading = read_adc();            delay_us(20);             temperature0 = (((reading*0.0048828125f))*100);  // Transformação dos dados para Celsius (Calibração!!)                                      set_adc_channel(1);   // CANAL SELECIONADO         reading = read_adc();            delay_us(20);             temperature1 = (((reading*0.0048828125f))*100);  // Transformação dos dados para Celsius (Calibração!!)                                     set_adc_channel(2);   // CANAL SELECIONADO         reading = read_adc();            delay_us(20);         temperature2 = (((reading*0.0048828125f))*100);  // Transformação dos dados para Celsius (Calibração!!)                  while(true){         lcd_gotoxy (1, 1);         printf(lcd_putc,"T1:%2.1f%cC,T2:%2.1f%cC",temperature0,0xdf,temperature1, 0b11011111);                  lcd_gotoxy (1, 2); // Posiciona cursor no LCD         printf(lcd_putc,"T3:%2.1f%cC",temperature2, 0b11011111);                   printf("%2.1f\r",temperature0);         }   }

    Mas agora tá dando erro Error 23 no arquivo 16f877.h "Can not set this option this far into the code" e é em

    #device PIC16F877 que aparece. Dando o mesmo erro no arquivo analo.h

    Editado por Bcpetronzio

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

    Direitos autorais

    Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

    ×