Generador cuadrado de 1KHz a 1MHz con precisión de 1KHz

Me gustaría hacer un generador de onda cuadrada que emita una señal con amplitud X voltajes y frecuencia entre 1KHz a 1MHz, con una precisión de 1KHz (por ejemplo: 785kHz, 926kHz, 999kHz, etc.). Intenté hacer eso con Arduino Uno, pero me di cuenta de que necesitaría una precisión de 1 ns para poder hacerlo. 1ns equivale a 1GHz. Entonces, ¿qué hardware necesito para poder hacer eso?

¿Por qué necesita una resolución de 1 nanosegundo?
Digamos que tienes 1us, eso te dará 1MHz. Si tienes 2us obtienes 500 kHz. Verás, un micro segundo no es suficiente.
@NickJohnson La diferencia de tiempo entre 999kHz y 1MHz para un solo ciclo es de aproximadamente 1ns
1/1 ns = 1 GHz no 1 THz. Que es solo el doble de la tasa de alternancia de la lógica simple en un FPGA rápido. Sin embargo, no todos los períodos requeridos son un número entero de nanosegundos...
Por cierto, aparentemente trivial, esta pregunta no es tan fácil ... El problema es que para un rango de frecuencia lineal necesitará un 1/Fperíodo de tiempo totalmente no lineal ().
Iría a soluciones analógicas, similares a 555.
¿Con 555 puedes darte cuenta de eso? ¿Hay alguna forma de controlar la frecuencia con un microcontrolador, como arduino?
Con 555, la frecuencia se controla con componentes discretos (o voltajes analógicos), por lo que no. No podrá controlarlo directamente con señales digitales.
¿Oscilador de relajación con algún tipo de elemento de control digital que Arduino puede generar (es decir, voltaje DAC o digi-pot o ???) para cambiar el punto de ajuste? VCO? IC de V a F?
¿Qué tal un PLL con divisor programable y referencia de frecuencia de 1 kHz? De lo contrario, creo que una solución basada en DDS le dará el mejor resultado. No es necesario que utilice un chip comercial, necesariamente; todo lo que realmente necesita es un contador con suficientes bits.
Puede hacer lógica de GHz con partes ECL, pero incluso entonces nunca podrá alcanzar exactamente pasos de 1 kHz. Intente verlo de otra manera: ¿qué tan preciso debe ser?
El inverso de 1 megahercio es 1 microsegundo, no un nanosegundo. Si desea generar frecuencias con precisión de ciclo de hasta un megahercio, ¡no necesita un oscilador ni cerca de un gigahercio!

Respuestas (1)

La síntesis digital directa puede ser exagerada para lo que desea, pero sin duda puede entregar los productos: -

ingrese la descripción de la imagen aquí

Haga clic en la imagen para ir a la hoja de datos. Produce una onda sinusoidal, pero esto puede darte fácilmente una onda cuadrada (comparador integrado). Con un registro de control de 28 bits en frecuencia, un reloj de 16 MHz se puede dividir a 0,0596 Hz si leo los datos correctamente y esta es también la resolución.

La gran desventaja de la brigada 555 (sí, he usado una recientemente) es que necesita controlarla con SPI, por lo que una pequeña microinterfaz para un teclado podría ser una buena idea. Oye, incluso puedes usar el micro para decirte qué frecuencia está generando (a través de una pantalla LCD).

¿Tal vez el arduino puede hacer SPI?

Esto le dará lo que se llama 'fluctuación discreta' de +/- 1/2 del período del reloj de muestra. Esto puede o no ser aceptable. Si esta fluctuación es aceptable, esta es definitivamente la mejor solución, ya que tiene una resolución extremadamente alta y la precisión de la frecuencia está ligada al cristal y no a un circuito RC (como es el caso de un 555).