NI Home > Community > NI Discussion Forums
Rispondere
Member
Marco86
Post: 16
0 Kudos

Controllo Motore Passo Passo tramite scheda PCI 6713 e Labview 8.5

Buonasera, sto utilizzando per la prima volta Labview per il controllo di un motore passo passo tramite scheda NI 6713. Il seguente motore è controllato tramite 2 canali digitali, il primo serve per scegliere la direzione della rotazione , mentre il secondo serve per l'avanzamento tramite l'invio di impulsi (onde quadre) a 5 volt. Il mio problema è il seguente, tramite il Daq assistant implementato , riesco a scrivere sul canale il numero di impulsi, corrispondente al numero di passi che voglio far fare al mio motore, solo che finiti questi, il VI si "spegne automaticamente", ovvero per spiegarmi meglio, se voglio far fare prima 5 passi e poi 3 passi, una volta finiti i 5 passi devo cambiare il number of sample e porlo a 3 e far ripartire il VI. Sarebbe possibile fare in modo che il Vi rimanga sempre acceso, e di volta in volta selezionare in numero di passi e poi tramite un pulsante dare il via alla rotazione? Ho provato a guardare fare qualcosa con i cicli while o for ma niente. Se qualcuno può essermi d'aiuto, vi ringrazio fin da ora perchè è da un molti giorni che ci sto sopra ma non ne esco.

Member
MargheTB
Post: 26

Rif.: Controllo Motore Passo Passo tramite scheda PCI 6713 e Labview 8.5

Hai provato con una case structure all'interno di un while loop?? (vedi esempio in allegato)

il loop ti consentirebbe di utilizzare il programma senza farlo fermare e puoi collegare un bottone alla case structure, di modo tale che premendolo puoi "caricare" il valore e muovere il motore!

 

non so se sia la soluzione migliore, ma cn me ha funzionato!

spero di essere stata di aiuto!

 

ciao!

 

Member
Marco86
Post: 16
0 Kudos

Rif.: Controllo Motore Passo Passo tramite scheda PCI 6713 e Labview 8.5

Grazie mille della risposta, ora lunedì quando vado in laboratorio provo, mi hanno fornito un'altra soluzione casomai le provo entrambi e poi vedo quale piace di più al prof con il quale sono in tesi.

Member
Marco86
Post: 16
0 Kudos

Rif.: Controllo Motore Passo Passo tramite scheda PCI 6713 e Labview 8.5

Hi provato il tuo schema e diciamo che funziona in parte, ovvero con il case structure il programma rimane sempre acceso finchè non si stoppa il ciclo while, però purtroppo c'è un altro problema, ovvero il generatore di impulsi mi genera sempre lo stesso valore di impulsi pari a quello selezionato all'avvio, ad esempio se la prima volta voglio generare 5 impulsi inserisco 5 sul selettore e me li fa, però se al secondo passo mi servono solo 3 impulsi, inserisco 3 nel selettore ma una volta avviato me ne fa sempre 5, ovvero sembra tenga in memoria il primo numero di impulsi inserito, è possibile bypassare questo problema in qualche modo???

Member
MargheTB
Post: 26
0 Kudos

Rif.: Controllo Motore Passo Passo tramite scheda PCI 6713 e Labview 8.5

purtoppo (o per fortuna?! :smileywink: ) non ho mai avuto questo tipo di problema...

con qll semplice struttura io sono in grado di variare il numero di step di volta in volta...

potrebbe esserci anche un problema nei comandi che invii al motore!

se provi a postare il programma vedrai che qualcuno riuscirà a darti qualche consiglio utile!

 

ciao!

Member
Marco86
Post: 16
0 Kudos

Rif.: Controllo Motore Passo Passo tramite scheda PCI 6713 e Labview 8.5

Gentilemnte se non ti scoccia mi potresti inviare il programma completo che utilizzi tu...giusto per confrontarlo col mio e capire dove sbaglio..il tuo motore passo-passo lo controlli con un semplice impulso, al quale corrisponde una rotazione?

Member
MargheTB
Post: 26
0 Kudos

Rif.: Controllo Motore Passo Passo tramite scheda PCI 6713 e Labview 8.5

il mio programma lo trovi in allegato (è solo la subVI che utilizzo per muovere i 2 motori, non ti mando l'intero programma perchè altrimenti non ci si capirebbe niente!). qst subVI è all'interno di una case structure attivata da un bottone il cui valore è letto continuamente (essendo all'interno di un while loop).

il motore lo gestisco mandando semplici comandi attraverso una porta seriale (es. #1S\r per farlo partire...).

 

cmq ogni motore è diverso e lavora in modi diversi quindi nn so fino a che punto il mio programma possa aiutarti! (ad esempio ho dovuto inserire una case structure perchè i motori devono andare in due direzioni diverse, e quindi per uno devo dare un numero negativo e per l'altro uno positivo, ma nn credo che qst sia importante nel tuo caso, anzi ti potrebbe creare confusione!!)

 

ciao!