spacer.png, 0 kB

Torna indietro   Roboitalia.com - Il primo portale in Italia sulla robotica amatoriale > Robotica di base > Informatica > P. in Visual Basic

Rispondi
 
Strumenti discussione Modalit visualizzazioe
  #51  
Vecchio 16-04-2004, 20.34.33
MarkNitro MarkNitro non è collegato
Robottaro master
 
Data registrazione: 18-01-2003
Residenza: Nel Mondo
Messaggi: 380
Potenza reputazione: 81
MarkNitro E' per ora ancora un mistero
Predefinito

ho tolto il pezzo di routine che disabilitava le uscite quando gli stepper sono inattivi (x non infierire sulla temperatura dei motori),magari così funzia....spero.

ocho alle temperature xo
__________________
]Y[@rk Nitro²
Rispondi citando
  #52  
Vecchio 17-04-2004, 18.52.49
fdm fdm non è collegato
Robottaro senior
 
Data registrazione: 01-12-2003
Residenza: Verona
Messaggi: 42
Potenza reputazione: 70
fdm E' per ora ancora un mistero
Predefinito

secondo me non va bene adesso perche i motori assorbono troppo è diminuita la velocita e si parte sempre da 6 ms in su.
Meglio prima.

ciao
Rispondi citando
  #53  
Vecchio 17-04-2004, 19.24.26
L'avatar di marnic
marnic marnic non è collegato
Administrator
 
Data registrazione: 23-05-2002
Residenza: Monselice (PD)
Et: 58
Messaggi: 5,458
Potenza reputazione: 425
marnic La sua reputazione  oltre la sua famamarnic La sua reputazione  oltre la sua famamarnic La sua reputazione  oltre la sua famamarnic La sua reputazione  oltre la sua famamarnic La sua reputazione  oltre la sua famamarnic La sua reputazione  oltre la sua famamarnic La sua reputazione  oltre la sua famamarnic La sua reputazione  oltre la sua famamarnic La sua reputazione  oltre la sua fama
Predefinito

mmmh, qualcosa ancora non va, domani provo a guardare i segnali,

cmq che i motori assorbano è giusto, meno corrente meno potenza, e se sono rispettati i dati di targa non si brucia niente.
Probabilmente l'uscita della lpt non è così facile da gestire, l'impressione è che anche in un movimento continuo di un motore non ci sia "simmetria" nella durata dell'output. il motore non ha un andamento/rumore lineare.
Mark (riesco a capire poco del tuo codice) qual'è la parte che gestisce l'uscita alla stampante ops:
Ciao
__________________
Marnic
Roboitalia Staff
www.fabbrimarco.com
Rispondi citando
  #54  
Vecchio 18-04-2004, 10.38.58
MarkNitro MarkNitro non è collegato
Robottaro master
 
Data registrazione: 18-01-2003
Residenza: Nel Mondo
Messaggi: 380
Potenza reputazione: 81
MarkNitro E' per ora ancora un mistero
Predefinito

alloroa, la parte che gestisce l'uscita lpt è contenuta nel modulo mdlGestioneOutput:

Codice:
Public Sub StepperOUT()
Dim Uscita(2)
Select Case InterfaceID
    Case 0
        For I = 0 To 2
            If StepperState(I) = True Then Uscita(I) = StepperConfig(StepperPos(I), I) Else Uscita(I) = 0
        Next
        vbOut PORTA, Uscita(0) Or Uscita(1) * 16
        vbOut PORTC, Uscita(2)
    Case 1
        For I = 0 To 2
            Uscita(I) = StepperConfig(StepperPos(I), I)
        Next
        vbOut PORTA, Uscita(0) Or 2 ^ 4
        Sleep StepDelay
        vbOut PORTA, Uscita(1) Or 2 ^ 5
        Sleep StepDelay
        vbOut PORTA, Uscita(2) Or 2 ^ 6
        Sleep StepDelay
    End Select
End Sub
il pezzo che nn funziona è questo:

Codice:
        vbOut PORTA, Uscita(0) Or 2 ^ 4
        Sleep StepDelay
        vbOut PORTA, Uscita(1) Or 2 ^ 5
        Sleep StepDelay
        vbOut PORTA, Uscita(2) Or 2 ^ 6
        Sleep StepDelay
PORTA=indirizzo LPT
uscita(0)=valore a 4bit del motore dell'asse X
uscita(1)=valore a 4bit del motore dell'asse Y
uscita(2)=valore a 4bit del motore dell'asse Z

la parte or 2^4, 2^5 e 2^6 serve ad abilitare il bit di enable dei vari motori.

forse provando a mandare prima i 4bit, aspettare un po' e abilitare il motore...

boh, cmq se ci avete capito qualcosa dalla mia spiegazione, magari provate a smanettare un po' voi, si tratta solo di usare la funzione

vbOut PORTA, il valore da mandare

e

Sleep tempo in ms

fatemi sapere, ciao, marco



PS ho trovato il modo di fare l'interpolazione circolare, ora sta da vedere se funziona :wink:
__________________
]Y[@rk Nitro²
Rispondi citando
  #55  
Vecchio 18-04-2004, 11.23.37
L'avatar di marnic
marnic marnic non è collegato
Administrator
 
Data registrazione: 23-05-2002
Residenza: Monselice (PD)
Et: 58
Messaggi: 5,458
Potenza reputazione: 425
marnic La sua reputazione  oltre la sua famamarnic La sua reputazione  oltre la sua famamarnic La sua reputazione  oltre la sua famamarnic La sua reputazione  oltre la sua famamarnic La sua reputazione  oltre la sua famamarnic La sua reputazione  oltre la sua famamarnic La sua reputazione  oltre la sua famamarnic La sua reputazione  oltre la sua famamarnic La sua reputazione  oltre la sua fama
Predefinito

mi sa che hai centrato il punto, credo che (magari per colpa dell'elettronica arriva per un'attimo l'uscita del motore y e il pin di enable del motore x non è ancora basso.
nell'interfaccia non c'è nessuna resistenza di pulldown ....azz!
Adesso vado a vedere il moto GP poi provo ha inserire delle R nella scheda.

x fdm: mi generi in file .ger di primitive semplici tipo:
linea orizzontale (x) da 5cm
linea orizzontale (y) da 5cm
linea verticale (z) da 3cm
linea diagonale a 45° (x=y)

Poi magari un cerchio così proviamo l'interpolazione di Mark

Ciao.

P.S.
Se Valentino vince vi offro da bere :mrgreen:
__________________
Marnic
Roboitalia Staff
www.fabbrimarco.com
Rispondi citando
  #56  
Vecchio 18-04-2004, 12.27.35
MarkNitro MarkNitro non è collegato
Robottaro master
 
Data registrazione: 18-01-2003
Residenza: Nel Mondo
Messaggi: 380
Potenza reputazione: 81
MarkNitro E' per ora ancora un mistero
Predefinito

dovrebbe essere un file con scritto:
Codice:
G0 X50
G0 Y50
G0 Z30
G0 X50 Y50
GRANDE VALENTINO!!!!!!!!


bye, Marco



PS No, nn funzia l'interpolazione circolare =(
Rispondi citando
  #57  
Vecchio 18-04-2004, 16.17.40
L'avatar di marnic
marnic marnic non è collegato
Administrator
 
Data registrazione: 23-05-2002
Residenza: Monselice (PD)
Et: 58
Messaggi: 5,458
Potenza reputazione: 425
marnic La sua reputazione  oltre la sua famamarnic La sua reputazione  oltre la sua famamarnic La sua reputazione  oltre la sua famamarnic La sua reputazione  oltre la sua famamarnic La sua reputazione  oltre la sua famamarnic La sua reputazione  oltre la sua famamarnic La sua reputazione  oltre la sua famamarnic La sua reputazione  oltre la sua famamarnic La sua reputazione  oltre la sua fama
Predefinito

Vi devo una bevuta!!

dunque, con G0 x50 come poi si dovrebbe capire anche dal codice, ho sempre una commutazione sui tre motori, y e z non fanno nulla ma l'attimo della commutazione è veramente instabile sui pin enable, con una resistenza pulldown non si migliora un granchè (giusto visto che la LPT non credo sia un open collector).
Per cui credo che si debba agire via SW, mi sono venute in mente due strade, una la sto scartando pensandoci adesso anche se potrebbe tornare utile per altro.
1) Dopo lo Sleep StepDelay metterei un vbOut PORTA, 0

2) con un IF valutare se (ad esempio) y cambia, in caso negativo saltare l'istruzione (questo per tutti i 3 motori)

La soluzione 2 da sola non ha grande utilit* nel caso della linea a 45°, forse si possono combinare le due cose, più o meno così:

IF y<>yOLD then vbOut PORTA, 0; vbOut PORTA, Uscita(1) Or 2 ^ 5

Con yOLD che è il valore di y precedente a quello attuale

In questo modo abbiamo che il motore y non genera commutazioni (e nemmeno ritardi) se non interessato al movimento, nel caso debba commutare prima di farlo porta a zero gli enable prima di commutare.
__________________
Marnic
Roboitalia Staff
www.fabbrimarco.com
Rispondi citando
  #58  
Vecchio 18-04-2004, 17.27.53
MarkNitro MarkNitro non è collegato
Robottaro master
 
Data registrazione: 18-01-2003
Residenza: Nel Mondo
Messaggi: 380
Potenza reputazione: 81
MarkNitro E' per ora ancora un mistero
Predefinito

prova a sostituire la routine con questa (prova a metterla al posto di quella che c'e, non edito il file esistente xke ho il sorgente incasinato):

Codice:
Public Sub StepperOUT&#40;&#41; 
Dim Uscita&#40;2&#41; 
Select Case InterfaceID 
    Case 0 
        For I = 0 To 2 
            If StepperState&#40;I&#41; = True Then Uscita&#40;I&#41; = StepperConfig&#40;StepperPos&#40;I&#41;, I&#41; Else Uscita&#40;I&#41; = 0 
        Next 
        vbOut PORTA, Uscita&#40;0&#41; Or Uscita&#40;1&#41; * 16 
        vbOut PORTC, Uscita&#40;2&#41; 
    Case 1 
        For I = 0 To 2 
            If StepperState&#40;I&#41; = True Then Uscita&#40;I&#41; = StepperConfig&#40;StepperPos&#40;I&#41;, I&#41; Else Uscita&#40;I&#41; = 0 
        Next 
        vbOut PORTA, Uscita&#40;0&#41; Or 2 ^ 4 
        Sleep 1
        ResetLPT
        Sleep StepDelay 
        vbOut PORTA, Uscita&#40;1&#41; Or 2 ^ 5 
        Sleep 1
        ResetLPT
        Sleep StepDelay 
        vbOut PORTA, Uscita&#40;2&#41; Or 2 ^ 6 
        Sleep 1
        ResetLPT
        Sleep StepDelay 
    End Select 
End Sub
ci ho rimesso il pezzo che stacca gli stepper se non cambia lo stato (lo avevo tolto, ma nn era quello il problema) ed ho aggiunto l'azzeramento della parallela dopo ogni motore, così dovrebbe andare....spero

PS Anke questa dovrebbe andare

Codice:
Public Sub StepperOUT&#40;&#41; 
Dim Uscita&#40;2&#41; 
Select Case InterfaceID 
    Case 0 
        For I = 0 To 2 
            If StepperState&#40;I&#41; = True Then Uscita&#40;I&#41; = StepperConfig&#40;StepperPos&#40;I&#41;, I&#41; Else Uscita&#40;I&#41; = 0 
        Next 
        vbOut PORTA, Uscita&#40;0&#41; Or Uscita&#40;1&#41; * 16 
        vbOut PORTC, Uscita&#40;2&#41; 
    Case 1 
        For I = 0 To 2 
            If StepperState&#40;I&#41; = True Then
		Uscita&#40;I&#41; = StepperConfig&#40;StepperPos&#40;I&#41;, I&#41;
        	vbOut PORTA, Uscita&#40;i&#41; Or 2 ^ &#40;i+4&#41; 
		Sleep 1 
        	ResetLPT 
        	Sleep StepDelay
        Next 
    End Select 
End Sub
Rispondi citando
  #59  
Vecchio 18-04-2004, 22.41.16
fdm fdm non è collegato
Robottaro senior
 
Data registrazione: 01-12-2003
Residenza: Verona
Messaggi: 42
Potenza reputazione: 70
fdm E' per ora ancora un mistero
Predefinito

il motore gira bene con sleep a 6 ms ma il delay non alza piu di tanto la velocita ho notato anche che se io cancello i righi (Sleep StepDelay ) la funzione sleepdelay funziona ancora come mai? :?

Public Sub StepperOUT()
Dim Uscita(2)
Select Case InterfaceID
Case 0
For I = 0 To 2
If StepperState(I) = True Then Uscita(I) = StepperConfig(StepperPos(I), I) Else Uscita(I) = 0
Next
vbOut PORTA, Uscita(0) Or Uscita(1) * 16
vbOut PORTC, Uscita(2)
Case 1
For I = 0 To 2
If StepperState(I) = True Then Uscita(I) = StepperConfig(StepperPos(I), I) Else Uscita(I) = 0
Next
vbOut PORTA, Uscita(0) Or 2 ^ 4
Sleep 6
ResetLPT
Sleep StepDelay
vbOut PORTA, Uscita(1) Or 2 ^ 5
Sleep 6
ResetLPT
Sleep StepDelay
vbOut PORTA, Uscita(2) Or 2 ^ 6
Sleep 6
ResetLPT
Sleep StepDelay
End Select
End Sub
Rispondi citando
  #60  
Vecchio 19-04-2004, 11.09.08
L'avatar di sergio_camici
sergio_camici sergio_camici non è collegato
Administrator
 
Data registrazione: 23-05-2002
Residenza: Binasco (MI)
Et: 55
Messaggi: 2,665
Potenza reputazione: 306
sergio_camici La sua reputazione  oltre la sua famasergio_camici La sua reputazione  oltre la sua famasergio_camici La sua reputazione  oltre la sua famasergio_camici La sua reputazione  oltre la sua famasergio_camici La sua reputazione  oltre la sua famasergio_camici La sua reputazione  oltre la sua famasergio_camici La sua reputazione  oltre la sua fama
Predefinito

Lo sapete, vero, che windows e' totalmente inaffidabile per le temporizzazioni e che la sleep non puo' scendere sotto un certo limite (mi pare 12 ms) ?

ciao
S
Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione
Modalit visualizzazioe

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code Attivato
Le smilies sono Attivato
[IMG] Attivato
Il codice HTML Disattivato

Vai al forum

Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
idea codice controllo multi pwm BQuadra Meccanica e materiali 17 30-07-2008 20.46.19
Codice pwm Pic16f876a BQuadra Elettronica 2 26-07-2008 13.30.51
idea codice controllo multi pwm BQuadra Elettronica 0 12-07-2008 11.41.32
Codice asm pirata111 P. in Assembler 2 21-03-2008 08.55.44
chiedo aiuto ad andrea83ban e chi interessato davi84ita P. in C, C++ 5 27-02-2006 17.23.57


Tutti gli orari sono GMT. Adesso sono le: 23.50.35.


Basato su: vBulletin Versione 3.8.8
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Realizzazione siti web Cobaltica Foligno
spacer.png, 0 kB