搜索
bottom↓
回复: 56

在坛子上找了半天也没找到ADC差分转换的参考程序,现在自己搞定了,共享给大家!

[复制链接]

出0入42汤圆

发表于 2007-7-21 09:32:18 | 显示全部楼层 |阅读模式
菜鸟写的不好,不要扔鸡蛋!程序都是经过测试没有问题的。

点击此处下载armok01162859.rar

出0入42汤圆

 楼主| 发表于 2007-7-21 09:54:00 | 显示全部楼层
下面是原理图

点击此处打开armok01162860.pdf

出0入0汤圆

发表于 2007-7-21 09:55:13 | 显示全部楼层
ADC差分转换与单通道ADC转换的主要区别是什么,我还没有用差分转换。LZ能简单说说吗

出0入42汤圆

 楼主| 发表于 2007-7-21 10:05:14 | 显示全部楼层
差分,顾名思义就是采集两个电压的差,所以差分转换就是采集两个输入端电压的差。其实差分通道相当于一个减法器,令正差分为V(p),负差分为V(n),则ADC转换之后的值和dV=V(p)-V(n)是对应的。

    在AVR中,可以选择ADC0、ADC1、ADC2这三个通道的任何一个作为ADC的负差分输入端,剩下的端口都可以作为正差分的输入端,不过有些是有增益的,要注意查手册。

    差分转换主要是用来采集电流,单端专换主要是采集电压。

出0入0汤圆

发表于 2007-7-21 10:25:49 | 显示全部楼层
谢谢LZ,

我刚好能用上,采集0---0.6V电压,用ADC差分输入,10倍增益。

出0入0汤圆

发表于 2007-7-22 11:55:18 | 显示全部楼层
楼主 ,请教你个问题啊





m16  dip版本不支持差分啊



你怎么实现的啊

出0入42汤圆

 楼主| 发表于 2007-7-22 14:22:09 | 显示全部楼层
在手册的191页:

1、在PDIP封装下的差分输入通道器件未经测试。只保证器件在TQFP与MLF封装下正常工作。



所以说不是DIP版本不支持差分,而是ATMEL公司不保证而已。我测试过DIP封装的差分是可以用的。

出0入0汤圆

发表于 2007-7-22 14:38:04 | 显示全部楼层
差分一定要测2次取第2次的值.

出0入42汤圆

 楼主| 发表于 2007-7-22 14:56:14 | 显示全部楼层
手册上说在切换通道后的125us内不要启动转换或者舍弃转换的结果,所以我的方法是切换通道之后转换三次,取第三次的结果。

出0入0汤圆

发表于 2007-7-22 20:20:14 | 显示全部楼层
任何一本电子手册

出0入0汤圆

发表于 2008-1-30 10:39:30 | 显示全部楼层
LZ强啊,几句话简单易懂!

出0入0汤圆

发表于 2008-2-6 09:50:45 | 显示全部楼层
谢谢7楼的兄弟的指导!

出0入0汤圆

发表于 2008-2-6 11:32:14 | 显示全部楼层
支持

出0入0汤圆

发表于 2008-2-17 17:09:39 | 显示全部楼层
楼主,一楼的电路图打不开,说是文件坏了!麻烦再传一次啊!谢谢了!

出0入42汤圆

 楼主| 发表于 2008-2-17 19:07:36 | 显示全部楼层
好老的贴子了,还翻出来了,呵呵
PDF文档打开没有问题的,我刚试过了,能正常打开.

出0入0汤圆

发表于 2008-3-5 11:03:19 | 显示全部楼层
AVRLIB中有啊

出0入0汤圆

发表于 2008-3-5 21:29:26 | 显示全部楼层
又翻起来了啊

出0入0汤圆

发表于 2008-3-5 22:23:21 | 显示全部楼层
请楼主帮忙,我的要测量的是变压器过来的几个mV的电压,怎么设计外电路呢?直接接单片机,可以吗?谢谢了先!

出0入42汤圆

 楼主| 发表于 2008-3-6 08:43:31 | 显示全部楼层
采集交流电没有试过,
几个mV的电压的话肯定要进行放大,因为:

用2.56V电压做参考基准,10位精度,则:
2560/1024 = 2.5,也就是说,ADC的值增加1,就相当于变化2.5mV

另外还要考虑一下信号源的阻抗.

出0入0汤圆

发表于 2008-3-6 12:03:48 | 显示全部楼层
不是交流,是磁铁插入线圈,线圈大约是80匝,是不是要进入差分的IO口,并上一个电阻呢?谢谢了!

出0入0汤圆

发表于 2008-3-6 15:33:29 | 显示全部楼层
飘过

出0入0汤圆

发表于 2008-3-6 20:57:11 | 显示全部楼层
我写了程序,什么也不接,也有很大的读数

出0入0汤圆

发表于 2008-3-22 11:08:53 | 显示全部楼层
那估计是内部上拉电阻使能了.初始化没搞好.

出0入0汤圆

发表于 2008-8-7 10:56:21 | 显示全部楼层
看看先。

出0入0汤圆

发表于 2008-8-19 10:27:46 | 显示全部楼层
/***************************************************
函数名称:ADInit()
函数功能:初始化AD
***************************************************/
void ADInit(void)
{
        ADCSRA = (1<<ADEN)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);//使能ADC,不允许中断
        ADMUX  = (1<<REFS0)|(1<<REFS0)|(1<<MUX4);           //
}
ADMUX  = (1<<REFS0)|(1<<REFS0)|(1<<MUX4);  两个REFS0 是不是写错了

出0入0汤圆

发表于 2008-8-20 22:17:26 | 显示全部楼层
收藏

出0入0汤圆

发表于 2009-3-18 12:25:49 | 显示全部楼层
好贴 收藏

出0入0汤圆

发表于 2009-5-6 14:22:15 | 显示全部楼层
MARK

出0入0汤圆

发表于 2009-6-15 14:53:46 | 显示全部楼层
ddddddddd

出0入0汤圆

发表于 2009-6-15 18:59:26 | 显示全部楼层
路过

出0入0汤圆

发表于 2009-6-15 23:24:12 | 显示全部楼层
mark

出0入25汤圆

发表于 2009-6-15 23:48:42 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-6-16 11:32:09 | 显示全部楼层
看看是怎么弄的!

出0入0汤圆

发表于 2009-6-17 22:40:06 | 显示全部楼层
mark

出675入8汤圆

发表于 2009-6-18 09:44:29 | 显示全部楼层
biaoji

出0入0汤圆

发表于 2009-8-16 09:18:15 | 显示全部楼层
呵呵,学习学习,谢谢分享

出0入0汤圆

发表于 2009-8-31 14:51:27 | 显示全部楼层
【13楼】 my_avr

积分:1304
派别:
等级:------
来自:武汉
我也说一下我一直用的按键扫描的思路:

定义三个变量:

一个变量PreKey为上次读到的按键电平

另一个变量NowKey为当前读到的按键电平

最后一个变量KeyCode记录的是有动作按键

三个变量运算如下:

PreKey = NowKey;

NowKey = PINx;                             //读按键电平

KeyCode = PreKey ^ NowKey ^ KeyCode;       //运算

只要有按键按下,KeyCode对应的位就大为1,按键弹起后对应的位为0,根本就不需要再去进行其他判断.

电路连接:

           PB0 |-------------key0------------|GND
               |
           PB1 |-------------key1------------|GND
               |
           PB2 |-------------key2------------|GND
               |
           PB3 |-------------key3------------|GND
               |
           PB4 |-------------key4------------|GND
               |
           PB5 |-------------key5------------|GND
               |
           PB6 |-------------key6------------|GND
               |
           PB7 |-------------key7------------|GND



修改原因:贴电路图


本贴被 my_avr 编辑过,最后修改时间:2008-05-30,08:33:18.  
这位大虾,不好意思,追贴追到这,您这个按键扫描的程序在论坛上很受欢迎,但我没怎么看懂,可否详细讲解一下,最好是给出一个完整的键盘检测程序,谢谢了。。。。

出0入0汤圆

发表于 2009-9-13 09:26:28 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-9-13 09:31:43 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-9-13 09:51:35 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-9-20 16:00:26 | 显示全部楼层
m

出0入0汤圆

发表于 2009-9-21 17:30:33 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-9-21 22:39:27 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-9-22 15:35:40 | 显示全部楼层
记号,记的是按键扫描

出0入0汤圆

发表于 2009-9-22 16:08:13 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-9-23 11:05:13 | 显示全部楼层

出0入0汤圆

发表于 2009-10-13 10:45:24 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-10-14 00:03:42 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-10-15 18:19:40 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-10-15 20:25:13 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-10-15 20:31:53 | 显示全部楼层
好贴,学习了·

出0入0汤圆

发表于 2010-3-13 17:13:26 | 显示全部楼层
不错.我也正在搞差分.我的要最小检测电流是0.1A,取样电阻0.01欧.M16如果用差分放大,200倍放大,我想问下最大的检测电流是多大?

出0入0汤圆

发表于 2010-3-13 20:07:24 | 显示全部楼层
ADC差分转换的参考程

出0入0汤圆

发表于 2010-3-13 21:19:25 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-14 08:52:14 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-14 09:08:25 | 显示全部楼层
mark!

出0入0汤圆

发表于 2010-3-14 09:42:50 | 显示全部楼层
mark!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-8 09:35

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表