ç§ã¯ãRASã®äžè¬ç©çåŠç 究æã§åããŠããŸãã ç§ãã¡ã®ç 究宀ã®ãããã¡ã€ã«ã¯ãã¬ãŒã¶ãŒãªã¢ãŒãã»ã³ã·ã³ã°ãç¹ã«LIDARã§ãã åç©ã®çš®é¡ãããããªãå Žåã¯ãããšãã°Wikipediaã§èªãããšãã§ããŸãã ã©ã€ããŒã¯ã¬ãŒã¶ãŒã¬ãŒããŒãšãåŒã°ããŸãã LIDARã®åºæ¬çãªéããšå©ç¹ã¯ããã®å©ããåããŠããªã¿ãŒã³ä¿¡å·ã®é 延ã«ãã£ãŠã»ã³ã·ã³ã°ãªããžã§ã¯ããŸã§ã®è·é¢ã枬å®ã§ããã ãã§ãªãããªããžã§ã¯ãã®æ§æãšç¹æ§ã«é¢ããæ å ±ãïŒä¿¡å·ã¹ãã¯ãã«ããïŒååŸã§ããããšã§ãã ããšãã°ãè²¯æ°Žæ± ã®æ·±ãã«ããæ°Žã®æž©åºŠãããã¡ã€ã«ã®LIDAR決å®ã®æ¹æ³ããããŸãã
éæ¥è§Šæž¬å®ã¯æ£ç¢ºãªå Žåã«ã®ã¿æçšã§ããããããªã¢ãŒã枬å®ã®çµæãæ¥è§Šæž¬å®ã§èŒæ£ããããã«ãç·šçµãã€ãŸã1è¡ã«è€æ°ã®æž©åºŠã»ã³ãµãŒã®ã«ãŒããäœæããããšã«ããŸããã
é
LIDARã䜿çšããéæ¥è§Šæ¹åŒã§ã¯ãæ°Žæž©ãæ°ã¡ãŒãã«ã®æ·±ããŸã§æž¬å®ã§ããŸãïŒéæ床ã«äŸåããã¬ãŒã¶ãŒããŒã ãè¿ éã«æ£ä¹±ããæ±ããæ°Žã«é ããŸã§è¡ããªãããšã¯æããã§ãïŒã ãäžéšãã»ã³ãµãŒããæ°ããŠ1 mãããã«4 mã®ã±ãŒãã«ã
ææãªèŠçŽ ãšããŠã次ã®ããã«å¯éããŒãžã§ã³ã®ããžã¿ã«æž©åºŠèšDS18B20ïŒ ããŒã¿ã·ãŒã ã320 kbïŒãéžæããŸããã


ãªããŸãã«ããããªã®ã§ããããïŒ ãããã¯å¯å°ãããŠããããïŒç¬é¡ïŒãé·ã1 mã®ã±ãŒãã«ã§ãã§ã«é éãããŠãããé«ç²ŸåºŠãå®çŸãã 1-Wireãããã³ã«ã«åŸã£ãŠåäœãããããéä¿¡ãå€§å¹ ã«ç°¡çŽ åãããŸãã
ããŒã¿ã·ãŒãã®ææ ®æ·±ãç 究ã¯ã以äžã®æ å ±ãæäŸããŸããã ã»ã³ãµãŒã¯2ã€ã®æ¹æ³ã§æ¥ç¶ã§ããŸããéåžžã®æ¹æ³ã3æ¬ã®ã¯ã€ã€ãŒïŒã°ã©ã³ããé»æºãšä¿¡å·ãã¹ïŒãããã³ã»ã³ãµãŒãããŒã¿ã©ã€ã³ããé»åãåãåãã¹ããªã¢ã¹ã¢ãŒãã§ãã ãã¹ããªã¢ã¹ãã¢ãŒãã¯ãæ¥ç¶ãããã«ç°¡çŽ åããŸãïŒ2æ¬ã®ã¯ã€ã€ã®ã¿ïŒããã»ã³ãµãŒã®èªã¿åãå€ãæªããå ŽåããããŸãã 粟床ã®äœäžã¯ç§ãã¡ã«ãšã£ãŠæ害ã§ââããã5ãã«ãã¯ã»ã³ãµãŒãå¶åŸ¡ããArduinoããŒãããç°¡åã«ã¢ã¯ã»ã¹ã§ãããããéåžžã®æ¹æ³ã§ã»ã³ãµãŒã«é»åãäŸçµŠããããšã«ããŸããã

ç±é»å¯Ÿã®ã¹ããŒã
Datashitã§ã¯ã4.7 kOhmã®å ¬ç§°å€ã®ãã«ã¢ããæµæã䜿çšããããšãæšå¥šããŠããŸãã2.2ã«2ã€ããèŠã€ãããŸããã§ããããããã¯ããã€ã¹ã®ããã©ãŒãã³ã¹ã«ã¯åœ±é¿ããŸããã§ããã
ATMega328Pã³ã³ãããŒã©ãŒãåããArduino Nanoã¯ãã»ã³ãµãŒãå¶åŸ¡ããå€çãã€ãŸãPCãšã®æ¥ç¶ãæ åœããŸãã
ããã¯ããã¬ããããŒãäžã§çµã¿ç«ãŠãããåè·¯ãã©ã®ããã«èŠãããã§ãïŒ

ããã¯ãã¯ãã ä»ãããã³çµ¶çžåŸã®æçµããŒãžã§ã³ã§ãã


ãããŠãããã¯å šäœã®ãã¬ãŒãã¢ã»ã³ããªã§ãïŒå¶åŸ¡é»ååè·¯ã¯åé¢ãããŠããŸããïŒïŒ

Arduinoãããã€ã¹ã®ãé è³ããšããŠéžæããŸããã第äžã«ããã®ãã©ãããã©ãŒã ã¯ç¿åŸã容æã§ããããã第äºã«ãLabVIEWããPCããå¶åŸ¡ã§ããããã§ãïŒä»¥éãç°¡æœã«ããããã«LabVIEW = LVïŒããªããªããç§ãã¡ã®ç 究宀ã®ã»ãšãã©ã®ãããžã§ã¯ãã®ãœãããŠã§ã¢ã¯ãã®ç¹å®ã®ç°å¢ã§æžãããŠãããä»ã®åè·¯ã«ç°¡åãªèªå枩床å¶åŸ¡ã·ã¹ãã ãçµã¿èŸŒãèœåã¯é«äŸ¡ã ããã§ãã
ãœãããŠã§ã¢
ãã®ã¿ã¹ã¯ã®äž»ãªæ©èœã¯ãLVç°å¢ããããã€ã¹ãæäœããããšã§ãããã®ãããArduinoãšLVã®çžäºäœçšã調æ»ããããšã§ããã°ã©ãã³ã°ãéå§ããããšã決å®ãããŸããã ããã«ã¯ãã®çžäºäœçšã«é¢ããæ å ±ã¯ã»ãšãã©ãªããããèš±å¯ãåŸãŠããã¹ãŠãååã«è©³çŽ°ã«èª¬æããŸãã
éå§ãã
å¿ èŠãªãã®ïŒ ããããã®æ å ±ïŒïŒ
- LV 2009以éã
- NI VISAïŒä»®æ³ããã€ã¹ãšå®éã®ããã€ã¹ãéä¿¡ããããã®LVã¢ãžã¥ãŒã«ïŒã
- Arduino IDEããã³ãã©ã€ã㌠ã
- ArduinoçšOneWireã©ã€ãã©ãª-ZIPã®å 容ã/ [[Arduino IDEã€ã³ã¹ããŒã«ãã£ã¬ã¯ããª] / libraries /ã«é 眮ããŸãã
- LVã®éçºè
ã¯ãArduinoããŒããæäœããããã®æ¡åŒµæ©èœ-ArduinoçšLabVIEWã€ã³ã¿ãŒãã§ãŒã¹ããŸãã¯åã«LIFAãæäŸããŸãã æè¿ãLIFAã®éçºã¯å
¬åŒã«äžæ¢ããã代ããã«NIã¯LabVIEW Hackerã®LINXããŒã«ãããã®äœ¿çšãææ¡ããŸããã ããå€ãã®ããã€ã¹ããµããŒãããããå€ãã®ããŒã«ãå«ãŸããŠããŸãããLINXã§ã¯ã³ã³ãããŒã©ãŒã®ãã¡ãŒã ãŠã§ã¢ãHEXãã¡ã€ã«ã®ããã«èŠãããããLIFAã䜿çšããŸããã LIFAã§ã¯ããœãŒã¹ã¯éåžžã®Arduinoã¹ã±ããã§ãã
LIFAã¯ãVIããã±ãŒãžãããŒãžã£ãŒã€ã³ã¿ãŒãã§ã€ã¹ïŒããŒã«-> VIããã±ãŒãžãããŒãžã£ãŒïŒãä»ããŠLVããçŽæ¥ã€ã³ã¹ããŒã«ã§ããŸãã ã€ã³ã¹ããŒã«åŸããArduinoããµããã¬ãããæ©èœãã¬ããã«è¡šç€ºãããŸãã
LVã§Arduinoã®æäœãéå§ããã«ã¯ãCïŒ/ Program Files / National Instruments / LabVIEW [ããŒãžã§ã³] /vi.lib/LabVIEW Interface for Arduino / Firmware / LIFA_Base /ãã©ã«ããŒããååŸããLIFA_Base.inoã¹ã±ããã§ã³ã³ãããŒã©ãŒããã©ãã·ã¥ããå¿ èŠããããŸãã æå®ããããã©ã«ãã«ã¯ãCã©ã€ãã©ãªããœãŒã¹ãããã³2ã€ã®ã¹ã±ããLabVIEWInterface.inoãšLIFA_Base.inoã®ãã¡ã€ã«ã®æãå«ãŸããŠããŸãã 1ã€ç®ã¯Arduinoãæäœããããã®ãã¹ãŠã®æ©èœã®èª¬æãå«ã¿ã2ã€ç®ã¯çããã³ã³ãããŒã©ãŒã«ã¢ããããŒãããããã«ãã¹ãŠããŸãšããŠåéããŸãã
ããã§ãLVãä»ããŠã³ã³ãã¥ãŒã¿ãŒããArduinoã®ã»ãšãã©ã®æ©èœã«ã¢ã¯ã»ã¹ã§ããããã«ãªããŸããã ãæ³åã®ãšãããäžèšã®ãã¹ãŠãææ¡ããç§ãæåã«ããããšã¯ãLEDãç¹æ» ãããããšã§ããã
ä»ãåå ã®ããã«ãã¬ã€ããŸããã
1-Wireãããã³ã«ãšDS18B20枩床ã»ã³ãµãŒã¯é·ãéååšããŠãããåºãæ®åããŠãããããDS18B20ãšArduinoã®äœµçšã«é¢ããæ å ±ãæ¢ãããšã«ããŸããã ãããŠã»ãšãã©ããã«ãã©ããã§ã¯ãªããå ¬åŒã®LabVIEWãã©ãŒã©ã ã§é©åãªãœãŒã¹ã«åºäŒããŸããïŒ ãªã³ã¯ ïŒã Topikstarterã«ã¯ãLabVIEWç°å¢ããArduinoã䜿çšããŠæž©åºŠã»ã³ãµãŒDS18B20ãèªã¿åããšããåæ§ã®ã¿ã¹ã¯ããããŸããã 圌ã¯æ€çŽ¢ãéå§ããOneWire Read VIãååšããLVãã€ã¢ã°ã©ã ãYouTubeã§èŠãŠãVIãäœã§ãã©ãã§å ¥æã§ãããã第äžäººè ã«å°ããŸããã ãããªã®äœè ã¯åœŒã®èŠæ±ã«å¿ãããœãŒã¹ã³ãŒããšãã©ã®ããã«ãäœããã¹ããã®è©³çŽ°ãªæ瀺ãæäŸããŸããã
DS18B20ã»ã³ãµãŒã¯ã次ã®ããã«å¶åŸ¡ãããŸããããã¹ã¿ãŒãïŒã³ã³ãããŒã©ãŒããã€ã¯ãããã»ããµãŒïŒã¯ãã»ã³ãµãŒã枩床ã枬å®ããããããã¹ã¿ãŒããããã€ããåä¿¡ããŠââã¡ã¢ãªãŒã«æžã蟌ããããŸãã¯ã¡ã¢ãªãŒã®çŸåšã®å 容ãããŒã¿ã©ã€ã³ã«éä¿¡ãããã«ãã£ãŠãããŒã¿ç·ãä»ããŠ2æ¡ã®16é²æ°ã³ãã³ããéä¿¡ããŸãã ãããªã®äœè ã¯ãLIFAã§åäœããããã«Arduinoã«ã¢ããããŒããããã¹ã±ãããå€æŽããŸããã
- LIFA_Base.inoãã¡ã€ã«ã§ãOneWire.hã©ã€ãã©ãªãæ¥ç¶ãã
- LVããã·ãªã¢ã«ãã¹çµç±ã§éä¿¡ãããã³ãã³ãã®åŠçãæ
åœããã±ãŒã¹æ§é ã®LabVIEWInterface.inoãã¡ã€ã«ã«ã枩床èªã¿åãæ©èœãåŒã³åºã0x1Eãªãã·ã§ã³ãè¿œå ããŸããã
ã³ãŒãcase 0x1E: // OneWire Read OneWire_Read() break;
ãã®é¢æ°ã¯ã0x44枩床枬å®ã³ãã³ããããŒã¿ã©ã€ã³ã«éä¿¡ãïŒãå€æãïŒãå€æãå®äºãããŸã§åŸ æ©ãã0xBEã¡ã¢ãªèªã¿åãã³ãã³ããéä¿¡ããèªã¿åããåä¿¡ããæ å ±ãã枩床èªã¿åãå€ãååŸããã·ãªã¢ã«ãã¹ã«éä¿¡ããŸãã
ã³ãŒãvoid OneWire_Read() { OneWire ds(2); // Create a OneWire Object "ds" on pin 2. Hard coding for now, because I can't declare this in a case. byte OneWireData[9]; // Defining stuff for the added OneWire function because I'm getting irritated with trying to make this fit into a case or function. int Fract, Whole, Tc_100, SignBit, TReading; // Start the Conversion ds.reset(); // Reset the OneWire bus in preparation for communication ds.skip(); // Skip addressing, since there is only one sensor ds.write(0x44); // Send 44, the conversion command // Wait for the Conversion delay(1000); // Wait for the conversion to complete // Read back the data ds.reset(); // Reset the OneWire bus in preparation for communication ds.skip(); // Skip addressing, since there is only one sensor ds.write(0xBE); // Send the "Read Scratchpad" command for ( byte i = 0; i < 9; i++) { OneWireData[i] = ds.read(); // Read the 9 bytes into data[] } // Scale the data TReading = (OneWireData[1] << 8) + OneWireData[0]; SignBit = TReading & 0x8000; // Mask out all but the MSB if (SignBit) // If the MSB is negative, take the Two's Compliment to make the reading negative { TReading = (TReading ^ 0xffff) + 1; // 2's comp } Tc_100 = (6 * TReading) + TReading / 4; // Scale by the sensitivity (0.0625°C per bit) and 100 Whole = Tc_100 / 100; // Split out the whole number portion of the reading Fract = Tc_100 % 100; // Split out the fractional portion of the reading // Return the data serially if (SignBit) { // If the reading is negative, print a negative sign Serial.print("-"); } Serial.print(Whole); // Print the whole number portion and a decimal Serial.print("."); if (Fract < 10) { // if the fraction portion is less than .1, append a 0 decimal Serial.print("0"); } Serial.print(Fract); // Otherwise print the fractional portion }
ææ¡ãããVIã¯ãæ¬è³ªçã«ãæå®ãããã·ãªã¢ã«ã€ã³ã¿ãŒãã§ã€ã¹ããŒãã«16é²æ°1Eãéä¿¡ããå¿çãåŸ ã£ãŠèªã¿åããŸãã

ãšãŠãç°¡åã§ãã
1ã€ã®ã»ã³ãµãŒãæåã§èªã¿åã
ãŸãã LIFA_BASE.inoãšLabVIEWInterface.inoãæ瀺ã«åŸã£ãŠç·šéããVIãäœæããŸããã ãã§ãã¯ãããšããã¹ãŠæ£åžžã«åäœããŸãã ãã®åŸãç§ã¯äœããããŸããããåŸæããŸããã äžèšã®LVãã©ãŒã©ã ã®ãããã¯ã以äžã®ããã€ãã®æçš¿ã§ãåå è ã®1人ããå®éã«ã¯1ã€ã®ãµãããã€ã¹ã®ã¿ã§æ§æããã枩床ã»ã³ãµãŒã®èªã¿åãå€ãèªã¿åãVIã®ããŒãžã§ã³ãææ¡ããŸãã-Arduinoãµããã¬ããããReceive.viãéä¿¡ããŸãïŒ

åçŽãã«èªæããã詳现ãæãäžããŠããªããããä»åŸã®å®éšã§ã¯ãã®åçŽãªããŒãžã§ã³ãç¡æã§äœ¿çšããŸããã ãããããã¹ãŠæ£åžžã«åäœããŸãããæ£ããåäœããŸãããsensor-Arduino-LabVIEWãã§ãŒã³ã®ã·ããªãªãšVIããã©ãŒã©ã ããäœæãããã·ããªãªãšã®éãã«é¢é£ããç¹å®ã®åŸ®åŠãªç¹ããããŸãã ãã®åŸ®åŠãã¯ãã®åŸãç§ã«ããçšåºŠã®é çãäžããŸããããããã«ã€ããŠã¯åŸã§è©³ãã説æããŸãã
DS18B20ã»ã³ãµãŒã®æ©èœã®1ã€ã¯ãåã ã®ã€ã³ã¹ã¿ã³ã¹ããšã«åºæã®8ãã€ãã¢ãã¬ã¹ïŒROMã³ãŒãïŒããããçç£æã«é ç·ãããããšã§ãã ããã«ãããçè«çã«ã¯1ã€ã®1-Wireã©ã€ã³ã«ç¡å¶éã®æ°ã®ã»ã³ãµãŒãåãä»ããããšãã§ããŸãã ãã®æ©èœãå®è£ ããããã«ãç¹å®ã®ã»ã³ãµãŒã®ã¢ãã¬ã¹æå®ã³ãã³ããæäŸãããŠããŸãã
察åŠããã«ã¯ãäœæãç¥ãå¿ èŠããããŸãã OneWireã©ã€ãã©ãªã®DS18x20_Temperatureã®äŸã䜿çšããŠã»ã³ãµãŒã®ROMã³ãŒããèŠã€ããããããããã°ã©ã ã®éå§æã«å®£èšããã5ã€ã®å€æ°ã«æžã蟌ã¿ãŸããã
// DS18B20 temperature sensors' addresses: byte sensor_1[8] = {0x28,0xFF,0xBE,0xCE,0x14,0x14,0x00,0x8A}; byte sensor_2[8] = {0x28,0xFF,0x42,0x43,0x15,0x14,0x00,0xE2}; byte sensor_3[8] = {0x28,0xFF,0xED,0x55,0x15,0x14,0x00,0x8F}; byte sensor_4[8] = {0x28,0xFF,0x3D,0x6E,0x15,0x14,0x00,0x0D}; byte sensor_5[8] = {0x28,0xFF,0x5E,0x66,0x15,0x14,0x00,0x4E};
ææ¡ãããããŒãžã§ã³ã§ã¯ãOneWire_Readã¯å€ãåãåããŸããã ãã©ã¡ãŒã¿ãŒãè¿œå ããŸã-ã»ã³ãµãŒã®ã¢ãã¬ã¹ïŒ8èŠçŽ ã®ãã€ãé åïŒïŒ
void OneWire_Read(byte addr[8])
åã³ãã³ããéä¿¡ãããåã«ãã»ã³ãµãŒã«å¯ŸåŠããŸãã
// Start the Conversion ds.reset(); // Reset the OneWire bus in preparation for communication ds.select(addr); // Addressing ds.write(0x44); // Send 44, the conversion command
// Read back the data ds.reset(); // Reset the OneWire bus in preparation for communication ds.select(addr); // Addressing ds.write(0xBE); // Send the "Read Scratchpad" command
åã»ã³ãµãŒã®ãªãã·ã§ã³ãéžææ§é ã«è¿œå ããŸãã
/********************************************************************************* ** OneWire temperature sensors reading *********************************************************************************/ case 0x2E: // sensor 1 read OneWire_Read(sensor_1); break; case 0x2F: // sensor 2 read OneWire_Read(sensor_2); break; case 0x30: // sensor 3 read OneWire_Read(sensor_3); break; case 0x31: // sensor 4 read OneWire_Read(sensor_4); break; case 0x32: // sensor 5 read OneWire_Read(sensor_5); break;
äœãèµ·ãã£ããããã¹ãããããã«ã1ã€ã®ã»ã³ãµãŒã®1åã®èª¿æ»çšã«å°ããªVIãäœæããŸããã

ã芧ã®ãšããããããã¯å³ã®ã±ãŒã¹æ§é ã䜿çšããŠã調æ»çšã®ã»ã³ãµãŒã®éžæãå®è£ ããŸããã
ããã«äœ¿ããããããããã«ãäžã®ã¹ã¯ãªãŒã³ã·ã§ããã«ç€ºãããã«å°ããªæ»èµ°è·¯ãéãã

ArduinoãªãœãŒã¹ã¯ã©ã¹ã¿ãŒãšãšã©ãŒã¯å¥ãšããŠãæ»èµ°è·¯ã¯å ¥åã§ããŒãªã³ã°ããããã®ã»ã³ãµãŒçªå·ãåãåãã枩床衚瀺ãæååãšããŠåºåã«æäŸããŸãã
ãã£ãïŒ ãã¹ãã¯æåããŸããã
èªåã¢ãŒãã§ã»ã³ãµãŒã1ã€èªã¿åããŸã
ããã§ã1ã€ã®ã»ã³ãµãŒãæåã§ããŒãªã³ã°ã§ããŸãã 次ã®ã¹ãããã¯ãèªåã¢ãŒãã§ã®1ã€ã®ã»ã³ãµãŒã®åšæçãªããŒãªã³ã°ã§ãã ãããè¡ãããã«ã次ã®ãããã¯å³ãäœæããŸããã

éå§ããã«ã¯ãééãåºå®ãããããã°ã©ã ã¯1ç§ã«1åã»ã³ãµãŒãããŒãªã³ã°ãããµã€ã¯ã«ãåæ¢ããåŸããŠãŒã¶ãŒã¯åéãããããŒã¿ãã¢ã¬ã€ã«æžã蟌ã¿ãŸãã 䟿å®äžãGet Date / Time Stringé¢æ°ã䜿çšããŠå枩床衚瀺ã«ã¿ã€ã ã¹ã¿ã³ããè¿œå ããŸããã
é»æºãå ¥ãã20ç§åŸ ã£ãŠãåæ¢ããŸã...ãããŠã楜ãã¿ãå§ãŸããŸãã
é åã衚瀺ãããšãããã°ã©ã ã®éå§åŸæåã®5åã ã枩床ãèªã¿åããããã®åŸã枩床枬å®å€ã®ãªãã¿ã€ã ã¹ã¿ã³ãã®ã¿ãèªã¿åãããŸãã

é·ãéãç§ã¯äœãåé¡ãªã®ãç解ã§ããŸããã§ãã-LVåŽã«ééãã¯ãªãããã§ããããããã¯å³ã¯ãšãŠã€ããªãã·ã³ãã«ã§ãArduinoã¹ã±ããã³ãŒããæ£ããã®ã§ãã åäžã®æåå°åã®ã¢ãŒãã§ã¯åé¡ãªãåäœããŸãã ä»ã«äœããããŸããïŒ ArduinoããŒãèªäœã§ããïŒ åœŒå¥³ãèŠãŠãç§ã¯æ¬¡ãèŠã€ããŸããã ããã°ã©ã ãéå§ãããã³13ã§L LEDã2åç¹æ» ããRX LEDãç¹æ» ãïŒã³ã³ãããŒã©ãŒãPCããéä¿¡ããã枩床ã»ã³ãµãŒã®ã³ãã³ããåä¿¡ïŒã1ç§ãçµéããŸãïŒã»ã³ãµãŒã枩床ãã¡ã¢ãªå ã®ãã€ãã«ãå€æãããPCãå¿çãåŸ æ©ããŸãïŒãç¹æ» TX LEDïŒã³ã³ãããŒã©ãŒãã»ã³ãµãŒãããã€ããåä¿¡ããŠââPCã«éä¿¡ïŒãRXãã€ãªãŒããåã³ç¹æ» ãã2çªç®ã®çµéãTXãåã³ç¹æ» ãããªã©ãããã°ã©ã ãåæ¢ãããŸã§åã§å²ãŸããŸãã ãã®ãããç§ã®ã¹ããŒã ã§ã¯ããã®äžè¯é¡ã¯æåã®ã5ç§éç¶ãããã®åŸã³ã³ãããŒã©ãŒãå¿çããªããªããRXãã€ãªãŒããé£ç¶ããŠç¹æ» ããLabVIEWã€ã³ã¿ãŒãã§ãŒã¹ã®å®è¡åæ¢ãã¿ã³ã§ã®ã¿ããã°ã©ã ãåæ¢ã§ããŸããã
ãã®ã«ã¿ãã·ã¢ã®ãã¹ãŠããã¿ã€ãã³ã°ã®ã©ããã«åé¡ããããšããèãã«ã€ãªãããç§ã¯ãã®æ¹åã«æãå§ããVIã®åŸ æ©æéãå€æŽããã¹ã±ããã§ãæåéãVIã®ãããã¯å³ã§ã¹ã±ããã³ãŒããåæããŸãããšã¬ã¡ã³ã¿ã«ã§ãããäœãå©ããŸããã§ããã çµå±ã

å¿ èŠã«å¿ããŠãSend Receiveã¯ããŒã¿ãååŸããæå®ãããæ¹åã«éä¿¡ããŠåŸ æ©ãéå§ããŸãã 100ããªç§ä»¥å ã«å¿çãåä¿¡ãããªãå Žåãããã«5ããªç§åŸ æ©ããåºåãããã¡ãŒãã¯ãªã¢ããŠãããŒã¿ãåéä¿¡ããŸãïŒåèš10åã®è©Šè¡ïŒã éä¿¡ãåä¿¡ããã€ã¯ãã³ã³ãããŒã©ãŒãã¡ã€ã³VIã®éã®ã©ããã§ãåäœäžã«éåæãçºçããŠèç©ããŸãããã®ãããã»ã³ãµãŒããŒãªã³ã°ã®6åç®ã®ç¹°ãè¿ãã§ãã³ã³ãããŒã©ãŒããã³ã°ãããéä¿¡ã³ãã³ããšåä¿¡ã³ãã³ãã®éã«äœããã®äžäžèŽããããŸãã
çµéšã瀺ãããã«ãèŠãç®ãã·ã³ãã«ãªãœãªã¥ãŒã·ã§ã³ãåžžã«æè¯ãšã¯éããªããããDS18B20 Read.viãåäœæããŸããã

æ£çŽãªãšãããäœãåé¡ã ã£ãã®ãæ£ç¢ºã«èšãããšã¯ã§ããŸããããã€ã¯ãã³ã³ãããŒã©ãŒãšPCãšã®çžäºäœçšã«ã€ããŠååãªç解ããããŸããã ããããç§ã®è©Šã¿ã®çµæãåé¡ã¯æ¶ããç§ã¯ããã«ã¯å ¥ããŸããã§ããã
ãã¹ãŠã®ã»ã³ãµãŒãèªåã¢ãŒãã§èªã¿åããŸã
èªåã¢ãŒãã§1ã€ã®ã»ã³ãµãŒãèªã¿åãããšãã§ãã5ã€ãã¹ãŠãäžåºŠã«èªã¿åãããšã¯æè¡ã®åé¡ã§ãã ãããè¡ãããã«ãLabVIEWInterface.inoã«å¥ã®é¢æ°ãè¿œå ããŸãã -OneWire_Read_AllïŒïŒïŒ
ã³ãŒã
void OneWire_Read_All() { OneWire ds(2); byte Data[9]; int Fract, Whole, Tc_100, SignBit, TReading; ds.reset(); ds.skip(); // Addressing to all sensors on the line ds.write(0x44); delay(1000); // reading sensor 1 ds.reset(); ds.select(sensor_1); // Addressing to sensor 1 ds.write(0xBE); for ( byte i = 0; i < 9; i++) { Data[i] = ds.read(); } TReading = (Data[1] << 8) + Data[0]; SignBit = TReading & 0x8000; if (SignBit) { TReading = (TReading ^ 0xffff) + 1; } Tc_100 = (6 * TReading) + TReading / 4; Whole = Tc_100 / 100; Fract = Tc_100 % 100; if (SignBit) { Serial.print("-"); } Serial.print(Whole); Serial.print(","); if (Fract < 10) { Serial.print("0"); } Serial.print(Fract); Serial.print(" "); // reading sensor 2 ds.reset(); ds.select(sensor_2); // Addressing to sensor 2 ds.write(0xBE); for ( byte i = 0; i < 9; i++) { Data[i] = ds.read(); } TReading = (Data[1] << 8) + Data[0]; SignBit = TReading & 0x8000; if (SignBit) { TReading = (TReading ^ 0xffff) + 1; } Tc_100 = (6 * TReading) + TReading / 4; Whole = Tc_100 / 100; Fract = Tc_100 % 100; if (SignBit) { Serial.print("-"); } Serial.print(Whole); Serial.print(","); if (Fract < 10) { Serial.print("0"); } Serial.print(Fract); Serial.print(" "); // reading sensor 3 ds.reset(); ds.select(sensor_3); // Addressing to sensor 3 ds.write(0xBE); for ( byte i = 0; i < 9; i++) { Data[i] = ds.read(); } TReading = (Data[1] << 8) + Data[0]; SignBit = TReading & 0x8000; if (SignBit) { TReading = (TReading ^ 0xffff) + 1; } Tc_100 = (6 * TReading) + TReading / 4; Whole = Tc_100 / 100; Fract = Tc_100 % 100; if (SignBit) { Serial.print("-"); } Serial.print(Whole); Serial.print(","); if (Fract < 10) { Serial.print("0"); } Serial.print(Fract); Serial.print(" "); // reading sensor 4 ds.reset(); ds.select(sensor_4); // Addressing to sensor 4 ds.write(0xBE); for ( byte i = 0; i < 9; i++) { Data[i] = ds.read(); } TReading = (Data[1] << 8) + Data[0]; SignBit = TReading & 0x8000; if (SignBit) { TReading = (TReading ^ 0xffff) + 1; } Tc_100 = (6 * TReading) + TReading / 4; Whole = Tc_100 / 100; Fract = Tc_100 % 100; if (SignBit) { Serial.print("-"); } Serial.print(Whole); Serial.print(","); if (Fract < 10) { Serial.print("0"); } Serial.print(Fract); Serial.print(" "); // reading sensor 5 ds.reset(); ds.select(sensor_5); // Addressing to sensor 5 ds.write(0xBE); for ( byte i = 0; i < 9; i++) { Data[i] = ds.read(); } TReading = (Data[1] << 8) + Data[0]; SignBit = TReading & 0x8000; if (SignBit) { TReading = (TReading ^ 0xffff) + 1; } Tc_100 = (6 * TReading) + TReading / 4; Whole = Tc_100 / 100; Fract = Tc_100 % 100; if (SignBit) { Serial.print("-"); } Serial.print(Whole); Serial.print(","); if (Fract < 10) { Serial.print("0"); } Serial.print(Fract); }
ã芧ã®ãšãããããã€ãã®å€æŽãå ããŠãåäžã®ã»ã³ãµãŒã5åç¹°ãè¿ããŠèªã¿åãæ©èœã§ãã
ãŸããDS18B20 Read.viããããã«å€æŽããå¿ èŠããããŸãããåã ã®ã»ã³ãµãŒã®ããŒãªã³ã°ïŒå ¥åã§1ãã5ãŸã§ã®æ°åãåãåãïŒãšãå šå¡ïŒå ¥åã§6ïŒã®äž¡æ¹ã§æ±çšçã«ããŸããã ãŸãããããã¡ããèªã¿åããã€ãæ°ãå€æŽããŸããã VIã®åºåã§ãã¹ãŠã®ã»ã³ãµãŒãããã«ããŒãªã³ã°ãããšãã©ã€ã³ã¯ã»ãŒ6åé·ããªãããããã¡ãŒããŒãªã³ã°ééãé·ããªããŸãã

ã»ãã仲éïŒ ãã¹ãŠãç§ãæãã§ããéãã«æ©èœããŸãã
æ ¡æ£
ããã§ã¯ãã¹ãŠãæºåã§ããŠããããã«èŠããŸãããããã§ã¯èœã¡çãããšãã§ããŸããããã¹ãäžã«åãæ¡ä»¶ïŒã³ãã1æ¯ã®æ°ŽïŒã«çœ®ããã5ã€ã®ã»ã³ãµãŒãã¹ãŠããããã«ç°ãªã枬å®å€ã瀺ããŸããã ãããã£ãŠããããã¯èŒæ£ãããªããã°ãªããŸããã§ããã
ãããè¡ãããã«å¿ èŠã ã£ãã®ã¯ãææ°0.01床ã®æ°Žé枩床èšã足ã®ããå®éšçšã©ãã¯ãã°ã©ã¹ãå·å庫ããã®å°ããªæ°·ãé»æ°ã±ãã«ããããŠæ°Žã§ãã å³åžã®ã€ã³ã¹ããŒã«ã¯æ¬¡ã®ããã«ãªããŸããã

ã©ãå ã®åçãšæ··ä¹±ã®è³ªããaã³ããŸãã
ããã€ãã®æž©åºŠã«ã€ããŠãæ°Žé枩床èšãšã»ã³ãµãŒã®èªã¿åãå€ãèšé²ããåã»ã³ãµãŒã®æ€éç·ãäœæããŸããã
äŸãšããŠãã»ã³ãµãŒ1ã®æ€éç·ã
åŸãããæ²ç·ã®ãã©ã¡ãŒã¿ãŒã«åŸã£ãŠãããã°ã©ã ã«ãã£ãŠçæãããããŒã¿ã®ãã£ãªãã¬ãŒã·ã§ã³ä¿®æ£ãè¡ããŸããã
ãŸããåããã»ããã¢ãããã䜿çšããŠãã»ã³ãµãŒãšæ°Žé枩床èšã®æž¬å®å€ãæ¯èŒããããšã«ãããç·šçµã«ãã£ãŠäžãããã誀差ãæšå®ããŸããã ç°ãªã枩床ã§ã®ç°ãªãã»ã³ãµãŒã®å Žåããããã«ç°ãªããå¹³åææ°0.08床ã§ãã
æåŸã®ä»äžã
Arduinoãæäœããããã®LIFAã€ã³ã¿ãŒãã§ãŒã¹ã¯ãLCDãã£ã¹ãã¬ã€ããµãŒãã¢ãŒã¿ãŒãIRå¶åŸ¡ãªã©ãæäœããããšã§å€ãã®å¯èœæ§ãæäŸããŸããããããã¯ãã¹ãŠäŸ¿å©ã§ãããç§ã®å Žåã¯ãŸã£ããäžèŠãªã®ã§ã LabVIEWInterfaceã®ã³ã³ãã³ããå€§å¹ ã«åæžããŸããã ino ã LIFA_BASE.ino ã LabVIEWInterface.hããã³LIFA_Baseãã©ã«ããŒãããããäžèŠãªãã®ããã¹ãŠåé€ããŸãã ç§ã¯ããã«ãªã¹ããäžããŸããã誰ããèŠãŠã¿ãããšæããªãã°ãç§ã«é£çµ¡ããŠãã ãããç§ã¯åã³ã§ãã¹ãŠã®ãœãŒã¹ãæäŸããŸãã
å¶åŸ¡ããã°ã©ã çšã«ããã®ããã³ãããã«ãäœæããŸããã
Arduinoã·ã§ãŒã«ã¯ãç°å¢ããä¿è·ããããã«ã䞡端ãå¯å°ãããç±åçž®ãã¥ãŒãã«ããã±ãŒãžãããŠããŸãã



ããã€ã¹ã®æºåãã§ããŸããïŒ

ãŸãšã
ã³ã³ããŒãã³ããšææã®ã³ã¹ãïŒ
- Arduino Nano-1,900ã«ãŒãã«;
- 5 DS18B20枩床ã»ã³ãµãŒ-1950ã«ãŒãã«ã
- 10 mã±ãŒãã«-150ã«ãŒãã«;
- ããããªããšïŒç±åçž®ãã±ãŒãã«ã¿ã€ã...ïŒ-200ã«ãŒãã«;
åèš -4200ã«ãŒãã«ã
ããã§ã¯èããŠã¿ãŸãããã å·¥å Žçšã®ç±èåãæ©ã販売ãããŠããŸããããšãã°ãå¹³åã³ã¹ã13,000ã«ãŒãã«ã®ãTK-10 / 10 thermocosaããªã©ãGoogleã§æ€çŽ¢ããã®ã¯ç°¡åã§ãã ãããããåçãŸãã¯ããããªç²ŸåºŠãæããã«åªãããããã°ãä¿¡é Œæ§ãããã³é«å質ãæäŸãããåçã®ã³ã¹ãã®å·¥æ¥è£œåã®é¡äŒŒç©ããã£ãå Žåãã©ãããŠæ¥äžæããã®ã§ããããïŒãç§ã¯ããã€ãã®çç±ã§çããŸãïŒ
- / *çé¢ç®ãªç§åŠæ©åšã§ã¯ãªããäžèšãšåæ§ã®ããã€ã¹ã«ã€ããŠè©±ã* /æ¢è£œã®ãœãªã¥ãŒã·ã§ã³ãè³Œå ¥ãããšãã¡ãŒã«ãŒã瀺ããç¹æ§ã®æ°ãä¿¡ããããåŸãªããªããŸãã ããã¯ãçç£ãŸãã¯å®¶åºã§ããã€ã¹ã䜿çšããå Žåã¯æ£åžžã§ãããç§åŠçãªç®çã§ã¯ãããŸããã 補é æ¥è ãæå³çã«èåœã®æ å ±ãæäŸããŠãããšã¯èšããŸããããååãšããŠãå éšããã€ã¹ã®è€éãã補é ã«äœ¿çšãããããã€ã¹ã®ãã©ã¡ãŒã¿ãŒã®è©äŸ¡æ¹æ³ã«ã€ããŠã¯äœãç¥ãããäžæ£ç¢ºã§ãããäžé©åãªä»®å®ãå«ãŸããŠããããšããããŸãã äžè¬çã«ãç§åŠã®äžç芳ã®äž»ãªååã¯ãåœããåã®ããšãããããšããããšã§ãã ãã1ã€ã¯ãããã€ã¹ãæåéã詳现ã«çµã¿ç«ãŠãå Žåãæäœã®ããžãã¯ãèšå®ããéžæããæ¹æ³ã«åŸã£ãŠãã®ç²ŸåºŠãè©äŸ¡ããããšã§ãã
- æè²çãªèŠ³ç¹ãããçµçŽãäœãããšã¯ãã¯ãã ããŠã®åãæ±ããArduinoã®ããã°ã©ãã³ã°ãLabVIEWãä»ããã³ã³ãã¥ãŒã¿ãŒãšã®æ¥ç¶ã®ç解ã«è²ŽéãªçµéšããããããŸãããç¹ã«ãç§ããã®åŸã«åãæ¿ãããããžã§ã¯ãã§Arduino-LV-PCãã³ãã«ã®ç 究ãç¶ããŠãããšããäºå®ã«ç §ãããŠã
- çšåºŠã¯äœãã§ããã䟡å€ã®åé¡ãéèŠã§ããã
ãæž èŽããããšãããããŸããïŒ ã質å/ãææ¡/æ¹å€ããããŸããããç§ã¯ãã€ããããèããŠããããã§ããã¹ã±ãããšVIã®ãœãŒã¹ã³ãŒããåãã§æäŸããŸããäžã§æžããããã«ãé£çµ¡ããŠãã ããã
PSç§ã®ããã°ã©ãã³ã°ã¹ãã«ã¯ãHello worldïŒãããé ãé¢ããŠããŸããããã®ãããäžéšã®çšèªãäžæ£ç¢ºã«äœ¿çšããããæå³ããç®çã«é©ããŠããªãããå³å¯ã«å€æããªãã§ãã ããã