terça-feira, 31 de julho de 2012

Interligando Microcontrolador e LabView

Então vamos colocar as mãos no teclado e partir para o primeiro programa utilizando o Arduino e dessa vez o PIC também vai entrar na jogada, e é claro o LabView!
Esse projeto é um dos rápidos, mas que pode ser utilizado para implementar em outros mais complexos.

Vamos começar primeiro com o Arduino, a ideia aqui vai ser enviar 5 Strings, ou seja, vou enviar de uma vez só pela porta serial uma frase, que contem os dados separados por virgula.


// o scan from string tem que ter %[^,] como parametro para pegar os valores entre as virgulas

void setup() 
{
  Serial.begin(9600);
}

void loop() 
{
    Serial.print("teste_1");
    Serial.print(",");
    Serial.print("teste_2");
    Serial.print(",");
    Serial.print("teste_3");
    Serial.print(",");
    Serial.println("");
    delay(1000);
    
}



Executando esse programa recebemos as seguintes informações na porta serial:


Da pra ver que essa parte é realmente muito fácil, as informações transferidas tem que estar entre as virgulas(ou qualquer outro separador esse é um exemplo, pelo LabView você determina isso).

Agora vamos ver um programa em C para o PIC usando o compilador C18 da Microship:

unsigned char teste_1[] = "teste_1;
unsigned char teste_2[] = "teste_2;
unsigned char teste_3[] = "teste_3;
unsigned char virgula[] = ",";
unsigned char espaco[] = "";

void main(void)
{
    
    while(1) // Laço infinito que executa o funcionamento principal do projeto.    
{
if(!BusyUSART())
{
putsUSART((char *) teste_1 );
  putsUSART((char *) virgula  );
  putsUSART((char *) teste_1 );
  putsUSART((char *) virgula  );
  putsUSART((char *) teste_1 );
  putsUSART((char *) virgula  );
  putsUSART((char *)  espaco );


Delay10KTCYx(240);                      //200ms
}
}//end while(1)
}//end main

Esse programa esta ressumido e não tem a parte de configuração, mas basicamente é isso, faz a mesma coisa que o código do Arquino faz, não vou entrar mais em detalhes porque em outros projetos vou cobrir mais a parte do PIC e em outros mais a parte do Arduino.

Passando para o LabView, vamos criar um novo projeto, a primeira etapa é criar o canal de comunicação entre o Microcontrolador e o LabView, no caso vamos usar a conexão serial, então vamos usar esse blocos no LabView,vamos utilizar o Visa Configure Serial Port, nele entraremos com todas informações sobre a conexão como velocidade, paridade de bits, data bits e etc...
Aqui tem um documento com muita informação boa sobre Visa Serial.

Ao adicionar os blocos e interligar eles aparecem automaticamente na parte de Projeto:


Essas configurações de porta serial eu uso em todos projetos envolvendo o microcontrolador seja utilizando rs-232,bluetooth ou até mesmo radio frequência, então eu deixo um template salvo e só edito como tratar as informações recebidas..

Com a porta serial comunicando, partimos para o próximo passo, temos que processar os dados, para isso utilizaremos o Visa Read, que vai fazer o trabalho de ler as Strings enviadas pelo microcontrolador.


Na figura o ponto laranja é o Visa Read, o ponto verde é o Scan From String, um bloco extremamente importante, pois ele recebe a String completa, e nele configuramos qual carácter vai ser o separados de dados, nesse exemplo será a ","(virgula), então ele recebe a informação bruta dessa forma: "teste_1,teste_2,teste_3,teste_4,teste_5," o papel do bloco é ler teste_1, e logo quando "ver" a virgula ignorar o resto da String,sendo assim podemos colocar vários blocos, e ajustar o offset para 1, cada bloco tem o papel de pegar a String e cortar a sua parte.

Certo agora temos as Strings picadas, mas esse valor é de texto, ele não assume valor numeral, assim temos que usar outro bloco para transformar essa String em decimal(ou qualquer outro tipo de conversão, fracionário,octal,hexa etc..). O bloco roxo é o Decimal String To Number.

Pronto agora temos o valor em decimal e podemos utilizar da maneira que for melhor, seja num gráfico, ou um tanque que vai enchendo de acordo com valor, ai vai mais da imaginação.
Esse projeto mesmo é só pra não deixar um buraco nessa parte de comunicação com LabView e como enviar os seus dados.Existem outras maneiras de enviar esses dados,como mandar as Strings separadas por um espaço, ao fazer a leitura da String bruta basta modificar o offset de onde vai começar a ler, assim cada bloco tem sua informação.O problema do uso dessa técnica é que por exemplo enviando: "XXXX YYY ZZZZ", esses valores podem alterar durante o programa, então vamos supor que dessa vez recebemos "XX YY ZZZ", o tamanho da String mudou, então os espaços estão em lugar diferente, e como seu offset é fixo os dados ignorados são picados, contendo informações do seu antecessor e adjacente.

Aqui está a programação em bloco do labview

Essa é a imagem do projeto completo em funcionamento, que pode ser editado e usado no futuro bem facilmente.


Nenhum comentário:

Postar um comentário