¿Frecuencia variable en el chip AVR?

4

Estoy considerando la programación de un chip AVR como una posible vía debido a algunos problemas que tengo con el circuito 555, pero necesito poder ajustar la frecuencia sobre la marcha con un potenciómetro. ¿Es posible configurar un chip AVR con frecuencia variable para que la velocidad de ejecución del programa se pueda ajustar directamente en el tablero con una olla simple y sin tener que volver atrás y reprogramar el chip ?:

    
pregunta JamesHoux

3 respuestas

5

Como ya han dicho otros, casi todos los desarrolladores de AVR seleccionan una frecuencia fija para cada aplicación y ejecutan el chip AVR en esa frecuencia fija. Esta semana escribí un código que se ejecuta en un AVR que se ejecuta a 16 MHz fijos (que es bastante común), pero genera dos salidas de frecuencia variable controladas independientemente por dos potes. (Los potes están realmente conectados a otro microcontrolador, que lee los potes, y envía su posición a un cable serie RS485 de 400 pies al AVR UART).

Sin embargo, hay algunos desarrolladores AVR que varían la frecuencia de su chip AVR en tiempo de ejecución, como Spritesmods (a) (b) ; cloudscapes (a) ; K0LR (a) ; etc.

Usando un oscilador RC externo

Algunos AVR admiten una opción de "oscilador RC externo", que es extremadamente similar a un oscilador 555 RC: engancha una resistencia (como un potenciómetro) y un condensador directamente al AVR. Al igual que el oscilador 555 RC, cuando giras el bote, Cambia la resistencia R de la olla, lo que cambia la frecuencia. "Application Note AVR051: configure y use el oscilador rc externo" (a) , (b)

Lamentablemente, muchos chips AVR populares no admiten una opción de "oscilador RC externo". Incluso aquellos que lo hacen, la frecuencia está limitada al rango de 100 kHz - 12 MHz. (El ADC no funciona bien en bajas frecuencias, y la UART será difícil de usar si la frecuencia sigue cambiando).

conducir el AVR a alguna frecuencia generada en otro lugar

Si tiene alguna fuente de reloj que ya genera la frecuencia que desea, puede conectar su salida al AVR y programar el AVR para usar la opción "Reloj externo". Este enfoque funciona con cualquier AVR y cualquier frecuencia desde cero Hz (0 Hz) hasta 8 MHz. (es decir, puede ir mucho más lento que el enfoque del "oscilador RC externo"). (El ADC no funciona bien en bajas frecuencias, y la UART será difícil de usar si la frecuencia sigue cambiando).

Usted programa los bits de fusible AVR para usar la opción "Reloj externo" si alguna fuente externa (que oscila por sí misma) está impulsando una señal cuadrada en el pin de entrada del reloj AVR. (Incluso si técnicamente ese reloj externo es un oscilador RC). Este oscilador externo podría ser, por ejemplo, un Schmitt NAND 74HC132 y un capacitor y un potenciómetro, o un oscilador 555 con un capacitor y un potenciómetro, o una gran variedad de otros osciladores.

    
respondido por el davidcary
5

No está claro, pero de su pregunta parece que desea tener una forma de onda de frecuencia variable que responda a un valor Pot para el ajuste.

Al permanecer en el modo AVR (hay muchas formas diferentes de hacerlo), también puede hacerlo sin cambiar la frecuencia de funcionamiento del dispositivo. Solo deberías leer el valor POT con la entrada ADC y usar ese valor para ajustar la salida PWM en consecuencia.

    
respondido por el placeholder
3

Aunque en principio no veo un problema, está limitado a un rango de 100 KHz a 12 MHz cuando se utiliza un oscilador RC externo. Necesitará usar una resistencia adicional para asegurarse de que se cumplan esas restricciones para que no obtenga una operación errática y un posible daño al AVR. Los cables largos y la olla probablemente también irradiarán un poco de interferencia de RF.

La forma habitual sería usar el potenciómetro como divisor de voltaje y leer el valor usando una entrada analógica. Luego use ese valor para variar la frecuencia de su bucle de tiempo mientras la CPU sigue funcionando a la misma frecuencia de reloj.

    
respondido por el PeterJ

Lea otras preguntas en las etiquetas