"Quiero aprender mis errores y corregirlos".
Ok, comienza con el código. No he usado un AtTiny, pero hay algunas cosas que se destacan y deben ser consideradas.
-
¿Qué inicia el bucle? ¿Se acaba de correr? Por lo general, es mejor iniciar el bucle desde una interrupción del temporizador PWM. De esa manera, se lee el ADC y el valor de PWM se actualiza una vez por ciclo de PWM. Si se ejecuta el bucle libre, no será sincrónico con el PWM, y puede que ni siquiera sea consistente si hay otros procesos en curso.
-
¿Cuál es la frecuencia PWM? ¿Es 8MHz / 256, o ~ 32KHz? Digamos que es 32kHz. ¿Cuál es el tiempo de conversión del ADC? puede soportar 32kHz?
-
¿Qué sucede con la salida de control PWM si la variable val es menor que 0 o mayor que 255? Los acumuladores integradores tienen que estar limitados.
-
¿Qué sucede si AnalogRead () es igual a 512? ¿Eso es manejado implícitamente por la declaración IF como un noop? Si es así, ¿realmente quieres un punto muerto en el integrador?
-
El integrador puede cambiar el control PWM en cada punto de muestra, lo que significa que tendrá demasiada ganancia. Los integradores en bucles como este necesitan un factor de escala que efectivamente será menor que 1, o una división. Eso también significa que cada contribución de integrador por muestra terminará siendo una fracción. ¿Cómo manejas sumas de cantidades que son cada una menos de 1?
-
¿AtTiny tiene un multiplicador de hardware? Si no es así, ¿va a multiplicar / dividir por el cambio a la izquierda / a la derecha o al algoritmo de software?
Los convertidores Boost pueden ser muy difíciles de controlar. Con un inductor de 470uH, la operación será en modo de conducción continua (CCM). En CCM hay 2 polos complejos y un plano medio cero. Cualquiera de estos hará que el control sea inestable si no se compensa adecuadamente. Como parece que no está familiarizado con la teoría del control, tal vez no debería usar un integrador, tal vez sería mejor el control histérico o de golpes. Estos tipos de control no controlan tan estrechamente como un PI, pero son simples y un AtTiny probablemente podría respaldarlos. Primero, establezca el PWM en un ciclo de trabajo fijo del 50% (tendrá que experimentar para obtener un ciclo de trabajo viable). Luego, cada ciclo verifica si Vo es mayor que un valor establecido. Si Vo es mayor que el punto de ajuste, no emita un impulso en el siguiente ciclo. Si Vo es menor o igual que el punto de ajuste, entonces apague el próximo ciclo. Además, para un control de impacto, se necesitará un valor menor para L1 para operar en modo de conducción discontinua (DCM). El control de impacto no funcionará con el CCM ya que el filtro Q estará alto y la salida sonará.
Boost
Dado que un impulso tiene una ruta directa desde la batería a través de L1 y D1 hasta la salida, incluso si Q1 nunca cambia, la salida no será menor que ~ 1.8V (es decir, Vin - 0.6v). Es difícil imaginar lo que podría causar una salida de 1.2 V sin carga. Pero, casi todas las partes que está utilizando tienen un problema.
-
¿Cuál es la resistencia de L1, también la corriente de saturación y la frecuencia de resonancia propia? Con L1 de 470uH y C2 de 1 mF, a menos que la resistencia de L1 sea de al menos 0,5 ohmios, el filtro de salida Q será superior a 5, muy estridente. También a 0,5 ohmios, L1 disipará ~ 125 mW con Io de .25A. Para la operación de DCM de todos modos se necesitará un inductor más pequeño. El límite CCM / DCM se puede usar para encontrar un límite superior para L1 en la operación DCM.
L1 < \ $ \ frac {V_o} {16 i _ {\ text {crit}} f_s} \ $ o \ $ \ frac {\ text {5V}} {\ text {(0.25A)} \ text {(16)} \ texto {(30kHz)}} \ $ = 38uH
-
Q1 solo se controla con ~ 2mA, pero solo tiene \ $ \ beta \ $ de ~ 20. Nunca cambiará la corriente necesaria con ese tipo de unidad. Sería mejor cambiar a un nivel lógico FET.
-
D1 necesita ser un diodo de conmutación y un schottky sería mejor. Algo así como un 1N5818 funcionaría.
-
Debe agregarse un zener de 5.6V en \ $ V_o \ $ para evitar que se produzca un exceso de voltaje.
Si va a diseñar un Boost, debe leer " Descripción de las etapas de potencia de Boost ".