[ mitel026 @ 26.07.2009. 02:47 ] @
Precizno i jednostavno:
Imam min. 32 tastera i isti broj releja. Hocu da priskom/otpustanjem odredjenog tastera ukljucim/iskljucim odgovarajuci relej sa rastojanja od max. 50m, a na raspolaganju imam max. 6 linija (citaj: zica).


Nasao sam neka (vrlo nepouzdana) resenja, a ona koja bi meni bila zadovoljavajuca su delovi nekog mnogo slozenijeg sistema pa mi se cini da ce mi vise vremena trebati da razdvojim meni potrebno od ostalog nego lepo sve iz pocetka.
Interesantna ideja mi je bila upotreba PC tastature i njenog interfejsa (sta ga je dugmiciiii a i malo kosta), ali sam jedva nasao varijantu za dekoder koji mi deluje komplikovanije nego sto sam se nadao, a i za izradu cu definitivno morati da narucujem delove iz inostranstva, a i cena je diskutabilna, a i ...
U principu mogu da kupim diodice "na kilo" i napravim matricu sa njima, ali bih ja nesto samo malo inteligentnije: CMOS, TTL, PIC,...

Ima li neko vec gotovo resenje ili ga je bar video negde na netu? Ubi' se od guglanja...
[ korak @ 26.07.2009. 12:13 ] @
Ode nam sva "pamet" na guglanje. Internet su najvece tarabe na svetu gde svako moze da pise sta hoce. Zato moras sve vise da znas sta ti treba, da bi razdvojio gluposti od onoga sto ti je korisno.

Moras da se odlucis: da li hoces da radis sa mikrokontrolerom ili ne. Moguce je i jedno i drugo. Na kom naponu ti rade releji? Kakva ti tastatura odgovara, jedan taster hedan relej, ili zelis da kucas broj releja i tako da ga ukljucis? Ovo drugo resenje ukljucivanja releja, verovatno zahteva koriscenje mikrokontrolera.

Dakle odluci se, pa ces dobiti pomoc.

Pozdrav.

[ VRadule @ 26.07.2009. 12:27 ] @
6 žica nije dovoljno za binarno kodiranje 32 stanja, možeš maksimalno 31 stanje uz ograničenje da samo jedan rele može biti aktiviran.

Čak i to ba bi napravio treba ti gomilica binarnih encoder/decoder čipova pa da ih kaskadno vezuješ i da im praviš enable logiku.

Druga varijanta je sa mikro kontrolerom i serijskom komunikacijom (rs485) ukoliko je kabl parični Tj ima 3 puta po dve upletene žice.
Pa da jednu paricu iskoristiš za komunikaciju, a drugu eventualno za emergency stop kolo i ostane ti još jedna parica.
Ukoliko nije parični, koristiti ga za serijsku komunikaciju bi bilo malo neizvesno, možda bi i radilo, ako bi to bila jedina opcija
ja bih išao na digitalnu strujnu petlju 0-20mA koja bi vozila optokaplere i to neke lenje koji neće da provedu dok im ne uguraš
malo veću struju u LE diodu.

Ako hoćeš da pojednostaviš elektroniku trebao bi tastere direktno da vezuješ na pinove mikrokontrolera, mislim da bi ti u verziji
sa 40 pinskim kontrolerom nedostajao jedan pin, pa bi najverovatnije morao da ideš na 68-pinski kontroler.

Na žalost neko gotovo rešenje ovog problema nemam, samo sam izneo moj pogled na problem.

Pozz
Radule






[ mitel026 @ 26.07.2009. 12:31 ] @
Volim mogucnost izbora . OK ajd' da probamo bez mikrokontrolera ako bi to bilo jednostavnije(mada sam zainteresovan i za varijantu sa mikrokontrolerom nego gledam da se kasnije ne zaglavim u nekim prepravkama programa) ... Naponi za releje npr. 5V (vec nabavio Omron-e ako nije problem, ako jeste - menjam odmah mada imam nameru da svi releji idu preko nekog ULN-a). Jedan taster - jedan relej. Pritisnut taster - ukljucen relej, iskljucen taster isklucen relej. Ne moze dva tastera tj. dva releja u isto vreme.

P.S. Razmisljao sam i o resenju za MIDI klavijaturu... postoji neko resenje sa PIC-om, ali nemam program za isti, a i trebao bih da ga izmenim - da onemogucim pritiskanje vise tastera tj. ukljucenje vise releja.



[Ovu poruku je menjao mitel026 dana 26.07.2009. u 14:02 GMT+1]
[ vukboban @ 26.07.2009. 13:23 ] @
@Vradule

6 zica je dovoljno za 63 stanja: 1+2+4+8+16+32=63

Strujna petlja obavezno za 50m,od napona ne bi ostalo ni n na toj duzini.

Po meni je najbolje resenje serijska komunikacija 2 mikrokontrolera,naravno sa pretvaranjem naponskog signala u strujni u predaji i obrnuto na prijemu
[ mitel026 @ 26.07.2009. 13:30 ] @
OK. Slazem se. Uostalom strujne petlje se zato i koriste u industrijskim sistemima (muku mucio sa jednom CNC plazmom pre godinu-dve ali ne zbog komunikacije). Imali neko konkretno resenje: shema, pcb, sa kojim kolima probati, koji program za koji mikrokontroler,... bilo sta konkretno?
[ vukboban @ 26.07.2009. 13:55 ] @
Nemam nista konkretno,ali recimo ovako:

Ima na netu more primera za strujni izvor sa recimo LM317.(samo jedan otpornik i LM,mozda par kondenzatora).
Mozes recimo input da mu dovedes preko optokaplera,cijom diodom bi upravljao sa pinom mikrokontrolera.
Isto tako na prijemnoj strani stavis optokapler ,ciji izlaz vodis na pin drugog mikrokontrolera.
Struju podesis tako da prijemni optokapler sigurno provede kad imas signala(20,30mA,zavisi od upotrebljenog optokaplera)
Oba mikrokontrolera mogu da budu 40to pinski(jedan prekidac jedan pin ili jedan rele jedan pin) ili sa manje pinova,ali to znaci da moras na ulazu da pravis diodnu matricu,a na izlaznom kontroleru bi morao da stavis par invertora i AND gejtova.
Program bi morao da radi sledece:
Predajni kontroler po pritisku tastera mora da salje njegov "broj",znaci ako pritisnes taster npr 5 on bi slao start bit,pa broj 000101 gde bi trajanje svakog bita bilo unapred definisano(recimo 100us),pravio pauzu od recimo 2,3ms pa opet isto sve dok je taster pritisnut.
Prijemni bi bio u stanju pripravnosti dok ne dobije start bit.onda bi svakih 100us primao bit,tako da bi dobio isti broj koji si poslao 000101,
i na osnovu tog broja bi palio odgovarajuci relej.
Ne znam samo da li relej treba da bude upaljen samo dok drzis taster ili celo vreme dok se ne pritisne drugi taster?
Uglavnom nije preterano komplikovano,ali moras malo da se pomucis.


P.S. ovaj uploadovani fajl je za proteus



[Ovu poruku je menjao vukboban dana 26.07.2009. u 15:48 GMT+1]
[ peca26000 @ 26.07.2009. 14:09 ] @
Citat:
Precizno i jednostavno:
Imam min. 32 tastera i isti broj releja. Hocu da priskom/otpustanjem odredjenog tastera ukljucim/iskljucim odgovarajuci relej sa rastojanja od max. 50m, a na raspolaganju imam max. 6 linija (citaj: zica).


Niti je definisano cemu sluze tih 32 releja , odkud jednostavno !
Zbog cega tih 32 releja , mozda ima jednostavnije resenje ?
Koji uredjaj to koristi ?

Citat:
Nasao sam neka (vrlo nepouzdana) resenja, a ona koja bi meni bila zadovoljavajuca su delovi nekog mnogo slozenijeg sistema pa mi se cini da ce mi vise vremena trebati da razdvojim meni potrebno od ostalog nego lepo sve iz pocetka.


Znaci da nije jednostavno cim ima mnogo toga ?
Hocemo li iz pocetka ?

Citat:
U principu mogu da kupim diodice "na kilo" i napravim matricu sa njima, ali bih ja nesto samo malo inteligentnije: CMOS, TTL, PIC,...


Ajd ako je lakse sa diodicama imas resenje ?
Zasto to komplikovano sa vise inteligencije , da ne izgleda suvise pitanja sa moje strane , opisi ti lepo cemu sluzi i za sta to treba da radi ?
Lakse ces dobiti vise odgovora i primera .
Pozz
[ mitel026 @ 26.07.2009. 14:52 ] @
Pa dobro. Ajd' mnogo komplikovanije... Ne ocekujem da neko zavrsi posao umesto mene zato ne detaljisem previse.
Imam min 16 masina i svakom se upravlja sa max 16 tastera. Masine imaju svoj interfejs na koji su prikljuceni tasteri. "Prckanje" po masinama ne dolazi u obzir ali samo zbog univerzalnosti dekodera koji bi upravljao njima i to ukljucivanjem releja umesto pritiskanja odgovarajuceg tastera na masini jer pristup imam samo instalacijama tastatura koje su uglavnom matrice.
Tako da: selektujem masinu broj x, aktiviram pristup istoj i time sa 16 tastera upravljam odabranom masinom i to sve sa rastojanja od max 50m.
Kao sto rekoh, ne ocekujem da neko zavrsi posao umesto mene, zato trazim samo pomoc ili gotovo resenje za: svaki od 32 tastera kroz 6 zica duzine od 50m pali jednu od 32 sijalice tako da sijalica svetli dokle god drzim njoj pripadajuci taster. Ostatak price je "jednostavan" tj. rasavacu sam jer su ostali uslovi promenljivi i definitivno je lakse napraviti odgovarajuce adaptere na izlazima nego prilagodjavati softver mikrokontrolera za odredjeni izlaz ponaosob.
[ mitel026 @ 26.07.2009. 15:19 ] @
Svidja mi se vukbobanova varijanta. Relej treba da je upaljen samo dok drzim taster i to sve vreme, ali kao sto sam malo pre rekao: dodavacu odredjene adaptere tako da cu odabir masine i drzanje tog releja, vreme drzanja releja za odredjenu komandu,... odraditi hardverski, zbog kompatibilnosti jer odredjene komande idu i sa kratkim pritiskom tastera, a neke za drzanjem od par sekundi. Ne bih to resavao softverski. Daklem, kojim mikroprocesorom, koji software,... ?
[ guja011 @ 26.07.2009. 15:29 ] @
Citat:
vukboban: @Vradule

6 zica je dovoljno za 63 stanja: 1+2+4+8+16+32=63



a masa?
[ vukboban @ 26.07.2009. 15:29 ] @
Ako si otvorio onaj Proteus file,video si da sam stavio PIC16F887,on ima dovoljno pinova za to sto ti treba.
Softver....moze da se napise,jel imas neka iskustva sa pisanjem softvera za PIC?
U pravu si Gujo...kao i uvek!
[ mitel026 @ 26.07.2009. 15:37 ] @
masa nije problem, zato sam i rekao 6 zica (signal ide kroz mrezni kabl)

Izvini vukboban, mislio sam da si mi poslao samo resenje sa LM317. Upravo skidam Proteus.
Pisanje softvera za pic... teoretski znam, ali sam ih do sada samo kopirao...
Krajnje je vreme da pocnem, zar ne? Moze li mala pomoc :-(

Nego... gde ima da se kupi PIC16F887 i posto je?
[ mitel026 @ 26.07.2009. 16:26 ] @
A da probam to sa gomilicom jevtinih ttl ili cmos ic?
[ HeYoo @ 26.07.2009. 17:46 ] @
Mislim da je dovoljno pouzdano resenje sa najobicnijim binarnim koderom-dekoderom.
Ako treba nesto koplikovanije (razlicite funkcije u zavisnosti od duzine drzanja tastera) i sl resenje je mikrokontroler koji moze da u mnogome prosiri funkcionalnost "tastature". Pisanje programa za ovakve funkcije je relativno lako na bilo kom mikrokontroleru. Potrebno je samo malo prouciti osnove programiranja istih.
[ veselinovic @ 26.07.2009. 17:48 ] @
Citat:
guja011: a masa?
Citat:
guja011: a masa?

Ma moze, teoretski i porakticno, sa puno manje zica. Jel, na zici moze biti +12V, +5V, -12V, -5V ,....
Ali prijatelju, uzmi ti neki PIC, strujnu petlju, sto sporiji prenos, sto jacu struju zbog smetnji i ima da radi fino.
Ako bas zelis sa cmos moraces praviti dijagnostiku neispravnosti, tj da ne bi ostao neki relej on, a ti pritisnes drugi, mozda moze da unisti masinu ili proces.
Generalno ako ti treba 10 kapija da nesto odradis, ako zelis ful dijagnostiku reba i do 50 kapija ( NOR ili NAND svejedno).
[ rsinisa @ 26.07.2009. 17:50 ] @
Ja bih, da sam na tvom mestu, razmotrio varijantu sa mikrokontrolerom (MCU) i 74HC597 na jednoj strani, i tekodje MCU i 74HC595 na drugoj strani. E sad, problem je što nisi upućen u programiranje kontrolera.

Pozdrav.
Sinisha
[ mitel026 @ 26.07.2009. 18:52 ] @
Ma nisam ja lenj, a ni mator za ucenje... Elektronika se i onako uci ceo zivot. Ja bih da odradim brzo, ali nisam rekao na brzinu. Ako je

Citat:
rsinisa: Ja bih, da sam na tvom mestu, razmotrio varijantu sa mikrokontrolerom (MCU) i 74HC597 na jednoj strani, i tekodje MCU i 74HC595 na drugoj strani. E sad, problem je što nisi upućen u programiranje kontrolera.

Pozdrav.
Sinisha


pouzdano, pa eto razloga da se upustim u programiranje mikrokontrolera. Samo gledam da se sve ne zavrsi za jedno godinu-dve...
[ peca26000 @ 26.07.2009. 23:48 ] @
Mislim da si u nekom postu napisao , dok je jedan taster ukljucen da su ostali tasteri ukoceni tj. da ne mogu da se aktiviraju ?
Citat:
Ja bih da odradim brzo, ali nisam rekao na brzinu. Ako je pouzdano, pa eto razloga da se upustim u programiranje mikrokontrolera. Samo gledam da se sve ne zavrsi za jedno godinu-dve...

Znaci nema nista na brzaken , mislim da ovo sto su ostali tasteri ukoceni , dok je samo jedan aktivan ! da li je to uslov da tako radi komanda za masinu ?
Mozda za komunikaciju sa druge strane nece biti potrebno bas svih 6 zica ?
[ VRadule @ 27.07.2009. 01:17 ] @
Za prijemnik mislim da bi moglo sa 2 x 74hct154 ( 4/16 dekoder).

4 žice iskoristiš za A0,A1,A2,A3 linije i paralelno ih povežeš na oba dekodera, a ostale 2 za enable signale, da li će da radi prvi ili drugi
dekoder. Da bi imao 16, a ne samo 15 korisnih linija sa svakog dekodera, morao bi da se poigraš sa enable signalima na koder strani.

Prostudiraj funkcijsku tabelu

http://www.nxp.com/acrobat_download/datasheets/74HC_HCT154_6.pdf

4/16 dekoder upravo radi ono što ti treba, on može imati aktivan samo JEDAN pin od 16 mogućih bez obzira na ulaz.








[Ovu poruku je menjao VRadule dana 27.07.2009. u 02:52 GMT+1]
[ korak @ 27.07.2009. 12:17 ] @
Bez MCU-a imas jednostavno resenje.

32 linije od tastera kodiras u 5-o bitnu rec. Nju propustis kriz neli ULN sa recimo 12V ili 24V, zavisno koji imas u sistemu. Na mestu prijema napravis dekoder koji od 5-o bitne reci, koju takodje pustis kroz ULN, dobijes 32 linije od kojih svaka pobudjuje jedan relej. Sestu zicu iskoristi po volji, mozda da preneses napon 12V ili 24V ili 5V jer su ti releji za taj napon.

Kodiranje mozes da napravis sa gomilom dioda (treba ti 16x5 = 80 dioda). Na 0-ti bit 5-o bitne reci ide 16 dioda koje vezujes anodom na 1 taster, pa na 3 i tako svaki neparni do 31-og. Tastere numerisem od 0 do 31, lakse je za pricu. Na 1-vi bit petobitne reci vezes parove dioda, prvi par na 2 i 3 taster, drugi par na 6 i 7 i tako dalje do kraja. Na 2-gi bit 5-o bitne reci idu u grupi po 4 diode. Prva grupa ide na 4, 5, 6 i 7 taster, druga na 12, 13, 14 i 15 taster i tako redom. Na 3-ci bit 5- bitne reci idu diode u grupi po 8 i to prva na tastere 8 do 15, a druga na tastere 24 do 31. I na kraju 4-ti bit ima diode povezane samo sa tasterima od 16 do 31. Pritisak tastera prenosi napon preko diode do odgovarajucih bitova. Od svakog bita 5- bitne reci prema masi ide jedan otpornik koji obezbedjuje log. 0 kada nije pritisnut ni jedan taster ile ne onaj koji aktivira odredjeni bit.

Na mestu prijema napravis dekoder sa cipovima, i o tome je pisano u predhodnim postovima. Posle dekodera dobijas 32 linije kojima mozes da pobudis jedno od 32 releja.

Radi pouzdanosti prenosa mozes da iskoristis ULN-ove na mestu prijema i predaje da dobijes nivo signala +24V/0V, ili strujnu petlju za svaki bit, gde bi se struja vracala kroz 6-tu zicu.

Sam proceni i izaberi.

Pozdrav.
[ vukboban @ 27.07.2009. 15:23 ] @
Ako si i dalje za varijantu sa PIC-om,evo ti hex za predajni kontroler,mozda nije bas potpun,nisam bas radio sa 16F887,pa ne znam da li treba jos neka inicijalizacija,samo sam odradio ansel i anselh,ako treba jos nesto neka neko ispravi.
Inace kod radi bas to sto mislim da ti treba,u zavisnosti od pritisnutog tastera,salje 6to bitni broj od 1 do 32,i to samo dok je taster pritisnut,znaci salje neki start bit u trajanju od 100us,pa pauza od 100us,pa onda 6 bitova broja koji traju po 50us.
Mozda danas odradim i kod za prijemnik.
Pozdrav
[ mitel026 @ 27.07.2009. 18:05 ] @
Momci HVALA!
Evo ovako: pravim prototip sa 74hct154 i VEROVATNO nece biti problema, ali...
Stvarno sam zainteresovan da napravim verziju sa PIC-om.
U principu neke stvari su se malo drugacije slozile.
Imam nameru da: Od upravljackog do centralnog mesta dovedem obe komande (4bit-nu komandu za odabir aparata i 4bit-ne komande za upravljanje masinom). Na centralnom mestu bi vrsio selekciju kojom masinom zelim da upravljam, a odatle bih, linijama do svake masine pojedinacno dovodio komande za nju. Ako budem koristio strujnu petlju (sto mi zvuci sjajno i sto se tice broja linija i sto se tice smetnji) necu imati problema ni sa slobodnim linijama. Tako da su mi potrebana dva PIC-a kao encoderi na upravljackom mestu - jedan za 16 tastera za odabir masine (ili samo dva tastera za +/- biranje masine i jedan za start/stop odabrane masine) i jedan PIC kao encoder za keyboard matricu 4x4 kojom bi se upravljalo odabranom masinom. I dva PIC decodera na centralnom mestu.

Vukboban HVALA! Nisam stigao da proverim kako mogu da iskoristim ovo sto si mi poslao, ALI HOCU! Verovatno nocas...
[ ADRENALIN @ 27.07.2009. 23:32 ] @
Ne treba ti toliko PIC-ova, treba ti jedan na prijemu i jedan na predaji, samo uzmes ove sa vise nozica (40). Posto imas dosta ulaza i izlaza mozes da koristis sift registre 74HC595 i 74HC597, kao sto je vec navedeno ranije. Dakle tako ti ulaze uvlacis u PIC, i izlazna stanja prebacujes na releje. Ovi sift registri se vezuju na red sto znaci da mozrs da imas veliki broj linija. Najbitniji je prenos izmedju modula, ja bih koristio 485, ne znam da lije strujna petlja bolje resenje??? Molim ljude da mi objasne zasto tako misle. Da li te masine rade u industriji, odnosno kolike su smetnje u okolini? Ako to nije nesto strasno veliki izvor smetnji onda mislim da nema potrebe za strujnom petljom, dovoljan je i 485. Posto ti je prenos jednosmeran ne moras ni da menjas smer na 485 drajveru.

Sto se tice PIC-a mislim da ti je najlakse da krenes sa mikroelektronikinim razvojnim alatima jer su jednostavni i imaju dosta biblioteka. Uzmi recimo microBasic i za cas ces da napises to sto ti treba. Neke stvari ces morati sam da uradis (sift registre) ali za UART imas biblioteku i sve je jako prosto. Dobijas primere uz kompajler i najvaznije potpuno je besplatan uz ogranicenje programa na 2K sto mislim da ti nema teoretske sanse da predjes. Oni imaju i biblioteku za PC tastaturu tako da i to vrlo lako mozes da napravis. Mikroelektronika nije bas dobro resenje generalno gledajuci, ima dosta mana ali za jednostavne stvari i pocetak je vrlo dobra, pre svega sto je prosta i sto ima ODLICAN help, bas je pregledan za razliku od majkrocipa recimo.

Eto toliko od mene, a ono za strujnu petlju ako neko moze neka objasni, bio bih mu veoma zahvalan.
[ vukboban @ 29.07.2009. 15:42 ] @
Pa,recimo da je 20mA uvek 20mA,da li na 1 m ili na 20m.Strujni izvor(kako mu samo ime kaze) uvek daje konstantnu struju,bez obzira na prikljuceni otpor(naravno u nekim razumnim granicama,t.j. dok taj otpor nije par stotina koma).Znaci da nema pada napona na kablu,tako da duzina kabla prakticno ne igra nikakvu ulogu(opet u razumnim granicama,ne verujem da bi radilo na 20Km!).
Sa druge strane napon pada srazmerno duzini kabla,cak i do granice da kontroler ne prepoznaje log1.
Takodje nema nikakvih EM smetnji,prostim otpornikom na kraju opet pretvaras struju u napon,znaci ukratko:JEDNOSTAVNOST i POUZDANOST

Slazem se da je 485 bolji za prenos podataka,ali...cena?,pa onda zahteva precizne tajminge ako radi u half dupleksu sto dodatno komplikuje softver,a ako radi u full dupleksu zahteva 4 zice(a mozda i celih 5 ). A strujna petlja se napravi vrlo jednostavno,LM317,i 1 otpornik i to je to.

[Ovu poruku je menjao vukboban dana 29.07.2009. u 17:00 GMT+1]
[ ADRENALIN @ 30.07.2009. 00:12 ] @
Mozda je u nekim slucajevima stvarno bolje, koja je realno najveca brzina prenosa, kog reda, otprilike. Ovo pitam zbog lm317 koliko brzo si ti uspeo da to radi?
[ VRadule @ 30.07.2009. 00:50 ] @
Za red veličine maksimalne brzine strujne petlje ne znam, ali redovno koristim uređaj koji radi na 9600 boda, kažu da može 1km kabla da gura
na toj brzini.

Digitalna serijska komunikacija strujnom petljom sa kojima sam se ja susretao su bile isključivo urađene uz pomoć optokaplera, što znači galvansko odvajanje.

Kod rs 485 najveće probleme pravi razlika potencijala GND-a između udaljenih nodova, a 485 je po difoltu galvanski spregnut pa hoće transiveri da crkavaju.
No to se rešava debelom žuto-želenom koja se vuče paralelno sa 485 kablom.



[ ADRENALIN @ 30.07.2009. 18:12 ] @
Pa nista probacemo jednom da vidimo kako to radi u mojim slucajevima, koji LM317 TO220 ili TO92, da li je pametnije staviti jaci ili nije potrebno vise od 100mA, realno?
[ vukboban @ 30.07.2009. 19:33 ] @
Za optokapler ti treba 20mA da "upali" diodu,tako da ti je to sasvim dovoljno.Otpornik racunas kao 1.25/I znaci da ti za 20 mA treba oko 60 oma.Ulazni napon je dovoljno 5V,to je na nekoj donjoj granici,i onda je najmanja disipacija na LM,i najmanje grejanje.Moze bilo koji LM317.
Otpornik se vezuje izmedju OUT i ADJUST,a izlaz se uzima sa ADJUST pina.
Za max brzinu ne znam,jer mi do sada nije trebala brzina,tako da nisam ni probao.Naravno da je optokapler ogranicavajuci faktor sto se tice brzine.

P.S. diodu na prijemnom optokapleru vezujes bez ulaznog otpornika,znaci Adjust pin na anodu,katoda na gnd.
Kod predajnog optokaplera je potreban otpornik oko 250 oma.
[ ADRENALIN @ 30.07.2009. 22:05 ] @
Da imas strujni izvor pa zato ne stavljas otpornik, zanimalo me je bas to sto si napisao, znaci iz iskustva. Sve e jasno samo jos da probam. Hvala na odgovorima.
[ zofr @ 31.07.2009. 20:57 ] @
Da ne otvaram novu temu, a mozda bi trebalo, ne znam.

Inspirisan vasom diskusijom dodjoh na ideju da postojecu komunikaciju zamenim strujnom petljom. Evo zahteva:

1. Koristi se SCI mikrokontrolera,
2. Komunikacija je master - slave polu dupleks.
3. Na liniji strujne petlje je 20 uredjaja,
4. Duzina strujne petlje je 100m i
5. Bodova brzina je 9600.

Sta kazu vasa iskustva, moze li to da bude pouzdano i da li je potrebno oklapanje. Odgovaralo bi mi da liniju mogu da cine obicne zice.

Pozdrav.
[ ADRENALIN @ 04.08.2009. 10:13 ] @
Ja, kao sto si mogao da vidis, nisam probao strujnu petlju u praksi, ai je njena poenta da se tesko ometa, tako da bi trebalo da to radi odlicno sa bilo kojim kablom, mislim da je brzina moguca na toj duzini, ali je uvek bolje da je smanjis ako ti nije potrebna tolika.
[ korak @ 04.08.2009. 18:44 ] @
Evo strujne petlje koju sam koristio u vreme kada nisu bili lako dostupni neki drugi pouzdaniji nacini komuniciranja na vecim daljinama.

Pozdrav.
[ zofr @ 04.08.2009. 23:33 ] @
Korak, hvala.

Sve sam ukapirao, ali mi je malo nejasno oko otpornika koji su vezani paralelno diodama optokaplera. Ako ti nije tesko pojasni.

I jedno pitanje: sta ako dva uredjaja istovremeno krenu da komuniciraju?

Pozdrav
[ korak @ 05.08.2009. 09:55 ] @
Zofr,

odgovori na pitanja:

1. Navescu rezultate proracuna za CNY17-4 (a moze i neki brzi kao 6N136) i otpornik od 200 oma. Za aproksimaciju zavisnosti napona na diodi, a time i na otporniku, zavisno od struje kroz diodu Id koristio sam Ebers-Molove jednacine, sa tom razlikom sto sam k*T/q (k Bolcmanova konstanta, T tempertura u kelvinovim stepenima i q naelektrisanje elektrona) koje iznosi oko 28mV zamenio sa 34mV kako bi dobio krivu koja se poklapa sa krivom datom za CNY17-4. Jednacina koja odredjuje struju kroz diodu je:

Id = 2.0e-16*exp(U/0.034)
a iz ovoga je napon:
U = 0.034*ln(Id/2.0e-16)

Konstanta 2.0e-16 je inverzna struja zasicenja PN spoja. Ako strujnom petljom tece struja I onda mora da je zadovoljena jednacina:

R*(I-Id) = 0.034*ln(Id/2.0e-16)

Ova jednacina ne moze da se resi po Id jer je transcedentna, ali moze numericki. Evo ti nekoliko vrednosti struje Id u zavisnosti od struje I:

I = 10mA Id = 14mA
I = 15mA Id = 9.2mA
I = 10mA Id = 4.4mA
I = 7mA Id = 1.5mA
I = 5mA Id = 75uA
I = 4mA Id = 0.5uA
I = 3mA Id = 2.2nA

Faktor Ic/Id za ovaj optokapler je oko 1.5, pa vidis da kada petljom tece struja od 5mA kroz kolektor-emitor tece samo 112uA. Ova struja na kolektorskom otporniku, koji je recimo 1k ce napraviti pad napona od 112mV sto je zanemarljivo. Kada ne bi bilo ovog otpornika (200 oma) struja kroz kolektor-emitor bi bila 7.5mA sto znaci da bi tranzistor opto kaplera bio u zasicenju. Ovo znaci da smetnja mora da proizvede u petlji struju vecu od 5mA da bi to proizvelo stetne posledice. Ja ne znam koja bi to smetnja mogla da izvede. Cak i u slucaju da je petlja zatvorena, tece 20mA, a smetnja proizvodi struju koja se suprotstavlja struji petlje, umanjujuci je na 15mA, tranzistor optokaplera ce i dalje biti zasicen ne reagujuci na smetnju.

2. Programiras SCI mikrokontrolera da radi u loop modu tako da kada ide TxD, to se uvodi u RxD i moze da se cita. Dakle, kada neki uredjaj zeli da komunicira, on ceka da linija bude slobodna. Mislim da svi MCU-ovi koji se spominju na ovom forumu imaju generisanje interrupt-a kada je linija slobodna. Tada uredjaj salje prvo svoju adresu i istovremeno cita to sto salje. Ako je procitana adresa ista kao sto je poslata, to znaci da se ni jedan drugi uredjaj nije zakacio na liniju, i moze da nastavi sa komuniciranjem. Ako procitana sopstvena adresa nije ista onda se uredjaj povlaci, jer to znaci da se neko drugi javio istoremeno.

Kod eterneta ova kolizija se resava tako sto se oba uredjaja povlace, i posle nekog vremena koje se generise kao slucajni broj uredjaji ponovo javljaju na liniju. Sada postoji verovatnoca da se ne jave istovremeno i komunikacija se ostvaruje.

Adresa uredjaja moze biti odredjena ne binarno vec brojem jedinica. Tako uredjaj broj 5 ima adresni bajt 00011111, a uredjaj 3 ima adrsni bajt 00000111. U slucaju kolizije (istovremeno javljanje na liniju) oba uredjaja ce procitati kao sopstvenu adresu 00000111, sto znaci da ce se uredjaj broj 5 povuci a uredjaj broj 3 ce nastaviti da komunicira. Slicno ovome je resena kolizija kod CAN komunikacije.

Ustvari cod CAN je malo drukcije. Ako je adresa uredjaja 12 = 1100 a drugog 6 = 0110, onda ce biti procitane sopstvene adrese kao 4 = 0100. Analiza procitane adrese ide sa desna u levo. Za uredjaj 12 vec je krajnji levi bit 0 umesto 1 i on se povlaci. Komunikaciju preuzima uredjaj kod koga se ne menja poslata adresa na log. 1 koja je krajnje levo. Da bi ovo funkcionisalo uredjaj koji se povlaci to radi ne kada procita celu adresu koju je poslao, vec odmah cim je prva 1 koju je poslao primljena kao 0. Na primer uredjaj 12 i uredjaj 2 :

12 salje 1
2 salje 0; 12 ustanovio da je njegov bit promenjen, i on se povlaci tako da ce uredjaj 2 procitati svoju adresu. Ovo nije moguce napraviti kod SCI, osim ako adrese nisu binarne, vec kako sam napred napisao.

Nadam se da je ovo dovoljno objasnjenje.

Pozdrav.

[Ovu poruku je menjao korak dana 05.08.2009. u 14:04 GMT+1]
[ VRadule @ 05.08.2009. 18:40 ] @
Ili kao 485, jedan master, ostali slejvovi .... slejvovi pričaju tek kad ih master priupita.
Master ciklično proziva slejvove.
U tom slučaju dva uređaja nikada ne mogu da se posvađaju oko Bus-a, naravno preduslov je da svaki uređaj ima jedinstvenu adresu.

[ zofr @ 05.08.2009. 22:43 ] @
Korak, hvala, odlicno razjasnjenje.

VRadule je u pravu, na vise mesta koja opisuju neke druge protokole komunikacije, na pocetku stoji da je najbolja koncepcija master-slave. Ipak ona uzima dosta vremena na razne prozivke, i svi ostal komunikacijski protokoli (od eterneta pa do danas) su koncentrisane na resavanje slucaja kolizije kada dva ili vise uredjaja zele da komuniciaju. Kako se mi bavimo mikrokontrolerima i prenosom manje kolicine podataka sasvim zadovoljava koncepcija master-slave.

Pozdrav.