Odczyt i wizualizacja danych pomiarowych w LabVIEW

Zadanie polega na zaprogramowaniu płytki NUCLEO-F401RE wyposażonej w moduł rozszerzeń Motion MEMS Multi-Sensor Board (czujnik inercyjny, kompas, barometr, czujnik temperatury i wilgotności) celem odczytu wskazań 3-osiowego akcelerometru i temperatury. Odczytane dane należy przesłać do programu w LabVIEW na komputerze i wyświetlić na wykresie w czasie rzeczywistym.

Po wcześniejszym omówieniu, studenci przygotowują na platformie mbed.com program przedstawiony na Wydruku 1.


WYDRUK 1 
 
/* Odczyt danych z sensora TMP36 i akcelerometru LSM303
*  Wyświetlenie danych w LabVIEW na oscylogramie.
*/

#include "TMP36.h"
#include "XNucleoIKS01A2.h"
#include "mbed.h"

DigitalOut led(LED1);

static XNucleoIKS01A2 *mems_exp_board = XNucleoIKS01A2::instance(D14, D15, D4, D5);
static LSM303AGRAccSensor *acc = mems_exp_board -> accelerometer;

int main()
{   
    TMP36 tmpSensor(A5);
    acc -> enable();
    int32_t axes[3];
    int i = 1;
    led = 1;
    printf("\nStart za 5 sek.\n\r");
    wait(5);    
    while (true){        
        acc->get_x_axes(axes);
        printf("%d %d %d %d %f\n\r", i, axes[0], axes[1], axes[2], tmpSensor.read());
        i++;        
        wait(0.5);        
        }
}

Tekst zawierający wartości pomiarowe można podejrzeć na terminalu portu szeregowego TeraTerm. Następnie przystępuje się do zbudowania diagramu w LabVIEW, który pokazano na Ilustracji 1.

Ilustracja 1: Diagram symulacyjny w LabVIEW wykorzystany do odczytu linii tekstu wysyłanego w postaci danych odbieranych w transmisji szeregowej.

Diagram oparto na pętli While, działającej do momentu wciśnięcia przycisku stop lub przerwania komunikacji z mikrokontrolerem. Instrukcja warunkowa wewnątrz tej pętli służy do obróbki Linii danych odczytywanych każdorazowo w postaci tekstowej za pomocą instrumentu VISA Read. Po wyłuskaniu 5 wartości za pomocą funkcji Scan From String, zamianie kropki na przecinek w piątym odczycie oraz uzyskanej liczby w postaci tekstowej na Float następuje wyświetlenie jej na wykresie co 0.5 sekundy. Na Ilustracji 2 pokazano panel sterowania GUI.

Ilustracja 2: Panel sterowania programu w LabVIEW widocznego w postaci diagramu symulacyjnego na Ilustracji 1.

Na ilustracji 2 widać pole tekstowe, nazwane Linia danych, w którym pierwsza wartość to numer pomiaru, kolejne 3 wartości oznaczają składowe przyspieszeń grawitacyjnych w kierunkach osi x, y i z akcelerometru, a ostatnia wartości to temperatura otoczenia w stopniach Celsjusza. Program na mikrokontroler w formacie bin można pobrać tutaj.

Kontynuację tego eksperymentu znajdziemy w poście Konfiguracja i łącznie się z węzłem IoT Cayenne, gdzie można połączyć się z węzłem IRz Cayenne i wysłać stan platformy rozwojowej NUCLEO (sygnalizowany czterema wartościami pomiarowymi).


Komentarze