Labview With Arduino

labview-logoLabVIEW เป็นโปรแกรมที่ใช้ติดต่อสื่อสารกับเครื่องมือต่างๆที่อยู่ภายนอกผ่านบอร์ด Data Acquisition ใช้งานเป็น monitoring หรือในการควบคุมการวัดค่าต่างๆ เช่น การเชื่อมต่อกับ Board Arduino  Raspberry pi  เป็นต้น

 

LabView Interface from Arduino via VISA


Temperature and Save to Excel

การทำงานของสิ่งนี้คือ การรับค่าจาก  Arduino จากการเขียน Code อุณหภูมิ  และค่าที่ได้มาส่งไปที่  Labview และให้ Labview บันทึกเป็นตาราง Excel

Device  


4

ต่อวงจรตามรูปแบบนี้

c

เปลี่ยนจาก P2.0  เป็น Pin 10 ของ arduino

Software Setup


  1.  Code ที่ใช้ Upload ลง  Board
    // test_DS1820
    #include <OneWire.h>
    float celsius, fahrenheit;
    
    OneWire ds(10); // on pin 10
    
    void setup(void) {
     Serial.begin(9600);
    }
    
    void loop(void) {
     celsius = ReadTempDS1820();
     if (celsius!=99999.9)
     {
     
     Serial.print(" Temperature = ");
     Serial.print(celsius);
     Serial.print(" Celsius, ");
     
     }
    }
    
    
    float ReadTempDS1820(void)
    
    {
     byte i;
     byte present = 0;
     byte type_s;
     byte data[12];
     byte addr[8];
     float celsius, fahrenheit;
    
     if ( !ds.search(addr)) {
     //Serial.println("No more addresses.");
     //Serial.println();
     ds.reset_search();
     delay(250);
     return 99999.9;
     }
    
     //Serial.print("ROM =");
     for( i = 0; i < 8; i++) {
     //Serial.write(' ');
     //Serial.print(addr[i], HEX);
     }
    
     if (OneWire::crc8(addr, 7) != addr[7]) {
     //Serial.println("CRC is not valid!");
     return 99999.9;
     }
     //Serial.println();
    
     // the first ROM byte indicates which chip
     switch (addr[0]) {
     case 0x10:
     //Serial.println(" Chip = DS18S20"); // or old DS1820
     type_s = 1;
     break;
     case 0x28:
     //Serial.println(" Chip = DS18B20");
     type_s = 0;
     break;
     case 0x22:
     ////Serial.println(" Chip = DS1822");
     type_s = 0;
     break;
     default:
     //Serial.println("Device is not a DS18x20 family device.");
     return 99999.9;
     } 
    
     ds.reset();
     ds.select(addr);
     ds.write(0x44,1); // start conversion, with parasite power on at the end
    
     delay(1000); // maybe 750ms is enough, maybe not
     // we might do a ds.depower() here, but the reset will take care of it.
    
     present = ds.reset();
     ds.select(addr); 
     ds.write(0xBE); // Read Scratchpad
    
     //Serial.print(" Data = ");
     //Serial.print(present,HEX);
     //Serial.print(" ");
     for ( i = 0; i < 9; i++) { // we need 9 bytes
     data[i] = ds.read();
     //Serial.print(data[i], HEX);
     //Serial.print(" ");
     }
     //Serial.print(" CRC=");
     //Serial.print(OneWire::crc8(data, 8), HEX);
     //Serial.println();
    
     // convert the data to actual temperature
    
     unsigned int raw = (data[1] << 8) | data[0];
     if (type_s) {
     raw = raw << 3; // 9 bit resolution default
     if (data[7] == 0x10) {
     // count remain gives full 12 bit resolution
     raw = (raw & 0xFFF0) + 12 - data[6];
     }
     } 
     else {
     byte cfg = (data[4] & 0x60);
     if (cfg == 0x00) raw = raw << 3; // 9 bit resolution, 93.75 ms
     else if (cfg == 0x20) raw = raw << 2; // 10 bit res, 187.5 ms
     else if (cfg == 0x40) raw = raw << 1; // 11 bit res, 375 ms
     // default is 12 bit resolution, 750 ms conversion time
     }
     return ((float)raw / 16.0);
    
    }
  2. Download  Labview :     https://drive.google.com/open?id=0B06Jt2p9GqkzZ1VCMGJDdXhFdjg

 Get Start


  1. Upload Code ลง Arduino
  2. เปิด ไฟล์ labview ที่โหลดจาก onedrive
  3. เมื่อเปิดไฟล์แล้วเลือก Port Com
  4. กด Run

แสดงผล

อุณหภูมิจะ Save ที่ d:/

excel

 

Advertisements