电子说
步骤1:游标卡子
我一直在使用的游标卡尺是Precision Gold的电子数字游标卡尺。我从英国的Maplin(项目代码N48AA)购买了卡尺,价格不到20英镑。
在尝试了万用表和jyetech示波器(一种非常便宜的基本示波器,可以以套件价格购买,价格低于£20)之后。 40)我发现引脚如图所示。
步骤2:电压:逻辑和电源
Arduino使用5V逻辑,但卡尺输出1.5V逻辑。这有点困难,可能并不总是有效,确实应该使用适当的逻辑电平转换电路,但是流畅的操作是一个简单的技巧,与我的Arduino配合得很好:
我的Arduino在逻辑高和逻辑低之间切换大约2.5V(这在板之间可能会有所不同)。
将卡尺的正引脚连接到3.3V电源意味着当时钟和数据引脚连接到arduino时,它们的电压似乎在3.3V和1.8之间变化V,分别是Arduino的逻辑高电平和低电平。
使用Arduino为卡尺供电:
为避免在卡尺中使用电池,可以使用图示的电源电路(卸下按钮单元)。这种方法依赖于使用LED来调节卡钳的电源电压。
电阻
大约200Ohm
电容器
我使用的10uF效果很好,但是使用更大的电阻不会有任何危害。电容。额定电压为2V或更高。
LED
对于LED,请尝试找到一个压降尽可能接近1.6V的LED。我使用了一个压降为1.8V的红色LED。红色和IR LED上的电压降往往较低。
步骤3:数据协议
我的卡尺上使用的数据协议如下:
时钟脉冲,如图所示。
在时钟下降沿读取数据给出了合理的输出。
示例数据输出:
1,0 ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,(屏幕显示0.00毫米或0.000英寸)
1,0,0,0,1,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0 ,0,0,(屏幕显示10.00mm)
1,0,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0, 0,0,0,1,0,0,(屏幕显示-1.00mm)
1,0,0,0,1,1,0,0,1,0,1,0,1,1, 1,0,0,0,0,0,0,0,0,0,(屏幕显示150.00mm)
数据解释:
?,X,X,X,X,X,X, X,X,X,X,X,X,X,X,X,?,?,?,?,?,Y,?,?
? =不确定
X是否为字符串开头的最低有效位的二进制数。二进制数是距离,以毫米为单位乘以100。Y =符号位,如果Y = 1,则负数,如果Y = 0,数字为正,
注意:确保将游标卡尺设置为mm,以英寸模式运行非常相似,除了最低有效位用于显示1/2000英寸。
第4步:Arduino代码
这是一个非常基本的Arduino代码,应该与几种卡尺数据协议兼容。
每个值之间都有逗号,以方便使用.CSV文件将数据导入电子表格。
此代码的主要要求是希望在时钟脉冲的下降沿读取数据。
希望这段代码应该意味着,当您将Arduino连接到计算机并使用115200 Baud的串行监视器时,您会很明智地查看二进制文件。
麻烦射击:
如果二进制字符串的长度变化很大,则时钟和数据引脚的方向可能不正确。
代码:
//简单的数字卡尺阅读器
//请参阅http://j44industries.blogspot.com/
//引脚声明
int dataIn = 11;
int clockIn = 12;
//变量
int clock = 1;
int lastClock = 1;
unsigned long time = 0;
unsigned long timeStart = 0;
int out = 0;
void setup(){
//引脚设置
pinMode( dataIn,INPUT);
pinMode(clockIn,INPUT);
Serial.begin(115200);
Serial.println(“ Ready:”);
}
void loop(){
lastClock =时钟;
时钟= digitalRead(clockIn);
如果(lastClock == 1 && clock == 0){
out = digitalRead(dataIn)+ digitalRead(dataIn)+ digitalRead( DATAIN);//三重采样以消除毛刺
if((micros()-time)》 800){
Serial.println(“”);
}
else if((micros()-time )》 400){
Serial.print(“”);
}
如果(out》 1){
Serial.print(“ 1”);
}
else {
Serial.print(“ 0”);
}
Serial.print(“,”);
时间= micros();
}
}
全部0条评论
快来发表一下你的评论吧 !