
R.A.D Apps

LabVIEW e Arduino
Este tutorial explica como conectar o Arduino ao LabVIEW pelo cabo USB.
Você aprenderá a enviar uma string de comando para ativar e desativar um sensor (LM35).
Conhecimento da linguagem do LabVIEW e de programação em C ajudará a entender o diagrama do tutorial..
Vamos Começar com o LabVIEW...
Blocos Part 1

Fig.01

Fig.02

Fig.03
Os dois primeiros Cases Strucuture são para a escrita, já o último é para a leitura.
-
Adicione o VISA Write no primeiro e no segundo Case e o VISA Read no último (Fig. 04)

Fig.04
O VISA Configure Serial Port e o VISA Close fica fora do While Loop (Fig. 05);
Geralmente o VISA Configure Serial Port fica fora do While loop, porém, para que a porta COM desejada funcione, ela terá de ser uma porta Default, constante ou ser selecionado antes de rodar o VI.
Neste exemplo, ele ficará no lado de fora.

Fig.05
Bytes at Port fica dentro do While Loop verificando se há ou não dados disponíveis para realizar uma leitura. (Fig. 06)
Para verificar se há dados disponíveis e ativar o True Case Strucuture do VISA Read, deve-se checar se há bytes maiores que 0 (Programming > Comparison > Greater than 0).
Conecte o fluxo de saída Byte at Port para dentro do Case Strucuture e conecte ao VISA Read > Buffer to read (Pict. 06).
VISA Configure Serial Port deve permitir que o usuário final escolha qual porta serial quer usar e o baud rate, então defina em "Visa resource name" e "Baud rate" um "control", em que a pessoa possa passar os dados de interesse.
O baud rate padrão é 9600. (Pict. 06);

Fig.06
Crie uma string de comando para ser escrita ao dispositivo conectado à porta serial.
Vamos utilizar as strings TO (Turn On) e TF (Turn Off) em “Create Constant”. (Pict. 07).
Se você quiser enviar comandos diretamente do teclado, você pode usar apenas um VISA Write e criar um control para inserir strings.

Fig.07
Layout Part 1
Vá para o Front Panel;
Nesta etapa uma interface será criada;
Usando um sensor LM35, será adquirido medidas de temperatura, então seria legal um Termômetro e um gráfico para melhor visualizar.
-
Adicione um temômetro em Numerics > Thermometer e um Chart Graph em Graph Indicators > Chart. (Fig. 08)

Fig.08
-
Adicione três Botões em Button > Ok Button e Stop Button para Ligar/Desligar o monitoramento e parar o sistema;
-
Mude o Mechanical Action para Switch Until Released;
-
Adicione também um Num Inds em Num Inds > Num Indicator. (Fig. 09)

Fig.09
Blocos Parte 2
Volte ao block diagram para configurar os botões, o temômetro, gráfico e o Num Ind;
Para exibir os dados recebidos, deve-se converter String para Number usando um VI próprio:
-
Adicione dentro do True Case Strcuture do VISA Read um Fract/Exp to Number.

- Programming > String > String/Number Convertions > Fract/Exp String to Number: converte string para number. Este VI deve ser adicionado dentro do Case para ter certeza que todo o dado recebido seja convertido.
The String input is connected to read buffer of VISA Read. (Pict. 10)

Agora conecte o gráfico, o termômetro e o Num Indicator na saída Number do Fract/Exp String to Number. (Fig. 11)

Fig.10
Fig.11
Agora só resta ligar os botões ao Case Structure e ao While Loop Condition.
-
O botão Turn On conecta no primeiro Case Structure e o Turn Off no segundo Case Structure;
-
O botão Stop é ligado ao While Loop Condition.
Devico ao processo ser extremamente rápido, deve-se adicionar um delay no loop while para melhor sincronização.
-
Adicione um delay em Programming > Timing > Wait (ms) para atrasar em 600 ms, para ter certeza que todo o dado será recebido, uma vez que arduino atualizará as informações a cada 500 ms. (Fig. 12)

Fig.12
A imagem acima mostra o VISA Configure Serial Port dentro do While Loop; mudança feita para mostrar o projeto nas duas formas.
Verifica-se também na imagem acima que os comandos são diferentes dos definidos no tutorial. A mudança se deu para demostrar que você pode definir qualquer comando para ligar o sensor, ou qualquer dispositivo que queira, uma vez que este comando esteja em conformidade com o código do arduino.
Opcional...

- Você pode criar um sistema para verificar se a porta usb desejada está disponível ou até mesmo ver se há algum erro com esta porta.
Este (Programming > Dialog and User Interface > Find First Error) VI retorna “true” se há algum error. Se sim, a porta COM não está funcionando adequadamente, se a porta não retornou erro, ela está disponível. (Pict. 13)

Fig.13
Arduino
De todo o tutorial, o código para o arduino é a parte mais simples e fácil. O código é auto-explicativo, então:
char command;
String string;
#define led 13
#define lm A1
void setup()
{
Serial.begin(9600);
pinMode(led, OUTPUT);
}
void loop()
{
if (Serial.available() > 0)
{string="";}
while(Serial.available() > 0)
{
command=((byte)Serial.read());
if(command==':')
{
break;
}
else
{
string +=command;
}
delay(1);
}
if(string=="TO")
{
TempOn();
}
if(string=="TF")
{
TempOff();
}
}
void TempOn()
{
int x=analogRead(lm);
float temp=(5.0*x*100.0)/1024.0;
Serial.println(temp);
digitalWrite(led, HIGH);
delay(500);
}
void TempOff()
{
digitalWrite(led, LOW);
delay(500);
}
-
VISA Configure Serial Port: configura a porta serial;
-
VISA Write (2x): escreve dados ao dispositivo conectado;
-
VISA Read: lê dados disponíveis na porta serial;
-
VISA Close: fecha qualquer conexão ativa;
-
Bytes at Serial Port: verifica se há dados disponíveis na porta.
-
Crie um novo VI em : File > New VI
-
Vá para a janela "block diagram".
-
Na área branca vá em Data Communication > Protocols > Serial e selecione os VI's a seguir (Fig. 1):
Após ter selecionado os VI's necessários para a comunicação serial, deve-se criar os loops de iterações para poder obter vários dados.
-
Crie um While Loop em Programming > Structures > While Loop (Fig. 02);
-
Adicione três Cases Strucuture (Programming > Structures > Case Structure) (Fig. 03) dentro do While Loop
Downloads