Kako koristiti MOSFET kao prekidač?

 

U prošlom tutorijalu objasnili smo što je to MOSFET tranzistor i kako on radi. Sada ćemo iskoristiti stečeno znanje i primijenit ga na praktičnom projektu. Na jednom kratkom primjeru objasnit ćemo spajanje i rad MOSFET-a kako bismo kontrolirali osvjetljenje LED trake.

 

Uvod

Standardne LED trake zahtijevaju izvor napajanja od 12V za ispravan rad. To je visoki napon koji naša Croduino pločica ne može osigurati i zbog toga traku ne možemo izravno spojiti na Croduino pločicu. Što ako želimo kontrolirati LED traku pomoću Croduina? Kako ćemo riješiti taj problem? Odgovor se krije u MOSFET tranzistoru. Pomoću njega možemo spojiti Croduino s LED trakom i njime kontrolirati osvjetljavanje LED trake.
 

Opis projekta

Ovaj mali projekt je vrlo jednostavno izraditi. Iskoristimo prethodno naučeno znanje i primijenimo ga u ovom slučaju. Ako spojimo Croduino na upravljačku elektrodu MOSFET-a, možemo kontrolirati protok vodnog kanala MOSFET-a na kojem je spojena jedna boja RGB LED trake. Ako svaku boju spojimo na zasebni MOSFET, možemo kontrolirati kompletnu RGB LED traku. Za izradu ovog projekta možete koristiti bilo koji NPN ili N-kanalni MOSFET tranzistor, obratite samo posebnu pozornost na karakteristike tranzistora kako ga ne biste preopteretili ili oštetili. Mi smo se odlučili za IRF540N MOSFET(N) tranzistor kroz kojeg može protječi količina struje do 20A. Isto tako obratite pozornost koju RGB LED traku koristite te koliki izvor napajanja je potreban za ispravan rad. LED traku koju smo odabrali je dužine 50cm za koju je dovoljan izvor napajanja od 1A. 3 otpornika od 10kΩ su spojeni između upravljačke elektrode i grounda izvora napajanja kako bi signal bio LOW dok Croduino ne promjeni njegovo stanje.
 
Potrebne komponente:
• Croduino Basic 2
• Eksperimentalna pločica
• RGB LED traka (12V, common anode)
• 3x IRF540N MOSFET(N) Tranzistora
• 3x 10kΩ otpornika
• Izvor napajanja (12V, DC)
 

Kako povezati?

Sve navedene komponente spajamo kao na slici ispod. Izvor napajanja od 12V spajamo na LED traku (oznaka +) i VIN pin Croduina. Spajanje VIN pina Croduina s izvorom napajanja je potrebno samo ako Croduino nema vlastito napajanje preko USB kabla. Upravljačke elektrode (Gate) MOSFET-a spajamo na Croduino izlaze (pin 9, 10 i 11). Isto tako upravljačku elektrodu spajamo još s groundom izvora napajanja preko 10Kohm otpornika. Uz to na odvod spajamo R, G i B priključnicu LED trake. Ostala nam je još samo uvodna (Source) priključnica MOSFET-a, nju spajamo direktno na ground izvora napajanja. Potrebno je još GND Croduina spojiti na ground izvora napajanja.
 

Arduino kod

 
LED traku osvjetljavamo kao i LED diodu koristeći funkcije digitalWrite() i analogWrite(). Za izvršavanje koda nije potrebna nikakva biblioteka niti nove dodatne funkcije. Programski kod ispod prikazuje određene boje određeno vrijeme nakon čega prelazi na prikaz druge boje. Prvo se osvijetli crvena boja, pa plava pa zelena nakon čega traka počinje „miješati“ te tri boje i nastaju različite boje.
 

#define REDPIN 10 //broj pina za crvenu boju LED trake
#define GREENPIN 9 //broj pina za zelenu boju LED trake
#define BLUEPIN 11 //broj pina za plavu boju LED trake

#define FADESPEED 5     // povecanjem ove vrijednosti boje se sporije mijenjaju


void osvijetliLED(int r, int g, int b) { //funkcija koja osvjetljava LED traku razlicitim intezitetima crvene, plave i zelene boje

  analogWrite(REDPIN, r);
  analogWrite(GREENPIN, g);
  analogWrite(BLUEPIN, b);

  delay(FADESPEED);
};

void setup() {
  pinMode(REDPIN, OUTPUT); //postavi LED pinove kao izlaze
  pinMode(GREENPIN, OUTPUT);
  pinMode(BLUEPIN, OUTPUT);

  digitalWrite(REDPIN, LOW); //postavi pocetno stanje LED trake na LOW
  digitalWrite(BLUEPIN, LOW);
  digitalWrite(GREENPIN, LOW);
}


void loop() {
  int r, g, b;

  digitalWrite(REDPIN, HIGH); //osvijetli crvenom bojom
  digitalWrite(BLUEPIN, LOW);
  digitalWrite(GREENPIN, LOW);
  delay(500);

  digitalWrite(REDPIN, LOW); //osvijetli plavom bojom
  digitalWrite(BLUEPIN, HIGH);
  digitalWrite(GREENPIN, LOW);
  delay(500);

  digitalWrite(REDPIN, LOW); //osvijetli zelenom bojom
  digitalWrite(BLUEPIN, LOW);
  digitalWrite(GREENPIN, HIGH);
  delay(500);

  digitalWrite(REDPIN, LOW); //ugasi sve boje
  digitalWrite(BLUEPIN, LOW);
  digitalWrite(GREENPIN, LOW);
  delay(500);
  
//postepeno pojacavaj zelenu boju do maksimalne vrijednosti
//zatim plavu boju i zatim crvenu
//krajnja boja ce biti bijela
  for (r = 0; r < 256; r++) {   
    for (b = 0; b < 256; b++) { 
      for (g = 0; g = 0; r--) {
    for (b = 255; b >= 0; b--) {
      for (g = 255; g >= 0; g--) {
        osvijetliLED(r, g, b);
      }
    }
  }
  delay(500);
//kreni od bijele boje i postepeno smanjuj zelenu boju
//zatim plavu i zatim crvenu sve dok se ne ugase sve boje
  for (r = 255; r >= 0; r--) {
    for (b = 255; b >= 0; b--) {
      for (g = 255; g >= 0; g--) {
        osvijetliLED(r, g, b);
      }
    }
  }
  delay(500);
}

Leave a Reply