El circuito de refuerzo produce un voltaje más bajo del que debería

0

Estoy aprendiendo el circuito de refuerzo y estoy tratando de obtener una salida de voltaje de 50 ~ 100v desde una entrada de 3 ~ 5v y PWM de 30 kHz usando el circuito de refuerzo.

simular este circuito : esquema creado usando CircuitLab

(Uso del transistor como interruptor y diodo)

La simulación parece funcionar, sin embargo, el circuito real solo genera una salida de 10 ~ 12v ..

Además,estoyusandoarduinoparagenerarunaentradaPWMdecasi32kHzconunciclodetrabajocercanoal90%.Ypareceteneralgúnproblema,también.

voidloop(){digitalWrite(9,HIGH);delayMicroseconds(28);digitalWrite(9,LOW);delayMicroseconds(4);}

(Tambiéntratédecambiareltemporizadoryelanálogodeescrituraincorporados,peronopuedegenerarunPWMconunciclodetrabajosuperioral50%.Notengoideaalrespecto...)

PD:estoyusando esta calculadora para obtener los requisitos de Inductor y Cap.

Actualización: probé un inductor más pequeño (470uH) con una frecuencia PWM más alta (125 kHz, usando otro Arduino, usando un temporizador incorporado). Y obtén solo 4.5v en la salida ...

    
pregunta Yangff

1 respuesta

3

El código:

void loop() {
    digitalWrite(9, HIGH);
    delayMicroseconds(28);
    digitalWrite(9, LOW);
    delayMicroseconds(4);
 }

No va a dar un ciclo de trabajo muy confiable. La resolución de los microsegundos de demora es de 4 µs, pero va a fluctuar debido a interrupciones, por ejemplo, debido al milis timer (timer1) o desde I / O. El jitter puede ser mucho mayor que 4µs. Los temporizadores de hardware, que generan señales PWM directamente en los pines, son mucho más estables.

La configuración predeterminada del temporizador, utilizada por analogWrite, en un Arduino es para un ciclo de 1kHz o 512Hz (según el temporizador), con un prescaler (divisor de reloj) de 64, o 4µs.

Tendrás que abandonar la biblioteca Arduino y lidiar con el hardware del temporizador subyacente para obtener cualquier frecuencia PWM superior a 1kHz.

Así que tendrás que cambiar los temporizadores configurados. Esto se explica en el manual de ATmega sobre el ATmega48 / 88/168/328, llamado 8271.pdf descargable desde Atmel.com.

Si realmente desea 32kHz, utilice un temporizador con un conteo superior programable, o el temporizador 1. Si usa el temporizador 1, que es un temporizador de 16 bits, configure el escalador previo a 0, por ejemplo:

TCCR2B = (0<<CS12) | (0<<CS11) | (1<<CS10);

Luego use el modo 'PWM rápido, 9 bits' o los modos que usan ICR1 u OCR1A para establecer el conteo máximo.

Puede usar cualquier ciclo de trabajo configurando el registro de comparación de salida apropiado OCR1A u OCR1B. Con un conteo de 9 bits, el ciclo de trabajo se puede cambiar en incrementos de 1/512.

    
respondido por el gbulmer

Lea otras preguntas en las etiquetas