Berti
18th February 2008, 15:45
Salutare forumisti,
Intr-un proiect de suport de monitor pivotabil motorizat comandat de portul paralel, m-am lovit de-o problema oarecum sensibila, v-o descriu pe scurt.
Stiam ca la pornirea calculatorului pe portul paralel se trimit niste semnale de test aleatorii, iar cativa biti raman pe ON, pentru a evita comanda nedorita a releelor am modificat o schema de comanda prin LPT astfel incat sa colecteze informatia de la 2 biti indepartati, pentru un releu am folosti biti 0 si 6 iar pentru celalat 1 si 7, in schema e prezentat doar un releu.
Click pentru a vizualiza atașamentul
Totul functioneaza "brici", singura problema e ca, mi-am schimbat calculatorul si la asta (placa de baza Syntax) dupa semnalele de pornire, toti bitii raman pe ON, adica 11111111.
Partea de inversare de sens a motorului e in asa fel conceputa incat, la un impuls porneste motorul si merge pana la capat de cursa si invers, daca ambele relee sunt aclansate, se efectueaza cursa intre cele doua limitatoare la nesfarsit.
Click pentru a vizualiza atașamentul
Cand pornesc calcualtorul, toti bitii fiind pe ON, relee aclansate, motorul baleiaza intre cele doua limitatoare, pana nu pornesc un soft care pune bitii pe starea OFF.
Ce vreau de la voi? O solutie cat mai simpla, fiindca montajul e deja facut si nu l-as modifica prea radical, pentru a "filtra" aceste semnale de test si starea de ON a tuturor bitilor! Eu m-am gandit la o varianta, da' nu stiu ce piesa as putea utiliza, teoretic asa avea nevoie de-o piesa asemantoare unui optocuplor, doar ca iesirea sa fie tot timpu pe ON, iar cand bitul de trece pe ON, piesa sa treaca pe OFF. As inseria-o cu celealte doua optocuploare asfel incat releu sa aclanseze doar daca se trimite catre montaj 1xx0xx1x (x-urile sunt biti ai caror stare nu conteaza)
Click pentru a vizualiza atașamentul
Sau orice alta parere e binevenita. Multumesc!
P.s. In atentia curiosilor
proiectul e aproape finalizat, mai trebuie doar sa-l finisez, un scurt film puteti vedea aici.
DeeJay
18th February 2008, 15:50
incearca sa scoti portul paralel din modul EPP (asa cum este la majoritatea placilor de baza noi). optiunea estin in BIOS
Berti
18th February 2008, 16:07
Multam pentru sfat, incerc asta cum ajung acasa!
GeorgeGeo
18th February 2008, 16:26
Nu am inteles cum la celalalt calculator bitii nu erau toti in "1"?
Pe urma ce comenzi dadeai pentru actionat releele prin intermediul portului?
De ce vrei sa le conectezi prin intermediul portului?
ilya
18th February 2008, 16:52
încearcă să incluzi un uc în schemă.
astfel, uc+ul va controla motoarele, pentru a intra în modul "on", e nevoie, de ex, de 4 bytes într-o anumită ordine. după ce acești 4 bytes sunt trimiși, uc-ul va controla motoarele în mod normal(în funcție de semnalele de pe port, evident). înainte de shutdown, vei trimite o serie de bytes acestui uc, care îl va seta într-un mod "offline", în care el așteaptă cei 4 bytes de start (până vei da drumul la calculator iar, de exemplu)
metoda funcționează indiferent de starea inițiala a portului paralel, pt că șansele sunt destul de slabe ca portul să scuipe cei 4 bytes în ordinea setată de tine. și dacă chiar se întâmplă, tu vei putea schimba acești bytes de pornire în microcontroller.
bit 61
18th February 2008, 17:38
Daca folosesti Win XP cauta pe net informatii despre "dlportio".
M-am lovit de o problema asemanatoare la un programator de memorii pe portul
paralel.
Am anexat in directorul unde era executabilul programatorului cele 2 fisiere din atasament
ca sa rezolv "necazul".
Click pentru a vizualiza atașamentul
tatarduka
18th February 2008, 20:10
ar fi mai putine fire daca ai folosi un uc pe portul serial sau USB
bafta
Berti
18th February 2008, 22:13
Baieti, multam de sfaturi, s-o luam pe rand:
DeeJay, am facut iute un tester cu 8 leduri si am incercat pe rand toate modurile, SPP, EPP, ECP, EPP+ECP, la absolut toate se manifesta la fel. Spre deosibire de calculatoru vechi, asta nu mai da semnale aiurea de teste in timpul bootarii, ci in timpul incarcarii windows-ului le "flash"-uieste scurt dupa care le pune pe toate pe ON.
Daca le pun pe toate pe OFF, cand sting calculatoru, iar da Windosu da un flash scurt. Deci nu depinde de modul port-ului.
GeorgeGeo,
Nu am inteles cum la celalalt calculator bitii nu erau toti in "1"?
atata calcualtoru anterior, un Compaq, cat si predecesorul lui, cu o placa VIA, dadeau niste semnale aiurea la boot-are si pe urma lasau pe ON doar un singur bit. Cu placa Via chiar aveam un sistem de tras jaluzele care facea ceva figuri la boot-are dar pe urma puteam sa-l folosesc fara probleme.
Pe urma ce comenzi dadeai pentru actionat releele prin intermediul portului?
N-am prea inteles intrebarea, te referi la ce comenzi am scris in codu sursa sau cum?
De ce vrei sa le conectezi prin intermediul portului?
Asta-i din categoria "Foaie verde batz, n-ai de lucru fa-tzi", oricum pe langa asta vreau sa gasesc o solutie pentru rotirea imaginii din Vbasic, astfel incat cu un singur buton sa rotesc si atat monitorul cat si desktopul.
ilya, ce sugerezi tu e prea complicat pentru mine, nu am programator, nu stiu, n-am nici timp sa invat... deci trebuie sa ramanem la solutii cat mai simple, cu piese cat mai comune, fiindca la magazinul de electronice din orasul meu nu gasesc chiar orice.
bit 61, defapt ce face driveru' asta si unde trebuie sa-l pun? Softu facut de mine merge impecabil pe XP, pentru interfatarea LPT-ului am folosit IO.DLL
tatarduka, sincer, ma depasesc solutiile date de tine, hai sa incercam sa gasim o solutie mai simpla.
Aveti idee cum pot inversa intr-un mod cat mai simplu functionarea tranzistorului dintr-un optocuplor, adica sa-mi "treaca" curentu, si cand primeste tensiune optocuploru, sa "taie" curentu... scuzati-mi exprimarea "academica".
macaz
18th February 2008, 23:55
Ma gandesc ca daca faci in asa fel ca driverul default pentru lpt (parport.sys) sa nu mai fie incarcat la bootare atunci nu se mai intampla aceste fenomene.Driverele sunt incarcate si pornite pe baza unor coduri de start localizate in registry in HKLM\SYSTEM\CurrentControlSet\Services\[drivername].
In cazul portului paralel cheia este HKLM\SYSTEM\CurrentControlSet\Services\Parport.
Unul din parametri este [Start] cu REG_DWORD=3.Explicatii privind codurile de control al startului le gasesti aici unde:
0=Boot
1=System
2=Auto
3=Demand
4=Disabled
Daca stabilesti codul de control la 4 (Disabled) atunci windows numai incarca acel driver la pornire,iar in device manager portul paralel va fi marcat cu un mic semn de exclamare, iar la status spune:
A driver (service) for this device has been disabled.
An alternate driver may be providing this functionality.
Am testat putin sa vad ce se intampla;la pornire nu aparea activitate pe portul paralel iar starea logica a tuturor pinilor ramanea pe "0" dupa pornire.Poate asta te ajuta.
Berti
19th February 2008, 01:22
Macaz, toata stima, meriti cel putin o lada de bere!
E perfecta, solutia asta imi rezolva problema in modul cel mai elegant posibil.
Nici un bit "vagabond" nu iese pe LPT, nici la pornire nici la oprire, iar softu' pentru rotire functioneaza impecabil!
Multumesc tuturor celor care s-au implicat in acest topic!
macaz
19th February 2008, 02:22
Heh... ma bucur ca ai rezolvat! merge si o
virtuala
.
Berti
20th February 2008, 00:19
Am o veste proasta... din pacate problema mea e rezolvata doar 90%, mai raman aialalti 10% care am impresia ca se pot rezolva doar din hardware, si anume:
- solutia oferita de Macaz, functioneaza atata timp ca dai restart-uri, asta facusem aseara si de asta ziceam ca s-a rezolvat problema.
Dar cand opresti sistemu definitv, cu Shut Down, biti trec pe ON pentru un timp foarte scurt chiar inainte de inchiderea completa. La pornire adica la apasarea butonului de power, toti bitii trec scurt pe ON, odata cu ledurile de pe tastatura. Imi dau seama ca astea-s niste semnale care n-au treaba nici macar cu biosul... deci nu cred ca exista o solutie software pentru partea asta...
Revin la cererea mea initiala, ce piesa sa folosesc pentru a inversa starea unui optocuplor? Cand "ledul" lumineaza, prin tranzistor sa nu treaca curent...
Multumesc.
mister_rf
20th February 2008, 01:53
Nu trebuie sa folosesti o piesa separata.
Este suficient sa generezi un cuvant care sa contina si zerouri pentru comanda optocuploarelor.
De aceea LED-urile se cupleaza intre bitii care genereaza ''1'' si cei care vor fi la ''0".
Tu ai acum bitii 0 si 7. Teoretic cuvantul folosit 1xxxxxx1, se poate modifica in 1xx0x0x1 sau cu trei optocuploare se pot folosi si alti biti, etc.
Exemplu:
Click pentru a vizualiza atașamentul
si daca vrei sa fii mai sigur foloseste si bitii liberi cu blocare pe o anumita stare.
De exemplu
1x0000x1 devine cuvantul permis acum cu un alt optocuplor care citeste bitii suplimentari si blocheaza comanda:
Click pentru a vizualiza atașamentul
Berti
20th February 2008, 09:30
Multumesc Mister_rf pentru raspuns, parte foarte simpla solutia ta... exact cam asta doream, o pun in aplicarea cand ajung acasa si va tin la curent.
Berti
20th February 2008, 10:25
Imi cer scuze pentru postare dubla, am fost retinut si pana mi-am terminat ideea, timpul de editare expirase.
Mister_rf, am mai studiat schema si am o nelamurire, cum vor functiona primii doi optocuplori daca sunt conectati doar la biti de control (bitul 0 si 2) si n-au un (-)minus?
L.E. Cred ca am inteles, totusi te rog sa-mi confirmi logica. Atata timp cat pe ambii biti ies +5V "ledul" nu se aprinde pentru ca n-are minus, in monentul in care unul din biti e OFF, defapt el este pus la masa si ofera ledului minusul necasar pentru a se aprinde. Corect?
mister_rf
20th February 2008, 10:39
Da.
Berti
20th February 2008, 22:03
Mister_rf, multumesc mult! Solutia ta e perfect functionala, am folosit-o pe prima, fiindca PCB-ul era deja prea aglomerat. Pentru un canal trimit "codul" xx 10 xx 10, iar pentru celalat 10 xx 10 xx.
Practic schema asta ar trebui sa le-o recomandam tuturor celor care vor sa-si construiasca un montaj pentru comanda unor dispozitive prin intermediu portului paralel.
Singura limitare fata de scheme "standard" e numarul mai mic de dispozitive comandabile, doar 4, dar in cele mai multe cazuri sunt suficiente.
mister_rf
20th February 2008, 22:59
Numarul de dispozitive poate fi crescut la 6-7 deoarece eu cred ca merge si cu un singur optocuplor si cu doar un singur bit folosit pentru a obtine nivelul ''0''.
Aceasta este o versiune simplificată a paginii originale. Pentru a vizita versiunea originala
click aici.