Tuesday 26 September 2017

Si5351 Vfo Bforex


Configuração de hardware simples VFO do Si5351 Eu vejo que há uma necessidade de um esboço Si5351 simples para que os jamões tenham começado a usar este pequeno e barato chip barato. Comecei baixando, Przemek Sadowski, o código SQ 9NJE e sua biblioteca Si5351 e consegui-lo trabalhar com muito poucos problemas. O código Przemeks vem com uma biblioteca chamada Rotary (escrita por Ben Buxton) que é usada para fornecer um codificador rotativo dirigido por interrupção para sintonização. Eu usei eventualmente a biblioteca rotativa com a biblioteca Jasons (NT7S) Si5351, mas mantive a maior parte do esboço de Przemeks Arduino. Apenas tenha cuidado se tentar ambas as bibliotecas si5351, pois eles têm o mesmo nome. Isso causará um problema se você tentar e carregá-los na pasta Arduino Libraries :). Você precisará: (Ive listados itens Adafruit, mas você pode obtê-los quase em qualquer lugar). Aqui está o layout: uso clk0 para o vfo e clk2 para o bfo. Seu LCD pode ter uma resistência de limitação de corrente já instalada entre o pino 15 e a luz traseira. Nesse caso, você pode fornecer 5v diretamente para o pino 15. Use este esboço e biblioteca atualizados desta página que permitirão as compensações IF, a saída X4 Ou receptores de conversão direta Se você nunca usou o Arduino antes de ir aqui para a Academia de Programação Eletrônica e assistir o primeiro primeiro e segundo vídeos (veja o segundo primeiro). Não se pode enfatizar a importância de fazer uma instalação adequada do Arduino IDE (I ntegrated D evelopement E nvironment) para que seus programas e suas bibliotecas baixadas permaneçam separados da localização do Arduino IDE e as bibliotecas que estão incluídas em cada um Nova versão de um novo download do IDE. 42 comentários: boa série de postagens. Recebi as bibliotecas e o código por suas instruções e juntei coisas por seu diagrama e agora parece estar funcionando. Esta foi a minha primeira experiência enganando as bibliotecas de usuários, por isso aproveitei a oportunidade de aprender a escrever o meu. 73 - Nick, WA5BDU Oi Nick, feliz que você conseguiu tirar algo dessas postagens. Boa sorte para escrever suas próprias bibliotecas - pode ser muito divertido. Confira o código usado no Minima e no Ten Tec Rebel. Mesmo que não seja tudo baseado no mesmo dispositivo de produção de sinal, ainda é baseado no Arduino. Recebi muitas boas informações de programação de ambos os sites. Groups. yahooneogroupsTenTec506Rebelfiles (você terá que se juntar) githubafarhanradiono 73, Tom, ak2b Acabei de completar seu v5 si5351. E está funcionando quotkinda sortaquot. Tenho saída nas freqüências apropriadas, mas sem alteração na freqüência quando o codificador é girado. O botão passo está funcionando, assim como a exibição. Qualquer ajuda seria apreciada. Oi Paul, Se você não tiver erros ao compilar, eu acho que sua fiação pode precisar verificar. Certifique-se de que o pino central do codificador rotativo vá ao solo. Meu codificador continua saindo da linha de pão e às vezes tenho que segurá-lo :). Tom Obrigado por me voltar tão rápido. Fui sobre a fiação muitas vezes parece-me bem. Uma coisa que eu acho que está fora, é que apenas um dos dois pinos do codificador quot2-3quot é alto, é assim que é suposto ser apenas por sorte que liguei alguns resistores de pull up e tiveram a forma de onda apropriada quando eu virei o Codificador, mas ainda não há mudança de freqüência. Apenas para me certificar de que liguei outro Arduino Uno e tive os mesmos resultados. Ao observar o escopo, eu podia ver que um pino de entrada estava mudando de estado enquanto o outro ficava a 0 volts. A maneira como eu consigo é que deve haver dois sinais do codificador para que o código possa decidir o sentido de rotação. Eu olhei o código e não consegui ver onde o código define os pinos de entrada altos. Eu não sou um cara de computador, então tenho que ter procurado algo. Oi Paul É importante notar que o codificador é interrompido e igualmente importante observar que apenas os pinos 2 e 3 do Uno são os pinos de interrupção. Se você se afastar disso, não funcionará. Você deve ver os dois pinos do encoder que mudam o estado em vários momentos. Se não estiverem, você pode ter um codificador ruim. (Tente mudar os pinos 2 e 3 com o pino do codificador que está mudando para verificar se o Uno está certo.) Você não precisa de pull-ups nos dois pinos do codificador nem precisa configurá-los para nada. Este código cuida disso: PCICR (1 ltlt PCIE2) Permite a interrupção da mudança de pino para o codificador PCMSK2 (1 ltlt PCINT18) (1 ltlt PCINT19) atribui os pinos 2 e 3 do Uno a serem interrompidos. Sei () Clique no link QuotBen Buxtonquot na parte superior desta postagem para obter uma explicação sobre codificadores e sua biblioteca 39Rotary39. Tom bem, fiz alguns testes de circuito detalhados e encontrei um fio de jumper ruim. Agora a tela está respondendo ao codificador rotativo, mas, assim que se move, a saída do si5351 pára. Eu posso fazer uma reinicialização e tudo começa a funcionar, mas assim que o codificador é movido, a mesma coisa acontece de novo. A tela está funcionando bem. O que você acha agora Uma atualização rápida na minha última publicação. Existe realmente uma saída do si5351 e responde ao codificador, mas a freqüência não corresponde à exibição. A frequência na tela mostra 5,2 mhz. E o sinal real é de 14,2 mhz. Eu continuarei cavando e mantendo você informado. Estou mostrando minha ignorância. Eu descobri que a exibição mostra a freqüência de clk ou - o I. F. Parece que tudo está funcionando agora. Existe uma disposição no código para armazenar a última freqüência usada e ligue-a de volta quando a energia for restaurada. Obrigado por toda sua ajuda. Oi Paul, feliz que você trabalhou. Não, não há provisão para salvar a última freqüência, mas representa uma boa pergunta. Quando você economiza a freqüência, pois o programa não tem como saber quando você vai matar o poder. Você periodicamente o salva para a EEPROM. Em caso afirmativo, com que frequência. E, quantas vezes você pode escrever na EEPROM Arduino antes de se revoltar Recuperando o A freqüência salva não seria um grande problema. No momento, este programa é bastante simples, com o objetivo de permitir que aqueles que não estão familiarizados com o Arduinos e a programação, levantem-se usando o si5351. O próximo passo é realmente colocá-lo em um receptor. A partir daí, para adicionar um transmissor simples. Há todos os tipos de mods que podem ser feitos para o software e o hardware como o que eu fiz neste video youtu. be791NupCbiWU A principal razão pela qual queria aprender a programar era que eu seria capaz de fazer as coisas que queria. Tom bem, pelo menos, tenho um vfo e um código de trabalho agora para brincar. Eu mudei o I. F. Frequência e B. F.O. Para combinar com meu superestado de teste. E eu vou estar conectando-o em breve. Para testes. O velho V. F.O. É um AD9850 controlado pela Arduino. Funciona, mas o sinal de transmissão está bastante sujo. E eu não quero colocá-lo no ar. É por isso que eu queria jogar com o si5351, espero que o sinal seja mais fácil de limpar. Obrigado por toda sua ajuda Tom. Oi Tom, obrigado pelo bom projeto. Acabei de montá-lo usando uma interface I2C para o LCD: ebayitmIIC-I2C-Serial-Interface-Module-For-LCD1602-Display-PCF8574-I-O-Parall-Expansion-331141029488ptLHDefaultDomain0amphashitem4d198b1e70 As mudanças no esboço foram fáceis. Então eu tentei este codificador rotativo de alta resolução: ebayitmNEW-Incremental-Rotary-Encoder-360p-r-6mm-Shaft-5-24vdc-290778909653ptLHDefaultDomain0amphashitem43b3c60bd5 Custa aproximadamente o mesmo que o resto das peças combinadas, mas a experiência é bastante próxima Um quotrealquot VFO. O esboço não salta pulsos quando eu acelerar rápido, mas há um pouco de atraso antes que a freqüência mude todo o caminho. 73, Mike AF7KR Oi Mike, I2c é uma maneira mais conveniente de usar um LCD, pois economiza alguns pinos (às vezes isso é crítico). Parece que seu codificador está sofrendo quot do codificador overflowquot. Playground. arduino. ccMainRotaryEncoders Que biblioteca você está usando com o codificador e você está usando interrupções A biblioteca do codificador usada em meus esboços é a de Ben Buxton e pode ser usada com ou sem interrupções. 73, Tom Tom, acabei de montar o VFO, e isso funciona muito bem. Vou usá-lo no meu próximo projeto de receptor. Obrigado pelos seus esforços. 73, Steve WA7JTU Oi Charudatt, Se você estiver usando um Nano, mude estas linhas para ler: defina ENCODERA 1 define ENCODERB 32 também, adicione isso como a última linha em quotSetup () quot below quotdisplayradix () quot changedf 1 adicionado para inicializar si5351 1 E 32 são os pinos de interrupção no NANO. Se resolver o caminho errado - inverta os pinos. Sem a última linha acima na configuração (), o si5351 não será emitido, a menos que o codificador mude de posição. Experimente e veja se isso funciona. Tom Olá Tom, sim, estou trabalhando com o NaNo, mas o Codificador e o LCD funcionam corretamente. Ainda tentarei o que você diz e lhe dará uma resposta. Obrigado. No Tom, não funcionou, mas com a saída do codificador conectado a 2,3 funciona corretamente, pelo menos a tela e outras coisas. Eu adicionei essa linha quotchangedf 1 adicionada para inicializar si5351quot como mencionado, mas ainda não funcionou. Não será bloqueado para a frequência padrão, ou seja, 14.200 no arranque. Mesmo se o RE não estiver conectado. Qual pino é 32 na NaNo. BTW, eu estou usando o IDE mais recente, ou seja, 1.6.5, espero que não haja problemas com isso. Oi Charudatt, baixei o esboço que você mencionou do blog e tentei com o meu Uno e não tive nenhum problema. Eu não sei o que dizer neste momento - algo não está certo Não tenho um Nano para testar, mas não vejo onde seria um problema. Você pode tentar adicionar esta linha em cada quotidfefquot em setup () em si5351.setfreq (): si5351.drivestrength (SI5351CLK2, SI5351DRIVE8MA), você pode definir isso para 2MA, 4MA, 6MA ou 8MA e ver se isso faz alguma diferença. Além disso, certifique-se de que você não tenha a biblioteca carregada em vários locais. A pasta que contém os arquivos si5351.h e si5351.cpp deve ser apenas no diretório do usuário na pasta quotlibrariesquot NOT no quotc: fileardard do arquivo filesarduino. Você pode verificar onde as bibliotecas instaladas pelo usuário devem ser instaladas olhando as Quat Preferências do arquivo -. Sketchbook Location: quot As bibliotecas de usuários precisam estar na subfolder quotlibrariesquot. A principal razão para isso é se você atualizar a versão Arduino IDE que você não vai escrever sobre as bibliotecas que você baixou no passado. Boa sorte Tom Olá Tom, tentei sua sugestão, excluiu todas as bibliotecas. Aqui e ali, seguiu seu passo sobre a pasta bibliotecas e queimou o código. E eu só poderia fazê-lo funcionar em quotdefine Directconversion O que você vê em exibição é o que você obtém modo, saída no CLK0, se eu ativar a opção IF. Não obto qualquer saída. Ou em ClK0 ou Clk2, qualquer motivo particular. Obrigado pela sua paciência em me ajudar. Eu acho que estou perto. Lol Se você habilitar um definir, removendo o quotquot na frente dele, então você deve colocar o quotquot na frente dos outros. Você pode ter apenas um desses define de cada vez no quot: Defina os recursos opcionais aqui - seção de bits. O 3939 na frente de uma linha significa que tudo a seguir é um comentário e não será compilado. Tom, pensei que deveria publicar isso. Em seus comentários, há uma referência que, ao usar o esboço de exemplo com o vazamento Si5351a, os seguintes resultados são os corretos SYSINIT: 1 LOLA: 1 LOLB: 1 LOS: 1 REVID: 1 Eu acredito que está incorreto. Sim, é o que recebo quando executo o exemplo de esboço, mas esses simplesmente não podem ser os valores corretos. Se estiverem, isso diz que a função Sys Init está sempre no status de inicialização, e o LOLAB está desbloqueado. O que pode ser o caso se o dispositivo estiver funcionando. Eu portava o objeto cpp para um braço com um driver i2c de trabalho conhecido - I39m muito mais confortável na plataforma ARM. E eu obtenho SYSINIT: 0 LOLA: 0 LOLB: 0 LOS: 1 REVID: 1 Polling o dispositivo em intervalos de 1 segundo. Eu acredito que esses são os valores corretos. O SysInit está completo, o LOLAB está bloqueado. O LOS isn39t aplicável a um 5351A, portanto, um 1 não importa e parece que o REVID é 1. Eu perguntei a Jason quais seriam os resultados corretos, mas com base nisso - silabsSupport20DocumentsTechnicalDocsAN619.pdf. Eu acredito que deve reportar um 0,0,0,1,1 em vez de 1,1,1,1,1 Deixe-me saber se você concorda ou se eu fiz algo errado. Eu usei o exemplo de esboço e biblioteca em um Nano e um Mega256 e ambos retornaram o 1,1,1,1,1. Mas se ele estiver apagando freqüências eu acredito que o init, loca e locb no mínimo deve ser 0,0,0. Olá. Eu tento executar o esboço para arduino uno, mas eu tenho um problema de compilação. (Nenhuma função correspondente para chamada para 39Si5351. Init (int, int) 39). Eu tentei ver se isso não era uma preocupação de marcadores, mas nada fez. Eu venho até você para me dar alguns conselhos. Eu sou um novato no mundo da programação, e meu conhecimento neste campo é muito limitado. Obrigado pela ajuda. Olá a todos. I39m obtendo o mesmo erro de compilação que o ON4LAU. Qualquer ajuda será apreciada. Existe uma atualização de uma biblioteca ou algo que este esboço não leva em consideração. Jason tem uma versão mais recente de sua biblioteca e eu suspeito que você esteja usando isso. Uma diferença é a afirmação: si5351.init (SI5351CRYSTALLOAD8PF, 0, 0) que costumava ser apenas: si5351.init (SI5351CRYSTALLOAD8PF, 0) O terceiro parâmetro, é o fator de correção. Se você não tiver nenhuma coordenação, ou você gostaria de configurá-lo com 39 setcorrection () 39, basta deixá-lo em 39039. A outra alteração é o método 39 set freq () 39 que agora leva apenas 2 parâmetros que alterariam essa afirmação: Si5351.setfreq ((vfo SI5351FREQMULT), SI5351PLLFIXED, SI5351CLK0): si5351.setfreq ((vfo SI5351FREQMULT), SI5351CLK0), que remove a segunda declaração relativa ao PLL. Tudo está documentado aqui: githubetherkitSi5351Arduino basta rolar para baixo para a seção: Si5351A Módulo do gerador de relógios Com base no chip Silicon Labs Si5351A, este pequeno módulo é um gerador de clock completo que funciona de abaixo de 8 KHz para mais de 150 MHZ. O chip Si5351A usa um cristal de precisão externo para fazer um sinal de relógio de precisão que o usa para direcionar PLLs múltiplas e divisórias de relógio usando instruções I2C. Ao configurar o PLL e os divisores, é possível criar freqüências precisas e arbitrárias. Existem três saídas independentes, e cada uma pode ter uma freqüência diferente. As saídas são 3Vpp e desenha abaixo de 35 mA em 3.3 VDC. O módulo de PCB também possui um regulador de tensão de ultravioleta de 3.3V. O cristal externo é de ordem especial para combinar os requisitos de notas de aplicação Silicon Labs AN-551. A interface I2C pode ser terminada em resistores 10K tanto em 3.3V como em 5V usando o jumper J4. Se o seu ônibus I2C já estiver terminado, você pode remover este jumper. Além disso, dois comutadores MOSFET permitem uma interface automática para sistemas MCU de 3,3 V ou 5 V. O conector de 5 pinos J5 obtém 5V DC para energia, terra e os sinais SDA e SCL do ônibus I2C. As dimensões da PCB são apenas 32,5 x 31 mm e esses 4 furos de montagem ajudam a estabilidade mecânica de cristais se o pcb for usado em equipamentos portáteis. O uso possível deste módulo é um gerador de clock de propósito geral em qualquer freqüência necessária, eliminando a necessidade de um oscilador de cristal especial ou difícil de encontrar, um VFO para um rádio QRP, um VFOBFO para rádios de conversão dupla, incluindo a capacidade de deslocamento As frequências VFO e BFO ao mesmo tempo, a fim de oferecer uma função IF-Shift, um VFO para rádios SDR, um oscilador BITE interno do sistema, etc. A estabilidade da frequência e a sua pureza espectral é mais ou menos semelhante ou melhor à Tipos de Si570 antigos, bem aceitáveis ​​para operação em equipamentos de rádio de presunto, bem, não são suficientes para modos muito estreitos, como o WSPR, etc. Geralmente é um ótimo desempenho, considerando seu baixo preço e sua implementação rápida e simples. ORDENS Para um KIT DIY completo USD 8,90 O KIT inclui uma PCB ENIG FR4 de alta qualidade (32,5 x 31 mm) que vem com todos os componentes SMD pré-soldados. Os capacitores RF são usados ​​para todos os circuitos. Três conectores fêmea SMA com porcas e arruelas também são fornecidos, não suavizados. O envio é com correio registado (a sua assinatura é necessária aquando da entrega). Eu costumo enviar no dia seguinte e leva cerca de uma semana a 10 dias para os EUA ou Austrália, menos de uma semana para a Europa. Konstantinos, SV1ONW Artigo para um projeto VFO baseado em Si5351A em inglês - publicado pela primeira vez em grego na revista SV-QRP (edição de dezembro de 2015).

No comments:

Post a Comment