El PWM es así:
Lo que sale del pin es lo del grafico rosa, las rampas azules son el temporizador que usa el chip, la línea verde la señal análoga a intentar simular, el pin primero se lleva a 5V, luego temporizador cuenta y cuando el valor del registro supera al de la señal que desea representar la salida pasa a 0V, el valor promedio es similar al valor deseado análogo, pero se genera por pulsos de diferente ancho.
El operacional responde a varios megahertz mientras que el PWM del arduino me parece está configurado a alrededor de 500Hz, así que responde completamente a todo el ancho, si bien está amplificando el voltaje lo sigue haciendo de forma digital, el medidor no puede responder a toda la frecuencia, si es True RMS podrá medir el valor de manera más estable, pero si mides un voltaje en CC verás que oscila si el ancho coincide con la frecuencia de muestreo del voltimetro, así que verás oscilaciones, si el motor no se controla preciso es por que la resolución del Arduino no basta para lo que necesitas.
Para tener un voltaje más estable necesitas primero filtrar el valor de PWM para tener una señal más análoga y eso es lo que ya amplificarás para alimentar a tu motor
Así que con respecto al por qué no funciona estable, es por que no envías un voltaje estable sino uno pulsante, las características inductivas del motor causa un efecto que no es considerado en estado continuo pero aquí está pulsando, por eso se pierde resolución y el control no es lineal, controlar un motor de manera digital requiere temporizadores de alta resolución ya que al comienzo de la conmutación la corriente es mayor a la requerida en continua para inducir el movimiento y en operación por la frecuencia puede generar efectos de resonancia que varíen aún más su corriente, por ello se acoplan con un codificador rotatorio para ir compensando dinámicamente el PWM según la carga mecánica y las características del propio motor.
Lo que sale del pin es lo del grafico rosa, las rampas azules son el temporizador que usa el chip, la línea verde la señal análoga a intentar simular, el pin primero se lleva a 5V, luego temporizador cuenta y cuando el valor del registro supera al de la señal que desea representar la salida pasa a 0V, el valor promedio es similar al valor deseado análogo, pero se genera por pulsos de diferente ancho.
El operacional responde a varios megahertz mientras que el PWM del arduino me parece está configurado a alrededor de 500Hz, así que responde completamente a todo el ancho, si bien está amplificando el voltaje lo sigue haciendo de forma digital, el medidor no puede responder a toda la frecuencia, si es True RMS podrá medir el valor de manera más estable, pero si mides un voltaje en CC verás que oscila si el ancho coincide con la frecuencia de muestreo del voltimetro, así que verás oscilaciones, si el motor no se controla preciso es por que la resolución del Arduino no basta para lo que necesitas.
Para tener un voltaje más estable necesitas primero filtrar el valor de PWM para tener una señal más análoga y eso es lo que ya amplificarás para alimentar a tu motor
Así que con respecto al por qué no funciona estable, es por que no envías un voltaje estable sino uno pulsante, las características inductivas del motor causa un efecto que no es considerado en estado continuo pero aquí está pulsando, por eso se pierde resolución y el control no es lineal, controlar un motor de manera digital requiere temporizadores de alta resolución ya que al comienzo de la conmutación la corriente es mayor a la requerida en continua para inducir el movimiento y en operación por la frecuencia puede generar efectos de resonancia que varíen aún más su corriente, por ello se acoplan con un codificador rotatorio para ir compensando dinámicamente el PWM según la carga mecánica y las características del propio motor.