Visualizzazione post con etichetta labview. Mostra tutti i post
Visualizzazione post con etichetta labview. Mostra tutti i post

domenica 2 marzo 2008

TDA8444 i2c multiple dacs

interfaccia di Gasperi per avere 8 uscite analogiche a 6bit di cui una pilota un VCO.

schema elettrico












il blocco NXT-G che lo pilota e' scaricabile dal sito di Gasperi
qui c''e il suo approccio labview

blocco principale:



































(unica) subVi:
all'InvokeNode va passato (oltre alla porta) un array costituito da :
indirizzo
canale e
"potenza"
















espansione delle subvi implicite:

getstatus




















e settypeand mode:

venerdì 15 febbraio 2008

allargatore di loop


Un problema tipico con NXT-G e' quello di far stare i blocchi nei loop che si stringono attorno al loro contenuto e diventano scomodissimi.
B. Davis ha escogitato il trucco di allargarli artificialmente inserendo di proposito dei blocchi con hub molto lunghi (per poi toglierli alla fine).

Ho preparato con Labview un bel block che non fa nulla, ma ha un hub bello lungo (piu' dell'altezza della pagina).

martedì 12 febbraio 2008

NXT che manda un e-mail

E' possibile (se NXT e' connesso ad un PC con Labview e NXTToolkit ovviamente) fare in modo che mandi una e-mail ad un destinatario.

Questo puo' essere utile ad esempio se uno vuole mettere un allarme provvisorio ad una porta.

Il .vi si trova nella directory degli esempi di Labview e va modificato per il NXT.
















"telechirurgia"


Come si puo' controllare un braccio robotico che esegue una operazione chirurgica a distanza?
Ecco dei rudimenti.













Ho messo il datasocket al .vi del post precedente.
Adesso ci sono 2 .vi, uno che sta su un PC e uno sull'altro.
Il .vi col Write data socket, prende i dati dal joystick e li manda sulla rete.
Il joystick e' connesso a questo PC (192.168.1.2).
























Il NXT e' connesso all'altro PC (192.168.1.3) che fa girare questo .vi con il datasocketRead.



































Prima accortezza: il router deve aprire la porta del datasocket (3015).
Seconda: i datasocket server devono essere lanciati su entrambi i PC
(C:\Program Files\National Instruments\DataSocket\cwdss.exe).
Terza: i dati devono fluire su uno stream chiamato "wave".


http://zone.ni.com/devzone/cda/pub/p/id/257?metc=mthg3n

lunedì 11 febbraio 2008

controllo NXT con joystick








































per controllare via joystick (attraverso il PC) un braccio robotico connesso allo stesso PC si puo' usare questo .vi


la divisione per 128 che si vede sui dati provenienti dal joystick e' richiesta dal fatto che il parametro "power" del NXT e' limitato, mentre dal joystick escono dati da -32768 a +32768.

il prossimo passo sara' telecomandare un NXT remoto su internet (occorrera' una webcam...): basta usare il datasocket sul cluster degli assi (il filo marrone uscente dal joystick come "axis info").

domenica 10 febbraio 2008

matrici 2D con NXT-G

Le matrici 2D sono semplicemente array 1D in cui le colonne ( o le righe) sono infilate una di seguito all'altra.

Pertanto e' solo questione di manipolare l'indice in modo che da due numeri (l'indice di riga e l'indice di colonna) se ne ricava uno solo.

Se si crea un MyBlock che all'interno manipola l'indice, si rileva un baco pero': il filo che porta DENTRO l'array rimane "spezzato" (cio' non accade al filo d'uscita).

Percio' e' meglio partire da Labview e crearsi un Block apposito.

Supponiamo di voler creare un blocco che inserisca un elemento in una matrice alla posizione (riga, colonna).

In LV occorre creare una struttura di files i cui nomi devono essere specificati in modo fisso.

Il modo piu' veloce e' fare creare a LV la struttura dei files, chiamando il Wizard sotto Tools->NXTModule.

Il file piu' importante e'









dopo di questo il piu' complicato e' invece:







che viene costruito con la tavolozza NXTControls e
che nel block diagram e'













questi sono i blocchettini che non si vedono nella figura principale perche' dentro il "case" a destra.
in pratica servono a dire che il valore va cambiato quando l'utente lo cambia ...

per rendere automatico il tutto e' meglio partire con il collegare (crea variabile locale con tasto destro sul controllo nel front panel) i vari blocchetti alle variabili locali e solo in seguito definire le opzioni del case: infatti seguendo questo schema il case stesso (tasto destro sull'intestazione del case) proporra' le varie possibilita' di evento (per esempio: cambia il valore del numero di colonne)








































praticamente Config serve a "sentire" quale valore viene cambiato dal programmatore NXT-G nella consueta finestra in basso a sinistra (in NXT-G) e a passarlo di conseguenza al .vi principale.

infine occorre definire nella directory creata col Wizard quali immagine vedere nella tavolozza (palette) e quale vedere quando si trascinera' il blocco in posizione sul diagramma.

Per caricare queste immagini (.png) occorre poi un file .vi (quello che contiene la parola Draw) : va bene quello di default.

Per far comparire l'hub sotto il blocco (quella cosa che si espande e permette di collegare i fili per intenderci) occorre non dimenticarsi di collegare il "connettore".
Ecco come si fa.
Si va sul front panel del principale (2D_Array_Insert.vi nel nostro caso): in alto a destra c'e' una figurina da cliccare col destro -> Show Connector.
Sul front panel si clicca ora un elemento (per esempio number_of_columns) e subito dopo si clicca uno dei quadratini che rappresentano le "prese" per i fili. Il quadratino cambia colore se viene assegnato.
Si raccomanda di assegnare i due quadratini in alto a destra e a sinistra ai controlli di Sequence Flow.

Finito tutto questo si passa al NXT-G e si chiama il wizard di importazione, indicandogli la directory dove sta la serie di files e la tavolozza (per esempio : Advanced) dove mettere il blocco.

Se dira' "successful" significa che il blocco si potra' prelevare in tavolozza ed usarlo:

sabato 9 febbraio 2008

controllo remoto del NXT con Labview/NXTtoolkit

Ho chiesto a qualcuno su nxtasy.org se voleva provare a controllare il mio nxt (o viceversa) usando il datasocket (*) fornito da Labview ma nessuno mi ha mai contattato.

Lo linko qui (dove pero' non posso caricare files, solo immagini); magari c'e' interesse.

L'idea e' di controllare NXT attaccato ad un PC (il mio bluetooth ha dei problemi, ma passare a BT e' facilissimo) da un altro PC via internet.

Il primo esperimento si concentra sul semplice problema di comunicare. Il sensore e' quello di luce; nessun attuatore.

Un .vi parla col NXT via USB e passa i dati al datasocket (internet); l'altro .vi parla col data socket e mostra i dati a schermo.

Il .vi che riceve i dati deve "sottoscrivere" la connessione indicando dspt://indirizzoIPdelPCchetrasmette/wave
dove wave e' il nome che ho scelto nel primo .vi per lo stream di dati nel PC che trasmette.

L'esperimento che ho proposto consiste nello scaricare i due .vi di Labview (o almeno quello che si vuole usare) e provare a vedere che succede.

E' importante la configurazione iniziale del data socket. Inoltre sul router va abilitata la porta 3015.


Se funziona si puo' passare ad altro (vedi esperimento successivo su nxtasy.org) .

(*) Copio-incollo dalla tesi di F. Altamura:
Le VI di LabVIEW possono comunicare o lavorare in rete (networking) con altri
processi, inclusi quelli che sono eseguiti da altre applicazioni o su computer remoti.
In particolare è possibile condividere dati in tempo reale con altre VI in rete
sfruttando la tecnologia DataSocket della National Instruments.
È necessario installare sulla macchina un Datasocket Server , cioè un applicazione
che fornisce il servizio Datasocket ad altri computer effettuando operazioni di
networking e di gestione di file.
Con questo tipo di tecnologia è possibile vedere e comandare ogni controllo e
indicatore del pannello di controllo della VI.
Attraverso questo tipo di connessione vengono scambiati dei dati, non dei grafici, e
in questo modo è possibile operare delle elaborazioni sui dati da remoto.
Vediamo, nella figura 7.3, due esempi di diagrammi a blocchi per leggere e scrivere
dei dati attraverso la connessione DataSocket.

La VI di sinistra genera una temperatura e invia il dato relativo ad essa al
DataSocket server con il nome di temp , mentre la VI di destra preleva il dato
relativo a temp dal server e lo visualizza su un grafico.

Il programma sviluppato per il controllo remoto dell apparecchio usa la tecnologia
Datasocket per lo scambio dei dati attraverso il web; è composto da due parti
distinte:
1. una parte installata sulla macchina a cui è collegato fisicamente
l' apparecchio e su cui è installato il Datasocket server ;
2. una parte (client) installata su una qualsiasi altra macchina remota che,
dialogando con il server, controlla l 'apparecchio.

martedì 8 gennaio 2008