lauantai 2. syyskuuta 2017

KORKEAMPI JÄNNITE I

Arduinon nopeutettua digitaaliohjausta voi hyödyntää pumppaamalla kondensaattorien ja diodien alulla jännitettä korkeammaksi. Tässä hyödynnetään ns. Dicksonin pumppu tai kertoja (Dickson charge pump, or Dickson multiplier ). Tällä menetelmällä voidaan tasajännitelähteen jännite nostaa korkeammaksi.

Tässä esimerkissä kytkentä on suoraan Arduinon digitaalilähdöissä ja syöttöjännitteenä on mikrokontrollerin +5 V:n lähtö. Jos lähtöjännitteenä on esim. 12 V, tarvitaan digitaalilähtöjen ja ”pumppupiirin” väliin erilliset kytkimet. 
    Suuria tehoja ei tällä (esimerkissä olevalla) kytkennällä voi saada aikaan. 
    Digitaalilähtöjen maksimi kuorma saa olla noin 40 mA. Saatu jännite on noin lähtöjännite kerrottuna diodi / kondensaattoriketjujen lukumäärällä ja vähennettynä diodien myötäjännitteen aiheuttamalla häviöllä. 


    Kuvassa mittari näyttö hiukan tuon ylikin, sillä viimeinen suodatuskondensaattori latautuu piirissä olevaan häiriöpiikkiin, sillä piiri on tässä tapauksessa kuormittamaton.
Kytkentä on varsin yksinkertainen, samoin ohjelma. Tässä ohjelmassa olen ”pumppausvaiheen” sijoittanut aliohjemaan kuvatakseni sitä, että pääohjelmassa voi tehdä jotain muuta tarvittaessa.
Arduino UNO:ssa sisäiset muistipaikat sijoittuvat siten, että digitaalipinnejä 0 .. 7 vastaa PORTD, pinnejä 8 .. 13 PORTB ja analogiapinnejä 0 .. 5 sekä samalla digitaalipinnejä 14 .. 19 PORTA. Fyysisiä analogiapinnejä voidaan käyttää myös digitaalituloina ja -lähtöinä.

OHJELMA 47
/*******************************
* Ohjelma OhjelmaTest_47v2
* 30.8.2017
* Jännitteen pumppaus korkeammaksi.
*
*/

// Määrittelyt
   const int Con_Pinni1 = 2;
   const int Con_Pinni2 = 3;

// Aliohjelmat
   void Fun_Muunnin(){
      int i = 0;
      for (i = 0; i < 10; i++){
         bitSet(PORTD,Con_Pinni1);
         delayMicroseconds(3);
         bitClear(PORTD,Con_Pinni1);
         delayMicroseconds(2);
         bitSet(PORTD,Con_Pinni2);
         delayMicroseconds(3);
         bitClear(PORTD,Con_Pinni2);
         delayMicroseconds(2);
      }
   }// Jännitteen nostajan loppu

// Asetukset
void setup() {
   pinMode(Con_Pinni1, OUTPUT);
   pinMode(Con_Pinni2, OUTPUT);
   Serial.begin(9600);
}

void loop() {
   Fun_Muunnin();
   delay(1);
}// Pääohjelman loppu