步驟1:
這是一個(gè)示意圖,顯示了三豐電纜的接線方式。在此應(yīng)用程序中未使用的電纜的千分尺末端有一個(gè)紅色的“數(shù)據(jù)”按鈕,因此我們決定將其用作“菜單”按鈕。
步驟2 :將電纜連接到Arduino
Arduino連接帶有一些組件的三豐電纜。一個(gè)2x5帶罩的插頭,與電纜的母插頭配對,帶有一個(gè)PN2222A晶體管和兩個(gè)10k Ohm電阻器。一個(gè)電阻與PN2222A一起使用以保護(hù)千分尺(或卡尺)免受過大的電壓,另一個(gè)電阻將“菜單”按鈕偏置到+ 5vdc。
我已經(jīng)提供了PN2222A的數(shù)據(jù)表和驅(qū)動(dòng)器我們現(xiàn)在使用的基于CH340的Arduino Nano。
步驟3:讀取Mitutoyo輸出
代碼(感謝Mark Burmistrak對我的原始內(nèi)容所做的修改),它讀取數(shù)據(jù)流,以正確的順序重新組合并打印測量結(jié)果,如下所示:
int req = 5;//mic REQ線通過q1到達(dá)引腳5(arduino高電平將請求線拉低)
int dat = 2;//mic數(shù)據(jù)線連接到引腳2
int clk = 3;//mic時(shí)鐘線轉(zhuǎn)到引腳3
int i = 0;
int j = 0;
int k = 0;
int signCh = 8;
int符號= 0;
int十進(jìn)制;
float dpp;
int單位;
字節(jié)mydata [14];
字符串value_str;
long value_int;//是一個(gè)int,不能測量超過32mm的浮點(diǎn)值;
void setup(){
Serial.begin(9600);
pinMode(req,OUTPUT);
pinMode(clk,INPUT_PULLUP);
pinMode(dat,INPUT_PULLUP);
digitalWrite(REQ,LOW);//將請求設(shè)置為高
}
void loop(){
digitalWrite(req,HIGH);//生成設(shè)置請求
for(i = 0; i 《13; i ++){ 0;
for(j = 0; j 《4; j ++){
while(digitalRead(clk)== LOW){
}//保持到時(shí)鐘高電平
while(digitalRead(clk) == HIGH){
}//保持到時(shí)鐘為低電平
bitWrite(k,j,(digitalRead(dat)&0x1));
}
mydata [i] = k;
}
sign = mydata [4];
value_str =字符串(mydata [5])+字符串(mydata [6])+字符串(mydata [7])+字符串(mydata [8] +字符串(mydata [9] +字符串(mydata [10]) ));
decimal = mydata [11];
units = mydata [12];
value_int = value_str.toInt();
如果(十進(jìn)制== 0)dpp = 1.0;
如果(十進(jìn)制== 1)dpp = 10.0;
如果(小數(shù)== 2)dpp = 100.0;
如果(十進(jìn)制== 3)dpp = 1000.0;
如果(十進(jìn)制== 4)dpp = 10000.0;
if(decimal == 5)dpp = 100000.0;
value = value_int/dpp;
if(sign == 0){
Serial.println(value,decimal);
}
if(sign == 8){
Serial.print(“-”); Serial.println(值,十進(jìn)制);
}
digitalWrite(req,LOW);結(jié)果,延遲(100);
}
第4步:更多輔助示意圖
還有其他幾個(gè)我們添加的外部連接。首先,一對“采樣”按鈕(腳和手指)用于在平均之前使用齒輪的3個(gè)點(diǎn)進(jìn)行采樣測量,并使用最終的平均值(如果采樣相距太遠(yuǎn)則拒絕)。第二,是uVGA卡的復(fù)位電路。
步驟5:輸出到VGA
使用4D的uVGA-II(SGC)模塊獲取Arduino的串行輸出,并將其顯示在典型的vga監(jiān)視器上。在此說明的最后一步中可以看到執(zhí)行此操作的代碼。特別感謝Rei Vilo在本節(jié)中提供的幫助-https://github.com/rei-vilo和http://reivilohobbies.weebly.com/
已由uVGA-代替。 III。
在Arduino草圖中,當(dāng)您要將數(shù)據(jù)發(fā)送到uvga模塊時(shí),請使用如下語句:
uvga(“ N”,value);
其中N是uvga上變量的名稱,value是包含要傳遞的值的變量。
在草圖的末尾(在void循環(huán)的右括號之后)您具有以下功能:
int uvga(char * x,int y){
delay(50);
Serial3.print(“ $”);
Serial3.print(x);
Serial3.println(y,DEC);
}
我在Mega 2560上使用Serial3,但是您可以使用softserial和UNO。
在uvga上運(yùn)行的代碼接受該串行“數(shù)據(jù)包”,并將傳遞的值放入傳遞的變量中,然后可以在屏幕上顯示該值。隨附了uvga的示例代碼。這是一個(gè)純文本文件。您將需要4D的Workshop軟件和USB到TTL電纜才能將代碼上傳到uvga。
步驟6:具有測量采樣和Vga輸出的完整代碼
如果您想了解我們?nèi)绾螒?yīng)用此特定解決方案,我們將使用它根據(jù)測量結(jié)果為齒輪組生成箱號。隨附的是我們完整的代碼,該代碼是在Arduino,4D和Arduinohome論壇的許多其他人的幫助下開發(fā)的。
較小的文件只是執(zhí)行以下操作所需的代碼顯示千分尺的原始讀數(shù)。將變量“ num”除以1000得到以毫米為單位的輸出。
步驟7:現(xiàn)在處于GFX模式(4DGL)
我們剛剛對該項(xiàng)目進(jìn)行了重大升級。屏幕輸出看起來相同,但是所有圖形處理已移至uVGA-II。我們從4D系統(tǒng)購買了編程電纜,并上傳了新的PmmC文件,該文件將卡從SGC模式(啞模式)切換到GFX(協(xié)處理器模式)。這大大加快了程序的運(yùn)行。我們還集成了“數(shù)據(jù)包”串行傳輸功能,該功能以串行數(shù)據(jù)包的形式將數(shù)據(jù)發(fā)送到uVGA-II,并帶有起始符號,數(shù)據(jù)包ID(指定數(shù)據(jù)在接收端指向的變量)和數(shù)據(jù)包的結(jié)尾符號)。這使得多個(gè)目標(biāo)數(shù)據(jù)的傳遞非常可靠。
-
監(jiān)視器
+關(guān)注
關(guān)注
1文章
788瀏覽量
34042 -
VGA
+關(guān)注
關(guān)注
5文章
572瀏覽量
64579 -
Arduino
+關(guān)注
關(guān)注
190文章
6498瀏覽量
192076
發(fā)布評論請先 登錄
Mi-Wave千分尺型校準(zhǔn)移相器
cRIO連接電腦后為什么彈不出來那個(gè)設(shè)備監(jiān)視器
ISL28022精密數(shù)字電源監(jiān)視器

dm6437使用hdmi連接器輸出到監(jiān)視器上,監(jiān)視器上沒有顯示是怎么回事?
千分尺誕生和發(fā)展演化史

請問如何將單端輸出運(yùn)放和真差分ADC連接?
如何排查VGA連接不良問題
焊接sma頭的內(nèi)芯直徑多少

2024年OLED監(jiān)視器出貨量預(yù)計(jì)激增至144萬臺,年增長率將達(dá)181%
如何將LVDS/OLDI橋接到HDMI/DVI

將差分輸出(隔離式)放大器連接到單端輸入ADC

LM94硬件監(jiān)視器數(shù)據(jù)表

評論