Apkrovos valdymas per COM portą

Viskas prasidejo nuo to, kad vienam žmogui prireikė su kompu, per COM (RS232) portą valdyti apkrovą. Iš pradžiu aš galvojau, kad reikia valdyti kokį šildytuvą ar lempą. Todėl pasiūliau naudoti Solid-State rėlę. Vėliau paaiškėjo, kad reikia paprasčiausiai valdyti bevielį access pointą prijungta prie Linux rūterio. Pasiuliau panaudoti Mosfet tranzistorių, bet matyt mano korespondentas nelabai žino apie elektroniką. Teko surinkti ir išbandyti “super” sudėtingą schemą. Va ji maketinėje plokštėje… beja kur ji?

RS232 DTR as power on switch

Nuotraukytėje matosi vienintelė detalę, galingas lauko tranzas- IXFH50N20. Kodėl toks žvėris? Todėl, kad tokių daug turiu. Todėl kad jis tikrai galingas ir ganėtinai aukštos įtampos. Todėl jis turėtu išlaikyti įvairiausius gyvenimo stresus. Teorinės ribos- 50A (wow!), 200V (nu tikrai galima drasiai jungti iki 40V), 45mΩ uždaro tranzo varža- tikrai nebus nuostolių ir nekais. Kitas labai svarbus parametras- tai kad į valdymo grandinę galima paduoti iki +-20V (30V impulse) todėl toks tranzas tikrai nebijo RS232 įtampos lygių. Kaip apkrova naudojamas Target 5 portų switchas.

circuit of RS232 power switch

Bet! Čia komutuojama “žemė”. O tai nevisada gerai. Šia schema galima naudoti kai reikia jungti kokią lemputę, rėlę ar šiaip ką nors.
Dabar kitas variantas…

circuit of RS232 power switch
Nerekomenduojama, nekorektiška schema.

Tranzas pajungtas kiek neįprastai- jis “kabo ore”. Deja kitaip negalima pajungti, nebent apkrovos žemė bus galvaniškai atrišta nuo kompiuterio žemės. Tai switchui beveik nerealu. Todėl apkrova pakabinta į tarpą tarp žemės ir tranzo. Tai gali sukelti problemas su valdymo potencialu, bet kadangi RS232 tai teoriškai +-12V tai jokiu problemu kol kas nėra. Bent jau su mano kompu. Kai įjungtas terminalas, ant užtūros 11.75V, o kai išjungtas -11V. Išjungus kompą (DTR=0V) tranzas išjungia apkrovą. Manau jei apkrovos įtampa bus mažesnė nei RS232 minus tranzo atsidarymo įtampa, viskas bus gerai. Aišku tranzas dirba nekorektiškai kai kyla maitblokio įtampa. Todėl rekomenduoju naudoti žemavolčius maitblokius. (Prie 13V maitblokio tranzas nepilnai atsidaro ir atsiranda įtampos kritimas).

Mano switchas naudoja 7.5V maitblokį (9V išėjimas), tai prie tokios įtampos schema veikia korektiškai.

Gal dėl stabilumo ir reikėtu pajungti kokį rezistorių tarp žemės ir užtūros. Čia reikia žiūrėti jau realiose darbo sąlygose.

Pasitikrinkit savo COM porto įtampos lygius prieš naudodami šią schemą!

Norint tokią schemą padaryti korektiška reikia pasinaudoti taip vadinama “High-Side, N-Channel MOSFET Switch Driver” mikroschema. Arba naudoti kiek retesnį P mosfetą. Tada schema veikia korektiškai. Susiradau savo archyve SFP9520, tai P-channel mosfetas. Biški silpnesnis, bet labai tinkamas.

circuit of RS232 power switch

Bjaurumas tame, kad dabar programoje reikia invertuoti DTR signalo poliariškumą. Dar vienas minusas- kai neveikia kompas, apkrova lieka įjungta. O gal tai pliusas?

3 replies on “Apkrovos valdymas per COM portą”

  1. O čia programa kuri valdo. Autorius Eimis.

    Kompiliuojama su “gcc file.c -o executable”.

    #include <sys/types.h>
    #include <sys/ioctl.h>
    #include <fcntl.h>
    #include <errno.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <stdio.h>
    #include <signal.h>
    #include <termios.h>
    /* Main program. */
    int main(int argc, char **argv)
    {
    int fd;
    int status;
    int set_bits;

    /* Open monitor device. */
    if ((fd = open(argv[1], O_RDWR | O_NDELAY)) < 0) {
    fprintf(stderr, "ar-2: %s: %s\n",
    argv[1], sys_errlist[errno]);
    exit(1);
    }

    ioctl(fd, TIOCMGET, &status);
    set_bits=2;
    ioctl(fd, TIOCMSET, &set_bits);

    // Nutraukus maitinimą laukti 10 sekundžių
    sleep(10);
    ioctl(fd, TIOCMGET, &status);
    if (status & TIOCM_DTR) {
    set_bits=0;
    ioctl(fd, TIOCMSET, &set_bits);
    }
    close(fd);
    }

  2. Dekui.
    “…45mΩ uždaro tranzo varža…”
    Gal tada MΩ, jeigu uzdaro?
    Siaip gali buti ir 45 mΩ, bet tada jau atviro. 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *