---
# System prepended metadata

title: STAR DAQ 教學手冊

---

# STAR DAQ 教學手冊
> 此教學重點著重在目前用的手作機箱上，未來有更好的cDAQ又要重寫一篇嘻嘻
## 硬體
### 機箱架構

![DAQ1](https://hackmd.io/_uploads/S1Vu6x3Akg.jpg)


---

### 元件介紹
#### NI 9215
[NI 9215](https://www.ni.com/docs/zh-TW/bundle/ni-9215-getting-started/page/overview.html?srsltid=AfmBOoqoTQP3sE3A5PrFeOns8UXv_wnq4sGUQ6PV7S28Z5amTsinPVFT) 是一個4 channel的ADC，能將壓力計或是Loadcell的電壓輸出擷取下來，並透過後面的USB cable將訊號傳至電腦做儲存或是分析顯示。
* PIN OUT
![image](https://hackmd.io/_uploads/r1reJbhCkl.png)
可以看出其每個channel都有(+,-)兩極，對應接到壓力計的正端輸出與負端接地，其運作原理是將+端電壓減去-端電壓來求電壓差，而目前機箱上為全部共地，因此理論上AI0-、AI1-、AI2-、AI3-皆為相同的電位(都是地)


#### NI myDAQ
NI myDAQ是一個多功能的儀器，目前在機箱我當作數位訊號輸出，負責控制各式閥門(主閥、加壓閥、洩壓閥、冷卻閥、MTV、自動程序訊號)


#### Relay(繼電器)
由於電磁氣動閥的電壓需要24V，但是我們的數位輸出訊號最高只有5V，因此需要繼電器來做開關的角色，機箱上的繼電器上有貼標籤，為VSG，對應到每個繼電器的三個接腳，V為24V電壓輸入、S為閥門電源正極、G為ground(接上閥門電源負極與24V電供負極)。
1. 當無訊號輸入時(myDAQ沒有給數位訊號時)，S、G會short，閥門維持預設
2. 當有訊號輸入時(myDAQ給特定腳位數位訊號時)，V、G會short，閥門作動


#### STM32
裡面用來作MTV的PWM輸出，控制MTV上面的伺服馬達轉動特定角度，詳細的程式與原理請參照其他篇(**我還沒寫**)，而上面我設定了2個GPIO用來下特定的指令，讓我用數位訊號就能控制STM32上的PWM輸出，分別為開/關閥與自動程式啟動的指令。


---

### 機箱使用
NI 9215、myDAQ的USB都接至電腦，5V、24V電源供應器插110V市電
#### 大建議
1. 插電前務必檢查機箱內的接線是否有鬆脫或是拉扯掉落
2. SM接頭都先不要接感測器(壓力計等)與閥門，等確認機箱上電後無異狀再接上
3. 上電後務必去觀察機箱有無異常發燙或是有燒焦味，有這些情況直接下電檢查
4. 上電順序為：NI儀器、5V電供、24V電供
5. 下電順序為：24V電供、5V電供、NI儀器
6. 沒問題後蓋上蓋子後務必放上綠色乖乖，信仰值加倍


---

## 軟體
### 環境設定
#### NI LabVIEW 2021 community edition
[下載連結](https://www.ni.com/zh-tw/support/downloads/software-products/download.labview.html#411209)
下載好安裝包後，依照其上面的敘述安裝即可
#### NI-DAQmx
[下載連結](https://www.ni.com/zh-tw/support/downloads/drivers/download.ni-daq-mx.html#409845)
此為驅動NI DAQ產品的驅動程式，能在LabVIEW中使用DAQ相關模塊，下載下來後依照指示安裝即可



---


### 基本檢測-NI MAX
安裝好以上的軟體後，應該會找到NI MAX這個軟體(放大鏡搜尋一下)，打開後會出現以下畫面，上面會顯示電腦的基本資訊等等，但都不是重點哈。
![image](https://hackmd.io/_uploads/r1Lo4cnC1x.png)

當有NI產品接上電腦，點擊左方欄位的Devices and Interface，會顯示在底下，可以從其icon上面是綠色圈或是紅色叉來初步看出有無連接成功
![image](https://hackmd.io/_uploads/H1TmLc2AJe.png)
(未連接成功的樣子)

如果連接成功後，點擊它，上面會出現Self-Test選項，點擊後沒問題會跳出success，這樣就完成基本檢測
![image](https://hackmd.io/_uploads/S1I9w52A1e.png)



---


### 不專業LabVIEW基礎教學
點開LabVIEW
![image](https://hackmd.io/_uploads/Bkvesch0ye.png)

點擊File/New VI
![image](https://hackmd.io/_uploads/By19sc201e.png)

此時會跳出兩個視窗，分別為Front panel與Block diagram，按下crtl T，讓它並排顯示
![image](https://hackmd.io/_uploads/rkp435hC1x.png)
* Front panel: 是使用者的操控面板，上面可以放上各種控制或是想顯示的資訊，像是按鈕、示波器、滑軌、滾輪等等
* Block diagram: 是LabVIEW圖形化程式撰寫的地方，在Front panel放上的各種功能也會顯示在這裡，依照自己的需求將程式用LabVIEW中的各種模塊組合起來

如何選需要的模塊呢？點擊滑鼠右鍵會出現能夠使用的模塊，能依照需求拖拉到panel上
![image](https://hackmd.io/_uploads/By_WejhRJx.png)
(Front panel)
![image](https://hackmd.io/_uploads/BySMgjh0Jx.png)
(Block diagram)


#### 舉個例子-閥門控制程式(例子不只可以舉，還可以吃🌰)
非常簡單，就是幾個按鈕搭配一個DAQ assitstant
![image](https://hackmd.io/_uploads/By9Fli2Rkg.png)
1. DAQ assistant
附加在DAQmx的模塊，在Block diagram點右鍵，選擇Measurement I/O / NI DAQmx / DAQ Assist
![image](https://hackmd.io/_uploads/HkNiZi30ye.png)
拉至Block diagram上，會跳出設定畫面，此時注意電腦要連接著要用的DAQ，程式才能夠自動建立功能模塊(**設定畫面有到421再補**)

2. 按鈕
對就是按鈕，輸出為布林值0或是1

3. Build array(土黃色方塊那個)
其左邊能接上多個訊號，右邊會統一匯集成一條資料矩陣匯出，再接入DAQ assist中，控制DAQ各個數位訊號的開與關

4. While loop
沒錯，LabVIEW中的程式如果要重複不斷執行，需要用while loop包起來，就是Block diagram上面灰色的那一圈，通常上面會有一個紅色的點點，叫做loop condition，通常搭配的是stop button，控制while loop的停止條件，回到程式，因為閥門控制是不間段的控制，因此需要把所有的控制都包起來，所有程式才會重複執行，直到stop

5. 拉線+佈置Front panel
把所有資料流依照需要的功能拉線，並且將Front panel依照舒服的視覺與方便控制的布局排列好，就完成了

> 小觀念：資料流？
> LabVIEW其實是一種寫資料流的語言，每個模塊都有輸出或輸入的接點，可以發揮想像力做出想要的功能，而每個資料流都有代表顏色，像是閥門控制都是開與關，為布林值的數據，因此為綠色的線
> ![image](https://hackmd.io/_uploads/H1sU36h0ye.png)
> 而模塊的使用也要依據使用的資料流來做變化，像是數位有數位的模塊、動態資料流有動態資料流的模塊，這在等一下的類比電壓擷取會說到

#### 再舉個例子-電壓擷取程式(基本例子有電子和夸克⚛️)
![image](https://hackmd.io/_uploads/Sy7zfA3Ryg.png)
![image](https://hackmd.io/_uploads/rks7z0h0kl.png)

1. DAQ assistant
附加在DAQmx的模塊，在Block diagram點右鍵，選擇Measurement I/O / NI DAQmx / DAQ Assist
![image](https://hackmd.io/_uploads/HkNiZi30ye.png)
拉至Block diagram上，會跳出設定畫面，此時注意電腦要連接著要用的DAQ，程式才能夠自動建立功能模塊(**設定畫面有到421再補**)

2. 動態資料流區塊
由於DAQ assist輸出的為4維的動態資料流(幾維依照設定幾個channel來看)，如果要分開處理，像是我們使用的壓力計與Loadcell輸出範圍都是0-10V，但是轉換公式不一樣，壓力計電壓乘以10是轉換成bar，但是Loadcell需要乘以30轉換成kgf，我利用split signal，切開4個訊號分別作處理，再用merge signals將訊號合併回去，並輸出到示波器與write to measurement file中
![image](https://hackmd.io/_uploads/SJwx7A30yl.png)

3. 浮點數區塊
![image](https://hackmd.io/_uploads/SkKeB0h01l.png)
這邊利用了一個轉換器，將動態資料流轉換成浮點數矩陣，更新率依照DAQ assist中的設定。而後面接上index array，切割出浮點數矩陣資料流的訊號(層數依照channel數改變)，切割後的輸出做各自的運算後，輸出到Front panel的顯示方塊上

4. While loop
對每件事都要不斷重複做，全包起來就對了

5. Write to measurement file設定
對Block diagram右鍵後，位於Express/Output/Write Meas File
![image](https://hackmd.io/_uploads/r1UgD0hCJl.png)
拉到適合的位置後左鍵點兩下開啟，會到設定畫面
![image](https://hackmd.io/_uploads/BkGtwAnA1l.png)
最左上角先設定要儲存的位置，**一定要改成自己電腦的位置不然一定會出錯，再來要注意的是儲存檔案形式最好選.lvm最穩，之前設定.xlsx都會有問題**，其他的需求就自己決定

6. 拉線+佈置Front panel(同上個例子)


### 使用方式
做好程式後，要執行的話，點擊Front panel左上角的箭頭，程式就會開始，如果要停止程式，按stop或是箭頭右邊2個位置的紅色按鈕都能停止
![image](https://hackmd.io/_uploads/ByaJ5C2Ryg.png)

## 附錄
[第一次mono test所使用的程式](https://drive.google.com/drive/folders/1JtZsksTuZzydYeNdVxk3rxKNL78-iKFX?usp=drive_link)






























