- 11 ago 2018, 01:21
#6159
Salve a tutti, chiedo gentilmente il vostro aiuto per chiarirmi alcuni dubbi sul regolatore buck converter che sto costruendo (parte del progetto alimentatore da banco: https://www.elettronica.cc/viewtopic.php?f=19&t=1143 )
Il circuito che ho realizzato: è ispirato a questo progetto qua: http://www.electronoobs.com/eng_circuitos_tut10_code2.php con però alcune differenze apportate volutamente da me.
1- al posto di un potenziometro ho usato un encoder rotativo così da avere una maggiore precisione.
2-il partitore di tensione per il pin di feedback è progettato per arrivare fino a 30V (la tensione massimo del progetto finale sarà di 24V).
3-il mosfet che ho usato io è di tipo N e non di tipo P (non ho un tipo P a disposizione).
4-il transistor npn usato da me è un bc547.
Nel progetto finale il diodo In4001 dovrà essere sostituito da un diodo schottky (va bene un sb340?) e il condensatore di raddrizzamento dovrà essere tarato per 50V per stare sicuri.
Adesso vi espongo i miei dubbi. Il circuito che ho realizzato funziona, regola la tensione senza problemi e la mantiene stabile al cambiamento del carico. Ho, però, dei problemi di tensione. Se io fornisco in entrata al circuito 12.29V dc in uscita avrò una caduta di tensione di c.a 4V infatti, la tensione massima erogabile dal circuito sarà di 9,29 V ad esempio.
Inoltre, ponendo un carico al circuito la tensione massima andrà sempre diminuendo. Il mio sospetto è che il mosfet non lavori in zona di saturazione ma in zona lineare (infatti dalle prove fatte con un carico di 0.07A a 8V riscaldava un bel pò contando che dovrebbe sopportare al max 9.2A come Ids) .
Adesso la domanda, come faccio a capire dal datasheet se il mosfet sta lavorando in zona di satuazione? Datasheet mosfet:
Al momento, sotto un carico di 0.07A c.a e 8V misuro una Vgd di 1.030V, una Vgs di 3.3V e una VDS di 4.2V
Per il resto che ne pensate? So che è un circuito molto semplice. Come potrei migliorarlo una volta risolti questi problemi? Per la capacità del condensatore pensate che basti? Il valore dell'induttanza è un valore indicativo (al momento ho un nucleo in ferrite di diametro 25.5mm avvolto da un filo di rame di diametro 1.3mm per circa 31 spire).
Ps. Arduino è ovviamente alimentato via USB per il momento
Per completezza aggiungo anche il codice di Arduino:
Il circuito che ho realizzato: è ispirato a questo progetto qua: http://www.electronoobs.com/eng_circuitos_tut10_code2.php con però alcune differenze apportate volutamente da me.
1- al posto di un potenziometro ho usato un encoder rotativo così da avere una maggiore precisione.
2-il partitore di tensione per il pin di feedback è progettato per arrivare fino a 30V (la tensione massimo del progetto finale sarà di 24V).
3-il mosfet che ho usato io è di tipo N e non di tipo P (non ho un tipo P a disposizione).
4-il transistor npn usato da me è un bc547.
Nel progetto finale il diodo In4001 dovrà essere sostituito da un diodo schottky (va bene un sb340?) e il condensatore di raddrizzamento dovrà essere tarato per 50V per stare sicuri.
Adesso vi espongo i miei dubbi. Il circuito che ho realizzato funziona, regola la tensione senza problemi e la mantiene stabile al cambiamento del carico. Ho, però, dei problemi di tensione. Se io fornisco in entrata al circuito 12.29V dc in uscita avrò una caduta di tensione di c.a 4V infatti, la tensione massima erogabile dal circuito sarà di 9,29 V ad esempio.
Inoltre, ponendo un carico al circuito la tensione massima andrà sempre diminuendo. Il mio sospetto è che il mosfet non lavori in zona di saturazione ma in zona lineare (infatti dalle prove fatte con un carico di 0.07A a 8V riscaldava un bel pò contando che dovrebbe sopportare al max 9.2A come Ids) .
Adesso la domanda, come faccio a capire dal datasheet se il mosfet sta lavorando in zona di satuazione? Datasheet mosfet:
Al momento, sotto un carico di 0.07A c.a e 8V misuro una Vgd di 1.030V, una Vgs di 3.3V e una VDS di 4.2V
Per il resto che ne pensate? So che è un circuito molto semplice. Come potrei migliorarlo una volta risolti questi problemi? Per la capacità del condensatore pensate che basti? Il valore dell'induttanza è un valore indicativo (al momento ho un nucleo in ferrite di diametro 25.5mm avvolto da un filo di rame di diametro 1.3mm per circa 31 spire).
Ps. Arduino è ovviamente alimentato via USB per il momento
Per completezza aggiungo anche il codice di Arduino:
Codice: Seleziona tutto
int PWM = 3;
int feedback = A1;
int pwm = 0;
//encoder
int Counter = 0;
boolean _direction;
int Pin_clk_Last;
int Pin_clk_Current;
// Definition of the input-pins
int pin_clk = 8;
int pin_dt = 9;
void setup() {
pinMode(PWM, OUTPUT);
pinMode(feedback, INPUT);
TCCR2B = TCCR2B & B11111000 | B00000001; // pin 3 and 11 PWM frequency of 31372.55 Hz
Serial.begin(115200);
//encoder
pinMode (pin_clk,INPUT);
pinMode (pin_dt,INPUT);
// ...and activating of their pull up resistors
digitalWrite(pin_clk, true);
digitalWrite(pin_dt, true);
// Initial reading of the Pin_CLK
Pin_clk_Last = digitalRead(pin_clk);
}
void loop() {
Pin_clk_Current = digitalRead(pin_clk);
// Check for a Change
if (Pin_clk_Current != Pin_clk_Last)
{
if (digitalRead(pin_dt) != Pin_clk_Current)
{
// Pin_CLK has changed first
Counter --;
_direction = true;
}
else
{ // Else Pin_DT changed first
_direction = false;
Counter++;
}
}
Pin_clk_Last = Pin_clk_Current;
float voltage = Counter;
float output = analogRead(feedback);
Serial.print(output);
Serial.print("/");
Serial.println(voltage);
if (voltage > output)
{
pwm = pwm-1;
pwm = constrain(pwm, 1, 254);
}
if (voltage < output)
{
pwm = pwm+1;
pwm = constrain(pwm, 1, 254);
}
analogWrite(PWM,pwm);
}