(07-21-2014, 07:39 PM)TDA Wrote: Boro, pakuj ga i šalji za Niš! Rasplakao si nam Goshu!
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.
07-21-2014, 10:54 PM (This post was last modified: 07-21-2014, 10:55 PM by boraomega.)
(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.
07-21-2014, 11:29 PM (This post was last modified: 07-22-2014, 12:06 AM by Gosha.)
(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.
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.
(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.
08-19-2014, 12:33 AM (This post was last modified: 08-19-2014, 01:27 AM by Macola.)
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[] =
{
/*-------------------------- 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///////////////////////////////////
prilicno skladan kod i iskomentarisan sto mi se svidja, mada bas ne volim da programiram al ajd
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
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 :-)
08-19-2014, 12:29 PM (This post was last modified: 08-19-2014, 01:49 PM by mikikg.)
>> 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").