Convertidor Buck DC-DC controlado por ATTINY - optimice PWM para obtener la máxima resolución

0

Obtuve un solenoide con los siguientes datos:

  • 1.25W
  • 24V
  • resistencia a 460 ohmios
  • valor de inductancia desconocido

Estoy trabajando en un sensor PCB que también necesita controlar la fuerza del solenoide. El sensor PCB ya está utilizando un ATTINY44 y tiene un suministro de 24V.
Para controlar la fuerza del imán, quiero usar básicamente un convertidor reductor, con ATTINY como controlador. Cuando se configura como PWM rápido de 8 bits sin preescalador y se ejecuta en un cristal de 16 MHz, debe proporcionar una señal PWM de 62.5kHz.

Esta señal PWM que quiero alimentar en el siguiente circuito:
ElvalordeVOut5esrealimentadoporundivisorderesistenciaaunadelasentradasanalógicasATTINY.ATTINYADCestáconfiguradoparaconvertirloen"modo de funcionamiento libre" y la señal PWM se ajusta de acuerdo con este valor.

Básicamente funciona bien, excepto por un problema (por cierto. Quiero controlar el voltaje del imán VOut5 de 5V a 24V). Para obtener los siguientes voltajes, la señal PWM se está asentando a aproximadamente:

  • 5V - > ~ 15% (comparador PWM OCR1B ~ 38)
  • 10V - > ~ 28%
  • 15V - > ~ 44%
  • 20V - > ~ 61%
  • 24V - > ~ 75% (comparador PWM OCR1B ~ 191)

Esto reduce mi resolución a \ $ Res = 191-38 = 153 \ $ en lugar de 255. Como necesito bastante precisión, me gustaría usar la resolución completa de 255. Por prueba y error (principalmente cambiando el valor del inductor) llegué a los valores elegidos en este circuito.

Así que mi pregunta: ¿Qué tengo que cambiar para obtener la resolución total de 255 (por ejemplo, 5 V con un 0% de PWM y 24 V con un 100% de PWM)? ¿O hay una forma mejor de hacerlo que mi prueba y error (porque cada simulación que se ejecuta en mi computadora tarda aproximadamente 20 minutos)? ¿Puedo calcular esto?

Como necesito hacer alrededor de 200 de estas tarjetas, me gustaría encontrar una solución simple / barata (eso es básicamente el motivo por el que quise usar el ATTINY existente, que tenía 2 pines libres como controlador en primer lugar) .

P.S. Para simular este comportamiento de circuitos, construyo debajo del modelo LTSpice: LapartedelcircuitoenelcuadrorojoemulaelATTINY.DebidoaqueelrestodelprogramaqueseejecutaenelATTINYsolopuedeajustarlaseñalPWMcada0.5ms(modeladoporlapartedemuestrayretención.ElLTC6992seusaparagenerarlaseñalPWMde62kHz(R18configuradoa800k)de0Va1VdetensiónenelpinMOD.EstoemulaelcomportamientodeATTINYbastantecerca.

Elmodelosepuededescargar aquí en caso lo necesitas.

    
pregunta KarlKarlsom

2 respuestas

3

(La mayoría de los cálculos que siguen no son muy precisos, solo lo suficientemente cerca como para guiar algunas decisiones de diseño).

Primero que nada, M1 se maneja muy suavemente y por lo tanto no está cambiando efectivamente. La impedancia de conducción a la puerta M1 es de alrededor de 10 K, buscando la capacidad de la puerta de 720pF, que da una constante de tiempo de 10K x 720pF = 7.2us.

En comparación con el período PWM de 62.5KHz, es decir, 16us, la unidad de la compuerta es demasiado lenta y debe acelerarse en aproximadamente 2 órdenes de magnitud. Esto se puede hacer cambiando R2 a alrededor de 100 ohmios (y R1 en consecuencia), pero eso tiene el efecto indeseable de hacer que la disipación del controlador de la compuerta sea tanto como la carga principal del solenoide. La corriente de carga del solenoide no es superior a 24 V / 460 ohmios = 52 mA. Por lo tanto, un MOSFET M1 más pequeño con una capacitancia de compuerta mucho más baja podría ser una mejor opción.

Para un dólar ideal: VOUT5 = V1 x PWM_duty_cycle.

Así que con V1 = 24V:

  • 100% - > 24V
  • 75% - > 18V
  • 50% - > 12V ...

Esto no coincide con sus resultados. La unidad de puerta muy suave es una explicación razonable, por lo que M1 nunca se apaga del todo cuando la señal de la unidad PWM llega a aproximadamente el 75%.

Por lo tanto, al corregir el cambio de M1, te da el 100% - > 24V que quieras automáticamente.

Una forma sencilla de obtener 5V con un ciclo de trabajo del 0% es conectar el ánodo de D1 a + 5V. Probablemente hay un + 5V alimentando el ATtiny ya. El requerimiento actual promedio es de alrededor de 5V / 460ohms = 11mA, y el pico alrededor de 52mA, que no es mucho.

Por cierto, la principal desviación de este circuito respecto de una pelota ideal es D1, y los efectos se muestran principalmente cuando el ciclo de trabajo es bajo. Las razones son porque D1 tiene una caída de voltaje y también pasa corriente de una manera.

    
respondido por el rioraxe
1

Nunca he enfrentado este problema, pero se me ocurrió que es análogo al problema de los niveles discretos de escala de grises en las imágenes de mapa de bits. Los tonos continuos son generados por "dithering".

Una búsqueda rápida de "interpolación PWM" arrojó bastantes resultados. Una inmersión en Mejora de la resolución PWM a través de la técnica de dithering para STM32 de configuración avanzada, temporizadores de propósito general y lite (no van para títulos concisos ) dio la siguiente información.

Figura 1. Tramado PWM de 1 bit de resolución agregada.

El artículo continúa discutiendo el tramado de 1 bit y N bit, lo que sugiere que podría obtener una mejora de múltiples bits en su resolución de 153 pasos sin cambiar su hardware . A 65 kHz, debería estar muy por debajo del tiempo de reacción mecánica del solenoide.

No he buscado ejemplos de código, pero ¿qué tan difícil podría ser? ; ^)

    
respondido por el Transistor

Lea otras preguntas en las etiquetas