DIY Electronic projects
...a što činiš?! - Printable Version

+- DIY Electronic projects (https://forum.yu3ma.net)
+-- Forum: Sve ostalo - Everything else (https://forum.yu3ma.net/forumdisplay.php?fid=9)
+--- Forum: Sve i svašta (https://forum.yu3ma.net/forumdisplay.php?fid=41)
+--- Thread: ...a što činiš?! (/showthread.php?tid=2357)



RE: > A sto cinis: - Gosha - 07-21-2014

(07-21-2014, 07:39 PM)TDA Wrote: Boro, pakuj ga i šalji za Niš! Rasplakao si nam Goshu! Tongue
Ma imam vec jedan (HMAP-ov) na "kanalu", dusu mi pojede. Izgleda da mu je riknuo trafojcic u VN generatoru. Srecom da rusi daju sve podatke pa ce moci da se namota drugi.


RE: > A sto cinis: - vdii - 07-21-2014

Quote:.u jednom ovo je njegov poslednji rad
Не, ово дело waso сам само поновио.Smile Штампана плоча променила. Заштита одбор - SMD. Накнада архива - ВIAS.


RE: > A sto cinis: - boraomega - 07-21-2014

(07-21-2014, 07:39 PM)TDA Wrote: Boro, pakuj ga i šalji za Niš!

Da znas da hocu!

(07-21-2014, 08:03 PM)HomeMadeAudioProject Wrote: many people like that osciloscope!

I DON'T !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

@gosha

Nemam cime da izmerim 2000V! Svi moji instrumenti su do 1000V jer se nikad ne bakcem sa bilo cime vecim od 300-400V. SVI ostali naponi koje sam mogao da merim postoje i tacni su, katodna cev je izgleda OK i radi joj grejanje. Pristup tom delu gde je taj mali coperski trafo i gigantske VN diode je zaj@ban samo tako.... morao bi pola skopa da rasturim da tu pridjem! Jedva se snalazim u njihovim semama ( nekako su mi seme nepregledne, smusene, zbrkane....) a uz to ne znam ni rec Ruskog pa objasnjenja samo poneko nabodem po nekoj logici, inace KATASTROFA..... MAJMUN JE USAO U TENAK!!! Vidim da cu solidno naj***ti sa ovim bacuskom, a kao za inat onaj Tektronix mi je neupotrebljiv za merenja.


RE: > A sto cinis: - Gosha - 07-21-2014

(07-21-2014, 10:54 PM)boraomega Wrote: Nemam cime da izmerim 2000V!
Trebaju ti samo 9 otpormika od 10M, povezes ih sve na red i stavis na vrh pipalice od instrumenta koji ima unutrasnji otpor od 10M (a to su skoro svi danasnji digitalci) i dobices razdelnik 10:1. Sada ce instrument pokazivati 10X manju vrednost sto je u ovom slucaju -200V. Ovde nam nije bitna neka velika tacnost vec vise da ustanovimo da li imamo taj napon. Ja sam za svoje potrebe sklepao jedan takav VN otpornik i dosta me dobro sluzi.
Ipak budi oprezan jer su visoki naponi u pitanju, ne mogu ti nauditi mnogo jer su male struje ali ipak mozes doziveti neprijatnosti.

A ako se resis mozes ga poslati i za Nis taman da uporedim trafo sa ovim sto je kod mene.



RE: > A sto cinis: - HomeMadeAudioProject - 07-22-2014

Gosha, ako ti je prevelik problem opravka malog rusa mogu ja sačekati i neku drugu priliku tj neki drugi osciloskop uz moju doplatu, da bude nešto poput acazecevic -evog i cijenom tu oko 100e (ukupno). sve se možemo dogovoriti - nije problem,nemoj da se grizeš zbog mene.


RE: > A sto cinis: - Gosha - 07-22-2014

(07-22-2014, 05:53 AM)HomeMadeAudioProject Wrote: Gosha, ako ti je prevelik problem opravka malog rusa mogu ja sačekati i neku drugu priliku tj neki drugi osciloskop uz moju doplatu, da bude nešto poput acazecevic -evog i cijenom tu oko 100e (ukupno). sve se možemo dogovoriti - nije problem,nemoj da se grizeš zbog mene.

HAMP, jos mi ni jedan nije "uteko" pa nece ni ovaj. A sto se tice tvog predloga ja sam za svaku opciju. Dalje mozemo telefonom.


RE: > A sto cinis: - enaB - 07-22-2014

Ja bih to ovako Smile

Izvinite, neću više Shy


RE: > A sto cinis: - boraomega - 07-22-2014

(07-22-2014, 02:24 PM)enaB Wrote: Ja bih to ovako Smile

Izvinite, neću više Shy

Ma i ja sam tako krenuo ali sam kod T23 skrenuo ulevo i.... ode mas' u propas'.


RE: > A sto cinis: - euronymous - 08-08-2014

Zamena baterije i intervencija na kontaktima na Garmin Forerunner 305.

Jedan kontakt je otpao, pa sam morao da zalemim žicu umesto njega.

Na kraju je sve zalepljeno silikonom za šoferšajbne i umotano selotejpom da se silikon lepo osuši.

Naravno upaljena je mašina da vidim jesam li uspešno obavio operaciju Zjeee


RE: > A sto cinis: - Marshall - 08-16-2014

Radi se radi se .. Smile

Prvo privrsavam T-Ref, pa posle idem na AX-6 .. nek ima zabave ,, uh spalila me vrukjina..


RE: > A sto cinis: - TDA - 08-16-2014

Pa kad peglaš na ovoj vrućini!
Vidš šta ti se desi, počneš da mešaš Srpski i Makedonski... Big Grin

Imam brata u Makedoniji koga kad iznerviram zaboravi Srpski jer bolje psuje na Makedonskom...

Ako, samo napred! Wink


RE: > A sto cinis: - Marshall - 08-16-2014

Aaaa nije na dobro ovo ..nema da mi verujes ali pravio sam kavu i pomesao so sa secer..gotov sam ..


RE: > A sto cinis: - HomeMadeAudioProject - 08-16-2014

(08-16-2014, 06:31 PM)Marshall Wrote: Radi se radi se .. Smile

Prvo privrsavam T-Ref, pa posle idem na AX-6 .. nek ima zabave ,, uh spalila me vrukjina..

OPASAN SI MARSHALL _ O P A S A N ! ! ! Smile


RE: > A sto cinis: - Marshall - 08-16-2014

Pogotovo kad je ovakvo vreme ..koji je gori inat ja ili vreme .. bilo vrucina pa nije moglo da se pegla ili sta god da je .. maaaa jok Smile


RE: > A sto cinis: - viktor1986 - 08-16-2014

Ekstra izgleda T-ref. Samo napred, lepo ti ide.


RE: > A sto cinis: - Marshall - 08-16-2014

Hvala Viktore..kad bude sve ukupno, ponovo pustam slike i video ..


RE: > A sto cinis: - Macola - 08-19-2014

Pustih u pogon drugu mašinu od 100KVA.

Hvuuuš (brisanje znoja). Baš sam se umorio.

Sutra ću je snimiti u radu pa postaviti ovde snimak od ove nove, revidirane i poboljšane (normalno, samo mehanika je revidirana :-)

----------------------------------------------

Predlažem da se napravi neka zona industrijske elektronike na forumu. Može zatrebati.

Sasvim solidno sam iskoristio PIC18F4620.

Pokrećem jedan servo motor, četiri cilindra, dve power grupe od po 50KVA (2 x broj sinhronizovanih mrežnih perioda + 2 pwm kao nivo snage), motor za ubacivanje poprečne žice, trobojni semafor, displej, tastaturu i RS232 komunikaciju naravno...

Očitavam limite ose , senzor za nulovanje i senzor za poprečnu žicu, temperaturu bloka, nivo vode, pedalu, sve stop pečurku, pritisak vazduha.

Čitavu mašinu sam napravio pomoću velikog broja potpuno novih i mojih rešenja-dosetki, a najviše sam ponosan na veoma zanimljivu detekciju pneumatskih cilindara.

Naime, jednim jedinim preso-prekidačem sa histerezisom od +-0.4bara detektujem sledeće stvari:
-gornji položaj sva 4 cilindra (i sve ostalo za sva 4, odnosno za 2 kada je upotrebljena ta opcija),
-tok hoda na dole,
-ostvarenje nominalne sile na elektrodama za zavarivanje,
-tok hoda na gore,
-prisustvo tačnog pritiska kao preduslova za ispravan rad (alarm pre pokretanja rada).

Naravno sve pojedinačne stavke su praćene sa WDT ili detekcijom stanja, kao i odlaskom u stanje stop sa alarmom i nazivom greške na displeju.



Ostalo mi je slobodno još 4 pina na PIC18F4620 i 84% slobodnog fleša. A EEprom je zauzet sa 920 bajta parametara. Praktično 40 grupa sa po 23 parametra po jednoj.

Dovoljno od jednog piconje prosečne "snage"...

Evo i par komada koda, ako nekog interesuje:

Code:
/*--------------------------------grupa-parametara jednog proizvoda---------------------------------*/    
const char * const message_param[] =
{  
    "Brz.Vuce   Pr:",  /* 0 */  //brzina vuce napred, mm/sek, max 500mm.
    "Pred-mera  Pr:",  /* 1 */  //polozaj centra prve zice u odnosu na pocetak uzduznih zica
    "Izbaciv.   Pr:",  /* 2 */  //rastojanje koje ce preci okvir u svrhu izbacivanja ili ostavljanja na poziciji
    "Izbor para Pr:",  /* 3 */  //izbor parova pow grupa i elektroda, levi ili oba

    "Br.kor. F1 Pr:",  /* 4 */  //broj koraka u prvoj fazi, uvek jedan manje od ukupnog, prva zica nije korak !!!
    "Duz.kor.F1 Pr:",  /* 5 */  //duzina koraka u prvoj fazi u mm.
    "Peri.1  F1 Pr:",  /* 6 */  //vreme zavarivanja leve (1.) power grupe, u mreznim periodama
    "Snaga1  F1 Pr:",  /* 7 */  //snaga leve power grupe (50KVA), u %, solidno linearizovana (TCA785, 2K2 pin 11)
    "Peri.2  F1 Pr:",  /* 8 */  //vreme zavarivanja desne (2.) power grupe, u mreznim periodama
    "Snaga2  F1 Pr:",  /* 9 */  //snaga desne power grupe, u %
    
    "Br.kor. F2 Pr:",  /*10 */  //kao i kod prve faze procesa, samo je ovde druga faza
    "Duz.kor.F2 Pr:",  /*11 */
    "Peri.1  F2 Pr:",  /*12 */
    "Snaga1  F2 Pr:",  /*13 */
    "Peri.2  F2 Pr:",  /*14 */
    "Snaga2  F2 Pr:",  /*15 */
    
    "Br.kor. F3 Pr:",  /*16 */  //kao i kod druge faze procesa, samo je ovde treca faza
    "Duz.kor.F3 Pr:",  /*17 */
    "Peri.1  F3 Pr:",  /*18 */
    "Snaga1  F3 Pr:",  /*19 */
    "Peri.2  F3 Pr:",  /*20 */
    "Snaga2  F3 Pr:",  /*21 */
    
    "Opcija     Pr:"   /*22 +1 = velic_grupe = ukupni broj parametara u jednoj grupi. */
                                                /*
                           * param. 22 je izbor opcije rada, tj. 0=automatski povratak rama, 1=cekaj pedalu
                           * za povratak, 2=simulacija procesa bez zavarivanja i ubacivanja zice,  
                           * SVE TRI OPCIJE(0,1,2) VAZE ZA OKRUGLU MERU KORAKA U mm  !!!
                              
                           * Kada je u pitanju jedan jedini izuzetak sa korakom 52,5mm onda:    
                           * 3=automatski povratak rama, 4=cekaj pedalu za povratak, 2=simulacija procesa bez
                           * zavarivanja i ubacivanja zice,
                           * SVE TRI OPCIJE (3,4,5) SU SA UVECANJEM KORAKA ZA +0,5mm na unesenu meru koraka  !!!
                           * Saznao sam za postojanje neokrugle mere tek po zavrsenom projektu! Nije vredno truda
                           * pisati iznova ceo program zbog jednog izuzetka.
                           * Novi izuzeci su sve resetke!!! Kod njih je fiksna pred mera 88,5mm.
                           * Za tu svrhu u param[opcija] su dodate stavke 6,7 i 8. 6=resetke sa autom. povratkom,
                           * 7=resetke, cekaj pedalu za povratak, 8=resetke, simulacija, cekaj pedalu za povratak.
                           */       
};
//--------------------------jedinice u kojima su parametri, drugi red parametara-----------------
const char * const message_jedinice[] =
{
    
    " x10 mm/sek",  /* 0 */
    " mm.  ",       /* 1 */
    "x10mm.",       /* 2 */
    " 1=levi 2=oba",/* 3 */
    
    " koraka",      /* 4 */
    " mm.  ",       /* 5 */
    " perioda",     /* 6 */
    " %    ",       /* 7 */
    " perioda",     /* 8 */
    " %    ",       /* 9 */
    
    " koraka",      /*10 */
    " mm.  ",       /*11 */
    " perioda",     /*12 */
    " %    ",       /*13 */
    " perioda",     /*14 */
    " %    ",       /*15 */
    
    " koraka",      /*16 */
    " mm.  ",       /*17 */
    " perioda",     /*18 */
    " %    ",       /*19 */
    " perioda",     /*20 */
    " %    ",       /*21 */
    " po uputstvu"    /*22 +1= velic_grupe = ukupni broj parametara u jednoj grupi. */
};

#define velic_grupe 23
/*------------------------------------------------------------------------------*/
                 //  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22
const dwn_limit[]={  1, 62, 10,  1,  0, 15,  0,  0,  0,  0,  0, 15,  0,  0,  0,  0,  0, 15,  0,  0,  0,  0,  0};
const up_limit[]= { 50,250,100,     2, 25, 70, 50,100, 50,100, 25, 70, 50,100, 50,100, 25, 70, 50,100, 50,100,  8};
/*gornji i donji limiti zadavanja param., broj elemenata = velic_grupe */
/* postoji i kontrola mesta zapete, broja decimala i predznaka, videti u "beliscanka.c" ili ranije */

#define broj_grupa 40  /* max 1009 byte  eeproma, velic_grupe x broj_grupa  */  

//trenutno 920 parametara velicine BYTE
/*--------------------------------------------------------------*/
UBYTE param[velic_grupe];/* velic_grupe  */  //array sadrzaja trenutno koriscene grupe, ucitana iz EE, u main();
/*------------------------------------------------------------------------------------------*/
/*-----------ofset vezan za msg_param, olaksano uzimanje konkr. parametra----*/
const
     //---------------zajednicki----------------------------------------------------
            brz_vuce=0,
        predmera=1,
                izbaci=2,
                parovi=3,
            //---------------prva faza procesa--------------------------------------------
            br_korF1=4,    
         duz_korF1=5,
            per1F1=6,
            pow1F1=7,
            per2F1=8,
            pow2F1=9,
          //---------------druga faza procesa--------------------------------------------
         br_korF2=10,
        duz_korF2=11,
           per1F2=12,
           pow1F2=13,
           per2F2=14,
           pow2F2=15,
          //---------------treca faza procesa--------------------------------------------
         br_korF3=16,
        duz_korF3=17,
           per1F3=18,
           pow1F3=19,
           per2F3=20,
           pow2F3=21,
          //--------------pedala za povratak okvira kod rucnog vadjenja komada i simulaciju proc------------
           opcija=22;
/*ima ih koliko i elemenata grupe */
/* npr: param[parovi]; */
/*------------------------------------------------------------------------------------------*/
/*xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/
union  //brojac koji se brise
{
    struct {
        UWORD brojac;
    }cuvar_br;
    UBYTE var_br[2];
}brojac_vars;    
//-----------------------------------------
union //brojac koji se ne brise
{
    struct {
        UWORD abrojac_l;
        UWORD abrojac_h;
    }acuvar_br;
    UBYTE avar_br[4];
}abrojac_vars;    

/*-------------------------------------------------------------------------------------------*/
/*===========================================================================================*/
/*-------------------------------------------------------------------------------------------*/
void processor_init(void) //konfiguracija pinova i SFR
{
    /*--------------------------------------------------------------------------*/
    TRISA = 0b11111111;        
    TRISB = 0b11111111;
    TRISC = 0b10010000;/* u slucaju koriscenja hardverskog i2c, obavezno postaviti RC3,RC4 kao ulaze */
    TRISD = 0b00000000;
    TRISE = 0b00000111;
    /*------------------------ovo je slucaj 24in/out, 4-8-12-20 in, 20-12-8-4 out---------------------*/
    /*---------------------------------------------------------------------------*/
    //TRISA = 0b11111111;    //radi sa i2c ekspanderima za sve izlaze    
    //TRISB = 0b11111111;
    //TRISC = 0b11111000;/* u slucaju koriscenja hardverskog i2c, obavezno postaviti RC3,RC4 kao ulaze */
    //TRISD = 0b11111111;/* kada se koriste pwm1 i pwm2, RC1 i RC2 postaviti kao izlaze. */  
    //TRISE = 0b00000111;
    /*-----------------------ovo je slucaj sa i2c expanderima, 54 in/out, 22-30 in, 32-24 out----------*/
/*-----------------------------------------------------------------------------*/
        ADCON1 = 0b00001111;  /* adc off */          //4620
        CMCON  = 0b00000111;  /* comparators off */  //4620
/*-----------------------------------------------------------------------------    */
                                                                 /* pwm 1 i/ili 2 , za 10 bita, res 0-1000  */
    //PR2 =     0xFF;                
  //T2CON =   0b00000101;
  //CCP1CON = 0b00001100; //pwm1
  //CCP2CON = 0b00001100; //pwm2  
/*-----------------------------------------------------------------------------*/
    /* pwm 1 i/ili 2 , za 8 bita(res 0-100),T2CON,b0,b1; ako je preskaler 11=6,25KHz, 01=25KHz, 00=99KHz */
  PR2 =     99;                
  T2CON =   0b00000101;// trenutno 25KHz
  CCP1CON = 0b00001100; //pwm1
    CCP2CON = 0b00001100; //pwm2    

/*------------------------------------------------------------------------------*/
  RCON   = 0;                      /*    Compatibility mode. Priority disabled.    interapti */
    T0CON  = 0b00000010;           /*  prescaler 1:8, int clk, disabled */
  INTCON = 0b10100000;          /*    GIE,TMR0IE = 1 */
  
  //timer1
// PIR1  =  0b00000000; /* (0)TMR1IF */
// PIE1  =  0b00000001; /* (0)TMR1IE */
// IPR1  =  0b00000001; /* (0)TMR1IP */
// T1CON =  0b00000000; /*   */
/*------------------------------------------------------------------------------*/
//setovanje svih in/out u nisko stanje
    PORTA=0x00; PORTB=0x00; PORTC=0x00; PORTD=0x00; PORTE=0x00;
    CCPR1L=0;  CCPR2L=0;    
}
/*----------------------------------------------------------------------------------------------*/

/*-------------------------- INTERRUPT HANDLER -----------------------------------------------*/
bit timeout;  //globalne var., vezane za isr
bit timer0_blink;
UWORD timer1ms,timer10ms,timer100ms,Timer0H,Timer0L;
      
void interrupt int_hand (void)
{    
    /*----------------- merenje vremena, wdt, ili pulse gen..---------*/
    /* za 1ms   H=0xFE,L=0xCA tj.65226 */ //ako se unosi kao fiksan
  /* za 10mS  H=0xF3,L=0xF2 tj.62450 */
    /* za 100mS H=0x86,L=0xC4 tj.34500 */....


I na primer ono oko cilindara...

Code:
//////////////////end switch master state masine///////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////////////////////////////////////

        if(n_vode)err_no=err_voda;                //nedovoljan nivo vode za hladjenje
        if(esc_test())err_no=err_ciklus;          //stop esc tasterom
        if(not_aus)err_no=err_n_aus;              //stop pecurkom
        
        ///////////////////////////////////////////////////////////////////////////////
        //////////////////////////operativni task//////////////////////////////////////
        switch(operate_seq_no){
            case 0:                              //stop,pasivno stanje
                cilindar1par=0; cilindar2par=0;
                enable1=0; enable2=0;
            break;
            //-------------------------------------------------------------
            case 1:                    //cilindri,polazak na dole, kontrola pada pritiska, dokaz kretanja.
                if(operate_jump){
                    calculate_tmr0(5);              //10mS za TMR0
                    timer10ms=50;                   //500mS WDT
                    switch(param[parovi]){          //izbor parova cilindara prema parametrima proizvoda
                        case 1:
                            cilindar1par=1; cilindar2par=0;
                        break;
                        case 2:
                            cilindar1par=1; cilindar2par=1;
                        break;
                    }
                    timeout=0;                      //start WDT
                    operate_jump=0;
                }
                else{
                    if(timeout)err_no=err_p_vazd;
                    if(p_vazduha){
                        operate_jump=1;operate_seq_no=2;
                    }
                }
            break;
            //---------------------------------------------------------------
            case 2: //cilindri, predstezanje, kontrola postignutog pritiska radi preciznog zavara (presoprekidac)
                if(operate_jump){
                    calculate_tmr0(5);                   //10mS za TMR0
                    timer10ms=50;                        //500mS WDT
                    timeout=0;                           //start WDT
                    operate_jump=0;
                }
                else{
                    if(timeout)err_no=err_p_vazd;
                    if(!p_vazduha){                      //zavrseno predstezanje, pritisak ok.
                    //najbrzi metod, realno vreme ostvarenja nominalnog pritiska sa krajnje minimalnim cekanjem
                        if((param[opcija]==2)||(param[opcija]==5)||(param[opcija]==8)){
                            operate_jump=1;operate_seq_no=4; //preskoci zavar ako je simulacija
                        }
                        else{                              //inace zavari
                            operate_jump=1;operate_seq_no=3;
                        }
                    }
                }
            break;
            //-----------------------------------------------------------------
            case 3:                                        //zavari
                if(operate_jump){
                    switch(seq_no){  //ucitavanje vremena zavara konkretne faze procesa
                        case 3:
                            temp_per1=param[per1F1]; temp_per2=param[per2F1]; //broj perioda obe power grupe, faza 1.
                        break;
                        case 4:
                            temp_per1=param[per1F2]; temp_per2=param[per2F2]; //broj perioda obe power grupe, faza 2.
                        break;
                        case 5:
                            temp_per1=param[per1F3]; temp_per2=param[per2F3]; //broj perioda obe power grupe, faza 3.
                        break;
                        case 6:                                             //slucaj zavara poslednje zice
                            temp_per1=param[per1F3]; temp_per2=param[per2F3]; //broj perioda obe power grupe, faza 3.
                        break;
                    }
                    
                    RS_jump=1; RSseq_no=1;           //start sync+brojanje_per taska, 1.power grupe, 50KVA
                    ST_jump=1; STseq_no=1;           //start sync+brojanje_per taska, 2.power grupe, 50KVA
                    operate_jump=0;
                }
                else{
                    if((RSseq_no==3)&&(STseq_no==3)){         // oba sync taska zavrsili?
                        RSseq_no=0;STseq_no=0;                  //vracanje RS i ST taskova u pasivno stanje
                        operate_jump=1;operate_seq_no=4;      
                    }
                }
            break;
            //---------------------------------------------------------------
            case 4:                            //digni cilindre, kontrola pada pritiska, dokaz kretanja.
                if(operate_jump){                //i eventualno ubaci sledecu zicu, optimizacija vremena masine
                    calculate_tmr0(5);                           //10mS za TMR0
                    timer10ms=200;                               //1000mS WDT, 6 pokusaja za zicu.
                    cilindar1par=0; cilindar2par=0;
                    vazduh_flag=0;zica_flag=0;
                    delay_ms(50);
                    if((param[opcija]==2)||(param[opcija]==5)||(param[opcija]==8)||(end_flag))zica_flag=1;
                    //ako je simulacija ili jedan zavar, omoguci nastavak kod simulacije ili samo jednog zavara
                    else{
                        if((!pedala)&&(!pedala_flag))motorce=0;
                        else motorce=1;                                                      //inace ubaci zicu
                    }
                    timeout=0;                                  //start WDT
                    operate_jump=0;
                }
                else{
                    if(timeout){
                        if((param[opcija]==2)||(param[opcija]==5)||(param[opcija]==8)||(end_flag));
                        //ako je simulacija ili samo jedan zavar
                        else{
                            if(senz_zice)l_err_no=l_err_zica;                    //inace wdt prolaza zice
                        }                        
                    }
                    
                    if(!senz_zice){motorce=0;zica_flag=1;}                   //prosla zica?
                    //if(p_vazduha)
                    vazduh_flag=1;                              //krenuli cilindri
                    if(l_err_no==l_err_zica){
                        operate_jump=1;operate_seq_no=5;                       //idi na pauzu        
                    }                            
                    if((!pedala_flag)&&(!pedala)){
                        operate_jump=1;operate_seq_no=5;                       //idi na pauzu
                    }
                    if((vazduh_flag)&&(zica_flag)){                          //ispunjena oba uslova
                        if((!temp_br_kor)||(!temp_duz)){
                            vazduh_flag=0;zica_flag=0;
                            operate_jump=1;operate_seq_no=8;                     //kod poslednjeg zavara, bez povlacenja
                        }
                        else{          
                            vazduh_flag=0;zica_flag=0;
                            operate_jump=1;operate_seq_no=7;                     //inace povuci
                        }
                    }
                }
            break;
            //--------------------------------------------------------------------
            case 5:                                                     //pauza ili l_err
                if(operate_jump){
                    motorce=0;
                    clr_line2();
                    lcd_goto(line2);
                    if(!pedala)             lcd_puts("Pauza           ");
                    if(l_err_no==l_err_zica)lcd_puts("Pauza, ZICA!!!  ");
                    red=1;
                    operate_jump=0;
                }
                else{
                    if(!pedala)operate_seq_no=5;                           //cekaj pustenu
                    else operate_seq_no=6;                                 //idi na cekanje stisnute
                }
            break;
            //-----------------------------------------------------------------
            case 6:
                if(pedala)operate_seq_no=6;
                else{
                    clr_line2(); red=0;l_err_no=0;                        //pocisti upozorenja
                    pedala_flag=1;                                        //bila stisnuta za izlazak
                    operate_jump=1;operate_seq_no=4;                      //pokusaj opet zicu
                }
            break;            
            //---------------------------------------------------------------------
            case 7:                                                                                 //povuci sledeci korak , servo motor.
                if(operate_jump){
                    delay_ms(350);
                    dir=napred;                                 //smer vuce, obavezno zbog postojanja povratka
                    servo_jump=1;servo_seq_no=1;                //start servo taska
                    operate_jump=0;
                }
                else{
                    if(servo_seq_no==2){                        //servo zavrsio?
                        servo_jump=0;servo_seq_no=0;              //stavljanje servo taska u pasivno stanje
                        operate_jump=1;operate_seq_no=8;          //zavrsio servo, sledece.
                    }
                }
            break;
            //------------------------------------------------------------------
            case 8:                                         //verifikacija da su cilindri gore, pritiskom.
                if(operate_jump){
                    calculate_tmr0(5);                          //10mS za TMR0
                    timer10ms=50;                               //500mS WDT
                    timeout=0;                                  //start WDT
                    operate_jump=0;
                }
                else{
                    if(timeout)err_no=err_p_vazd;
                    if(!p_vazduha){                             //gore su, pritisak ok.    
                        operate_jump=1;operate_seq_no=9;                      
                    }
                }
            break;
            //----------------------------------------------------------------------
            case 9:                                                              //brojanje koraka doticne  faze, eventualno ponavljanje.
                if(operate_jump){
                    pedala_flag=0;
                    if(temp_br_kor>0)temp_br_kor--;    
                    operate_jump=0;
                }
                else{
                    if(temp_br_kor<1){  
                        operate_jump=0;operate_seq_no=10; //ako nema vise
                    }
                    else{
                        operate_jump=1;operate_seq_no=1; //izvrsi preostale korake
                    }
                }
            break;
            //-----------------------------------------------------------------------
            case 10:                                                     //indikator zavrsetka doticne faze procesa, pasivno stanje.
                cilindar1par=0; cilindar2par=0;
                enable1=0; enable2=0;
            break;
        }///////////////////////end operativni task///////////////////////////////////



RE: > A sto cinis: - Ubledeli - 08-19-2014

prilicno skladan kod i iskomentarisan sto mi se svidja, mada bas ne volim da programiram al ajd Tongue
na PIC se ne vracam, ne svidja mi se(stvar ukusa) // jel moze pojedinacan pin da se postavi kao ulazni ili izlazni ili mora ceo registar?
mosfete koje kacis na pic su LogicLevel(4.5V)? // da li bi odgovarao recmo http://www.ti.com/product/csd18502kcs
i obavezno sto detaljnije snimi masinu u radu, da se vide detalji Big Grin


RE: > A sto cinis: - Macola - 08-19-2014

Kod Pic se svaki pin pojedinačno može postaviti kao In ili Out, ili se to u "letu" tokom programa raditi, jednostavnom asm naredbom.
Trudim se, i ako nisam programer inicijalno, već priučen iz razloga nužne potrebe.
Razvio sam neke sopstvene metode koji su se pokazali odlično u praksi.
Verujem da bi profesionalni programeri, koji su učili tu oblast, verovatno mogli urednije, čitkije i komprimovanije pisati...

Mosfeti koje koristim su standardni sa gate tresshold reda 4-6V, samo što između imam opto-posrednik, pa mogu bilo koji mosfet ili IGBT upotrebiti, naravno i P tipa kad mi zatreba.
Najčešće koristim IRFZ44N koji mi obezbeđuje najbolje performanse za najmanje novca, a kada mi zatreba prostora onda neki od HUFxxxx i TO-252. Najmanje tri puta je jevtiniji od onog koji si naveo, i to kod nas sa sve PDV.

Što se tiče finih detalja na snimcima mašine: iskreno, ne pada mi na pamet da ih snimim.
Darežljiv jesam, ali ne baš u toj meri :-)


RE: > A sto cinis: - mikikg - 08-19-2014

>> jel moze pojedinacan pin da se postavi kao ulazni ili izlazni ili mora ceo registar?

Svaki pin moze nezavisno da se podesava, ne mora ceo registar.
U ASM se to radi preko bit maske, u C (XC) imaju naredbe koje to rade i u sustini posle prevodjenja napravi isti masinski code kao da je pisano u ASM (to je ono sto kazu "jezgro optimizovano za C").