为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

ACS712测交流电压测试

2017-10-13 3页 doc 14KB 31阅读

用户头像

is_037433

暂无简介

举报
ACS712测交流电压测试ACS712测交流电压测试 /*********************************************************************** ****** * 函数名: ADC_Read; * 功能: 读取ADC转换数据函数; * 输入: amx(0-7) 通道选择; * 输出: none; * 返回: 返回AD转换值,范围:0~1023 * Note: none; * 设计者:***; 设计时间:2009-9-20; 版本号:V1.0 电压测量:交流采集在1个工频周期内采集...
ACS712测交流电压测试
ACS712测交流电压测试 /*********************************************************************** ****** * 名: ADC_Read; * 功能: 读取ADC转换数据函数; * 输入: amx(0-7) 通道选择; * 输出: none; * 返回: 返回AD转换值,范围:0~1023 * Note: none; * 者:***; 设计时间:2009-9-20; 版本号:V1.0 电压测量:交流采集在1个工频周期内采集40个点间隔500us然后通过公式计算出电压有效值或电流有效值。 ************************************************************************ *****/ unsigned int ADC_Read(unsigned char amx) { unsigned int ad_value; float ftmp=0; unsigned long temp=0; unsigned char i; AMX0P = 8+amx; //改变AD通道 Delay_us(20); AD0INT = 0; // 清除中断标志 //等待波形过零点 while(1) { AD0BUSY = 1; //开始转换 while(AD0INT==0); // 等待转换完成 AD0INT = 0; // 清除中断标志 ad_value = (unsigned int)ADC0H*256 + ADC0L; // 读取并计算AD值 if((ad_value>=524) && (ad_value<=525))//判断是否为零点 { TR0=1;//启动定时器0,启动A/D转换 break; } } //从零点开始采集40个点---定时器0每500us溢出触发A/D中断 for(i=0;i<40;i++) { //ad[i]=ad_value; while(AD0INT==0); // 等待转换完成 AD0INT = 0; // 清除中断标志 ad_value = (unsigned int)ADC0H*256 + ADC0L; // 读取并计算AD值 if(ad_value>=525) ad_value = ad_value - 525; else ad_value = 525 - ad_value; //ftmp = ad_value * 706.316 / 1024;//调试方式:测试输入电压对应的运放输出 电压 ftmp = ad_value * 2.4 / 10.24; temp +=(ftmp*ftmp); } TR0=0;//关闭定时器0,停止A/D转换 AD0INT = 0; // 清除中断标志 TH0 = 0xfc; ////定时器赋初值---每500US溢出一次 TL0 = 0x89;//定时器赋初值 temp = temp/40; temp=sqrt(temp);//开平方 //Send_Data(temp);Uart0_SendString(" "); return temp; }
/
本文档为【ACS712测交流电压测试】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索