FAÇA UM FREQUENCÍMETRO PARA SEU RECEPTOR – COM PIC 16F628A (REF130)

Gostaria de ler a frequência sintonizada por seu receptor em um display LCD?

Através da leitura da frequência do oscilador local e subtraindo a frequência intermediária, poderemos ler diretamente a frequência sintonizada. Isto pode ser bem comodo, dispensando a escala mecânica. São inúmeros projetos na Internet com este tópico, sendo que alguns tem até recursos para alterar o valor da frequência de FI, sem necessitar uma compilação do programa.
Esta versão, no entanto, é bem simples, podendo se alterar os valores no arquivo ‘C’ e recompilando, sem muitas facilidades. Geralmente, usamos de forma definitiva em um receptor, não justificando código adicional , que talvez, nunca seja usado. Veja o esquema abaixo:

Para fazer a leitura da frequência, foi usado o Timer 1, em uma janela de tempo de 1 segundo. Um pré-amplificador com 2 transistores eleva o nível de sinal para valores apropriados a entrada do Timer 1. Um Trimpot de 4k7 foi usado para ajustar adequadamente o valor da tensão nesta entrada. Inicialmente, podemos fazer um ‘jump’ entre a entrada do frequêncimetro com o pino 16 do PIC. O Trimpot deve ser ajustado de forma a apresentar a frequência do próprio oscilador do pic, no caso, a frequência de 20 Mhz. Depois de ajustado, poderemos ligar a entrada no oscilador local do aparelho, se for para uso junto ao receptor. A apresentação é feita em um LCD de 16×2, usando apenas 4 linhas para os dados enviados. Para calibrar o equipamento, foi previsto um Trimmer de 3-30 pF. Pode-se usar um frequencímetro padrão para isto. A alimentação poderá ser fornecida pelo próprio receptor, com ajuda de um regulador 7805.
Caso necessite adicionar ou subtrair o valor da frequência intermediária, comente/descomente as linhas de código,conforme abaixo:

//==============================================================================
//ESCOLHA AQUI O VALOR DA FREQUENCIA INTERMEDIARIA (NÃO USE PONTOS OU VIRGULA):

int32 const valor_FI = 8988300; //FI Altere conforme a freq. intermediaria
//int32 const valor_FI = 8989000; //FI Altere conforme a freq. intermediaria

//==============================================================================
//ESCOLHA A AÇÃO: SE DEVERÁ SOMAR OU SUBTRAIR (EM ‘HZ’)
//OBS.CASO NÃO NECESSITE SOMAR OU SUBTRAIR, APENAS LER A FREQUÊNCIA REAL, ENTÃO
// COMENTE AS 2 LINHAS ABAIXO.

// #define soma_freq_intermediaria //DESCOMENTE PARA SOMAR VALOR DA FI
#define subtrai_freq_intermediaria //DESCOMENTE PARA SUBTRAIR VALOR DA FI

//OBS. DESCOMENTE APENAS UMA OPÇÃO.
//==============================================================================

Depois, deverá recompilar o projeto para obter o novo arquivo Hex, que será usado para carregar o PIC16f628a.
OBS. Esta montagem foi feita apenas em placa de protoboard, sujeita a bugs ainda não identificados, sendo fornecido os arquivos que poderão ser modificados conforme a necessidade do hobista.

Segue pasta zipada com os arquivos do projeto feito em compilador “C” ( Atenção: Este hex nesta pasta, está compilado em modo “subtraindo FI” de 8,989.000 mhz. Caso necessite outros valores ou ainda sem o recurso de somar/subtrair, então comente as linhas conforme o explicado no artigo acima e recompile. Verifique se abaixo não tem alguma versão já compilada, que possa usar.) :

freq_cw

Para facilitar, segue uma versão com compilação que subtrai 455 Khz da frequência de entrada e em Hertz:

freq_cw_sub_455khz

Adicionalmente, segue uma versão com compilação que subtrai 455 Khz da frequência de entrada, com 1 dígitos após a virgula e em Kilohertz:

freq_cw_AM

Também, para quem desejar ter apenas a leitura direta da frequência de entrada, sem necessitar somar ou subtrair alguma frequência Intermediária, deverá usar esta versão:

freq_cw_no_FI

Em 08/08/2016 foi postado esta versão com uso de outros pinos do microcontrolador para comunicação com o LCD (compilado para leitura direta da frequência de entrada. Altere para outras opções no arquivo c e recompile para obter novo arquivo hex):

FREQ_CW_GEN

Manuais:
PIC16f628a

Curiosidades:
Espantosos sentidos no mundo animal
“Um trabalhador incansável”
Proteja sua audição!
Escritório ou trincheira?
Manter sigilo — ontem e hoje
Qual o objetivo dos cuidados paliativos?
A língua da selva — segredos da comunicação entre os animais
O que leva um homem a bater na mulher?
O que é cistite intersticial?
O que você deve saber sobre epilepsia
Como recuperar-se de um divórcio

Outros assuntos:
Um site para você
Recuperar a confiança
Como disciplinar seu filho adolescente
Por que eu me corto?
Desempenhem bem o papel de pais
Como fazer seu segundo casamento dar certo
O que acontece quando morremos?
Como criar filhos responsáveis
Como administrar o seu dinheiro
Ensine valores morais a seus filhos
Ensine seus filhos bons principios com atividades de colorir
Como posso ter ânimo para exercitar
Como posso controlar meu peso?
Entrevista com um bioquímico
Adolescentes- O que fazer se estou sofrendo bullying?
Como evitar ferir com palavras?
Como tratar seu cônjuge com respeito?
Perguntas Bíblicas Respondidas

Até o próximo artigo!!!

104 comments on “FAÇA UM FREQUENCÍMETRO PARA SEU RECEPTOR – COM PIC 16F628A (REF130)

  1. Caro Claudio, boa tarde.
    Tudo ok e entendido.
    Uma duvida:
    Tenho um programa LCDDIGI.ASM escrito para funcionar com LCD 2 x 8 ou 1 x 16.
    Pergunto: Caso eu usar um LCD 2 x 16 terá alguma incompatibilidade com o programa?
    Estou perguntando, porque montei esse projeto e não funcionou. O único componente diferente do recomendado pelo autor que usei foi o LCD. Eu não tenho o 2×8 ou 1×16.
    Att,
    João.

    1. Olá João! Não sei te informar de bate pronto. Veja os datasheets de ambos e compare. Geralmente, um programa para lcd 1×16 irá funcionar no de 2×16 somente na primeira linha, sem problemas. Mas todo caso pode ter sua exceção.
      Claudio

  2. Caro Claudio, boa noite.
    Acredito que descobri a pólvora, rs rs rs. Quase certeza que para gerar o .HEX eu só preciso dos arquivos, abaixo, na mesma pasta:
    freq_cw.c e LCD_S.c .
    Pelo compilador de PIC “C” a operação foi bem sucedida, sem erros.
    Confirme se estou certo, por favor.
    Se positivo, vamos em frente.
    Att,
    João.

    1. Olá joão! Se você conseguiu obter o hex é sinal que foi bem sucedido. Do contrário haveria mensagens de erro e falharia a compilação.
      Cláudio

  3. Caro Claudio, boa noite.
    Estou estudando o assunto. Instalei o Compilador para PIC C. Abri uma pasta “x” e coloquei os 3 arquivos extensão .c e 1 arquivo extensão .h nesta pasta.
    Estes arquivos são:asmoutput.c ; freq_cw.c ; LCD_S.C e freq_cw.h.
    Pergunto: Qual destes arquivos devo chamar para fazer a compilação? Os arquivos freq_cw.c e LCD_S.c tenho quase certeza que devem estar juntos e chamo o freq_cw.c. Minha dúvida maior está em relação aos outros dois arquivos (asmoutput.c e freq_cw.h)
    Por favor, me explique este detalhe para eu pegar o fio da meada e seguir em frente.
    att,
    João.

  4. Caro Claudio, boa noite.
    Me desculpe, mas não entendi nada. Tenho asmoutput.c ; freq_cw.c ; freq_cw.h ; LCD_S.c ; Pergunto: o que preciso fazer para gerar o .hex.
    Esse seu projeto é interessante mas estes arquivos estão muito complicados (como compilar esse monte de arquivo?). Se tivesse somente o asm para fazer as alterações e compilar ficaria mais simples (que prá mim já é muito complicado).
    Se voce puder dar uma analisada no asm que te enviei por e-mail, vai me ajudar bastante. O projeto , também , é bom, inclusive está aqui montado, mas estou com esse problema de não poder mudar as FI’s. Eu substituo a FI que está no asm compilo sem erros e ao ligar o circuito a FI antiga que apaguei no asm é que aparece na tela do LCD. Ou seja, é como se não tivesse feito nenhuma alteração no asm. Pedi uma ajuda ao autor, que liberou o asm, mas não obtive resposta. O circuito, no momento, só está lendo a frequência direta. As tres FI’s que estão no asm não me interessam, por isso quero mudá-las.
    Mais uma vez desculpe e muito obrigado.
    Att,
    João.

  5. Caro Claudio, boa noite.
    Muito bom. Copiei o circuito e a pasta zipada.
    Com relação aos arquivos da pasta zipada, fiquei confuso. Tem o .HEX mas não encontrei o ASM.
    Tem um monte de arquivo com extensões diversas.
    Tem: asmoutput.c ; freq_cw.c ; freq_cw.h ; LCD_S.C
    Por favor me ajude. Para compilar eu preciso do ASM e mais quais destes acima?

    Em tempo: Encontrei na web um asm/hex (liberado pelo autor). Montei o circuito e funcionou muito bem. só que não consegui mudar a FI que está no asm. te mandei por e-mail, onde expliquei o que está ocorrendo. Por favor dê uma analisada.

    Fico no aguardo.
    Att,
    João

    1. Olá João! Você está um pouco confuso, porque o programa foi feito em linguagem “C’ ao invés de ‘Assembly’. O arquivo “asmoutput.c” tem o programa gerado em assembly que poderá ser usado no MpLab_ide para alterações e recompilações. Mas é mais prático fazer as mudanças usando um compilador C da CSS e tendo como saída o arquivo Hex.
      Ainda não vi o circuito que você mandou, mas irei olhar e depois retorno.
      Cláudio

Comments are closed.

Back To Top