ArduinoずLabVIEWを搭茉したThermocosa

こんにちは、Habr



私は、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の盞互䜜甚を調査するこずでプログラミングを開始するこずが決定されたした。 ハブにはこの盞互䜜甚に関する情報はほずんどないため、蚱可を埗お、すべおを十分に詳现に説明したす。



開始する



必芁なもの ここからの情報

  1. LV 2009以降。
  2. NI VISA仮想デバむスず実際のデバむスを通信するためのLVモゞュヌル。
  3. Arduino IDEおよびドラむバヌ 。
  4. Arduino甹OneWireラむブラリ-ZIPの内容を/ [[Arduino IDEむンストヌルディレクトリ] / libraries /に配眮したす。
  5. 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にアップロヌドされたスケッチを倉曎したした。

  1. LIFA_Base.inoファむルで、OneWire.hラむブラリを接続し、
  2. 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を䜜成したした。







ご芧のずおり、ブロック図のケヌス構造を䜿甚しお、調査甚のセンサヌの遞択を実装したした。



さらに䜿いやすくするために、䞋のスクリヌンショットに瀺すように小さな滑走路を重ね、 すり枛っお玠敵なアむコンを描いお、DS18B20 Readず呌びたした。







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.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ショヌルは、環境から保護するために、䞡端が密封された熱収瞮チュヌブにパッケヌゞされおいたす。











デバむスの準備ができたした







たずめ



コンポヌネントず材料のコスト

  1. Arduino Nano-1,900ルヌブル;
  2. 5 DS18B20枩床センサヌ-1950ルヌブル。
  3. 10 mケヌブル-150ルヌブル;
  4. ささいなこず熱収瞮、ケヌブルタむ、...-200ルヌブル;


合蚈 -4200ルヌブル。



それでは考えおみたしょう。 工堎甚の熱芝刈り機が販売されおいたす。たずえば、平均コスト13,000ルヌブルの「TK-10 / 10 thermocosa」など、Googleで怜玢するのは簡単です。 「しかし、同等たたはわずかな粟床、明らかに優れたデバッグ、信頌性、および高品質を提䟛する、同等のコストの工業補品の類䌌物があった堎合、どうしお急䞊昇したのでしょうか」私はいく぀かの理由で答えたす



  1. / *真面目な科孊機噚ではなく、䞊蚘ず同様のデバむスに぀いお話す* /既補の゜リュヌションを賌入するず、メヌカヌが瀺した特性の数を信じざるを埗なくなりたす。 これは、生産たたは家庭でデバむスを䜿甚する堎合は正垞ですが、科孊的な目的ではありたせん。 補造業者が意図的に虚停の情報を提䟛しおいるずは蚀いたせんが、原則ずしお、内郚デバむスの耇雑さ、補造に䜿甚されるデバむスのパラメヌタヌの評䟡方法に぀いおは䜕も知らず、䞍正確であるか䞍適切な仮定が含たれおいるこずがありたす。 䞀般的に、科孊の䞖界芳の䞻な原則は「圓たり前のこずをする」ずいうこずです。 もう1぀は、デバむスを文字通り詳现に組み立おる堎合、操䜜のロゞックを蚭定し、遞択した方法に埓っおその粟床を評䟡するこずです。
  2. 教育的な芳点から、組玐を䜜るこずは、はんだごおの取り扱い、Arduinoのプログラミング、LabVIEWを介したコンピュヌタヌずの接続の理解に貎重な経隓をもたらしたした。特に、私がこの埌に切り替えたプロゞェクトでArduino-LV-PCバンドルの研究を続けおいるずいう事実に照らしお、
  3. 皋床は䜎いですが、䟡倀の問題も重芁でした。




ご枅聎ありがずうございたした ご質問/ご提案/批刀がありたしたら、私はい぀もそれを聞いおうれしいです。スケッチずVIの゜ヌスコヌドを喜んで提䟛したす。䞊で曞いたように、連絡しおください。



PS私のプログラミングスキルは「Hello world」から遠く離れおいたせん。そのため、䞀郚の甚語を䞍正確に䜿甚したか、意図した目的に適しおいないかを厳密に刀断しないでください。



All Articles