Teade

Collapse

Foorumi reeglid.

Foorumi reeglistik on uuendatud. Palume tutvuda ja arvesse võtta.
See more
See less

Teeme vaikse kompressori

Collapse
X
 
  • Filter
  • Kellaaeg
  • Show
Clear All
new posts

    Teeme vaikse kompressori

    Tekkis vajadus kompressori järgi mis ei müriseks nagu enamiks poe omi.

    Kasutatud 2x külmiku kompressoreid jadas. Jadas seepärast et 1 ei suuda käivituda kui vasturõhk üle 3Atm. Sensorina kasutasin Honywell 26pcffs2g sensorit. Temp mõõtmiseks igal kompressoril DS75. Usb on tegelt FT232 com kivike. Selle kaudu läheb soft sisse ja saab terminali kaudu seadistada ja vaadata parameetreid:
    Temperatuuri limiit.
    Kompressor sees väljas.
    Sisselülitus limiit.
    Välja lülitus limiit.
    Hetke temperatuur kummagil kompressoril(toodud ka LCD peale välja)
    Hetke rõhk (samuti LCD peale välja toodud)
    Salvestada default parameetrid(laetakse toite peale lülitamisel)
    Laadida default parameetrid.

    Katsetatud sai ka vaakum pumbana, vesi tühja klaaspudelisse ja õhk välja, kees ilusti toa tempil.
    Puudu veel sisend filter mis sodi sisse ei laseks, ja survepaagile alla ventiil kust saaks õhu välja lasta.
    Skeem ja pildid serveris üleval antud lingil.

    Kood:
    Kood:
    #include "LTC2482_lib.c"
    #include "Conv_Lib.c"
    
    
    #define ON 1
    #define OFF 0
    #define AIR(A)    PORTC.F1=(A)
    #define COMPRESSOR(A)    PORTC.F2=(A)
    #define AIR_Act    PORTC.F1
    #define COMPRESSOR_Act    PORTC.F2
    
    
    unsigned char Usart_Rx_FIFO[50];
    unsigned char Usart_Rx_FIFO_Write_Pointer=0;
    union Control { unsigned char bytes [7];
                       struct
                            {
                             unsigned char Temperature1;
                             unsigned char Temperature2;
                             unsigned char Temperature_Lim;         //Tcmd
                             unsigned char Pressure;            //Lcmd
                             unsigned char Pressure_Max_Lim;    //LUcmd
                             unsigned char Pressure_Min_Lim;    //Llcmd
                             unsigned char Air_Control;
                              } name;
                     }Control  ;
    
    
    unsigned char Load_Def=0;
    char txt[6];
    char temp_text[14];
    
    //////////////////////////////////////////////////////////////////////////////
    void Usart_Write_Text(unsigned char *text){
     while(*text) {Usart_Write(*text++);}
    }
    //////////////////////////////////////////////////////////////////////////////
    void Resa (void){asm {RESET;}}
    //////////////////////////////////////////////////////////////////////////////
    unsigned int LM75_Read(unsigned char devo){
    unsigned buffer=0;
    unsigned char kuju;
    I2C_Start();
    if(0==I2C_Wr(0b10010001+(devo<<1))){
    buffer = I2C_Rd(0);
    I2C_Stop();
    }
    else{I2C_Stop();return 0;}
    return buffer;
    }
    //////////////////////////////////////////////////////////////////////////////
    void Update_Temperature(void){
    Control.name.Temperature1=LM75_Read(0);
    Control.name.Temperature2=LM75_Read(1);
    }
    //////////////////////////////////////////////////////////////////////////////
    void Update_Pressure(void){
          double        p;
                double        r;
                double        t;
                unsigned int taga;
          double voltage;
     voltage = LTC2482_Read() & 0x7FFF;
     if(voltage!=0){
      p = (voltage * 0.003404584259033203125)*10.0;    //(3279/65536)*0,068046
      Control.name.Pressure=p;
     }
    }
    //////////////////////////////////////////////////////////////////////////////
    void Save_Defaults (void){
     unsigned char i;
     for(i=0;i<7;i++){
      Eeprom_Write(i,Control.bytes[i]);
     }
    }
    
    //////////////////////////////////////////////////////////////////////////////
    void Load_Defaults (void){
     unsigned char i;
     for(i=0;i<7;i++){
      Control.bytes[i]=Eeprom_Read(i);
     }
    }
    
    //////////////////////////////////////////////////////////////////////////////
    void Usart_Command_Action(void){
    unsigned char i;
    unsigned long Temp_data;
     switch(Usart_Rx_FIFO[0]){
      case 'T' : {
                  if(Usart_Rx_FIFO[1]=='s') {
                   if(isdigit(Usart_Rx_FIFO[2])==1) {
                    Control.name.Temperature_Lim=StringToLong(&Usart_Rx_FIFO[2]);
                   }
                   else{
                    Usart_Write_Text(WordToMyStr(Control.name.Temperature_Lim));
                   }
                  }
                  else{
                   if(Usart_Rx_FIFO[1]=='1'){
                    Usart_Write_Text(WordToMyStr(Control.name.Temperature1));
                   }
                   if(Usart_Rx_FIFO[1]=='2'){
                    Usart_Write_Text(WordToMyStr(Control.name.Temperature2));
                   }
                  }
                  return;}
      case 'P' : {
                   switch(Usart_Rx_FIFO[1]){
                    case 'h' : {
                                if(isdigit(Usart_Rx_FIFO[2])){
                                 Control.name.Pressure_Max_Lim=StringToLong(&Usart_Rx_FIFO[2]);
                                }
                                else{
                                 Usart_Write_Text(WordToMyStr(Control.name.Pressure_Max_Lim));
                                }
                                return;
                                }
                    case 'l' : {
                                if(isdigit(Usart_Rx_FIFO[2])){
                                 Control.name.Pressure_Min_Lim=StringToLong(&Usart_Rx_FIFO[2]);
                                }
                                else{
                                 Usart_Write_Text(WordToMyStr(Control.name.Pressure_Min_Lim));
                                }
                                return;
                                }
                    default  : {
                                Usart_Write_Text(WordToMyStr(Control.name.Pressure));
                                return;
                                }
                   }
                  }
      case 'O' : {
                  if(Usart_Rx_FIFO[1]=='a'){
                    Usart_Write_Text(WordToMyStr(COMPRESSOR_Act));
                  }
                  else{
                   if(isdigit(Usart_Rx_FIFO[1])==1) {
                    Control.name.Air_Control=(Usart_Rx_FIFO[1]=='0')? 0:1;
                   }
                   else{
                    Usart_Write_Text(WordToMyStr(Control.name.Air_Control));
                   }
                  }
                  return;
                  }
    
      case 'L' : {
                  Load_Defaults();
                  return;}
      case 'S' : {
                  Save_Defaults();
                  return;}
    
    
    
     default :  return;
     }
    }
    //////////////////////////////////////////////////////////////////////////////
    void interrupt(void) {
    unsigned char Utemp;
     if(INTCON.TMR0IF){
      TMR0L=0xC7;
      TMR0H=0xFE;
      TMR1=0;
      INTCON.TMR0IF=0;
     }
     if(Load_Def){Load_Defaults(); Load_Def=0;}
     if(PIR1.RCIF == 1){      // Usart interrupt
      T1CON=0;
      Utemp=Usart_Read();
      if(Utemp==13){
       Usart_Rx_FIFO[Usart_Rx_FIFO_Write_Pointer]=0;
       Usart_Write_Text("\n\r");
       Usart_Command_Action();
       Usart_Rx_FIFO_Write_Pointer=0;
      }
      else{
       if(Utemp=='R'){Resa();}
       Usart_Rx_FIFO[Usart_Rx_FIFO_Write_Pointer++]=Utemp;
      }
     T1CON=0b00110011;
     TMR0L=0xC7;
     TMR0H=0xFE;
     TMR1=0;
     INTCON.TMR0IF=0;
     PIR1.RCIF=0;
     }
    }
    //////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////
    void main (void){
    
    char Text[8];
    unsigned int temu;
    ADCON1=0b11111110;
    Usart_Init(115200);
    Delay_ms(500);
    LTC2482_Init();
    I2C_Init(50000);
    Lcd8_Config(&PORTA, &PORTB, 2, 4, 3, 7, 6, 5, 4, 3, 2, 1, 0);
    TRISC.F2=0;
    TRISC.F1=0;
    AIR(OFF);
    COMPRESSOR(OFF);
    T1CON=0b00000011;
    Usart_Rx_FIFO[256]=0;
    Load_Def=1;
    INTCON=0b11000000;
    INTCON.TMR0IF=0;
    INTCON.TMR0IE=1;
    T0CON =0b10000111;
    PIR1.RCIF=0;
    PIE1.RCIE=1;
    Delay_ms(3000);
    Lcd8_Config(&PORTA, &PORTB, 2, 4, 3, 7, 6, 5, 4, 3, 2, 1, 0);
    while(1){
     Update_Temperature();
     Update_Pressure();
     if(Control.name.Pressure_Max_Lim>100){Control.name.Pressure_Max_Lim=100;}
     if(Control.name.Pressure_Max_Lim<5){Control.name.Pressure_Max_Lim=5;}
     if(Control.name.Temperature_Lim>=95){Control.name.Temperature_Lim=95;}
      if((Control.name.Pressure_Min_Lim+5)>Control.name.Pressure_Max_Lim){
       Control.name.Pressure_Min_Lim=Control.name.Pressure_Max_Lim-5;
      }
     if(!Control.name.Air_Control) {
     COMPRESSOR(OFF);
     }
     else{
      if(Control.name.Pressure<=Control.name.Pressure_Min_Lim){
       AIR(ON);
       Delay_ms(100);
       COMPRESSOR(ON);
       Delay_ms(2000);
       AIR(OFF);
      }
      if(Control.name.Pressure>=(Control.name.Pressure_Max_Lim+1)){
       COMPRESSOR(OFF);
      }
     }
    
    
    
    
    Delay_ms(100);
     ByteToStr(Control.name.Pressure,Text);
    if(Text[1]==' '){Text[1]='0';}
     Text[3]=Text[2];
     Text[2]='.';
     Text[4]=0;
     Lcd8_Out(0, 1, Text);
     Lcd8_Out(0, 5, " Atm ");
     
    
    if((Control.name.Temperature1>=Control.name.Temperature_Lim)||(Control.name.Temperature2>=Control.name.Temperature_Lim)){
    while(1){
      Lcd8_Out(2, 1,"OVERTEMP");
      Delay_ms(500);
      Lcd8_Out(2, 1,"        ");
      Delay_ms(500);
      COMPRESSOR(OFF);
    }
    }
    else{
     ByteToStr(Control.name.Temperature1,Text);
      if(Text[1]==' '){Text[1]='0';}
      Text[0]=Text[1];
      Text[1]=Text[2];
      Text[2]=0;
      Lcd8_Out(2, 2, Text);
      Lcd8_Out(2, 4, "C");
    
     ByteToStr(Control.name.Temperature2,Text);
     if(Text[1]==' '){Text[1]='0';}
      Text[0]=Text[1];
      Text[1]=Text[2];
      Text[2]=0;
      Lcd8_Out(2, 6, Text);
      Lcd8_Out(2, 8, "C");
    }
    
    
    }}
    Modelleerimises ja tootmises kehtivad:
    1. Avariikindel vooluring lühistab kõik teised.
    2. Transistor, millel on kiiresti toimiv kaitse, säästab kaitset, sulades kõigepealt ise.

    #2
    Vs: Teeme vaikse kompressori

    Kood võiks ka ilusam olla aga noh, töötab:P
    Skeem on ka nadi, osad väärtused puudu ja R3 külge minev traat peaks tulema IC2 küljest mitte IC1(PCB peal fixitud traadiga, R3=0 oomi)
    See DC/DC ja LM7805 hunnik on vajalik ainult 10V tegemiseks sensorile, voolutarve olematu sensoril. DC/DC on vajalik ka isoleerimiseks sest see dif väljund hõljub 2-8V juures, kui oleks maaga ühendatud siis ADC saaks vale tulemuse kuna pinge üle 3,3V(ref) kaitse dioodide tõttu ei läheks,kui lähekski küpseks kivike.
    viimati muutis kasutaja murphy; 08 m 2009, 03:34.
    Modelleerimises ja tootmises kehtivad:
    1. Avariikindel vooluring lühistab kõik teised.
    2. Transistor, millel on kiiresti toimiv kaitse, säästab kaitset, sulades kõigepealt ise.

    Comment


      #3
      Vs: Teeme vaikse kompressori

      Külmiku kompressor on ainuke, mis suudab käivituda 10 atm. vasturõhuga. On ehitatud üks selline. Kui need kompressorid ei suuda 3 atm. vasturõhuga käima minna, siis on nende mootoritel midagi halvasti. Proovi vahele panna kuulklapp, mis laseb ainult ühtepidi rõhku läbi (nippel).
      päike, õhk ja ...

      Comment


        #4
        Vs: Teeme vaikse kompressori

        ei tea , külmikus kaob vasturõhk suht kohe kui kapp seiskub. See seletab ka miks tava külmik (lühike elektri katkestus) maha põleb, kompressor ei jõua käima minna. Mu enda oma mis toas tiksub ka kiiksuga, vahet pole kas sügav või tava käima ei lähe kumbgi kui korraks maha kakkuda toide. Vene omad tõesti läksid käima suva vasturõhuga.
        Modelleerimises ja tootmises kehtivad:
        1. Avariikindel vooluring lühistab kõik teised.
        2. Transistor, millel on kiiresti toimiv kaitse, säästab kaitset, sulades kõigepealt ise.

        Comment


          #5
          Vs: Teeme vaikse kompressori

          Oled mõõtnud mis selle tootlikus võib olla?

          Comment


            #6
            Vs: Teeme vaikse kompressori

            Ülimalt väike pakun, see 1L mis surve paagina hetkel töötab pumpamiseks 8Atm peale läheb oma 30s.
            Modelleerimises ja tootmises kehtivad:
            1. Avariikindel vooluring lühistab kõik teised.
            2. Transistor, millel on kiiresti toimiv kaitse, säästab kaitset, sulades kõigepealt ise.

            Comment


              #7
              Vs: Teeme vaikse kompressori

              Esmalt postitatud murphy poolt
              sissetuleva õhu õlitus puudub?
              ma vist rikkusin oma kompressori sellega ära, oli küll ees õhu õlitaja, selline nagu suruõhu seadmetel tavaliselt surve poolel, ga ei töödanud seal korraliklt, lasin aegajalt wd40-t sisse ...
              igaljuhul maha suri, kuni töötas ajas soenedes oma õli haisu välja, teist õli aga ei neelanud ...
              Kuidas joodetud ühendused peavad, survet akumuleerida kannatab?

              vana teema ka meeldetuletuseks: http://www.elfaelektroonika.ee/fooru...ad.php?t=35128
              viimati muutis kasutaja kfl; 08 m 2009, 11:37.

              Comment


                #8
                Vs: Teeme vaikse kompressori

                Tal ju sissevõtul terve korpuse sisemus tühi, sinna lased õli kuni hakkab välja ajama. ega ta kuskile kao sealt, sissevõtt neil suht üleval.
                Modelleerimises ja tootmises kehtivad:
                1. Avariikindel vooluring lühistab kõik teised.
                2. Transistor, millel on kiiresti toimiv kaitse, säästab kaitset, sulades kõigepealt ise.

                Comment


                  #9
                  Vs: Teeme vaikse kompressori

                  Aktuaalne teema, ise läksin kergema vastupanu teed:


                  Ehk on kellegil ka huvitavaid õli ja müravaba kompressori ideid ~8-10 bar kanti?

                  Comment


                    #10
                    Vs: Teeme vaikse kompressori

                    Selleks, et kompressor uuesti käivituda saaks installitakse tagasilöögiklapp mis on pea tühjendusega (slindri). (Ainult tagasilöögi kuulklapp ei aita sest see rõhk klapi ja kolvi vahelt ei kao kuhugi)

                    Comment


                      #11
                      Vs: Teeme vaikse kompressori

                      võin sulle teinekord mõne gaasimaski filtri anda sisendisse
                      ps kaust alati 100% täis ,kasuta ekirja

                      Comment


                        #12
                        Vs: Teeme vaikse kompressori

                        Kunagi nägin analoogset aparaati, mis oli töötanud aastaid. Sinna oli peale kompressorist väljumist pandud mingi purk õli eraldajaks. Õli eraldajast oli viidud kraaniga toru tagasi kompessorisse. ca tunni tagant tuli kompressor seisata ja lasta õlil tagasi kompressorisse valguda.

                        Comment


                          #13
                          Vs: Teeme vaikse kompressori

                          Mul alati tekib hea meel kui kuulen kuis keegi miskit leiutas või ise valmistas))
                          Mulle tuli meelde see lugu mida näidati telekast aastaid tagasi.
                          Üks insener kes on Eestimaa venelane leiutas uut tüüpi pumba mis on kümme korda tootlikumd ja samapalju kergem nendest pumpadest mida monopolid toodavad...Ta tõi näiteks selle asja,et kosmoseraketiga kosmosesse saadetava kauba kilogrammi hind on üks miljon USD...selle pumba abil säästetanuks kümneid kordi...Too insener tahtis vaid,et rajatakse tehas ja antaks kohalikele tööd...asi jäeti sinnapaikka...
                          Küllap NASA omad ostsid patendi...või juudid ostsid patendi ja panid riilulile seisma-seda rääkis Juku-Kalle Raid,et juudid ostavad kokku patente ja panevad nood riilulitele seisma....ruineerivad maailma majandust...

                          Kaasaskantavad päiksepaneelid:
                          www.campinggeardepot.com
                          www.powerfilmsolar.com

                          Ainult rumalad ostavad elektrit...
                          sest elektrit saab tasuta!

                          Comment


                            #14
                            Vs: Teeme vaikse kompressori

                            Esmalt postitatud une18 poolt
                            ... analoogset aparaati, mis oli töötanud aastaid. ...
                            Ei saa mina oma süsteemi tööle (ei ole viitsinud enam jamada)
                            Laeb propaaniballoonist akupaaki liiga kaua,
                            ei pea survet, ei õlita ise jne

                            Mõned küsimused ennem kui uuesti katsetama hakkan
                            - kuidas ringlevat õli teha?
                            - kuidas õli kinni püüda enne akupaaki sattumist, kas niiskuseraldaja sobiks õlipüüduriks?
                            - kuidas vasktorusi odavamalt hankida ja joota?
                            - mis näitudele, tsüklitele automaatika või kontroller oleks hädavajalik?
                            - kuidas külmikulaibast kompressorit eraldada turvaliselt, äkki külmaaine veel sees, et sellega mitte vastu näppe-nägemist saada?
                            - milline oleks mitme kompressori lahendus, jadamisi v. paraleelselt, ülekuumenenud puhkeasendisse, kuidas neile õlitus teha?

                            Olemas niiskuseraldaja, õlitaja, surveregulaatorlüliti, tagasivooluklapp (vist lekib), 24V suruõhuklappe (töökorda pole katsetanud, muidu saaks äkki tagasivoolu-õlitust reguleerima panna),
                            vaja veel kompressoreid, ühest tundub, et ei piisa ...

                            Comment


                              #15
                              Vs: Teeme vaikse kompressori

                              kui vaakumit pole vaja pane paraleeli ja kui plapp siis õli jaoks ja käivitamiseks lükatakse asi ringi peale, Õli jaoks väiksem paak mis kuum püsib et vesi ei kondenseeruks väga. Natuke läheb ikka õli sisse vett aga see aurustub ja enamik kondenseerub pea paagis.
                              Lisan veel et osad komperssorid plast(tefflon) klappidega, need surevad kähku kuuma tõttu.
                              Mu projektis algul olnud surid kuuga. Siis lõikusin lahti ja avastasin et plast.
                              Hetkel kasutan mingit meditsiinilist.See käib juba tükk aega.Kasutan pneumo silindri releed et lülitada ringi peale käivituseks. Nendega konks et väikse düüs peab vahel olema sest need ei lylita korralikult kui vasturõhku pole.
                              Veel lisasin tagasivoolu jaoks laagrikuulist ja pastakavedrust tehtud klapi, plastist treisin korpuse.
                              Modelleerimises ja tootmises kehtivad:
                              1. Avariikindel vooluring lühistab kõik teised.
                              2. Transistor, millel on kiiresti toimiv kaitse, säästab kaitset, sulades kõigepealt ise.

                              Comment

                              Working...
                              X