• 沒有找到結果。

第 4 章 智慧型感測器(Smart Sensor)設計

N/A
N/A
Protected

Academic year: 2022

Share "第 4 章 智慧型感測器(Smart Sensor)設計 "

Copied!
61
0
0

加載中.... (立即查看全文)

全文

(1)

第 4 章 智慧型感測器(Smart Sensor)設計

本研究是採用MOTOROLA 68HC908QT4 編號之IC進行設計,在 4.2 與 4.3 小節部分,以RS-232 串列傳輸方式,代替完成了 1451.3 小匯流排界面 模組(TBIM)。 在 4.4 小節部分,完成了 1451.1 網路獨立的資訊模組,使 用PC代替NCAP之硬體架構。遠端Server由Ethernet與NCAP相連,並再與感 測器連結控制。在 4.4 與 4.5 兩小節部分,完成同時以類比/數位混合模式 來進行資料轉換。在 4.6 與 4.7 兩小節部分,完成以無線收發模組來做數 據交換傳輸,實現 1451.5 無線傳輸規範。

本研究所使用的 MCU 因外部接腳為多工使用(僅 8 Pin),無法提供足夠 的 10 條線,作為 1451.2 標準介面 TII 的點對點傳送,因而並未採用這種 通訊模式,而用了 1451.3 簡易型通訊介面模式(TBIM) 。如欲完成此標準 必須使用效率更高的 MCU,如新一代的 MCU M68HC908AP64 具有 32 個 I/O Pin,因此可以有足夠的 I/O 進行 TII 介面控制。另一方面其內建 63K-byte 的 Flash,可以儲存更多的電性資料表(TEDS)。

(2)

4.1 68HC908QT4 基本測試

此基本測試電路極為簡單,主要用途為測試 MCU 的內部程式與外部 接腳之 AD Converter, Digital I/O 是否運作正常。

4.1.1 測試條件:

1. 當 Sensor 電壓超過 2/3Vc 時,LED “ON"。

2. 當Sensor電壓界於 2/3Vc與 1/3Vc時,LED “Flash"。

3. 當 Sensor 電壓低於 1/3Vc 時,LED “OFF"。

4.1.2 硬體及軟體之規劃:

圖 4-1 為 MCU 與感測器之基本測試電路連接圖,sensor 由一個 20KΩ 的可變電组代替,可改變 0~5V 的電壓變化,介由電壓之變化 來卻認 LED 是否依照設定值動作,此一測試電路亦可運用於水塔水 位高低之控制,輸出訊號可用來驅動馬達之運作。

此 MCU 為 8 pin 之封裝,因其外部連接之 pin 腳為浮動方式,故在 設計電路時須由使用者自行定義其功能,圖 4-2 及表 4-1 為 MCU 輸 入/出接腳之定義。

(3)

圖 4-1 MCU 與感測器之基本測試電路圖

ADC輸入

接地 數位輸出

68HC908QT4

1 2 3

4 5 6 7 8

5V電源

圖 4-2 68HC908QT4 Target CPU. 表 4-1 輸入/出接腳之定義

Function Pin No.

Vcc 1 Gnd 8

AD

(input) 2 LED

(output) 6

(4)

圖 4-3 為軟體控制流程圖,當開機時 MCU 自動重置所有功能,然後讀取 ADC 之訊號,判別讀值後決定 LED 動作與否。

讀 取 AD Chanel 開 始

68HC908QT4 基本測試

LED OFF LED ON

Yes

結 束 AD讀 值 大 於 2/3 Vc

No

LED Flash

Yes

No AD讀 值 小 於 1/3

圖 4-3 軟體流程圖

(5)

4.1.3 靭體(firmware):(使用 C 語言撰寫)

#include "Cpu.h"

#include "Events.h"

#include "AD1.h"

#include "Bit1.h"

/*Include shared modules, which are used for whole project*/

#include "PE_Types.h"

#include "PE_Error.h"

#include "PE_Const.h"

#include "IO_Map.h"

static byte AA[1]; // 設定 AD 轉換器之通道 (最多 4 個) void main(void) {

byte max = (255*2)/3; //設定上臨界點為 2/3 byte min = 255/3; //設定下臨界點為 1/3 byte x;

bool y;

int i;

for(;;) {

x = AD1_Measure(TRUE); //設定 ADC 功能開始 x = AD1_GetValue((byte *)AA); //將 ADC 讀值送至 x 變數中 if (AA[0] > max) {

y = 1; // 設定 LED ON } else {

if (AA[0] < min) {

y = 0; // 設定 LED OFF } else {

y = y^1; //定 LED 閃爍 ON <-> OFF }

}

for (i = 0; i < 5000; i++); // delay 5000 個 CYCYLE,否則 LED 動作太快無法辨識 Bit1_PutVal(y); //LED 輸出動作

} }

(6)

4.2 RS-232 網路連線測試

由於 1451.3 使用小匯流排界面模組(TBIM),來作為 STIM 與 NCAP 相互 連結,因此本節以 RS-232 的傳輸標準進行網路連線 (使用 Rx 與 Tx 兩條 線) 。

上節基本測試電路為一單區封閉型電路,無法將 Sensor 讀值上網傳送 出去。因此本節將設計 RS-232 通訊程式,以便 Sensor 能使用 RS-232 來與 PC 進行連線,再由 PC 來將結果顯示於螢幕之上,以利確認讀值是否有誤 [15]。

4.2.1 測試條件

1. 輸入電壓由 20KΩ可變電阻調整 0~5V。

2. 經由 8 bit AD converter 計算 0~255 之變化量,精確度為 5V/255=0.0196V。

3. 計算讀值由 PTA0 傳輸至 MAX232,進行串列傳輸訊號放大。

4. 由 PC 之 Hyper Terminal 讀取並顯示讀值。

4.2.2 硬體及軟體之規劃

圖 4-4 為 RS 232 傳輸協定,軟體撰寫即依照此規範來設定延長時 間。在此設定傳輸速率為 9600,圖 4-5 為傳轉電路方塊圖,圖 4-6 及表 4-2

(7)

為 MCU 輸入/出接腳之定義,圖 4-7 為 MAX232 IC 接腳配置圖,此 IC 為 RS232 訊號傳輸驅器,圖 4-8 為 RS232 訊號放大電路。

圖 4-4 RS-232 傳輸協定

PC 顯示讀值 Max 232

RS232 放大器 Motorola MCU

A/D converter RS 232 output 0~5V

電壓輸入

圖 4-5 傳輸電路方塊圖 電路分析:

RS232 傳輸,使用一對一 DB9 延長線(線無交叉),連接 MCU 與 PC 電 腦作串列傳輸,首先測試資料由 MCU 傳送至 PC,68HC908QT4 PTA0 為資料 輸出端(PIN 7) → MAX232(如圖 4-7) →RS232 DB9 之 RX(PIN 2)→進入

(8)

電腦。(如圖 4-8)

68HC908QT4

1 2 3

4 5 6 7 8

RS-232 5V電源 接地

ADC輸入 數位輸出

Tx

Function Pin No.

Vcc 1 Gnd 8

AD

(input) 2 RS 232 Tx

(output) 7 LED

(output) 3

圖 4-6 68HC908 QT4 Target CPU. 表 4-2 MCU 輸入/出接腳之定義

圖 4-7 MAX232 IC 接腳配置圖

(9)

圖 4-8 RS232 放大傳輸電路圖

圖 4-9-A 為 RS-232 之 Tx Port 字元傳送流程圖,圖 4-9-B 為應用於 RS-232 之十進制碼轉為 ASCII Code 流程圖,圖 4-9-B 為軟體控制流程圖,

程式上半段與上節相同,下半段為資料傳送,程式設定須符合 RS-232 傳輸 規範,將 ADC 讀值傳送出去。

(10)

傳送起始位元 PTA1 = 0 TxData 開始

結束

68HC908QT4 應用於RS-232 之Tx字元傳送

1.設定PTA1為傳送Port

2.設定計時器,每一個bit的等待 時間為104us, 9600 Baud Rate

設定傳送資料每byte為8個bit DataCount = 8

DataCount = 0 No

傳送LSB資料至PTA1中

資料右移一個Bit 等待104 uSec (RS-232每bit等待時間)

DataCount遞減1 Yes

等待2 mSec

(RS-232每byte之間等待時間) 傳送停止位元 PTA1 = 1

圖 4-9-A RS-232 Tx 每一字元傳送流程圖

(11)

設定十進制值 並區分為(百位,十位,個位)

ConvertToBcdAscii開始

結束

68HC908QT4 應用於RS-232 之ASCII Code轉換

將變數減100

將變數加回100

取百位之變數並加上48 此時得到百位之ASCII Code

(ASCII Code offset) No

將變數減10

將變數加回10

取十位之變數並加上48 此時得到十位之ASCII Code

(ASCII Code offset) No

將變數減1

將變數加回1

取個位之變數並加上48 此時得到個位之ASCII Code

(ASCII Code offset) No

回傳百位,十位,個位之ASCII Code Yes

Yes

Yes 判斷"百位"

是否小於零

判斷"十位"

是否小於零

判斷 "個位"

是否小於零

圖 4-9-B 應用於 RS-232 之十進制碼轉為 ASCII Code 流程圖

(12)

AD 轉 換 器 enable 讀 取 AD通 道 1之 讀 值

開 始

LED ON

LED Flash

Yes

No AD > 2/3 Vc

呼 叫 TxData()副 程 式 傳 送 每 bit 至 RS-232 呼 叫 ConcerttoBCDASCII()副 程 式

將 AD 讀 值 轉 換 為 ASCII Code 呼 叫 Rs232() 副 程 式 將 AD 資 料 及 提 示 訊 息 傳 送 出 去

結 束

68HC908QT4 RS-232 Tx 測式

LED OFF Yes

No AD < 1/3Vc

圖 4-9-C RS-232 資料檢測流程圖

(13)

4.2.3 靭體(firmware):

#include "Cpu.h"

#include "Events.h"

#include "Tx.h"

#include "LED.h"

#include "AD1.h"

#include "TI1.h"

#include "PE_Types.h"

#include "PE_Error.h"

#include "PE_Const.h"

#include "IO_Map.h"

#define TxdOut 0x02 // 定義 Port A-1 為 RS232 之 Tx 輸出腳位 static byte Temp[1]; // 定義 AD 之通道 (最多 4 個)

signed char ascii;

signed char degree;

unsigned char Hundreds, Tens, Ones;

void TxdDelay(void) {

unsigned int a; // 計時器為 12 時= 9600 Baud Rate,為 5 時=19200 Baud Rate, for (a = 0; a < 12; a++); // CPU speed is 2.5Mhz = 0.4 µSec *15 = 6 µSec 每個指令時間 // 6 µSec * 17(指令) = 104 µSec

// 9600 Baud Rate = 104µSec ,每一個 bit time }

void TxData(unsigned char Value)

{ // 設定 Baud Rate 為 9600,n,8,1 unsigned char DataCount,b;

PTA &= ~TxdOut; //For RS-232 起始位元 TxdDelay();

for (DataCount = 8; DataCount != 0; DataCount--) {

if (Value & 0x01)

{

PTA |= TxdOut;

} else

{

PTA &= ~TxdOut;

} TxdDelay();

Value = Value >> 1; // 資料位移,每一字元為 8 bits }

PTA |= TxdOut; // 停止位元, for Rs232 levels “high"

for (b = 0; b < 20; b++) {

TxdDelay(); // 每一字元間等待 2mS

}

}

void TxString(char TxString[40], int x) //設定字串最長為 40 個字元 {

unsigned char i = 0;

while (TxString[i] != '$') //當讀取字元為"$"即表示字串傳送結束 {

TxData(TxString[i]);

i++;

}

if (x == 1) //換行

{

TxData(13);

(14)

TxData(10);

}

}

/* 轉換 ADC 讀值為 ASCII 之標準 */

void ConvertToBcdAscii( signed char *pDecimalValue,

unsigned char *pHundreds, unsigned char *pTens, unsigned char *pOnes

) {

*pHundreds = 0; // 將十進制值初始值設為零

*pTens = 0;

*pOnes = 0;

Hundreds: // 百之計算式

*pDecimalValue = *pDecimalValue - 100; // 將變數減去 100 之後,並確認是否小於 0 if (*pDecimalValue < 0) // 若為零則表示百之變數計算結束,換計算十位數

{

goto Tens1;

}

*pHundreds = *pHundreds + 1; // 百位數增加一

goto Hundreds;

Tens1:

Tens //十之計算式

*pDecimalValue = *pDecimalValue + 100; // 將變數加 100 回去,因計算百之變數時有減 100 Tens2:

*pDecimalValue = *pDecimalValue - 10; // 將變數減去 10 之後,並確認是否小於 0 if (*pDecimalValue < 0) // 若為零則表示十之變數計算結束,換計算各位數

{

goto Ones1;

}

*pTens = *pTens + 1; //十位數增加一

goto Tens2;

Ones1: //個位之計算式

Ones

*pDecimalValue = *pDecimalValue + 10; // 將變數加 10 回去,因計算十之變數時有減 10 Ones2:

*pDecimalValue = *pDecimalValue - 1; // 將變數減去 1 之後,並確認是否小於 0 if (*pDecimalValue < 0)

{

goto AddAsciiOffset;

}

*pOnes = *pOnes + 1; //個位數增加一

goto Ones2;

AddAsciiOffset: // 加上 ASCII 之 offset 48

*pHundreds = *pHundreds + 48;

*pTens = *pTens + 48;

*pOnes = *pOnes + 48;

} void rs232(void) {

ConvertToBcdAscii(&ascii, &Hundreds, &Tens, &Ones); //呼叫 ASCCII Code 轉碼程式,將 &ascii 變數進行轉碼 TxString("ASCII=$",2); //傳送"ASCII"字元

TxData(Hundreds); //呼叫字元傳送副程式,傳送百位之 ASCII 碼 TxData(Tens); //呼叫字元傳送副程式,傳送十位之 ASCII 碼 TxData(Ones); //呼叫字元傳送副程式,傳送各位之 ASCII 碼 TxString(" / $",2); //傳送分隔號

ConvertToBcdAscii(&degree , &Hundreds, &Tens, &Ones); //呼叫 ASCCII Code 轉碼程式,將 &degree 變數進行轉碼 TxString("Temp=$",2);

TxData(Tens);

TxData(Ones);

TxString("¢J$",2);

(15)

}

void main(void) {

byte min = 255/3; //設定 min 為 85 byte max = (255*2)/3; //設定 max 為 170 byte err;

bool s;

unsigned char ad1;

for(;;) {

err = AD1_Measure(TRUE);

err = AD1_GetValue((byte *)Temp);

ad1 = Temp[0];

if (Temp[0] > max) // 比較讀值是否大 max 之變數 s = 1; // 設定 LED ON

} else {

if (Temp[0] < min) {

s = 0; //設定 LED OFF } else {

s = s^1; // 設定 LED 閃爍 ON <-> OFF }

}

LED_PutVal(s); // 將 LED enable ascii = ad1;

degree = ad1/5;

rs232() ; //呼叫 RS-232 附程式,將讀值傳送出去 }

}

(16)

4.3 溫度感測器與 RS232 網路連線測試

延續 4.2 之測試結果,將溫度感測器實際運用上述之電路,本節探討 目前市面上廣泛使用之 temperature sensors [16]:

1.AD590 定電流輸出型(因搭配線路較複雜,需搭配 3 個 OPA,成本較 高)

2.LM35 定電壓輸出型(因搭配線路簡單,僅需使用 1 個 OPA,成本低 廉)。

4.3.1 硬體及軟體之規劃

如圖 4-10 為 Temperature Smart Sensor 電路方塊圖,由 PC 顯示 溫度讀值, 圖 4-11 RS-232 溫度讀取及傳送軟體流程圖。(與上節相同)

PC 顯示溫 度讀值 Max 232

RS232 放大器 Motorola MCU

A/D converter RS 232 output OPA

放大器 溫度

sensor

圖 4-10 Temperature Smart Sensor 之電路方塊圖

(17)

AD 轉換器 enable 讀取AD通道1之讀值

開始

LED ON

LED Flash

Yes

No 溫度值 > 2/3 Vc

呼叫ConcerttoBCDASCII()副程式 將十進制之溫度值轉換為Ascii Code

呼叫 Rs232() 副程式 將計算之溫度及提示訊息傳送出去

結束

68HC908QT4 溫度讀取及RS232 Tx測試

呼叫 TxData()副程式 將字元值轉換為Rs232串列傳輸格式

LED OFF Yes

No 溫度值 < 1/3Vc

圖 4-11 RS-232 溫度讀取及傳送軟體流程圖

(18)

4.3.2 使用 AD590 溫度感測器

圖 4-12 為 AD590 溫度感測放大電路,利用溫度感測器 AD590 與差動放大 器組成一可測量 0℃~100℃之電子溫度計。

圖 4-12 溫度感測電路圖 元件簡介:

圖 4-13 AD590 包裝與等效電路圖 圖 4-14 LM324N 內部電路圖

(19)

(1)AD590

AD590 是電流輸出型的半導體溫度感測元件,主要特性如下:

1.具有線性輸出電流。

2.寬廣的操作溫度範圍(-55℃~150℃)。

3.寬廣的工作電壓範圍(+4V~+30V)。

4.良好的隔離性。

AD590 的包裝與等效電路(如圖 4-13)所示,是 TO-52 型金屬外殼包 裝。他是兩端子的半導體溫度感測元件,另有一端子是外殼接腳,可接地 以減少雜訊干擾。

AD590 如同一個隨溫度而改變輸出電流的定電流源,輸出電流與外殼 的 凱 氏 (°K) 溫 度 成 正 比 。 凱 氏 溫 度 與 攝 氏 溫 度 的 單 位 相 等 , 0 ℃ 等 於 273.2°K,100℃等於 373.2°K。

當溫度為 0℃時,AD590 的輸出電流是 273.2μA。而溫度為 100℃時,

輸出電流是 373.2μA。溫度每升高 1℃,輸出電流增加 1μA,及溫度係數 為 1μA/℃。

(2)LM324N

LM324N內部有 4 個OPA,如圖 4-14 所示,可為單電源工作,單電源工

作時VCC,MAX=32V,雙電源工作時,VCC,MAX、VEE,MAX為+16V、-16V,本研究為縮小

(20)

體積及節省成本,使用單電源+5V來作運算放大。[17]

電路分析:

AD590 當溫度增加 1℃時,其輸出電流會增加 1μA。即AD590 的溫度係 數為 1μA/℃。所以在T(℃)時的電流I1(T)為

I

1

( ) T = I

1

( ) 0 + 1

µ

A / ° C × T

,而溫 度每變化 1℃時,V2的電壓變化是為

1

µ

A / ° C × 10 k = 10 mV / ° C

,表示溫度每增 加 1 ℃ , V2會 增 加 10mV 。 在 0 ℃ 時 V2就 已 經 有 電 壓 存 在 , 其 值 為

( ) A k V

V

2

0 = 273 . 2

µ

× 10 Ω = 2 . 732

, 則 T( ℃ ) 時

V

2

( ) T = V

2

( ) 0 + 10 mV / ° C × T

。 (公式 4-1)

( ) V

V

2

0 = 2 . 732

OP3 組成差動放大器,電壓增益為

R

2

R

1

= 100 k 20 k = 5

。零位調整R4 則 用於抵補 0℃的電壓值,由差動放大器的公式

V

O

= R

2

R

1

⋅ ( V

2

V

1

)

可得知,若 調整R4 使V1的電壓為 2.732V,則 0℃時,差動放大器的輸出VO為 0V。也就 是說,若溫度是在 0℃至 100℃之間,則差動放大器的輸出電壓是在 0V至 5V之間,亦即每上升 1℃輸出變化 0.05V,由其比例關係得知,將差動放大 器的輸出電壓乘以 5 倍,就是實際的溫度,其關係式為

T ( ) ° C = V

O

× 5

4.3.3 使用 LM35 溫度感測器:

利用溫度感測器 LM35 與差動放大器,組成一可測量 2℃~125℃之電

(21)

子溫度計(因 Vs 只有設定 5V)。

(公式 4-2)

V

out_LM35

( T ) = 10 mV ° C ×T ° C

LM35 是由 National Semiconductor 所生產的溫度感測器,其輸出電 壓與攝氏溫度呈線性關係,轉換公式如式(4-2),0℃時輸出為 0V,每升高 1℃ ,輸出電壓增加 10mV。LM35 有多種不同封裝型式,外觀(如圖 4-15)所 示。在常溫下,LM35 不需要額外的校準處理,即可達到±¼℃的準確率。其 電源供應模式有單電源,與正負雙電源兩種,其接腳配置(如圖 4-16)所 示。正負雙電源的供電模式。可提供負溫度的量測;兩種接線法(如圖 4-17) 所示,單電源模式在 25℃下靜態電流約 50µA,非常省電。

圖 4-15 LM351 之不同封裝及對應接腳圖

(22)

圖 4-16 單雙電源接線示意圖

圖 4-17 正負雙電源供電模式,輸出電流與溫度示意圖

2.實際測試

接下來實際對 LM35 進行測試,測試時是使用單電源模式,並且將輸出 以非反相放大器放大四倍,並記錄 Vo 電壓值變化情形。如圖 4-18

(23)

LM35 溫度加熱測試

0 20 40 60 80 100 120

0 50 100 150 200 250 300

tim e (sec)

temperature C

溫度

圖 4-18 溫度時間圖

因需配合 MCU 之 AD 範圍 5V / 8 Bit,故將放大倍率縮小至四倍,

此電子溫度計之可測量範圍為 2℃~125℃正負誤差+/-1℃,量測電路如圖 4-19。

最高溫度讀值 : 10mV/℃ * 125℃ = 1.25V (依照公式 4-2)

最高電壓輸出值 : 1.25V * 4(倍) = 5V (提供 MCU 之 AD input 使用)

圖 4-19. 2℃~125℃之溫度量測電路

(24)

4.3.4 靭體(firmware):

TxdDelay() TxData() TxString()

ConvertToBcdAscii()

上述四項副程式與之前相同, 設定為共用之副程式。

void rs232(void) //此副程式由一計時器來進行驅動,例如計時器設定為 0.1 秒

{ // 則每 0.1 秒會執行此程式一次,此程式主要用來顯示或傳送溫度讀值

DecimalToBcdAscii(&degree1 , &Hundreds, &Tens, &Ones);

TxString("Temp1=$",2);

TxData(Tens);

TxData(Ones);

TxString("¢J$",2);

TxString("$",2);

DecimalToBcdAscii(&degree2 , &Hundreds, &Tens, &Ones);

TxString("Temp2=$",2);

TxData(Tens);

TxData(Ones);

TxString("¢J$",2);

TxString("$",1);

}

void main(void) { byte err;

unsigned char ad1,ad2,temp1,temp2; //設定兩個溫度感測器之變數 for(;;) {

err = AD1_Measure(TRUE);

err = AD1_GetValue((byte *)Temp);

ad1 = Temp[0];

ad2 = Temp[1];

temp1 = ad1;

temp2 = ad2;

ascii1=temp1;

ascii2=temp2;

degree1=temp1/5; //AD591 輸出電壓經 OPA 放大 5 倍,故量測讀值需除以 5 degree2=temp2/4; //LM35 輸出電壓經 OPA 放大 4 倍,故量測讀值需除以 4

} }

(25)

4.4 RS-232 及 Ethernet 網路迴路連線測試(讀取 Rx 與傳送 Tx)

由於 1451.1 定義必須使用網路(Ethernet) 與 NCAP 連線,因此本節將 設計 Ethernet 通訊程式,以便使用遠端 Server,透過區域網路來進行監 控。

上節之 RS-232 傳輸僅提供 PC 資料讀取,無法進行控制 MCU。本節為設 計二者之雙向傳輸程式,可運用於 NCAP 與 MCU 間之雙向傳輸或命令控制以 及定址等功能。在此 NCAP 使用一台 PC 代替,完成 1451.1 NCAP,與

1451.3 小匯流排界面模組 Transducer Bus Interface Module(TBIM) 之通 訊介面設計。

4.4.1 測試條件

1. 編輯一個 RS232 測試環境,以及一個 Ethernet 遠端監控環境。

2. 由 PC 經 COM1 Port 發送字元。

3. 設定 PTA0 為 Rx ,PTA1 為 Tx。

4. MCU 讀取判別後 ,字元“1"LED 1 閃爍三次、字元"2"LED 2 閃 爍三次、字元"3"LED 3 閃爍三次、字元"4" LED 4 閃爍三 次。

5. 讀值由 PTA1 傳輸至 MAX232,進行串列傳輸訊號放大,再經由 PC 讀取字元‚判讀兩者是否有誤。

(26)

6. 此實驗目的,可運用於 Smart Sensor 之命令控制,及 sensor 讀 值傳送,因網路上並非只控制一個感測器,若單一感測器資料傳 輸量過大(取樣頻率),則終端處理器無法負荷,且資料容易干擾 混淆,因此平時感測器只做本地運算,直到接受傳輸命令時,才 傳送最新的感測訊號。

4.4.2 硬體及軟體之規劃

圖 4-20 為網路迴路測試電路方塊圖,圖 4-21 為實際電路圖。

Server 進行遠端

監控

Max 232 RS-232 放大器

Motorola MCU PTA0 接收命令 PTA1 傳送 Sensor

讀值 PC (NCAP)

傳送及接收 字元

圖 4-20 網路迴路測試電路方塊圖

(27)

圖 4-21 RS-232 迴路測試電路圖 圖 4-22 及表 4-3 為 MCU 輸入/出接腳之定義。

Function Pin No.

Vcc 1 Gnd 16 RS 232 Rx

(input) 13 RS 232 Tx

(output) 12 LED 1

(output) 15 LED 2

(output) 14 LED 3

(output) 11 LED 4

(output) 10

RxTx

RS-232 LED-1 LED-2

LED-3 LED-4

68HC908QY4

1 23 45 67 8

16 1514 1312 1110 9

5V電源 接地

RS-232

(28)

圖 4-22 68HC908 QT4 Target CPU 表 4-3 MCU pin 腳之定義

圖 4-23-A 為 Ethernet 軟體控制流程圖

4-23-B 為 RS-232 之 Rx 軟體控制流程圖

(29)

Server 端開始

"Server" 之 LED ON(顯示綠色)

"Client" 之 LED ON (顯示綠色)

使用 Ethernet 由 Server 與 Client連線測式

開啟連接Port

Yes

No 設 定欲開啟之

NCAP連接 Port (0000~9999)

等待NCAP與Server連線

No

Yes

Client(NCAP) 端開始

接收Server命令並與 Sensor 作資料交換

開啟連接Port

Yes

No 設 定欲連線Server之TCP/IP位址

(140.126.145.49)

No

命令與資訊傳遞 開啟設定之

連接Port

判斷NCAP 是否連線

開啟設定之 TCP/IP

"Client" 之 LED ON (顯示綠色)

命令與資訊傳遞

判斷RS-232 是否連線

Yes 啟動對話方塊

1.與Server相互聯繫(Etherner) 2.與Sensor相互聯繫(RS-232)

啟動對話方塊 與Client相互聯繫(Ethernet)

資訊互傳

圖 4-23-A Ethernet 軟體控制流程圖

(30)

確認PTA0 = 低電為觸發 Receive 開始

No

Yes

68HC908QT4 應用於RS-232 之Rx字元讀取

1.設定PTA0為接收Port

2.設定計時器 TSC為288個cycle, 為每一個bit的等待時間 (9600 Baud Rate) 3.設定RxData為接收暫存區

Yes

計時器 Enable PTA0 = LOW

設定 Rx_Complete "1"

Bit_count 加 1

No

判斷接收是否結束 Rx_Complete "1"

讀取PTA0之位元 判斷為1或0,並將接收資料

存於RxData變數之LSB中 RxData資料shift

左移1個bit

No

Yes

判斷接收位元 是否結束 Bit_count等於 "9"

Rx所讀之資料存於 RxData變數中

結束

圖 4-23-B RS-232 之 Rx 軟體控制流程圖

(31)

圖 4-23-C 為 RS-232 軟體控制流程圖,當 PTA0 為高電位時表示對 方電腦無發送訊號,此時 MCU 閒置。等到對方電腦發送控制命令時,此時 Rx 端瞬間會有電位變化,利用此電位之變化差來起動計時器,解讀對方電 腦所傳送之命令與判別命令,可用來控制本地之數位輸出。

確認PTA0 = 低電為觸發 開始

LED1 閃爍三次 確認RS232傳送命令

結束 呼叫Receive()附程式 讀取RS232之傳送字元

No

Yes

Rx = "1"

Rx = "2"

Rx = "3"

Rx = "4"

LED2 閃爍三次

LED4閃爍三次

68HC908QT4 對 RS-232 之Rx與Tx測試

PTA0 = LOW

LED3閃爍三次 YES

YES

YES

YES No

No

No

No

圖 4-23-C RS232 網路迴路連線測試流程圖

(32)

4.4.3 靭體(firmware)

TxdDelay() TxData() TxString()

上述三項副程式與之前相同, 設定為共用之副程式

void led(void) {

int i,ii=0;

unsigned char s;

switch (RxData) { case 49:

for (ii = 0; ii < 3; ii++) //設定 LED 1 閃爍 3 次 {

s = 1;

for (i = 0; i < 5000; i++); //LED 1 “ON"及 Delay LED1_PutVal(s);

s = 0;

for (i = 0; i < 5000; i++); //LED 1 “OFF"及 Delay LED1_PutVal(s);

ii++;

} break;

case 50:

for (ii = 0; ii < 3; ii++) //設定 LED 2 閃爍 3 次 {

s = 1;

for (i = 0; i < 5000; i++); //LED 2 “ON"及 Delay LED2_PutVal(s);

s = 0;

for (i = 0; i < 5000; i++); //LED 2 “OFF"及 Delay LED2_PutVal(s);

ii++;

} break;

case 51:

for (ii = 0; ii < 3; ii++) //設定 LED 3 閃爍 3 次 {

s = 1;

for (i = 0; i < 5000; i++); //LED 3“ON"及 Delay LED3_PutVal(s);

s = 0;

for (i = 0; i < 5000; i++); //LED 3“OFF"及 Delay LED3_PutVal(s);

} break;

case 52:

for (ii = 0; ii < 3; ii++) //設定 LED 4 閃爍 3 次 {

s = 1;

for (i = 0; i < 5000; i++); //LED 4“ON"及 Delay LED4_PutVal(s);

(33)

for (i = 0; i < 5000; i++); //LED 4“OFF"及 Delay LED4_PutVal(s);

} break;

} }

void Receive(void) //RS232 Rx 之讀取副程式 {

bool Rx_Complete;

bool Start_Bit;

unsigned char Bit_Count;

Start_Bit = 0;

Rx_Complete = 0;

Bit_Count = 0;

RxData = 0;

TSC_TOF=0; // clear TOF flag TSC0 = 0;

PTA = 0;

DDRA = 0x30;

PTAPUE = 1;

TSC = 0x31; // Timer 0 - Cleared + Stopped.

// Clicks once every 2 BUS Cycles TMODH = 0; // Timer counts from 0-$ff

TMODL = 0x31; // Overflows every 98 Bus Cycles for 1/2 bit time TSC = 0x01; // Start the timer

while (!Rx_Complete) {

while (TSC_TOF) {

TSC_TOF = 0;

if (Start_Bit == 1) {

TSC = 0x31; // Timer 0 - Cleared + Stopped.

// Clicks once every 2 BUS Cycles TMODH = 0x00; // Timer counts from 0-$ff

TMODL = 0x90; // Overflows every 288 Bus Cycles for 1 bit time TSC = 0x01; // Start the timer

while ( Bit_Count != 9) {

while (TSC_TOF)

{

TSC_TOF = 0;

if (Bit_Count == 8 )

Rx_Complete = 1;

else

{

RxData >>=1;

if (PTA_PTA0 == 1)

RxData |=0x80;

else

RxData &= 0x7F;

}

Bit_Count++;

}

}

}

else

{

if (PTA_PTA0 == 0)

Start_Bit = 1;

(34)

else

Rx_Complete = 1;

} }

} }

void main(void) {

unsigned char RxString[5];

int Rx_Count=0,d=0;

for(;;){

if (PTA_PTA0 == 0) //當 Port0 讀值為 0 時,表示 Rx 有訊號輸入 {

Receive();

led();

RxString[Rx_Count] = RxData;

Rx_Count++;

if (Rx_Count == 5)

{

TxData(RxString[0]);

TxData(RxString[1]);

TxData(RxString[2]);

TxData(RxString[3]);

TxData(RxString[4]);

TxString(" $",2);

Rx_Count = 0;

}

}

} }

4.4.4 使用本地 RS-232 傳輸測試

按下傳送字元後,確認 LED 動作無誤,並檢查回傳之資料與所下達 之命令是否相同,如圖 4-24 可驗證傳輸無誤。

圖 4-24. RS232 Rx/Tx 傳輸確認

(35)

4.4.5 使用區域網路之 Ethernet 傳輸測試

因智慧型感測器必須具備網路傳輸功能,因此必須設計一個 Ethernet 監控環境來進行遠端遙控,如圖 4-25 及 4-26 可驗證傳輸無誤。。

圖 4-25. Ethernet 遠端主控電腦命令傳輸

圖 4-26. Ethernet 近端委託電腦命令接收並與 RS-232 傳輸

(36)

4.5 Smart Sensor 運用於壓力計之讀取與校正

半導體壓力感測器易受溫度變化而影響其讀值,如無內建補償電 路,則其輸出讀值並不準確,本實驗是依照中華理工學刊之“微機電壓力 計量測電路"與 MCU 進行整合完成一壓力智慧感測器[18]。

應用範圍:

民生家電產品:電子式血壓計、電子式胎壓計、水位計、水壓量 測、洗衣機、吸塵器、汽車胎壓壓力錶等。

工業應用:遠程壓力監測、石化與製程控制、數位壓力計、汽車胎壓 及冷媒壓力錶等。

4.5.1 測試條件

1. 使用半導體矽壓阻式壓力感測器作為壓力感測元件,並搭配 LM35 溫度感測元件來進行校正補償。

2. 將 MCU 設定為兩個 AD 輸入,RS-232 資料傳輸速率為 9600bps。

3. 由 PTA1 發送字元, PTA0 讀取控制命令。

4. PC 控制 Smart Sensor 讀取溫度與壓力值。

(37)

4.5.2 硬體及軟體之規劃:

圖 4-27 為 Temperature/Pressure Smart Sensor 之 RS-232 連線測 試電路方塊圖,圖 4-28 及表 4-4 為 MCU 輸入/出接腳之定義。

圖 4-27 Temperature/Pressure Smart Sensor 之 RS-232 連線測試電路 方塊圖

接地 ADC輸入

5V電源

Rx RS-232

68HC908QT4

1 2 3

4 5

6 7 8

ADC輸入 RS-232 Tx

Function Pin No.

Vcc 1 Gnd 8 RS 232 Rx

(input) 7 RS 232 Tx

(output) 6 AD1 溫度

(input) 2 AD 2 壓力

(input) 3 溫度

sensor

OPA 放大器

OPA 放大器 壓力

sensor

PC 顯示溫 度與壓力讀

值並控制 Max 232

RS232 放大器 Motorola MCU

Two channel A/D converter 讀取溫度與壓力 RS 232 In/Out

圖 4-28 68HC908 QT4 Target CPU 表 4-4 MCU 輸入/出接腳之定義

元件簡介:

半導體壓力感測器之優點:

半導體壓阻式壓力感測器是以細微加工技術與 IC 製程技術整合而成之感測

(38)

元件,具有質量輕、體積小、訊號品質佳等優點,加上智慧型感測器需求 日趨殷切,已經漸漸成為壓力感測器的主流。 (如圖 4-29)

圖 4-29 半導體壓力感測氣示意圖

一般而言半導體壓力感測器,大多以矽晶片製作成可接受壓力的受壓 薄膜。而此薄膜之中心與周邊,各裝上兩個半導體應變規,而構成惠斯登 電橋,形成一個橋式電路構造之壓力感測器,(如圖 4-30)可於一固定壓力 範圍內得到線性的電壓輸出。

如圖 4-30 氣壓感測器之惠斯登電橋示意圖

(39)

因壓力感測器之輸出電壓極為微弱(1 Psia=0.4mV),故在此設定

R3=R4=2.5MΩ, R1=R2=10KΩ 即放大倍率為 500 倍,一大氣壓為 14.7 Psia,Vo 應等於 2.9V,放大電路如圖 4-31。

(公式 4-3)

) / 1

(

) / 1

)(

(

1 2

1 2 1

2 2

R R V

R R V

V V

S O

+

=

+

=

圖 4-31 氣壓感測器外接運算放大器

(40)

表 4-5 為矽微電子壓力感測器在不同溫度及壓力下量測結果

Temp.

0psi 5psi 10psi 15psi 20psi 25psi 30psi 35psi 40psi 45psi 50psi

0 12.5 25.7 39.3 52.7 66.2 79.9 93.5 107.1 120.7 134.3 147.9 10 11.6 25.1 38.5 51.9 65.5 78.8 92.3 105.8 119.2 132.8 146.6 20 11.1 24.5 37.9 51.3 64.8 78.3 91.9 105.6 119 132.7 146.4

30 10.3 23.8 37.2 50.7 64 77.3 91 104.4 118 131.3 145

40 10.3 23.8 37 50.4 63.7 76.9 90.4 103.8 117.2 130.6 144.3 50 10.3 23.7 36.9 50.3 63.6 76.7 89.9 103.3 116.7 130 143.5 60 10.1 23.5 36.7 49.9 63.2 76.6 89.6 102.7 116 129.3 142.7 70 9.9 23.3 36.4 49.5 62.8 76 89.2 102.5 115.6 128.8 142.2 80 9.7 23.1 36.2 49.4 62.4 75.6 88.8 102.2 115.2 128.3 141.6 90 9.6 22.8 35.9 49.1 62.3 75.4 88.5 101.7 114.9 127.8 141.3 100 9.6 22.5 35.6 48.8 61.9 75.2 88.2 101.5 114.6 127.6 140.9

表 4-5 矽微電子壓力感測器在不同溫度及壓力下量測結果

表 4-6 為依照“微機電壓力計量測電路"之實驗值取 15psi 時之數據再放 大 5 倍後所得到之電壓與氣壓相關值。

0 psi 時之 零點電壓 (V)

0 psi 時 AD 讀取之 數字

15 psi 時 之輸出電位 (V)

15 psi 時 AD 讀取之 數字

減掉零點後 之數字

計算溫度 補償係數

補償後 之壓力 (PSI) 0℃ 0.76312576 38.91941 3.217338 164.0842 125.1648352 0.119842 15 10℃ 0.70818071 36.11722 3.168498 161.5934 125.4761905 0.119545 15 20℃ 0.67765568 34.56044 3.131868 159.7253 125.1648352 0.119842 15 30℃ 0.62881563 32.0696 3.095238 157.8571 125.7875458 0.119249 15 40℃ 0.62881563 32.0696 3.076923 156.9231 124.8534799 0.120141 15 50℃ 0.62881563 32.0696 3.070818 156.6117 124.5421245 0.120441 15 60℃ 0.61660562 31.44689 3.046398 155.3663 123.9194139 0.121046 15 70℃ 0.6043956 30.82418 3.021978 154.1209 123.2967033 0.121658 15 80℃ 0.59218559 30.20147 3.015873 153.8095 123.6080586 0.121351 15 90℃ 0.58608059 29.89011 2.997558 152.8755 122.985348 0.121966 15 100℃ 0.58608059 29.89011 2.979243 151.9414 122.0512821 0.122899 15

表 4-6

放大 5 倍後之電壓與

氣壓值

(41)

溫度/壓力比例因子

0.119 0.12 0.121 0.122 0.123 0.124

0 20 40 60 80 100

溫度

因子

Temp. Factor

圖 4-32 比例因子

由圖 4-32 得知,溫度與壓力之間的變化並非呈線性關係,因此在不同 溫度環境下必須給予不同的計算係數,才能得到一穩定讀值。將表 4-5 各 溫度所測量到的壓力值,先減掉各溫度在 0psi 所量測的壓力值(零點偏 壓),再乘上表 4-6 的溫度補償係數後,則感測器可得到補償輸出值。

圖 4-33-A 為使用記錄器觀測,無補償時的溫度與壓力變化情形,圖 4- 33-B 為根據 Excel 詳細資料所繪製圖表(包含最大值與最小值)。

圖 4-33-A 無補償時之溫度與壓力便化情形

(42)

無補償時之溫度與壓力便化情形

0 0.5 1 1.5 2 2.5 3 3.5

0 50 100 150 200 250 300

time

Vo lt a g e

Time 壓力 Min 壓力 Max 溫度 Min 溫度 Max

圖 4-33-B 無補償時之溫度與壓力便化情形

由上述可知若計算及補償精度足夠,則補償後的壓力值幾乎不受溫度 變化影響,因 MCU 內建之 ADC 解析度及穩度並非很好,因此會有+/- 0.2 psi 的漂動(如圖 4-34),如果應用的產品要求不高的話,則無須在意,例 如汽車胎壓監控系統。解決方法為使用一個精確度較高的 AD 轉換器,但相 對成本也提高。

俱有溫度補償及無補償之差異

12.5 13 13.5 14 14.5 15 15.5

0 20 40 60 80 100

溫度(℃ )

(ps i)

未補償之 壓力讀值

補償後壓 力讀值

圖 4-34 具有溫度補償及無補償之差異圖

(43)

圖 4-35 為軟體控制流程圖,先讀取溫度與壓力值,後再判別溫度範圍進行 壓力計算與補償,最後將數值經由 RS-232 傳送出去。

AD 轉換器 Enable 開始

計算溫度與壓力值

結束

>100

傳送溫度與補償後之壓力讀值

溫度 / 壓力之智慧形感測器

轉換溫度與壓力值為ASCII Code

讀取溫度及壓力值

<99

>90

<19

>10

<89

>80

<39

>30

<79

>70

<69

>60

<59

>50

<49

>40

<29

>20

<9

>0

minus bias and

factor

*0.1220

minus bias and

factor

*0.1195 minus

bias and factor

*0.1214

minus bias and

factor

*0.1192 minus

bias and factor

*0.1217

minus bias and

factor

*0.1210

minus bias and

factor

*0.1204

minus bias and

factor

*0.1201

minus bias and

factor

*0.1198

minus bias and

factor

*0.1198

Select temperature rang

minus bias and

factor

*0.1229

圖 4-35 軟體流程圖

(44)

4.5.3 靭體(firmware):

因此 MCU 只有 4K 的快閃記憶容量,無法提供有效的浮點運算,故程式

設計部份僅設計使用整數運算,但精確度方面又嫌不足,故將所讀之 AD 訊號 先乘以 10 倍在行運算,此做法則能再整數運算時得到小數點第一位數,再講 求經濟的時代又能兼顧到一定的精度。

TxdDelay() TxData() TxString()

ConvertToBcdAscii()

上述四項副程式與之前相同, 設定為共用之副程式。

int ad1=0,ad2=0;

unsigned char y;

void ADRead(void) {

byte err;

err = AD1_Measure(TRUE);

err = AD1_GetValue((byte *)myValues);

ad1 = myValues[0];

ad2 = myValues[1];

ad1=ad1*10; //溫度值先乘以 10 倍 temp=ad1;

temp=temp/2;

press=ad2;

y=temp/100; //利用 y 之變數來判別溫度範圍,每十度一個區間 switch (y)

{

case 10: // 溫度大於 100℃

press-=30; // 減掉溫度於 100 度時壓力於 0 PSI 之零點 press=press*1229; // 乘以溫度比例因子 0.1229

break;

case 9: //溫度大於 90℃ 小於 99℃

press-=30; // 減掉溫度於 90 度時壓力於 0 PSI 之零點 press=press*1220; // 乘以溫度比例因子 0.1220

break;

case 8: //溫度大於 80℃小於 89℃

press-=30; // 減掉溫度於 80 度時壓力於 0 PSI 之零點 press=press*1213; // 乘以溫度比例因子 0.1213

break;

case 7: //溫度大於 70℃小於 79℃

press-=31; // 減掉溫度於 70 度時壓力於 0 PSI 之零點 press=press*1217; // 乘以溫度比例因子 0.1217

break;

(45)

press-=31; // 減掉溫度於 600 度時壓力於 0 PSI 之零點 press=press*1210; // 乘以溫度比例因子 0.1210

break;

case 5: //溫度大於 50℃小於 59℃

press-=32; // 減掉溫度於 50 度時壓力於 0 PSI 之零點 press=press*1204; // 乘以溫度比例因子 0.1204

break;

case 4: //溫度大於 40℃小於 49℃

press-=32; // 減掉溫度於 40 度時壓力於 0 PSI 之零點 press=press*1201; // 乘以溫度比例因子 0.1201

break;

case 3: //溫度大於 30℃小於 39℃

press-=32; // 減掉溫度於 30 度時壓力於 0 PSI 之零點 press=press*1192; // 乘以溫度比例因子 0.1192

break;

case 2: //溫度大於 20℃小於 29℃

press -= 35; // 減掉溫度於 20 度時壓力於 0 PSI 之零點 press=press*1198; // 乘以溫度比例因子 0.1198

break;

case 1: //溫度大於 10℃小於 19℃

press -= 36; // 減掉溫度於 10 度時壓力於 0 PSI 之零點 press=press*1195; // 乘以溫度比例因子 0.1195 break;

case 0: //溫度大於 0℃小於 9℃

press -= 39; // 減掉溫度於 0 度時壓力於 0 PSI 之零點 press=press*1198; // 乘以溫度比例因子 0.1198

break;

}

press=press/1000; // 實際壓力讀值需除以 1000 }

void main(void) { int i;

for(;;) {

ADRead(); // 呼叫 ADRead 副程式

PldByteConversionBuffer = temp; //顯示現在溫度

DecimalToBcdAscii(&PldByteConversionBuffer, &Hundreds, &Tens, &Ones);

TxString("Temp=$",2);

TxData(Hundreds); //顯示十位之變數 TxData(Tens); //顯示各位之變數 TxString(".$",2);

TxData(Ones); //顯示小數點一位之變數 TxString("¢J / $",2);

PldByteConversionBuffer = press; //顯示經補償後之壓力讀值

DecimalToBcdAscii(&PldByteConversionBuffer, &Hundreds, &Tens, &Ones);

TxString("Press=$",2);

TxData(Hundreds); //顯示十位之變數 TxData(Tens); ); //顯示各位之變數

TxString(".$",2);

TxData(Ones); //顯示小數點一位之變數 TxString("psi$",1);

for (i = 0; i < 5000; i++);

};

}

(46)

4.6 Smart Sensor 運用於加速儀之應用

4.6.1 加速儀(Accelerometer)

加速儀是用來量測載具之加速度。當載具做加速度運動時,可由公式 4-4 及圖 4-36 之相關式,轉換求得載具在載具座標上之加速度 。此加速 度必須經座標轉換至導航座標後,以固定時間 dt 積分,即可得載具在導航 座標上之速度,此速度再經積分即可求得載具在導航座標上之位置[19]。

a

x

加速度之計算方式如下所示:

(

a bias

) /

a1

x

V V SF

a =

x

(公式 4-4) 其中 a :載具縱軸(朝北)方向之加速度x

( m / sec

2

)

ax

V

: 加速儀之輸出電壓(Volts)

V

bias : 加速儀之輸出參考電壓(Volts)

V

g : 地球重力場在 Z 軸上所造成的電壓輸出(2.5 Volts)

1

SF

a :比例因子(2.5Volts/g) 1g = 9.8

( m / sec

2

)

加速儀輸出電壓與傾斜角之關係如圖 4-34 所示:

(47)

-90 0 90 Slope Angle (deg)

Output Voltage Va -2.5 0 2 .5

θ

圖 4-36 加速儀輸出電壓與傾斜角之關係圖

4.6.2 硬體及軟體之規劃:

圖 4-37 為加速儀資料讀取與加速度計算方塊圖,實際電路如圖 4- 38,因加速儀之輸出電壓為正負電壓模式,故需將輸入電位提升 2.5V,提 供 TTL 單電源模式使用。

3 1 5 M H z

RF

無線發射傳輸

Max 232 RS232 放大器

3 1 5 M H z

RF 無線接收

PC 顯示 加速度讀值 Motorola MCU

讀取加速儀感 測器之電壓變 化量並由 MCU 計算結果 OPA 反

相及電 位提升

加速儀

sensor

圖 4-37 加速儀資料讀取與加速度計算方塊圖

(48)

圖 4-38 加速儀資料讀取電路 無線傳輸模組介紹:

使 用 益 眾 科 技 所 生 產 之 3 1 5 M H z R F 數 據 傳 輸 模 組 ,運用於加速儀資料 之讀取。( 如 圖 4-39)

功能與特色

1.包含發射模組及接收模組,可作為 PC 無線傳輸周邊裝置(如無線滑鼠、

無線 Keyboard)及各類無線搖控器(如搖控車)的主要組件。

2.傳輸性能穩定,資料正確不漏失。

3.調變及解調變方式 : ASK 方式(調幅) 4.傳輸頻率 : 315MHZ

5.傳輸速率 : 4800bps 6.接收靈敏度 : -103dBm

7.電源電壓 : 發射模組為 2~12VDC,接收模組為 4.5~5.5VDC 8.電力消耗 : 發射模組為 8.0mA/12V,接收模組為 3mA/5.5V

(49)

圖 4-39 無線傳輸模組

其中主要的零組件為 LINX 公司所生產的發射TXM-XXX-LC 與接收RXM- XXX-LC 晶片。其中 XXX 代表頻率,例如 TXM-315-LC 即代表使用 315Mhz 來 發射訊號。

發射模組 (圖 4-40 為簡易發射電路)

發射模組為輸入電壓為 2~12VDC,在此設定+5V 為 TTL 之輸入準位。

圖 4-40 RF 發射電路

(50)

接收模組(圖-41 為接收電路)

接收模組輸入電壓為 4.5~5.5VDC,在此同樣設定為+5V 為 TTL 之輸出準 位。

圖 4-41 RF 接收電路

圖 4-42 加速儀資料讀取之軟體控制流程圖,主要將 AD 輸入之訊號分 為兩類:設定 2.5V 以上為加速,2.5V 以下為減速。計算值由各副程式獨立 計算。

(51)

開始

68HC908QT4 Smart Sensor 應用於加速儀

呼叫 RS232() 副程式 將加速度變化量傳送出去

轉換 AD 讀值 並計算成為實際之加速度

結束 AD 轉換器 enable 讀取AD通道1之讀值

呼叫加速計算之 副程式

加速□ 減速

呼叫減速計算之 副程式

回傳計算值 判斷加速

或減速

圖 4-42 加速儀資料讀取之軟體流程圖

(52)

4.6.3 靭體(firmware):

#define TxdOut 0x20 // 設定 PA-5 為 RS232 Tx 之 connector

unsigned char Hundreds, Tens, Ones; //設定變數 int A,ad=0;

signed short PldByteConversionBuffer;

static byte myValues[1]; //設定一個 AD 通道數

//副程式

TxdDelay() TxData() TxString()

ConvertToBcdAscii()

上述四項副程式與之前相同, 設定為共用之副程式。

void plus(void) //加速時所使用計算副程式 {

A=ad-128; //8Bit ADC 之變化量為 256, 設定 2.5V 為加速儀之停止電壓,即需減掉 128 A *= 10; //先將 A 乘以 10 倍

A /= 51; //每一伏特的變化量為 51 A *= 98; //1g = 9.8

( m / sec

2

)

A /= 250; //除以比例因子(2.5Volts/g) PldByteConversionBuffer = A;

DecimalToBcdAscii(&PldByteConversionBuffer, &Hundreds, &Tens, &Ones);

TxString("A=$",2);

}

void minus(void) //減速時所使用計算副程式 {

ad -= 128;

ad = ad * -1; //減速時給予一負值,其餘計算方式與加速時相同

A = ad * 10;

A /= 51;

A *= 98;

A /= 250;

PldByteConversionBuffer = A;

DecimalToBcdAscii(&PldByteConversionBuffer, &Hundreds, &Tens, &Ones);

TxString("A=-$",2); //顯示負號 }

void main(void) { byte err;

int i;

for(;;) {

err = AD1_Measure(TRUE); //AD 轉換器 Eenable 資料讀取

(53)

ad = myValues[0];

if(ad>128) //判別是否大於 2.5V,則為加速 plus();

else

minus(); //判別是否小於 2.5V,則為減速

TxData(Tens); //傳送加速度值,個位數 TxString(".$",2);

TxData(Ones); //傳送加速度值,小數點一位數

TxString("m/sec2 $",1);

} }

(54)

4.7 Smart Sensor 運用於陀螺儀(Gyroscope)之應用

4.7.1 陀螺儀(Gyroscope):

陀螺儀是用來量測飛行載具的旋轉角速度。當載具運動時,只有在轉彎 的動作發生,才會有角速度的輸出。對固定的取樣速率而言,我們只要知 道陀螺儀所量測到的載具角速度,經積分後即可得知載具的姿態角。當量 取各軸上陀螺儀的電壓輸出,經圖 4-43 相關式及 4-5 以公式轉換後,就可 以得到載具在俯仰(Pitching)、滾轉(Rolling)及偏航(Yawing) ,三個方 向的角速度變化了。[17]

角速度之計算,可由以下公式求得:

ωx

= ( V

Gx

V

ref

) / SF

G1 (公式 4-5) 其中 ωx:載具 軸,之角速度(deg/sec)

x

V

Gx:陀螺儀之 軸,方向輸出電壓(Volts)

x

V

ref :陀螺儀輸出參考電壓(正常為 2.5 Volts)

SF

G1:陀螺儀之 Scale Factor(22.2 mV/deg/sec)

-90 0 90 Angular Velocity(deg/sec)

Output Voltage Vg 0.5 2 .5 4.5

(55)

4.7.2 硬體及軟體之規劃:

圖 4-44 陀螺儀資料讀取電路方塊圖, 實際電路如圖 4-45,因實驗室 之加速儀輸出電壓為負電壓模式,故需將輸入電壓反向放大,在此同時也 使用上節之無線收發模組來發射及讀取陀螺儀之資料,圖 4-46 為軟體流程 圖,同樣將 AD 輸入之訊號分為兩類 : 設定 2.5V 以上為正轉,2.5V 以下為 反轉。計算值由各副程式獨立計算。

3 1 5 M H z

RF

無線發射傳輸

Max 232 RS232 放大器 Motorola MCU

讀取陀螺儀感 測器之電壓變 化量並由 MCU 計算結果 OPA 反

相電路

陀螺儀

sensor

3 1 5 M H z

RF 無線接收

PC 顯示 角速度讀值

圖 4-44 陀螺儀資料讀取電路方塊圖

圖 4-45 陀螺儀資料讀取電路

(56)

開始

68HC908QT4 Smart Sensor 應用於陀螺儀

呼叫 RS232() 副程式 將變化角度變化量傳送出去

轉換 AD 讀值

並計算成為實際之變化角度

結束

AD 轉換器 enable 讀取AD通道1之讀值

判斷正轉 或反轉

呼叫正轉計算之 副程式

正轉 反轉

呼叫反轉計算之 副程式

回傳計算值

圖 4-46 軟體流程圖

(57)

4.7.3 靭體(firmware):

#define TxdOut 0x20 // 設定 PA-5 為 RS232 Tx 之

connector

unsigned char Hundreds, Tens, Ones; //設定變數 int W;

signed short PldByteConversionBuffer;

short ad;

static byte myValues[1]; //設定一個 AD 通道數 //副程式

TxdDelay() TxData() TxString()

ConvertToBcdAscii()

上述四項副程式與之前相同, 設定為共用之副程式

void plus(void) //正角度時所使用計算副程式 {

W=ad-128; //8Bit ADC 之變化量為 256, 設定 2.5V 為加速儀之停止電壓,即需減掉 128 W=W*100; //先將 A 乘以 100 倍

W=W/51; //計算電壓值, 每一伏特的變化量為 51 W=W*100;

W=W/222; //陀螺儀之 Scale Factor(22.2 mV/deg/sec)

PldByteConversionBuffer = W;

DecimalToBcdAscii(&PldByteConversionBuffer, &Hundreds, &Tens, &Ones);

TxString("W=$",2);

TxData(Hundreds); //傳送加角速度值,百位數 TxData(Tens); //傳送加角速度值,十位數 TxData(Ones); //傳送加角速度值,個位數

TxString("deg/sec$",1);

}

void minus(void) //負角度時所使用計算副程式 {

ad=ad-128;

ad=ad * -1; //負角度時給予一負號,其餘計算方式與加速時相同 W=ad*100;

W=W/51; //計算電壓值, 每一伏特的變化量為 51 W=W*100;

W=W/222; //陀螺儀之 Scale Factor(22.2 mV/deg/sec)

PldByteConversionBuffer = W;

DecimalToBcdAscii(&PldByteConversionBuffer, &Hundreds, &Tens, &Ones);

TxString("W=-$",2);

TxData(Hundreds);

TxData(Tens);

TxData(Ones);

TxString("deg/sec$",1);

}

(58)

void main(void) {

byte err;

int i;

for(;;) {

err = AD1_Measure(TRUE);

err = AD1_GetValue((byte *)myValues);

ad = myValues[0];

if(ad>128) plus();

else minus();

} }

(59)

第 5 章 結論與未來展望 5.1 結論

IEEE 1451 標 準 由 IEEE 1451.1 、 1451.2 、 P1451.3 、 P1451.4 和 P1451.5 組成。它定義了一套連接感測器,到網路的標準化通用介面,建立 了網路化智慧感測器的框架。這使得感測器製造商,有能力支援多種網 路,然而 IEEE 1451,標準在實際應用中仍存在著一些困難。雖然美國積極 推展其架構與應用,但國際間的認同感尚未普及化。因此短期智慧型感測 器仍無法大量商業化,主因為 NCAP 之制定,必須再使用一部個人電腦,或 工業用之電腦介面卡,來進行網路連線。因其售價仍太高,若要普及化,

必須有低價經濟型的 NCAP。目前 Telemonitor 公司已推出經濟型的 NCAP 售 價約$250 美元,相信距離普及化的目標已不遠了。

另一方面本研究亦整合 MOTOROLA 68HC908QT/Y 系列 MCU 及 RF 無線傳 輸模組

並運用 C 語言,來建構一智慧型感測模組,符合 1451.5 無線傳輸 規範。因使用無線傳輸資訊,電路無熱插拔之效應,因此擁有“即插即用 (plug-and-play)"的相容性。實現了以 IEEE 1451 標準的一經濟型智慧感 測器。目前本研究已完成 IEEE Std 1451.1 可上網之資訊模組,使感測器 介 面 可 與 NCAP 相 連 。 另 外 也 完 成 IEEE p1451.3 小 匯 流 排 界 面 模 組

(60)

(TBIM) 、IEEE p1451.4 類比/數位混合模組,及 IEEE p1451.5 無線資訊 傳輸介面設計等研究。

5.2 未來展望

IEEE 1451智慧型感測器

設計目標(Goals)應朝下列三個方向前進:

1. 設計一系列具備網際網路功能的智慧型感測器,連線使用Ethernet,但 不需要個人電腦。

2. 感測器體積儘可能縮小,以及具價格低之優勢。

3. 能有最大的彈性與運用及容易操作使用“即插即用"。

4. 可以使用更新且效率更高之 8-bit MCU (M68HC908AP64)做為應用與計算 核心,此 IC 內建有紅外線傳輸模組、8-通道/10-BIT 之 ADC,及 63,368 bytes 的快閃記憶體。(如附件 C 之 1.4)

a. 無線傳輸部分可改用紅外線來做資料交換傳送,即不需外加無 線傳輸模組。

b. 8-通道/10-BIT 之 ADC,可外接 8 個感測器,同時感測器精確亦 相對提升。

(61)

c. 63,368 bytes 的快閃記憶體,能允許更大容量的程式儲存空 間,提供更多元化的程式服務,突破現有之 QT4 系列 MCU 4K byte Flash,僅能做單一應用之限制。

d. 因 MCU 之售價有差,因此必須先衡量價錢與效能因素,來決定 使用 MCU 的種類,QT4 建議售價為 0.7 美元,AP64 建議售價為 4.8 美元。

IEEE 1451 智慧型感測器,代表了下一代感測器技術的發展方向,網路 化智慧感測器介面標準 IEEE 1451 的提出,將可解決由網路進行監控的能 力。相信,隨著 IEEE P1451.3、IEEE P1451.4 標準的陸續制定、頒佈和執 行,基於 IEEE 1451 的網路化智慧感測器技術,已經不再停留在論證階段 或實驗室階段。越來越多成本低廉,具備網路化功能的智慧感測器正不斷 陸續上市,並且將會廣泛地影響著人類生活,尤如電腦之網際網路的普及 化、無線上網、無線通訊等等。

網路化智慧感測器將對家用電器、智慧型建築、工業系統監控、環境 監控及航空與國防軍事等領域帶來革命性影響,其廣闊的應用前景和經濟 效益不久將展現於世。

參考文獻

相關文件

 活用建築物本身擁有的磁場特性進行定位 ,因此可用來解決 上述問題。利用實驗型App取得智慧型手機地磁場感應器的數據,接著

VOCs 年用量大於 50 噸之工廠,應在廢棄排放口裝設 VOCs 濃度 監測器,並進行連續自動監測。3. 訂有 VOCs

本計畫會使用到 Basic Stamp 2 當作智慧型資源分類統的核心控制單元,以 BOE-BOT 面板接收感測元件的訊號傳送給 Basic Stamp 2 判斷感測資料,再由

第二章是介紹 MEMS 加工製程,包括體型微加工、面型微加工、LIGA、微 放電加工(Micro-EDM)、積體電路相容製造技術 CMOS MEMS 製程等。製作微 加速度感測器。本研究是選用台積電 0.35μm

無線感測網路是個人區域網路中的一種應用,其中最常採用 Zigbee 無線通訊協 定做為主要架構。而 Zigbee 以 IEEE802.15.4 標準規範做為運用基礎,在下一小節將 會針對 IEEE

接下來我們將討論切換的機制,因為在我們假設的網路環境下,所以 sink 是保持在接收資料的狀態。網路中所有的感測點都將資料往 sink 端傳送,但是

本系統結合 IEEE 1599 系統整合檔案與呼吸聲偵測功能,讓此播放器 讀取 IEEE 1599 音樂整合檔的 XML

建立測試裝置 (Test device) ,記下DeviceId 與