Arduino Tutorial #7 – Einen Boost Konverter / DC – DC Wandler aufbauen und steuern.

Ein Gleichspannungswandler / Schaltregler wird aufgebaut und mit dem PWM Signal eines Arduino angesteuert. Die Ausgangsspannung ist einstellbar mit einem Poti. Eine Ausgabe für den Seriellen Plotter von der Arduino Software ist vorgesehen. Die rote LED 13 zeigt einen Fehler an, wenn die Ausgangsspannung nicht stimmt.
5,6V Eingangsspannung  werden zu 5 – 14V Ausgangsspannung.

Verwendete Bauteile als Startwert zum experimentieren:
– Induktivität 400uH
– Kapazität 100uF / 50V, kann auch deutlich höher sein.
– Diode: 1N4007 Gleichrichterdiode (besser ist eine Schottky Diode da sie einen kleineren Spannungsabfall hat)
– MOSFET IRIZ44N
– Lastwiderstand 1kOhm (Achtung Verlustleistung bei 10-15V ! Er wird heiss)
– Eingangsspannung 5,6V von einem Netzteil mit Strombegrenzung.
– Poti 10 kOhm
– Arduino Nano
– 3 Standard Widerstände 10 kOhm (MOSFET Gate), 8,3kOhm, 1kOhm (Spannungsteiler am Ausgang)

Das Programm

// Arduino Boost Konverter
// Spannung hochsetzen mit einem Schaltregler

int VmessPin=A5, VccPin=A1, PotiPin=A3, PwmPin=3;
int i, potiwert, pwm=0, mitteln=10;
float Vcc, Vaus, Vsoll, VoltFehler=0.5, Vref=3.30;
float teiler, roben=8120, runten=1002, Vmin=5.0, Vmax=14.0;

void setup() {
  Serial.begin(115200); //38400);
  pinMode(PotiPin, INPUT);
  pinMode(VmessPin, INPUT);
  pinMode(PwmPin, OUTPUT);  
  TCCR2B = TCCR2B & B11111000 | B00000001; // für Pin3 & 11 PWM Frequenz 31372,55 Hz
  teiler=runten /(roben + runten);
}

void loop() { 
  potiwert = analogRead(PotiPin);
  Vsoll = Vmin +((Vmax - Vmin) / 1023 * potiwert);
  Vaus = 0.0;
  for(i=0; i<mitteln; i++) { 
    Vcc = Vref * 1023.0 / analogRead(VccPin);
    Vaus += analogRead(VmessPin) / 1023.0 * Vcc / teiler;
  }
  Vaus = Vaus / mitteln;
  if (Vsoll > Vaus) {
    if(pwm < 254) pwm = pwm+1;
   }
  if (Vsoll > Vaus+1) {
    if(pwm < 252) pwm = pwm+3;
  }
  if (Vsoll < Vaus) {
    if(pwm > 1) pwm = pwm-1;
  }
  if (Vsoll < Vaus-1) {
    if(pwm > 3) pwm = pwm-3;
  }
  analogWrite(PwmPin, pwm);
  //delay(10);
  if(Vaus < (Vsoll - VoltFehler) | Vaus > (Vsoll + VoltFehler))
    digitalWrite(13, 1);
  else
    digitalWrite(13, 0);
  Serial.print(pwm / 10.0);
  Serial.print(", ");
  Serial.print(Vsoll);
  Serial.print(", ");
  Serial.print(Vaus);
  Serial.println(",0 , 24");
  if(pwm > 253 & Vaus < (Vsoll / 1.2))
    pwm = 120;
 }

von Matthias Busse

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.