¿El oscilador PWM ajustable más simple (más barato)? [cerrado]

-1

Estoy tratando de hacer un oscilador donde pueda ajustar la frecuencia y el ciclo de trabajo de forma independiente, pero no estoy teniendo mucha suerte. Lo que quiero es un rango de frecuencia de 1Hz a 1MHz; y la capacidad de ajustar el ciclo de trabajo en incrementos del 10% de 0% a 100%, más o menos. Idealmente, también me gustaría poder especificar un ciclo de trabajo del 25% o 75%.

Mi pregunta básicamente se reduce a: ¿Cuál es la forma más sencilla (es decir, la más barata y más pequeña) de lograr un oscilador de onda cuadrada ajustable con un ciclo de trabajo ajustable, con las especificaciones anteriores y donde se ajusta el valor? ¿La frecuencia o el ciclo de trabajo no hace que la otra cambie?

Aquí sigue una explicación detallada de cómo llegué aquí:

Mi primer pensamiento fue un temporizador 555, pero eso fue muy problemático. Ajustar el ciclo de trabajo también tuvo un impacto en la frecuencia, y lograr un ciclo de trabajo de menos del 50% fue prácticamente imposible.

Misegundointentoinvolucróuninversorschmitt.Lamentablemente,lazonaSchmittnoestabacentradademanerauniformeentreVCCyGND,porloquetuvequecompensarelvoltajedeentradautilizandoundivisordevoltaje.Estolimitólacorrientehastaelpuntodequeelschmitt(TTL)nofuncionaba.Mástarde,locambiéporunavariantedeCMOSyeliminélasresistencias,perotodavíanoconseguíaunfuncionamientoconfiable.

Miterceraideafueobtenerunmicrocontrolador,específicamenteunPIC12F675,parausarsuADCparaleerdospotenciómetrosy,apartirdeestosvalores,generarunaondacuadradamedianteprogramación.Sinembargo,cuandotraguélosnúmeros,resultópocopráctico.

UnPIC12F675tieneunavelocidadderelojmáximade4MHz.Siasumimosqueocasionalmentetendráquerealizarhasta10instruccionesentreloscambiosdeestadodesalida,yteniendoencuentaqueunaondacompletarequiere2cambiosdeestado,terminamosconunafrecuenciadesalidamáximade200KHz.Estoesalgomásbajodeloqueestababuscando.

Además,aestafrecuenciamáximade200KHz,laMCU(pordefinición)nopodrácambiardeestadomásrápidamente;yporlotanto,elciclodetrabajosefijaráen50%,derrotandoelpropósito.Suponemosquerequerimosalmenosunrangoajustabledel10%al90%,nopodremosgenerarunafrecuenciadesalidademásdeaproximadamente20KHz.Otalvez10KHz.

UsarunaMCUmásrápidanoayudaríamucho.ElATmega328tieneunafrecuenciaderelojmáximade16MHz,loquenosdaríaunasalidadehasta80KHz.Todavíanoesmuyútil.

Micuartaideainvolucródostemporizadores555:unogenerandounaondacuadradaajustableconunciclodetrabajofijo,elotroactuandocomoundisparoparagenerarelciclodetrabajo.Desafortunadamente,elciclodetrabajosemediríaentiempo,enlugardeenporcentaje,y,porlotanto,elajustedelafrecuenciaafectaríaelciclodetrabajo.Además,enelextremoinferiorosuperiordelrangodefrecuencia,laperilladeajustedelciclodetrabajoseríatotalmenteinefectivaparalamayoríadesusviajes.

Miquintaideainvolucróuntemporizador555paragenerarlaondacuadrada(comoarriba),conuncontadorde4017décadasparadividirlasalidaenpartes.Conectarlaprimerasalida,porejemplo,medaríaunciclodetrabajodel10%.Podríacambiarlafrecuenciasinafectarelciclodetrabajo.Sinembargo,hayalgunosproblemasconesteenfoque.

Enprimerlugar,amenosquequisieramoverlospuentesamano,necesitaríaalgunaformadecontrolarlasalidaconunaperilla.Asíqueunmicrocontrolador,entonces.Elmicrocontroladornecesitaríaalgúntipodeconmutadormulticanalprogramable,comoel PCA9548A . Desafortunadamente, este es un conmutador de 8 canales, y estoy usando un contador de décadas. Podría conectar el reinicio del 4017 a la 8ª posición y convertirlo en un contador de 8 vías, pero luego no podría obtener un ciclo de trabajo del 10% o del 90%. Así que necesitaría bastantes partes: 1 capacitor, 1 potenciómetro, 1 temporizador 555, 1 MCU, 1 4017 y 2 interruptores de 8 canales.

Si quisiera un ciclo de trabajo del 25% o 75%, necesitaría agregar a esta lista otro 4017, otro interruptor IC, otro capacitor y alguna forma de cambiar los capacitores mediante programación.

    
pregunta Sod Almighty

1 respuesta

5

Muy claramente, este es un caso para la unidad PWM de una MCU lo suficientemente rápida, como anotó.

Ahora, todo el conteo de instrucciones es superfluo: las MCU vienen con temporizadores PWM que hacen ese trabajo por usted, y el núcleo de la CPU no está involucrado en eso. Por lo tanto, en algunas CPU, las PWM pueden ejecutarse a una tasa mucho más alta que el núcleo de la CPU sin problemas.

Entonces, sí, esto es absolutamente factible con los MCU que mencionas. Y también con MCU que son mucho más baratos.

Personalmente, me gustan las unidades PWM en los brazos ST Micro STM32. Pero eso es realmente porque son muy fáciles de usar; No porque sean baratos. Al momento de escribir esto, los ARM de Silabs son baratos, por lo tanto, tengo 75ct por pieza de repuesto y me gustaría escribir C para una plataforma de 24 MHz de 32 bits , ¿por qué no?

Si necesita ir más barato, simplemente busque en los microcontroladores más baratos que puede comprar y que vienen con una unidad PWM lo suficientemente flexible. En realidad, PWM es un requisito tan común que los microcontroladores de la mayoría tienen hardware para eso, y realmente no es necesario que el código de ejecución de la CPU para alternar una salida con el ciclo de trabajo y la frecuencia correctos. p>     

respondido por el Marcus Müller

Lea otras preguntas en las etiquetas