在Arduino Duemilanove 2009 ATMEGA328P的模拟接口1和3连接两个电位器,转动电位器,可以调节0V~5V的电压,电压反映到Labview前面板的两个仪表盘上,做个双通道虚拟电压表。
前面板:
框图程序:
Labview框图程序把Arduino传来的两个电位器产生的字符串形式的浮点电压值通过“分数/指数字符串至数值转换”函数转换为数值形式的浮点电压值。这个浮点数是精度到小数点后两位。比如电压值2.56,字符串2.56有几个字符组成,有4个,双通道电压表,要显示两个电位器产生的电压值,那Arduino控制器每次传来的字符串就包含8个字符,所以“VISA读取”函数的字节总数就是8,0~3字节就包含着通道0的电压值,4~7字节就包含通道1的电压值。字符串转换成数值后,分别显示在两个“仪表”控件上。
Arduino控制器起到了采集电压值,AD转换,10位数字量正比转换电压值运算和串行通信,这四个任务,Arduino控制器的串行通信编程很容易,可以直接发浮点数的字符串,这是其他AVR编程环境做不到的。
看看Arduino程序吧。
int potpin_first=1;//定义电位计1相连的模拟接口为1
int potpin_second=3;//定义电位计1相连的模拟接口为3
int val_first=0;//定义电位计1 AD转换后数字量暂存变量
int val_second=0;//定义电位计1 AD转换后数字量暂存变量
float float_val_first;//把电位计1 AD转换后的10位数字量再换算成浮点电压量
float float_val_second;//把电位计1 AD转换后的10位数字量再换算成浮点电压量
void setup()
{
Serial.begin(9600);
}
void loop()
{
val_first=analogRead(potpin_first);//读取电位计1模拟接口的数字量
float_val_first=(float)val_first/1023*4.95;
//采用万用表实测,建立的电压量与转换的数字量的关系式。
Serial.print(float_val_first,2);
//向labview上传电位计1的电压值,精度为小数点后两位
val_second=analogRead(potpin_second);//读取电位计2模拟接口的的数字量
float_val_second=(float)val_second/1023*4.95;
//采用万用表实测,建立的电压量与转换的数字量的关系式。
Serial.print(float_val_second,2);
//向labview上传电位计2的电压值,精度为小数点后两位
delay(100);
}
文章评论(0条评论)
登录后参与讨论