Paljenje 200 releja preko matrice?

Recimo da trebam ukljucivati 200 potrosaca (releja) preko PIC mikrokontrolera...naravno da necu koristiti 200 portova vec cu napraviti prekidacko polje od 20x10 portova...

Zanima me postoje li nekakvi integrirci (kompatibilni sa PIC logikom) koji imaju toliko izlaza i za adresiranje koriste neke poznate protokole (I2C itd...) koje PIC podrzava?

Hvala i pozdrav!

Reply to
Minotauro
Loading thread data ...

napraviti

koji

(I2C

Prvo pitanje: U jednom trenutku treba/mo¾e biti ukljuèen samo jedan, ili vi¹e releja?

Reply to
vaso

Nadam se da zaista, i stvarno, razumijes ovaj "vlastiti odgovor na vlastito pitanje", jer s matricom 20x10 mozes kontrolirati jedino 10 releja. Matrica

20x10 posjeduje 20 ulaza koji se preklapaju (switch-aju iliti multiplex-iraju) na 10 izlaza ... u takvoj 20x10 matrici aritmeticki gledano imas, doduse, nekakvih 200 funkcionalnih jedinica (podsklopova) koji mogu ali i ne moraju biti uniformirano izvedeni i pritom tvoreci nekakvo 20x10 prekidacko polje, ali logicki, u tom i takvom slucaju, imas samo 10 izlaza. Osim toga, umjesto gornjeg izraza "20x10 portova" trebas koristiti izraz "20x10 I/O linija" ... naime, izraz port se uobicajeno koristi za procesorski registar koji sluzi za I/O svrhe i pritom uobicajeno sadrzi 8 I/O linija. Od tih "I/O" tebi treba samo "O" funkcija (izlaz) ...

Tvoj post ima jos par sintakticko-leksickih gresaka ali mi se neda brbljati ...

To se dade rijesiti diskretno (integrircima s fiksnom logikom) ili s programibilnom logikom (FPGA i/ili CPLD) : a) koristenjem bus-logike (tipicno 72HCT245 ili HCT545) u kombinaciji s dekoderom. Buduci ti treba 200 I/O, a najblizi veci binarni broj je 256 (2^8), dakle moras koristiti 8-na-256 dekoder sto moze biti dosta nezgrapno kad se sklop slozi s diskretnim TTL chipovima i pritom ces moci imati samo jedan (od njih 200) od releja upaljen u bilo kojem datom trenutku ... b) koristenjem serdes logike (serijski ulaz -> paralelni izlaz), tipicno

74HCT595. Za 200 I/O ti treba 25 komada ovih u kombinaciji s 25 kom drivera, tipicno ULN2803. Mikrokontroler bi dakle serijskim putem "uclockao" 200 bita informacije o stanju releja direktno u serdes, a s delay-om od 200 clock-ova kasnije ti releji bi se okinuli preko ULN2803 drivera ... ovim nacinom mozes samo jedan ili svih 200 releja ukljuciti u istom trenutku. c) koristenjem programibilne logike, u koju se moze uprogramirati logicka funkcija po zelji, u ovom slucaju npr. CPLD s dovoljnim brojem I/O (npr. Xilinx XL95288) a takav CPLD bi mogao sadrzavati i sucelje prema mikrokontroleru (interface) po zelji, npr. I2C ili SPI, koje naravno takodjer treba upisati u internu CPLD logiku. S ovim stedis na kolicni uporabljenih chipova kao i na velicnini PCB-a. Mikrokontroler bi upakirao informaciju o stanju svih 200 releja u I2C protokol, a CPLD bi tu informaciju onda otpakirao i preko drivera ULN2803 pogonio releje ...
--
StoneThrower
www.dgmicrosys.com
Reply to
StoneThrower

Sve ok, no nisam napisao da bi za svako "kri¾anje" retka i stupca imao po jedna "and" vrata (ciji bi ulazni pinovi bili spojeni na retke i stupce), te bi zapravo izlaz od "and" vrata pogonio relej (naravno uz tranzistor i ostalu periferijicu). Naravno time bih imao za slo¾iti 200 releja, 200 And vrata, 200 tranzistora,

200 za¹titnih dioda, otpornika itd...(ili 200 gotovih drivera)... Time se monta¾a bitno komplicira i poskupljuje, no ima li uopæe drugog-jeftinijeg naèina? Ako ni¹ta, barem na drivere releja moram toliko ulo¾iti... Takoðer nisam napisao da istovremeno mora raditi samo jedan relej, isprika...

Znam znam, post sam onako ofrlje na brzinu napisao ¹to nije u skladu s elektronièkim pravilima :)

Puno ti hvala za ova predlo¾ena rje¹enja, o CPLD nisam razmi¹ljao tako da æu razmotriti to.

Pozdrav!

Reply to
Minotauro

Samo jedan...

Reply to
Minotauro

Za jeftinije neznam ali ovaj bi mogao biti jednostavniji (manji broj komponenti): povezi u seriju 7 komada A6832 32-Bit Serial Input Latched Sink Driver-a od Allegro-a

formatting link
40mA sink driver-e. Stanje onih 200 releja "pratis" u RAMu PICeka (ukupno 7 lokacija RAMa) a serijalizaciju odn. bit-banging iz RAMa u sink-drivere izvedes jednostavnom funkcijom koja sadrzi shiftanje bitova kroz radni (W) registar pa onda vanka PICeka kroz jedan pin spoen na prvi sink-driver u seriji. Dakle, nikakv posebni protokol ti netreba, samo tzv. bit-banging.

--
StoneThrower
www.dgmicrosys.com
Reply to
StoneThrower

E hvala ti puno za ovaj A6832...on mi savr¹eno odgovara jer ima toèno ono ¹to ¾elim: 32bita (mogu grupirati u dvije grupe po 16 bita) i maximalnu struju izlaznog pina od 125mA, mislim da mi je to dovoljno za pogonit ove slabije relejèiæe...

Pozdrav!

Reply to
Minotauro

po meni je ovo najjeftinije i najjednostavnije rjesenje ja radio isto ali sa 40 izlaza i na jadnicku PIC16F84a potrosio samo 3 pina :) Jedino bi bilo dobro podjeliti na vise serijskih izlaza (recimo 5) pa da bi malo brze radilo. Ja sam uspio nacrtati sve u jednom sloju tako da je i projektiranje vrlo jednostavno

Reply to
RockyO

po

stupce), te

tranzistora,

Ako driveri tih 20 + 10 linija mogu gurati/vuæi struje za releje, onda ti treba samo 20 za¹titnih dioda, bez AND-a. Naravno, prvo iskljuèuje¹ 'minus' granu napajanja ¹pule....

Reply to
vaso

Ja bi to rijesio sa 3 PICa u TQFP-80 kucistu (6$ komad+shipping, stigne ti doma u sanducic), serijski port im spojis paralelno preko dioda na MAX232. Sa jednim RS232 neovisno kontroliras svih 200 releja, i to sa nekoliko tekstualnih bajtova. Brze si gotov sa cijelim projektom a mozes ga direkt spajati na PC i tipkat si jednostavan software u C++ ili cemu vec za kontrolu uredjaja.

Reply to
Svemirko

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.