Gerador de onda quadrada simples DIY de até 1 MHz
Componentes e suprimentos
| × | 1 | ||||
| × | 1 | ||||
| × | 3 | ||||
| × | 1 |
Aplicativos e serviços online
|
Sobre este projeto
Este é um gerador de onda quadrada simples que basicamente usa a biblioteca TimerOne, permite gerar um sinal PWM no pino 9 na faixa de cerca de 5 Hz a 1 Mhz, e você pode ajustar o ciclo de trabalho de 0 a 100%.
O dispositivo é muito simples de construir e consiste em apenas alguns componentes:
- Microcontrolador Arduino Nano
- Tela de LCD
- Três resistores pull up
- e três botões de pressão
O gerador de pulso tem a capacidade de ajustar o período de repetição do pulso usando os botões conectados às entradas digitais 6 e 7 do Arduino. 13 pinos de entrada permitem ajustar o ciclo de trabalho. As leituras de duração e ciclo de trabalho são exibidas na primeira linha do indicador LCD 16 × 2 e as leituras de frequência são exibidas na segunda linha. A etapa mínima para ajustar o período de repetição do pulso é 1 μs, então a frequência mudará discretamente, por exemplo, 1 μs é 1 MHz, 2 μs é 500 kHz, 3 μs é 333,333 Hz e assim por diante, e conforme a frequência diminui , a suavidade de seu ajuste aumenta. Isso é pouco prático em frequências mais altas, mas esse é o preço da simplicidade. Em um de meus vídeos anteriores, descrevi a construção de um dispositivo semelhante, mas com a ajuda de um chip DDS especializado que não tem essas deficiências e tem um alcance muito maior, mas é mais complexo de construir
Para visualizar o sinal de saída, uso um pequeno osciloscópio de canal único. Por fim, o dispositivo é montado em uma caixa adequada, sendo mais uma ferramenta útil no laboratório de eletrônica.
Código
- código Arduino
Código do Arduino C / C ++
#include#include LiquidCrystal lcd (12, 11, 5, 4, 3, 2); // RS, E, D4, D5, D6, D7 sem sinal longo t =1000 , f, k =512; // padrão 1000 μs (1000 Hz), meandro, byte de pulso k1, kn, kn1, kn2; int drive, drive0; void setup () {lcd.begin (16, 2); // LCD 16X2 pinMode (9, SAÍDA); pinMode (6, INPUT); // botão na entrada 6 pinMode (7, INPUT); // botão na entrada 7 pinMode (13, INPUT); // botão na entrada 13} void loop () {Timer1.initialize (t ); // período Timer1.pwm (9, k); // k - fator de preenchimento 0-1023. kn =digitalRead (6); // entrada do botão 6 (- período do pulso) kn1 =digitalRead (7); // entrada do botão 7 (+ período do pulso) kn2 =digitalRead (13); // entrada do botão 13 (+ preenchimento do círculo fator) if (kn ==HIGH) {// diminuindo o período drive ++; if (drive <30) {t =t-1; } // se o botão for pressionado por muito tempo, a correção do pulso else if (drive> 30 &&drive <60) {t =t-10; } else if (drive> =60 &&drive <100) {t =t-100; } else if (drive> =100) {t =t-1000; }} else {drive =0; } if (kn1 ==HIGH) {// adicionando um período drive0 ++; if (drive0 <30) {t =t + 1; // se o botão for mantido pressionado por um longo tempo, a correção do} else if (drive0> 30 &&drive0 <60) {t =t + 10; } else if (drive0> =60 &&drive0 <100) {t =t + 100; } else if (drive0> =100) {t =t + 1000; }} else {drive0 =0; } if (t ==0 || t> 300000) {// limitando a duração do pulso ao mínimo, se t =1; } if (t> 200000 &&t <300000) {// limitando a duração do pulso a t =200000; } f =1000000 / t; // calcula a frequência k1 =k * 100/1024; // calcula o fator de preenchimento% if (kn2 ==HIGH) {// botão para ajustar o fator de preenchimento (em um círculo de k =k + 16; // etapa 16 de 1024 (você pode fazer 8 para um ajuste mais suave)} if (k ==1024) {k =0;} // exibindo informações no indicador lcd.setCursor (0,0); lcd.print ("T ="); lcd.print (t); lcd.print ( "us"); lcd.setCursor (12,0); lcd.print (k1); lcd.print ("%"); lcd.setCursor (0,1); lcd.print ("F ="); lcd .print (f); lcd.print ("Hz"); atraso (300); lcd.setCursor (0,0); lcd.print (""); lcd.setCursor (0,1); lcd.print ( "");}
Esquemas
Processo de manufatura
- Sinais de onda quadrada
- DIY LUMAZOID Arduino Music Visualiser
- Simple Word Clock (Arduino)
- DIY Simple 20 kHz Arduino Oscilloscope no Nokia 5110 LCD
- Faça você mesmo voltímetro usando Arduino e Smartphone
- JX Wave Generator
- Sensor de obstáculo simples com Arduino
- Faça você mesmo skate de realidade virtual
- Calculadora UNO simples
- Roda de medição simples DIY com codificador rotativo