 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
JOST Član

Pridružen-a: Ned 23 Nov 2008 12:01 Prispevkov: 130 Aktiv.: 0.64 Kraj: Lokovica
|
Objavljeno: Sre Feb 13, 2013 12:04 pm Naslov sporočila: Premik podatkov za LED prikazovalnik z shift registrom 74595 |
|
|
Za potrebe prikaza podatkov iz PLC-ja sem se lotil izdelave prikazovalnika. Uporabil sem 3-prikazovalnike SA23-12EWA (5,7cm veliki znaki) s skupno anodo, tako da lahko prikazujem števila do 999.
Ker sem omejen z številom izhodov na krmilniku, sem se odločil da napravim v prvi fazi multipleks, za kar sem porabil 10 izhodov krmilnika. To deluje super, vendar je manjši problem v osveževanju prikaza iz PLCja. Zato sem se odločil da uporabim shift registre 74595 , kjer bom serijsko prenašal podatke v obliki BCD kode preko enega izhoda. Poleg tega izhoda rabim še dva izhoda in sicer za clock signal za shift register, ter clock signal za latch register. Tako potrebujem vsega skupaj 3 izhode iz krmilnika. Shift registra sta vezana v kaskado, tako dobim na razpolago paralelno 16-bitov. Izhodi iz registrov so direktno vezani na vhode BCD to 7-segment pretvornike 7447, tako da 4-biti na vsakem registru krmilijo po en LED display.
Ker so PLC izhodi 24V, sem uporabil optospojnike za pretvorbo nivojev na 5V.
Pojavi pa se mi problem da kadar je na podatkovnem vhodu logična 1 in jo z clockom premaknem za 1 v desno, se mi le-ta pojavi na 3 najnižje uteženih izhodih hkrati, potem pa se mi takšna vsebina premika naprej za ena z vsakim clockom. Ne vem v čem je problem, ali ne bi smela biti direktno povezana 74595 ter 7447. Nimam pa v tem trenutku rezervnega shift registra da bi ga zamenjal. Vezje prilagam v datoteki.
Opis: |
|
 Download |
Ime datoteke: |
MAX_LED.pdf |
Velikost datoteke: |
517.83 KB |
Downloadano: |
34 krat |
Nazadnje urejal/a JOST Sre Feb 13, 2013 8:06 pm; skupaj popravljeno 2 krat |
|
Nazaj na vrh |
|
 |
igo Član

Pridružen-a: Sre 11 Okt 2006 19:11 Prispevkov: 3641 Aktiv.: 15.99
|
Objavljeno: Sre Feb 13, 2013 1:30 pm Naslov sporočila: |
|
|
Sheme nisem gledal, ampak napaka je lahko tudi v PLC programu.
Krmilnik preveri stanje vseh vhodov, nato gre čez program, na koncu pa spremeni vse izhode naenkrat.
Če tega ne upoštevaš pri pisanju programa, nastanejo presenetljivo zanimive posledice.
Če naprimer program v 9 vrsticah zapored spremeni stanje izhoda, se bo na dejanski izhod prenesla samo zadnja sprememba.
Zadevo najlažje rešiš, če programiraš od spodaj navzgor in zaklepaš vrstice, da se izvedejo šele ob naslednjem prehodu.
Dodano: sem pogledal shemo. Kam so vezane baze optosklopnikov?
_________________ Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor |
|
Nazaj na vrh |
|
 |
JOST Član

Pridružen-a: Ned 23 Nov 2008 12:01 Prispevkov: 130 Aktiv.: 0.64 Kraj: Lokovica
|
Objavljeno: Sre Feb 13, 2013 4:27 pm Naslov sporočila: |
|
|
igo je napisal/a: |
Sheme nisem gledal, ampak napaka je lahko tudi v PLC programu.
Krmilnik preveri stanje vseh vhodov, nato gre čez program, na koncu pa spremeni vse izhode naenkrat.
Če tega ne upoštevaš pri pisanju programa, nastanejo presenetljivo zanimive posledice.
Če naprimer program v 9 vrsticah zapored spremeni stanje izhoda, se bo na dejanski izhod prenesla samo zadnja sprememba.
Zadevo najlažje rešiš, če programiraš od spodaj navzgor in zaklepaš vrstice, da se izvedejo šele ob naslednjem prehodu.
Dodano: sem pogledal shemo. Kam so vezane baze optosklopnikov? |
PLC programa v bistvu še nimam, kajti izhode sem prožil iz VAT tabele. Ta način je sicer počasen vendar je ustrezen za ta način testiranja. Najprej sem si postavil podatek na "1" nato sem prožil "clock" za shift register, nato pa še "clock" za latch register. Drugače je pa res, da imajo fizični izhodi tisto stanje, ki se je postavilo najkasneje v programu.
Baze optospojnikov so v zraku. Ali je to narobe? Med bazo in kolektorjem sem vezal tudi 100pF kondenzator pa ni nič bolje....
|
|
Nazaj na vrh |
|
 |
igo Član

Pridružen-a: Sre 11 Okt 2006 19:11 Prispevkov: 3641 Aktiv.: 15.99
|
Objavljeno: Sre Feb 13, 2013 6:38 pm Naslov sporočila: |
|
|
Zdaj sem shemo še bolje pogledal ...
Zakaj so RCLK in SRCLK vezani skupaj?
SRCLR sploh ne potrebuješ, saj vsakič vpišeš novih 12 bitov, prejšnjih pa ne rabiš več in se lahko izgubijo v prazno. Če bo par milisekund po vklopu izpisana naključna vrednost, pa ni pomembno.
Komunikacija poteka tako:
SRCLK' ves čas čaka na na "1" (to je Serial Clock)
RCLK ves čas čaka na na "0" (to je Latch Clock)
Zanka
(
Določi se bit SER
SRCLK' na "0"
SRCLK' na "1"
če še ni 12 prehodov, gre na začetek, sicer leti ven
)
RCLK na "1"
RCLK na "0"
Optosklopnike in pull-up ter pull-down upore poveži tako, da bodo ob izklopljenih ledicah na izhodih ustrezna stanja "1" oziroma "0". Potem PLC sprogramiraš s pozitivno logiko, saj bo SRCLK' invertiran na optosklopniku. Torej na izhod PLC-ja pripelješ samo stanja SER, ter pozitivne impulze za SRCLK in RCLK, da ne bodo ledice ves čas brez veze svetile.
Če bodo baze optosklopnikov nase vlekle motnje, bi jih jaz vezal kvečjemu preko 470kOhm upora na GND. A če je napaka le v SRCLK' in RCLK, jih lahko tudi pri miru pustiš.
3 prazne izhode od 74595 lahko vežeš na DP displayev. Za hec, morda kdaj pride prav. Ampak potem moraš vedno poslati 15 bitov.
_________________ Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor |
|
Nazaj na vrh |
|
 |
JOST Član

Pridružen-a: Ned 23 Nov 2008 12:01 Prispevkov: 130 Aktiv.: 0.64 Kraj: Lokovica
|
|
Nazaj na vrh |
|
 |
JOST Član

Pridružen-a: Ned 23 Nov 2008 12:01 Prispevkov: 130 Aktiv.: 0.64 Kraj: Lokovica
|
Objavljeno: Ned Feb 17, 2013 6:06 pm Naslov sporočila: |
|
|
Zadevo sem rešil. Namesto pull down uporov na izhodih optospojnikov sem priključil pull up upore. Na ta način sem se rešil nedefiniranih logičnih stanj na vhodu v register. Prilagam novo shemo
Napisal sem tudi program za simatika, ki je pravtako v prilogi. Uporabljeni so samo trije izhodi, kar povsem zadošča za prikaz. Proženje premika podatkov je narejeno preko sistemskega 10Hz pulza, kar pomeni da celoten prikaz traja cca. 1,2 sekunde. Prvih osem taktov se vhodni podatki samo premikajo v shift registru, zato opazovalec ne vidi spremembe, potem pa morajo podatki iz prvega registra preiti v drugega, zato je potrebno aktivirati izhodni latch. Pravtako je potrebno aktivirati latch z vsakim naslednjim prmikom podatkov naprej. To se opazi kot utripanje prikazovalnika. Če bi se še malce potrudil in uporabil hitrejši premik podatkov, potem bi teh utripov ne bilo, vendar tudi to ni preveč moteče.
Opis: |
|
 Download |
Ime datoteke: |
MAX_LED_driver.pdf |
Velikost datoteke: |
282.82 KB |
Downloadano: |
7 krat |
Opis: |
|
 Download |
Ime datoteke: |
LED_S7_program.txt |
Velikost datoteke: |
2.92 KB |
Downloadano: |
8 krat |
|
|
Nazaj na vrh |
|
 |
igo Član

Pridružen-a: Sre 11 Okt 2006 19:11 Prispevkov: 3641 Aktiv.: 15.99
|
Objavljeno: Ned Feb 17, 2013 6:49 pm Naslov sporočila: |
|
|
Ko napolniš prvih 8 bitov, se podatek samodejno začne polniti v drugi 595. Vmes ni treba nič latcha aktivirati.
Ti kar napolni vseh 12 bitov naenkrat in daj potem impulz na latch.
Ti registri so narejeni ravno za to, da lepo v miru napolniš vse bite, nato pa jih naenkrat preneseš na izhode.
_________________ Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor |
|
Nazaj na vrh |
|
 |
JOST Član

Pridružen-a: Ned 23 Nov 2008 12:01 Prispevkov: 130 Aktiv.: 0.64 Kraj: Lokovica
|
Objavljeno: Tor Feb 19, 2013 6:12 am Naslov sporočila: |
|
|
Točno tako kot si napisal igo. Ne potrebuješ aktiviranja izhodnega latcha za prenos med registri. Sedaj ni več utripanja
|
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 500 dni
Powered by phpBB © 2001, 2005 phpBB Group
|