[ dr.zmaj @ 12.11.2006. 18:05 ] @
Da li mi moze neko pomoci kako da sa paralelnog porta preko interfejsa koji sam napravio upravljam step motorima. Upravljanje DC motorima sam ukapirao, ali step motori rade na drugaciji nacin. Samo mala pomoc kako da isprogramiram da LPT salje odredjen broj impulsa.

Imam jos jedan problem. Napravio sam jedan lift sa tri sprata. Kabinu pokrece jedan mali jednosmerni motor, pogon na 6V. Napisao sam i program odnosno citavu aplikaciju u VB. Sve to dobro radi, ali evo gde je problem. Kada je lift na prvom spratu, a ja kliknem na treci sprat, lift krece ali posto mu je potrebno jedno pet sekundi, moja slika aplikacije na ekranu za taj period dobija beli pravougaonik, koji se gubi kad kabina lifta dotakne mikroprekidac koji salje povratnu informaciju na LPT, kada se kabina zaustavlja. Slanje jedinice na LPT koja aktivira relej na interfejsu uradio sam sa naredbom OUT. Zasto se pojavljuje to belilo na ekranu dok se ceka inpuls sa mikroprekidaca.
[ zeko007 @ 12.11.2006. 21:28 ] @
postoje dvije vrste koracnih motora: sa 4 izvoda (npr iz floppya) i sa 6 izvoda (obicno veci, iz printera).
semu spajanja mozes vidjeti na prilozenom linku (to je koracni sa 4 izvoda).

http://www.inet.hr/~obacan/sueljeza.htm

Znaci postoje 4 razlicite kombinacije koje saljes na koracni motor (2^1, 2^2....). Kad posljes kombinaciju motor napravi jedan korak (korak je definiran u naprijed nekim kutom). Kad napravis sve korake kreces isponova. Ako oces motor okretat u suprotnom smjeru saljes kombinacije prema nazad (2^4,2^3...). Brzina okretanja je definirana pauzom koju radis izmedju koraka.
Sa motorima sa 6 izvoda je slicno. Drukcija je sema spajanja i saljes drukcije kombinacije al je princip isti.

[ dr.zmaj @ 15.11.2006. 07:59 ] @
Hvala Zeko, vrlo simpatican sajt. Ostaje mi samo jos da resim prvi problem.
[ zeko007 @ 15.11.2006. 12:20 ] @
Jel cekas da ti jedinica dodje u petlji (petlja se vrti dok ne dodje 1)?

Ako je tako onda bi trebo taj dio rjesiti preko objekta (bar mislim). To ja ne znam... trebalo bi pitat nekog tko bolje zna programirat.
[ rgdrajko @ 16.11.2006. 02:10 ] @
Na www.vbfrance.com ima preko 20 primera za parell port.
[ Fuzz @ 16.11.2006. 10:34 ] @
Citat:
dr.zmaj: Napisao sam i program odnosno citavu aplikaciju u VB. Sve to dobro radi, ali evo gde je problem. Kada je lift na prvom spratu, a ja kliknem na treci sprat, lift krece ali posto mu je potrebno jedno pet sekundi, moja slika aplikacije na ekranu za taj period dobija beli pravougaonik, koji se gubi kad kabina lifta dotakne mikroprekidac koji salje povratnu informaciju na LPT, kada se kabina zaustavlja. Slanje jedinice na LPT koja aktivira relej na interfejsu uradio sam sa naredbom OUT. Zasto se pojavljuje to belilo na ekranu dok se ceka inpuls sa mikroprekidaca.

Zato sto najverovatnije cekas na taj impuls u petlji pa zakucas procesor na 100%
Bilo bi bolje da to realizujes preko dogadjaja. Znaci pokrenes lift, ukljucis timer i cekas na dogadjaj "registrovan impuls". Ukoliko se nista ne dogodi konstatujes time-out.
[ rgdrajko @ 18.11.2006. 11:31 ] @
Moras u petlju staviti komandu DoEvents da bi omogucio da se i drugi dogadjaji izvrsavaju.
[ dr.zmaj @ 18.11.2006. 18:15 ] @
Evo deo podprograma za pokretanje lifta na gore:
Do
' ide gore
Out izlaz, 1
ulaz = Inp(&H379)
izlaz = &H378
If ulaz = prizemlje Then a = 1 Else a = 0
If ulaz = prvi Then b = 1 Else b = 0
If ulaz = drugi Then c = 1 Else c = 0
If ulaz = treci Then d = 1 Else d = 0
stanje = a * 2 ^ 0 + b * 2 ^ 1 + c * 2 ^ 2 + d * 2 ^ 3
'If a = 1 Then Image9(0).Visible = True
'If b = 1 Then Image10(0).Visible = True
'If c = 1 Then Image11(0).Visible = True
'If d = 1 Then Image12(0).Visible = True
If stanje = idina Then Exit Do
Loop

A ovo je deo koda za jedno od 4 dugmeta za pokretanje lifta:

Private Sub Command1_Click(Index As Integer)
Call Brisi
For s = 0 To 3
Shape12(s).Visible = False
Next s
izlaz = &H378
ulaz = Inp(&H379)
Command1(0).BackColor = &HFF
aa = 0
bb = 0
cc = 0
dd = 1
If ulaz = prizemlje Then a = 1 Else a = 0
If ulaz = prvi Then b = 1 Else b = 0
If ulaz = drugi Then c = 1 Else c = 0
If ulaz = treci Then d = 1 Else d = 0
Image12(0).Visible = True
idina = aa * 2 ^ 0 + bb * 2 ^ 1 + cc * 2 ^ 2 + dd * 2 ^ 3
stanje = a * 2 ^ 0 + b * 2 ^ 1 + c * 2 ^ 2 + d * 2 ^ 3
If stanje < idina Then Call Gore
If stanje > idina Then Call Dole
If stanje = idina Then Out izlaz, 0
Image12(0).Visible = True
Shape12(0).Visible = True

For i = 0 To 4
Image12(i).Visible = True
Image11(i).Visible = False
Image9(i).Visible = False
Image10(i).Visible = False
Next i
Image2(4).Visible = True
Image1(4).Visible = True
Image3(4).Visible = True
Image4(4).Visible = False
End Sub
[ Fuzz @ 20.11.2006. 10:25 ] @
Proveru vrsis u toj loop petlji, zar ne? A to nije nimalo preporucljivo.
Koju kontrolu koristis za rad sa paralelnim portom? Koja god da je u pitanju, pretpostavljam da ima event koji se aktivira kad nesto pristigne u buffer. Ti bi trebao da tek na taj event proveris stanje lifta. Na taj nacin izbegavas zakucavanje u petlji ili koristenje DoEvents.