2014年10月13日 星期一
2014年9月7日 星期日
如何簡單快速的編譯並執行JAVA程式-以查詢即時股價為例
和大多數人一樣,我平時撰寫JAVA程式時,都是透過eclipse來編譯並執行。
但如果我只是想小幅修改並執行一支簡單的程式,實在不想勞師動眾去開啟eclipse呢?
或者需要在沒有eclipse的電腦上執行,但實在不想為了一支小程式再去下載佈署eclipse?
其實只要稍稍修改一下JAVA程式,再搭配bat指令即可做到,
當然,執行程式的電腦上必須有適當的JRE,這點我想不用多做說明。
以下以一個從Yahoo!奇摩股市抓特定股票股價的程式為例,說明如何低調的關心投資標的的股價。
JAVA程式:stock.java
我是先在eclipse寫好後,去workspace把java檔另存一份,
然後打開另存的java檔,把第一行的package xxx拿掉,就變成這樣:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.net.URL;
public class stock {
public static void main(String[] args) {
try{
String[] CodeStr = {"0050","2330","2498"};//鍵入股票代號,支數不限
String theURL = "";
URL u;
BufferedReader theHtml;
String name = "";
String nowTime = "";
String Recommand = "";
String nowPrice = "";
String nowBuyPrice = "";
String nowSellPrice = "";
String nowChange = "";
String nowDiffRate = "";
String nowQuantities = "";
String yesterdayPrice = "";
String opening = "";
String high = "";
String low = "";
for(int z = 0 ; z < 6000 ; z++){//執行次數只要可以cover開盤到收盤的時間即可
System.out.println("代號\t時間\t成交價\t買價\t賣價\t漲跌\t漲跌幅\t成交量\t昨收\t開盤\t最高\t最低");
for(int Code = 0 ; Code < CodeStr.length ; Code++ ){
try{
theURL = "http://tw.stock.yahoo.com/q/q?s="+CodeStr[Code];
u = new URL(theURL);
theHtml = new BufferedReader(new InputStreamReader(u.openStream()));
String theWholePackage = "";
while((theURL = theHtml.readLine())!=null){
theWholePackage = theWholePackage + theURL+"\n";
}
int s = theWholePackage.indexOf("href=\"/q/bc?s="+CodeStr[Code]+"\">");
int t = theWholePackage.indexOf("</a><br><a href=\"/pf/pfsel?stocklist="+CodeStr[Code]+";\"><font size=-1>");
name = theWholePackage.substring(s+20,t);
s = theWholePackage.indexOf("<td align=\"center\" bgcolor=\"#FFFfff\" nowrap>");
theWholePackage = theWholePackage.substring(s+44);
nowTime = theWholePackage.substring(0,5);
s = theWholePackage.indexOf("<td align=\"center\" bgcolor=\"#FFFfff\" nowrap>");
t = theWholePackage.indexOf("</b></td>");
nowPrice = theWholePackage.substring(s+47,t);
theWholePackage = theWholePackage.substring(t+8);
s = theWholePackage.indexOf("<td align=\"center\" bgcolor=\"#FFFfff\" nowrap>");
t = theWholePackage.indexOf("</td>");
nowBuyPrice = theWholePackage.substring(s+44,t);
theWholePackage = theWholePackage.substring(t+4);
s = theWholePackage.indexOf("<td align=\"center\" bgcolor=\"#FFFfff\" nowrap>");
t = theWholePackage.indexOf("</td>");
nowSellPrice = theWholePackage.substring(s+44,t);
theWholePackage = theWholePackage.substring(t+4);
s = theWholePackage.indexOf("<td align=\"center\" bgcolor=\"#FFFfff\" nowrap><font color=#009900>");
theWholePackage = theWholePackage.substring(s+83);
t = theWholePackage.indexOf("<td align=\"center\" bgcolor=\"#FFFfff\" nowrap>");
theWholePackage = theWholePackage.substring(t);
s = theWholePackage.indexOf("<td align=\"center\" bgcolor=\"#FFFfff\" nowrap>");
t = theWholePackage.indexOf("</td>");
nowQuantities = theWholePackage.substring(s+44,t);
theWholePackage = theWholePackage.substring(t+4);
s = theWholePackage.indexOf("<td align=\"center\" bgcolor=\"#FFFfff\" nowrap>");
t = theWholePackage.indexOf("</td>");
yesterdayPrice = theWholePackage.substring(s+44,t);
theWholePackage = theWholePackage.substring(t+4);
s = theWholePackage.indexOf("<td align=\"center\" bgcolor=\"#FFFfff\" nowrap>");
t = theWholePackage.indexOf("</td>");
opening = theWholePackage.substring(s+44,t);
theWholePackage = theWholePackage.substring(t+4);
s = theWholePackage.indexOf("<td align=\"center\" bgcolor=\"#FFFfff\" nowrap>");
t = theWholePackage.indexOf("</td>");
high = theWholePackage.substring(s+44,t);
theWholePackage = theWholePackage.substring(t+4);
s = theWholePackage.indexOf("<td align=\"center\" bgcolor=\"#FFFfff\" nowrap>");
t = theWholePackage.indexOf("</td>");
low = theWholePackage.substring(s+44,t);
theWholePackage = theWholePackage.substring(t+4);
double ch1 = Double.parseDouble(nowPrice);
double ch2 = Double.parseDouble(yesterdayPrice);
double ch = 0 ;
double chr = 0 ;
if(ch1 - ch2 >= 0)ch = ch1 - ch2 + 0.005 ;
else ch = ch1 - ch2 - 0.005 ;
ch = (int)(ch*1000)/10;
ch = ch/100;
chr = (ch*100)/ch2;
chr = (int)(chr*1000)/10;
chr = chr/100;
if(ch<0){
nowChange = "-"+String.valueOf(-ch);
nowDiffRate = "-"+String.valueOf(-chr)+"%";
}else{
nowChange = "+"+String.valueOf(ch);
nowDiffRate = "+"+String.valueOf(chr)+"%";
}
System.out.println(CodeStr[Code]+"\t"+nowTime+"\t"+nowPrice+"\t"+nowBuyPrice
+"\t"+nowSellPrice+"\t"+nowChange+"\t"+nowDiffRate+"\t"+nowQuantities+"\t"+yesterdayPrice
+"\t"+opening+"\t"+high+"\t"+low);
Thread.sleep(1000);//停一秒
}catch(java.io.FileNotFoundException e1){
System.out.println(e1);
Thread.sleep(1000);
continue;
}catch(java.lang.StringIndexOutOfBoundsException e2){
System.out.println(e2);
Thread.sleep(1000);
continue;
}
}
System.out.println();
Thread.sleep(1000);//停一秒
}
}catch(Exception e){
System.out.println(e.toString());
}
}
}適當的秒數暫停是為了避免畫面跳太快看不清楚,同時也表示對Yahoo!奇摩股市伺服器的尊重。
bat檔:stock.bat,bat的檔名可以隨便取,但前面java的檔名一定要和程式中的class名一樣,雖然是常識,但還是稍微提醒一下。
如下使用cmd指令把java檔先編譯後執行
@echo off
color 0E
javac stock.java
java -classpath . stock
pause
其中,color 0E是用來指定執行畫面的顏色,第一碼是底色,第二碼是字的顏色,可以用的顏色及代碼有:
0 = 黑色
1 = 藍色
2 = 綠色
3 = 藍綠色
4 = 紅色
5 = 紫色
6 = 黃色
7 = 白色
8 = 灰色
9 = 淡藍色
A = 淡綠色
B = 淡藍綠色
C = 淡紅色
D = 淡紫色
E = 淡黃色
F = 亮白色
可自行視狀況搭配低調而清楚的顏色
但如果我只是想小幅修改並執行一支簡單的程式,實在不想勞師動眾去開啟eclipse呢?
或者需要在沒有eclipse的電腦上執行,但實在不想為了一支小程式再去下載佈署eclipse?
其實只要稍稍修改一下JAVA程式,再搭配bat指令即可做到,
當然,執行程式的電腦上必須有適當的JRE,這點我想不用多做說明。
以下以一個從Yahoo!奇摩股市抓特定股票股價的程式為例,說明如何低調的關心投資標的的股價。
JAVA程式:stock.java
我是先在eclipse寫好後,去workspace把java檔另存一份,
然後打開另存的java檔,把第一行的package xxx拿掉,就變成這樣:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.net.URL;
public class stock {
public static void main(String[] args) {
try{
String[] CodeStr = {"0050","2330","2498"};//鍵入股票代號,支數不限
String theURL = "";
URL u;
BufferedReader theHtml;
String name = "";
String nowTime = "";
String Recommand = "";
String nowPrice = "";
String nowBuyPrice = "";
String nowSellPrice = "";
String nowChange = "";
String nowDiffRate = "";
String nowQuantities = "";
String yesterdayPrice = "";
String opening = "";
String high = "";
String low = "";
for(int z = 0 ; z < 6000 ; z++){//執行次數只要可以cover開盤到收盤的時間即可
System.out.println("代號\t時間\t成交價\t買價\t賣價\t漲跌\t漲跌幅\t成交量\t昨收\t開盤\t最高\t最低");
for(int Code = 0 ; Code < CodeStr.length ; Code++ ){
try{
theURL = "http://tw.stock.yahoo.com/q/q?s="+CodeStr[Code];
u = new URL(theURL);
theHtml = new BufferedReader(new InputStreamReader(u.openStream()));
String theWholePackage = "";
while((theURL = theHtml.readLine())!=null){
theWholePackage = theWholePackage + theURL+"\n";
}
int s = theWholePackage.indexOf("href=\"/q/bc?s="+CodeStr[Code]+"\">");
int t = theWholePackage.indexOf("</a><br><a href=\"/pf/pfsel?stocklist="+CodeStr[Code]+";\"><font size=-1>");
name = theWholePackage.substring(s+20,t);
s = theWholePackage.indexOf("<td align=\"center\" bgcolor=\"#FFFfff\" nowrap>");
theWholePackage = theWholePackage.substring(s+44);
nowTime = theWholePackage.substring(0,5);
s = theWholePackage.indexOf("<td align=\"center\" bgcolor=\"#FFFfff\" nowrap>");
t = theWholePackage.indexOf("</b></td>");
nowPrice = theWholePackage.substring(s+47,t);
theWholePackage = theWholePackage.substring(t+8);
s = theWholePackage.indexOf("<td align=\"center\" bgcolor=\"#FFFfff\" nowrap>");
t = theWholePackage.indexOf("</td>");
nowBuyPrice = theWholePackage.substring(s+44,t);
theWholePackage = theWholePackage.substring(t+4);
s = theWholePackage.indexOf("<td align=\"center\" bgcolor=\"#FFFfff\" nowrap>");
t = theWholePackage.indexOf("</td>");
nowSellPrice = theWholePackage.substring(s+44,t);
theWholePackage = theWholePackage.substring(t+4);
s = theWholePackage.indexOf("<td align=\"center\" bgcolor=\"#FFFfff\" nowrap><font color=#009900>");
theWholePackage = theWholePackage.substring(s+83);
t = theWholePackage.indexOf("<td align=\"center\" bgcolor=\"#FFFfff\" nowrap>");
theWholePackage = theWholePackage.substring(t);
s = theWholePackage.indexOf("<td align=\"center\" bgcolor=\"#FFFfff\" nowrap>");
t = theWholePackage.indexOf("</td>");
nowQuantities = theWholePackage.substring(s+44,t);
theWholePackage = theWholePackage.substring(t+4);
s = theWholePackage.indexOf("<td align=\"center\" bgcolor=\"#FFFfff\" nowrap>");
t = theWholePackage.indexOf("</td>");
yesterdayPrice = theWholePackage.substring(s+44,t);
theWholePackage = theWholePackage.substring(t+4);
s = theWholePackage.indexOf("<td align=\"center\" bgcolor=\"#FFFfff\" nowrap>");
t = theWholePackage.indexOf("</td>");
opening = theWholePackage.substring(s+44,t);
theWholePackage = theWholePackage.substring(t+4);
s = theWholePackage.indexOf("<td align=\"center\" bgcolor=\"#FFFfff\" nowrap>");
t = theWholePackage.indexOf("</td>");
high = theWholePackage.substring(s+44,t);
theWholePackage = theWholePackage.substring(t+4);
s = theWholePackage.indexOf("<td align=\"center\" bgcolor=\"#FFFfff\" nowrap>");
t = theWholePackage.indexOf("</td>");
low = theWholePackage.substring(s+44,t);
theWholePackage = theWholePackage.substring(t+4);
double ch1 = Double.parseDouble(nowPrice);
double ch2 = Double.parseDouble(yesterdayPrice);
double ch = 0 ;
double chr = 0 ;
if(ch1 - ch2 >= 0)ch = ch1 - ch2 + 0.005 ;
else ch = ch1 - ch2 - 0.005 ;
ch = (int)(ch*1000)/10;
ch = ch/100;
chr = (ch*100)/ch2;
chr = (int)(chr*1000)/10;
chr = chr/100;
if(ch<0){
nowChange = "-"+String.valueOf(-ch);
nowDiffRate = "-"+String.valueOf(-chr)+"%";
}else{
nowChange = "+"+String.valueOf(ch);
nowDiffRate = "+"+String.valueOf(chr)+"%";
}
System.out.println(CodeStr[Code]+"\t"+nowTime+"\t"+nowPrice+"\t"+nowBuyPrice
+"\t"+nowSellPrice+"\t"+nowChange+"\t"+nowDiffRate+"\t"+nowQuantities+"\t"+yesterdayPrice
+"\t"+opening+"\t"+high+"\t"+low);
Thread.sleep(1000);//停一秒
}catch(java.io.FileNotFoundException e1){
System.out.println(e1);
Thread.sleep(1000);
continue;
}catch(java.lang.StringIndexOutOfBoundsException e2){
System.out.println(e2);
Thread.sleep(1000);
continue;
}
}
System.out.println();
Thread.sleep(1000);//停一秒
}
}catch(Exception e){
System.out.println(e.toString());
}
}
}適當的秒數暫停是為了避免畫面跳太快看不清楚,同時也表示對Yahoo!奇摩股市伺服器的尊重。
bat檔:stock.bat,bat的檔名可以隨便取,但前面java的檔名一定要和程式中的class名一樣,雖然是常識,但還是稍微提醒一下。
如下使用cmd指令把java檔先編譯後執行
@echo off
color 0E
javac stock.java
java -classpath . stock
pause
其中,color 0E是用來指定執行畫面的顏色,第一碼是底色,第二碼是字的顏色,可以用的顏色及代碼有:
0 = 黑色
1 = 藍色
2 = 綠色
3 = 藍綠色
4 = 紅色
5 = 紫色
6 = 黃色
7 = 白色
8 = 灰色
9 = 淡藍色
A = 淡綠色
B = 淡藍綠色
C = 淡紅色
D = 淡紫色
E = 淡黃色
F = 亮白色
可自行視狀況搭配低調而清楚的顏色
2014年6月8日 星期日
C++ 影像串流 Raspberry Pi camera RTSP 影像串流
http://jex.logdown.com/posts/176992-raspberry-pi-camera-rtsp-video-streaming
發生錯誤 :
RTSP ( 如果已經了解 http 的話, 這個應該不難. RFC2326 )
RTCP
RTP
SDP
MPEG2-TS
Unicast
Multicast
IGMP ( for IPv4 )
MLD ( for IPv6 )
Demux
至於 encoder , decoder 就看您是否需要深入了解了.
推薦幾個常用的 open source 的 library:
live555
live555 包括 streaming server ( live555mediaserver ), streaming client ( openRTSP ).
這個 library 主要是提供網路層的資料傳輸. client 有沒有 player 我就不清楚了.
VLC
vlc 底層是以 live555 實作的, 並在同一支程式提供了 streaming server,
streaming client, 也將 decoder 整合進 player, 可以直接播放, 看到畫面.
GStreamer
media streaming framework 一個很多 embedded system 都在使用的 framework.
這幾個也都是跨平台的 library, live555 目前好像只能當 rtsp server.
VLC 可以用來當各種 server, 只是似乎沒有 live555 穩定. 但他的 multicast server 很方便使用,
可以將很多 multicast stream 都描述在一個檔案內, 一次全部打出來.
使用 Multicast 時, 如果在 local 環境測試, 請小心把網路頻寬佔滿.
Raspberry Pi camera RTSP 影像串流
什麼是 RTP/RTCP/RTSP/RTMP
- RTP (Real-time Transport Protocol) 是一種傳遞音訊和視訊的協定, 主要應用在 UDP 上, 大多用在一對一傳播
- RTCP (Real-time Transport Control Protocol) 為 RTP 提供 out-of-band 控制, 本身不傳輸數據, 但和RTP一起協作將 media data 打包和發送
- RTSP (Real Time Streaming Protocol) 控制聲音及影像的多媒體串流協定, 運作跟 HTTP/1.1 類似, 支援 Multicast, 不強調時間同步等特性, 通常處理 RTP 及 RTCP 協定使用, 可選擇 TCP 或 UDP 傳送
- RTMP(Real Time Messaging Protocol) 是 Adobe Flash 的多媒體串流協定
什麼是 live555
是一套 C++ 的函式庫, 可以實作出 RTSP/RTP server, VLC 是基於此函式庫開發的
支援傳輸方式
- RTP over UDP
- RTP over RTSP
- RTP/RTSP over HTTP
- 等等..
支援的影音格式
- H.264
- MPEG4
- MP3
- 等等..
Install live555
Easiest way is first ensure you have the appropriate compiler:
sudo apt-get install build-essential
then make sure you don't have the repository live555 libraries on your system:
sudo apt-get remove liblivemedia-dev
and finally download, build and install the libraries:
cd /tmp
wget http://www.live555.com/liveMedia/public/live555-latest.tar.gz
tar xvf live555-latest.tar.gz
cd live
./genMakefiles linux
make
sudo cp -r /tmp/live /usr/lib
make clean
啟動 RTSP server
將影音檔 (h.264, mp4 etc..) copy 到
/usr/lib/live/mediaServer
下h.264 副檔名為.264
, mp4 副檔名為.m4e
執行
cd /usr/lib/live/mediaServer
./live555MediaServer
安裝並打開 VLC 播放器, 選擇播放網路串流,
輸入 :
rtsp://54.250.138.78:8554/akb.m4e
建議在/usr/lib/live/mediaServer
建立 my_video 資料夾, 將影音與程式分開 (rtsp://54.250.138.78:8554/my_video/akb.m4e
)
用 Raspberry Pi camera 播放即時影像
啟動 RTSP server 及接收 Raspberry Pi 傳來的資料儲存成檔案:
cd /usr/lib/live/mediaServer/my_video
touch rpi.264
nc -l 8080 | pv -b > rpi.264
將 camera 的影像傳到遠端 server :
raspivid -t 999999 -h 180 -w 270 -o - | pv -b | nc 54.250.138.76 8080
VLC -> open network :
rtsp://54.250.138.78:8554/my_video/rpi.264
後記
想要做一個能讓很多人同時看即時影像的 server 另一方面是考量到 Raspberry Pi 的效能,
所以才把 camera 跟 RTSP 分開, 但效果不太好, 傳輸速率很慢..即使不用 wifi 傳輸也一樣很慢,
大概過 10 幾秒才能看到影像 (這已經是將影像的畫質調很低的狀態下),
不知道是不是我的 ec2 免費方案不夠力的關係呢?
還是有更好的方法可以改進?
對於我這種三角貓等級的工程師來說只能打打指令過過乾癮,
從頭到尾沒寫半行 code 做出來的 偽 即時影像還蠻心虛的,
因為我還是不了解底層到底做了哪些事..
而且用現成的 RTSP server 不就沒辦法針對影片進行權限區分了嗎?
現在腦中還是充滿很多問號..
Q & A
發生錯誤 : StreamParser internal error (149997 + 4 > 150000) Aborted (core dumped)
原因 : 傳送一幀非常大的 H.264 影像 (default 150000) 造成的
查到的解決方法 :
修改
/usr/lib/live/liveMedia/StreamParser.cpp
,
找到
BANK_SIZE
建議將值設為 150000~300000 之間
改完要 compile :
cd /usr/lib/live
sudo make
但我仍然還是一樣發生此 buffer 問題, 但播放 mp3 及 aac 沒問題
此情況似乎是發生在 H.264 parsing 才有的問題, 或是 mp4 都有這問題, 試了很多 mp4 影片, 都還是一樣發生
但這邊下載的.ts
影片是能播放的
隨便說說..
現在多數瀏覽器支援播放 H.264 影片但可惜沒有瀏覽器的 HTML5 播放器支援播放 RTSP 串流影片, 所以只能透過像 VLC 這種播放器來播放,
目前 RTMP 應該算是 live streaming 的通用解, 看來要擺脫 flash 還有很長一段路要走
比較可惜的還有 webm (vp8) 無法普及, 不然它的編解碼效率也很不錯, 重要的是它是開源的
其他
Realplayer : 原生不支援 H.264 影片, 必須安裝 quicktime plugin 才能對 H.264 解碼
Quicktime player : 不支援 RTP/AVP/TCP 傳輸, RTP/AVP (UDP) 傳輸不包括 NAT 打洞, 因此唯一適合的傳輸是 HTTP tunneling
VLC player : RTP/AVP 傳輸也不支援 NAT 打洞, 但可以用 RTP/AVP/TCP 傳輸
----------------
http://www.programmer-club.com.tw/ShowSameTitleN/vc/39380.htmlRTSP ( 如果已經了解 http 的話, 這個應該不難. RFC2326 )
RTCP
RTP
SDP
MPEG2-TS
Unicast
Multicast
IGMP ( for IPv4 )
MLD ( for IPv6 )
Demux
至於 encoder , decoder 就看您是否需要深入了解了.
推薦幾個常用的 open source 的 library:
live555
live555 包括 streaming server ( live555mediaserver ), streaming client ( openRTSP ).
這個 library 主要是提供網路層的資料傳輸. client 有沒有 player 我就不清楚了.
VLC
vlc 底層是以 live555 實作的, 並在同一支程式提供了 streaming server,
streaming client, 也將 decoder 整合進 player, 可以直接播放, 看到畫面.
GStreamer
media streaming framework 一個很多 embedded system 都在使用的 framework.
這幾個也都是跨平台的 library, live555 目前好像只能當 rtsp server.
VLC 可以用來當各種 server, 只是似乎沒有 live555 穩定. 但他的 multicast server 很方便使用,
可以將很多 multicast stream 都描述在一個檔案內, 一次全部打出來.
使用 Multicast 時, 如果在 local 環境測試, 請小心把網路頻寬佔滿.
2014年5月24日 星期六
2014年4月20日 星期日
2014年3月28日 星期五
【Vishay】 電子煙火啟動器 - 薄膜電阻晶片
http://www.eettaiwan.com/ART_8800495197_617739_NP_f839bdee.HTM
Vishay針對煙火工程師(pyrotechnic engineers)需求推出了特殊薄膜電阻晶片;新型電子煙火啟動器電阻晶片(EPIC)為首款可提供焦耳效應點火(Joule effect ignition)的此類元件,可實現50μs的超快速點火時間以及高達70%的無火/點火比(fire/all fire ratio)。
EPIC電阻(也稱為橋式電阻)可在精確的電熱轉換過程中將電能轉換成熱能,以用於在受控的能量反應中啟動一系列點火反應。Vishay的新型電阻專為以下系統中的點火頭(squib header)應用而進行了最佳化──部署了氣囊和其他安全設備的汽車安全系統、軍用飛行員彈射系統、機載導彈的爆炸螺栓脫離、干擾物投放器、炮彈啟動器及反坦克地雷;採礦及爆破系統。
憑藉借低至50μJ的點火能量和2R~10R的電阻範圍,該元件為設計人員提供了極其可預測、可再生及可靠的行為。該電阻採用標準0603封裝尺寸,根據要求還可提供其它尺寸,其具有易於設置的點火水準,並且與各種煙火混合物相容,甚至是那些無需雷管的煙火混合物。
目前Vishay新型EPIC電阻的樣品和量產已可提供。
2014年3月8日 星期六
2014年2月9日 星期日
2014年2月7日 星期五
壓力Sensor and IC
1、應變片壓力感測器原理:下面主要介紹壓阻式壓力感測器。在了解壓阻式力感測器時,我們首先認識一下電阻應變片這種元件。電阻應變片的工作原理:
2、陶瓷壓力感測器原理:
4、藍寶石壓力感測器原理
http://cache.freescale.com/files/sensors/doc/data_sheet/MPXV5004G.pdf
- 金屬電阻應變片的工作原理是吸附在基體材料上應變電阻隨機械形變而產生阻值變化的現象,俗稱為電阻應變效應。
- 以金屬絲應變電阻為例,當金屬絲受外力作用時,其長度和截面積都會發生變化,其電阻值即會發生改變,假如金屬絲受外力作用而伸長時,其長度增加,而截面積 減少,電阻值便會增大。當金屬絲受外力作用而壓縮時,長度減小而截面增加,電阻值則會減小。只要測出加在電阻的變化(通常是測量電阻兩端的電壓),即可獲 得應變金屬絲的應變情況。
|
- 抗腐蝕的陶瓷壓力感測器沒有液體的傳遞,壓力直接作用在陶瓷膜片的前表面,使膜片產生微小的形變,厚膜電阻印刷在陶瓷膜片的背面,連接成一個惠斯通電橋 (閉橋),由於壓敏電阻的壓阻效應,使電橋產生一個與壓力成正比的高度線性、與激勵電壓也成正比的電壓信號,標準的信號根據壓力量程的不同標定為2.0 / 3.0 / 3.3 mV/V等,可以和應變式感測器相兼容。
- 通過激游標定,感測器具有很高的溫度穩定性和時間穩定性,感測器自帶溫度補償0~70℃,並可以和絕大多數介質直接接觸。
4、藍寶石壓力感測器原理
- 利用應變電阻式工作原理,採用硅-藍寶石作為半導體敏感元件,具有無與倫比的計量特性。
- 藍寶石系由單晶體絕緣體元素組成,用硅-藍寶石半導體敏感元件製造的壓力感測器和變送器,可在最惡劣的工作條件下正常工作,並且可靠性高、精度好、溫度誤差極小、性價比高。
- 表壓壓力感測器和變送器由雙膜片構成:鈦合金測量膜片和鈦合金接收膜片。印刷有異質外延性應變靈敏電橋電路的藍寶石薄片,被焊接在鈦合金測量膜片上。被測 壓力傳送到接收膜片上。在壓力的作用下,鈦合金接收膜片產生形變,該形變被硅-藍寶石敏感元件感知后,其電橋輸出會發生變化,變化的幅度與被測壓力成正 比。
- 感測器的電路能夠保證應變電橋電路的供電,並將應變電橋的失衡信號轉換為統一的電信號輸出(0-5,4-20mA或0-5V)。在絕壓壓力感測器和變送器 中,藍寶石薄片,與陶瓷基極玻璃焊料連接在一起,起到了彈性元件的作用,將被測壓力轉換為應變片形變,從而達到壓力測量的目的。
http://cache.freescale.com/files/sensors/doc/data_sheet/MPXV5004G.pdf
訂閱:
文章 (Atom)