原创 用Arduino控制器变个采集卡,用Labview软件变个仪表盘,我也组建一台虚拟仪器

2010-8-4 15:38 4280 5 5 分类: MCU/ 嵌入式

     在Arduino Duemilanove 2009 ATMEGA328P的模拟接口1和3连接两个电位器,转动电位器,可以调节0V~5V的电压,电压反映到Labview前面板的两个仪表盘上,做个双通道虚拟电压表。


前面板:


e0560099-aece-488c-826d-cdf99f8ea945.jpg


框图程序:


6285210e-1606-489c-8535-8ab4c8976c02.jpg


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);
}

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
5
关闭 站长推荐上一条 /3 下一条