Ir ao conteúdo
  • Cadastre-se

Arthur Bispo de Lima

Membro Júnior
  • Posts

    6
  • Cadastrado em

  • Última visita

  1. Ok vou estar fazendo isso quando eu terminar eu aviso se tive dúvidas ou se consegui até + obrigado por tudo mesmo
  2. Então int eu não posso usar porque quero vírgula ou seja int só são variáveis inteiras já float usa decimais eu vi esse word eu ainda estou vendo a biblioteca dele por isso não uso Chat txt[5] e pra definir as casas decimais mostradas Queria saber se tem como declarar uma variável e mostrar através do String 0.001 o valor pois dividiu por 1000 ou seja o código está agora Timer=TMR0+(a*255); FloatToStr (timer/1000, txt); Lcd_Out (1,2,txt); Delay_ms (10); Eu usaria outro tipo como longToStr ou não?
  3. Isadora Ferraz e Paulo muito obrigado pela ajuda eu consegui fazer a medição em altas frequências. O que eu fiz primeiramente utilizei um transistor que manda 0 ou 1 na sua saida em altas frequências depois alterei um pouco o código tirando a porta analógica,pois antes eu utilizava, por que usava um amplificador operacional(como comparador) e tirei a última relação do PortC por isso também. Agora eu joguei a saída do transistor na entrada do portRA4 e todo sinal que ele manda o Pic recebe e conta então agora é só fazer a conversão correta de centímetros milímetro e polegada para conseguir reproduzir um traçador de altura Digital Agradeço a vocês pela ajuda peço só mais 1 ajuda que é nessa questão de conversão. Quando eu mando á contagem para variável float tenho que dividi-lá por 1000 que seria milímetro mais wuando mando compilar e mostrar no LCD o número 1 fica 1.9999 ou seja queria que ficasse 0.001 como faço para que mostre no LCD isso obrigado desde já.
  4. Obrigado, Aphawk (Paulo) por responder. Mas a questão das variáveis Float, acho que não ira interferir nos pulsos. Já que até aonde eu sei, o float só demora mais para efetuar as leituras dos sinais, mas isso naõ quer dizer que ele perdera os sinais. ( Claro que posso estar errado) Mas vou dar uma olhada nas variáveis do tipo Word valeu adicionado 39 minutos depois Então a primeira foto foi um teste para ver se o encoder estava mandando pulso com isso colocamos um LED na saída e um Display e ele contou normalmente. Mas a partir disto colocamos o PIC e o LCD ai eu coloquei OPTION_REG=0b0101111; como no final 111 ou seja antes estava OPTION_REG=0b0101000; ai ele contava devagar com o 111 ele contou mais rápido mas mesmo assim ele não conta suficientemente melhor ai eu queria saber como aumentar a Frequencia ou seja que lê consigna ler praticamente um moto(encoder) que esta na foto em baixo ai eu queria saber se meu option reg ta errado ou alguma linha do codigo ou até mesmo usar algo diferente Obrigado! Isadora
  5. Bom Dia, Boa Tarde, Boa Noite. Farei um projeto Traçador de Altura Digital que consta em fazer a contagem de pulsos Analógicos de um sensor(Enconder) assim realizar a contagem transformando esses pulsos em uma contagem em centímetros/milímetros/polegadas. Estou encontrando dificuldade em lidar com os pulsos do enconder, a situação é o seguinte: o enconder mandara pulsos para o PIC 16F887 que por sua vez, mandara para o LCD que mostrará a contagem . Só que durante os testes, eu percebi que o Funcionamento até a parte do enconder está saindo como planejado, só que quando passo os pulsos para o PIC(utilizando o Timer0-Tipo contagem) esses pulsos não são todos lidos, apenas alguns. onde é mostrado no LCD. Tenho duas hipóteses: pode ser a frequencia do Timer 0 ou do PIC ou alguma interferencia externa. Testei com um Clock(imitando um encoder) com uma frequência 10 Hz no Proteus e ele contava, mas quando coloco mais de 10 Hz ele não consegue contar. //----------------------------------LCD---------------------------------------// sbit LCD_RS at RD4_bit; sbit LCD_EN at RD5_bit; sbit LCD_D4 at RD0_bit; sbit LCD_D5 at RD1_bit; sbit LCD_D6 at RD2_bit; sbit LCD_D7 at RD3_bit; sbit LCD_RS_Direction at TRISD4_bit; sbit LCD_EN_Direction at TRISD5_bit; sbit LCD_D4_Direction at TRISD0_bit; sbit LCD_D5_Direction at TRISD1_bit; sbit LCD_D6_Direction at TRISD2_bit; sbit LCD_D7_Direction at TRISD3_bit; //--------------------------------VARIAVEIS-----------------------------------// float clk; float Milimetros; float MM; float timer; float timer1; int a=0; int af=0; float valor; char txt[15]; void main() { ANSEL= 0x02; // Configuração AN2 pin as analog ANSELH = 0; // Configuração de outros AN pinos as digital I/O C1ON_bit = 0; // Disabilita comparadores C2ON_bit = 0; //------------------------Habilitando a porta Analógica-----------------------// Adc_Init(); // Inicia porta analógica //---------------------------Saidas e Entradas--------------------------------// TRISA = 255; // PORTA is input TRISC = 0; // PORTC is output TRISB = 255; // PORTB is input TRISD = 0; // PORTD is output INTCON = 0; //-----------------------------Configuração do TMR0---------------------------// OPTION_REG=0b0101000; //modo contador TMR0=0; //Inicializa o registro TMR0 com o valor 0. //-----------------------------Saida do LCD-----------------------------------// Lcd_Init(); // Initialize LCD Lcd_Cmd(_LCD_CLEAR); // Clear display Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off Lcd_Out(1,2,"TRACADOR"); Lcd_Out(1,12,"DE"); Lcd_Out(2,2,"ALTURA"); Lcd_Out(2,10,"DIGITAL"); //------------------------------Contador--------------------------------------// while(1) { Delay_ms(100); valor = Adc_Read(0);//Faz a com que a variavel valor seja igual a porta analogica lida que é a RA0 if(TMR0==1&&a==0) { af=1; } if(af==1) { af=2; Lcd_Cmd(_LCD_CLEAR); } if(af==2) { if(INTCON.TMR0IF) { INTCON.TMR0IF=0; //limpa a flag TMR0 = 0; a++; } timer=TMR0+(a*255); timer1=timer/1000; floatToStr(timer1,txt); txt[5] = 0; Lcd_Out(1,2,txt); } //----------------------------PORTA ANALÓGICA "CLOCK"-------------------------// if(valor<614) //Quando valor for menor que 3V { RC0_bit = 0; //Manda zero } else //Se não { RC0_bit = 1; //Manda um } } } //------------------------------Conversão dos valores-------------------------//

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...