Gerador de Forma de Onda Arbitrário com Arduino Due – Potente, Multi-frequência, Compatível com Linux/Windows
Componentes e Materiais
| Componente | Quantidade |
|---|---|
| Arduino Due | 1 |
Sobre o Projeto
Descrição Geral
Agora Funciona no Linux e no Windows
Frequência máxima de onda analógica: 100kHz. Frequência máxima de onda quadrada: 42MHz.
Ciclo de trabalho ajustável de virtualmente 0% a 100%
Muito fácil de construir - veja Instalação abaixo.
Este é um projeto em duas partes: a própria placa Arduino Due e um controlador GUI para ser usado no seu PC, embora a placa Arduino também possa ser usada sozinha usando potenciômetros, chaves e LEDs.
Nenhum circuito é necessário, embora um circuito de proteção de saída opcional seja oferecido, que deve proteger a placa Arduino de conexões acidentais das saídas a tensões de até mais ou menos 30V (talvez mais).
Ao usar o controlador GUI no seu PC, formas de onda arbitrárias podem ser desenhadas, editadas, salvas, abertas e enviadas para o Arduino Due, conectado automaticamente via porta USB. Um arquivo de ajuda abrangente está incluído.
Um recurso de onda "degrau" permite que qualquer número de degraus nítidos (uma amostra) na onda sejam facilmente produzidos se desejado. Além disso, a saída pode ser alternada para onda senoidal ou triangular / dente de serra.
Também, uma onda quadrada é produzida simultaneamente, que pode ser sincronizada ou completamente independente. As ondas podem ser controladas pela frequência ou período. O ciclo de trabalho pode ser definido de virtualmente 0% a 100%. Ou a largura do pulso pode ser definida como constante (dentro dos limites do período, claro).
As novas configurações podem ser digitadas diretamente via teclado do PC ou teclado do programa. Ou, pressionando "MODE", permite um ajuste deslizante.
Um Modo Exato está disponível para a onda analógica, que evita os "passos de frequência" normalmente associados a geradores de forma de onda de síntese digital direta (DDS). Isso torna uma frequência mais precisa possível, permitindo acesso a frequências entre esses "passos de frequência" porque a saída não é uma divisão da frequência do clock do Arduino quando o Modo Exato está ligado.
Um recurso de varredura de frequência (log) para qualquer uma ou ambas as ondas está incluído, e também há um temporizador com saída Arduino positiva ou negativa.
Especificações
Onda Analógica:
- Resolução de 12 bits com até 4096 pontos de caminho.
- Faixa de frequência: 0.05mHz (20.000 seg) a 100kHz.
- Taxa de amostragem: (acima de 1kHz usando DMA) Até 1.6MHz.
- Taxa de amostragem: (até 1kHz) 400kHz.
- Taxa de amostragem no Modo Exato: (qualquer freq) 400kHz.
- Largura mínima de pulso: (meio ciclo de onda)
- No ciclo de trabalho 0%: 350 nanossegundos (aprox.) em qualquer freq.
- No ciclo de trabalho 0.01%: Até 2.5 - 25 microssegundos (aprox.)
- - se freq é superior a 1kHz E Modo Exato ou Sync está ligado,
- - caso contrário 350 nanossegundos.
Onda Quadrada:
- Faixa de frequência: 0.05mHz (20.000 seg) a 42MHz.
- Largura mínima de pulso:
- Sincronizada: [Freq: 0.05mHz (20.000 seg) a 100kHz]
- No ciclo de trabalho 0%: 48 nanossegundos em qualquer freq.
- No ciclo de trabalho 0.01%: 2.5 - 25 microssegundos (aprox.)
- Não sincronizada: [0.093mHz (10.737 seg) a 42MHz]
- 12nS de 1.3kHz a 42MHz. (Usando PWM)
- 24nS de 650Hz a 1.29999kHz. (Usando PWM)
- 48nS de 325Hz a 649.99999Hz. (Usando PWM)
- 96nS de 163Hz a 324.99999Hz. (Usando PWM)
- Abaixo de 163Hz: (Usando interrupção)
- No ciclo de trabalho 0%: 96 nanossegundos.
- No ciclo de trabalho 0.01%: 5 microssegundos.
- Sincronizada: [Freq: 0.05mHz (20.000 seg) a 100kHz]
Instalação
O programa GUI
para seu PC é "portátil", então não precisa instalar.
Para usuários Windows: simplesmente extraia o arquivo .zip em uma pasta de sua escolha e crie um atalho para o arquivo .exe. Nota: O arquivo "DueAWGController-Win64.zip" é destinado a sistemas de 64 bits, mas o arquivo 32.zip muitas vezes funciona de forma mais confiável de qualquer forma, pois tem o Java embutido.
Para usuários Linux: extraia o arquivo DueAWGController-LinuxXX.zip em uma pasta, então clique duas vezes no arquivo DueAWGControllerLinux ou adicione-o ao menu do sistema.
Você pode precisar instalar o OpenJDK 8 (java 8) para Debian, Ubuntu, etc: Na linha de comando (no Terminal), digite: sudo apt-get install openjdk-8-jre (Versões mais recentes podem não funcionar.)
Você também pode precisar obter permissão para acessar o USB antes de poder conectar ao Arduino. Digite: sudo usermod -a -G dialout $USER
Também estão incluídos dois arquivos "arm" para Raspberry Pi etc, mas eles não foram testados. Por favor, me avise se funcionarem.
O sketch do Arduino
não precisa de bibliotecas especiais, então você só precisa da Arduino IDE normal instalada no seu PC para fazer upload do sketch para o Due. Desde que seu PC tenha reconhecido o Arduino Due (o que deve ter acontecido se o sketch foi enviado), o programa GUI deve encontrar e conectar automaticamente ao Arduino ao iniciar, então não há necessidade de definir a porta COM. No entanto, a seleção manual de porta COM está habilitada se a seleção automática falhar.
Há alguns arquivos de onda de exemplo na pasta Arbitrary Waves (apenas para diversão) para ajudar você a começar. Além do programa GUI, o gerador de forma de onda do Arduino também pode ser controlado pelo monitor serial do Arduino definido para 115200 baud. Digite ? para ajuda.
Ou se você preferir usar potenciômetros, chaves e LEDs para controle, o início do sketch do Arduino lista as conexões dos pinos.
Conexões dos pinos de saída de onda também estão listadas lá, ou simplesmente conecte os pinos 3 e 7 do Arduino juntos com um jumper, ou se você for ultra cauteloso use um resistor de baixo valor (47 - 100 ohms). Pegue a saída de onda quadrada do pino 7 e a saída analógica do DAC0.
Código
IMPORTANTE: Não clique no botão "Download as zip".
Para baixar os arquivos clique em "Read More" abaixo. NOTA: Clicar em "Download as zip" só baixará um arquivo readme.
https://github.com/Bruce-Evans/ArduinoDueArbitraryWaveformGeneratorAndController
Esquemáticos
Este circuito pode ser completamente omitido, mas se usado deve proteger o Arduino contra conexões acidentais das saídas a tensões de até pelo menos mais ou menos 25V sem aumentar significativamente os tempos de subida e descida. D2 e D3 precisam ser diodos de alta corrente, recuperação rápida - descobri que diodos Schottky eram muito lentos. Os fusíveis (F1 e F2) podem ser polifusíveis.
Processo de manufatura
- Construa um Spybot Controlado por Bluetooth com Arduino
- FlickMote: Controle Remoto IR por Gestos para Casa Inteligente
- DIY Arduino TV B-Gone: Controle Remoto Universal para Todas as TVs
- Construa um Relógio Mestre LED Personalizado com Alarme – Visível a 12 Metros
- Construa um Jogo da Velha Touchscreen no Arduino Due
- Gerador de Ondas JX – Oscilador DDS Compatível com Arduino com Display OLED
- Find Me: Localizador Inteligente de Objetos com Arduino e Bluetooth
- Soluções de Energia Otimizadas para Projetos Arduino
- Jogo da Velha com Arduino, Matriz LED MAX7219 e Caixa de Papelão
- Construa um Robô Quadrúpede Inteligente com Arduino: Guia Passo a Passo