菜鸟进军单片机,第一个作品:数字电容表
justinpiggy2012/01/27仪器仪表 IP:浙江
RT,用刚到手的Arduino做的,12864LCD,原理不多说,KC的应该都懂。
精度还行,速度较慢(为了保证一定的精度),算法几乎等于没有。


外围电路及其简单,仅1K电阻一只,如果用300左右的电阻可以做到2200uF电容刷新率0.5s左右,但是精度要低一点。
程序中为了防止大电容放电不完全,给电容500ms放电时间,然后又要充电,所以有点慢
b_large_bbNP_11a5000012f71261.jpg
b_large_ROM8_2294000106791263.jpg
b_large_YeRm_6a8c00003204121c.jpg

测试视频在此:XXXXXXXXXXXXXXXXXX/v_show/id_XXXXXXXXXXXXXXXXml
点击此处查看视频

应大家要求放出源码,但是真的很菜鸟,大家看看就好,不要笑我啊。。。
attachment icon Capacitor_Meter.ino.zip 0.67KB ZIP 51次下载
+10  科创币    神之觉醒    2012/01/27 为什么刷新速度这么慢啊
+200  科创币    ry7740kptv    2012/01/27 鼓励动手制作!
+10  科创币    zhangv    2012/01/27
+1  科创币    十九    2012/01/27 刷新速度的确有点慢……
来自:仪器与装备 / 仪器仪表
22
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
justinpiggy 作者
13年0个月前 IP:未同步
359093
引用第3楼霹雳游侠于2012-01-27 19:58发表的  :
求电路图。。。 尤其电容采样部分。。。
楼主的电脑莫非是。。。。。。。。。。。


MacBook Pro 15寸高配,不过是上一代的了[s:274]  



顺便问一下怎么把float转成char(就是string啦)
我用sprintf(str,"%f",n);打出来是一个?
做这个电容表时我为了解决这个问题花了很久,最后还是不行,只好把n拆成小数点后和小数点前,分部输出,所以实在太菜鸟了
望各位单片机老手指导!
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
justinpiggy作者
13年0个月前 IP:未同步
359097
Re:回 5楼(justinpiggy) 的帖子
引用第6楼霹雳游侠于2012-01-27 20:18发表的 回 5楼(justinpiggy) 的帖子 :
好吧 电压用什么检测?不要告诉直接靠端口临界值来触发吧
有钱。。。。。。。。。。。。。。。。。。。。。。。。。。



真的是这么干的,死循环,然后等analogRead(Pin)>U
想想看10Bit的ADC就凑合着用用
所以当电容很大,电阻也弄得比较大的时候,RC常数t=R*C就会很大,这个loop时间就长啦
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
justinpiggy作者
13年0个月前 IP:未同步
359112
源码已经上传了
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
justinpiggy作者
13年0个月前 IP:未同步
359117
引用第9楼mistersheng于2012-01-27 20:49发表的  :
关键看着写液晶屏,也很慢啊!


没办法,是串口输出,比较慢,换成并口会快很多,但是那样要接很多线,现在串口只要3+2根就可以了
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
justinpiggy作者
13年0个月前 IP:未同步
359124
引用第11楼yearn3guns于2012-01-27 20:55发表的  :
怀疑是测RC充放电时间常数
话说不一定要先放电再测试的。算法好点的话,直接带电测也可以。只是电容的电压不要太高把电路烧了。


不是怀疑,看一下整个帖子,还有代码再发贴。
带电测我觉得不行的,你要不停刷新,那么刚才已经冲到比如说2.5V,单片机最高控制就是5V,那么下一次的确可以冲到3.75V(理想,不放电),然后再下一次只有4.375V,而Arduino自带ADC大概只能分辨4mV电压,再加上时间间隔越来越短,接下来就很有限了。
我的方法也不是完全放光电,看程序,我在LCD输出时候都节省时间让电容放电,其实放得越低越好,然后再次循环时候就测量此时电压为lo,然后再充电,冲到(hi-lo)*k+lo时候停止,这样充电时间比较长,适合这种16MHz的单片机计时,又有较大电压跨度,照顾到了10Bit ADC的精度限制
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
justinpiggy作者
13年0个月前 IP:未同步
359278
Re:Re:Re:回 5楼(justinpiggy) 的帖子
引用第16楼腹黑小白兔于2012-01-28 00:32发表的 Re:Re:回 5楼(justinpiggy) 的帖子 :
引用第7楼
justinpiggy于2012-01-27 20:21发表的 Re:回 5楼(justinpiggy) 的帖子 :
真的是这么干的,死循环,然后等analogRead(Pin)>U
想想看10Bit的ADC就凑合着用用
所以当电容很大,电阻也弄得比较大的时候,RC常数t=R*C就会很大,这个loop时间就长啦
.......


不好意思,我是初学,恩,的确是积分+ADC,
LCD这个写起来时间长我也很头疼,我是每0.5s刷新一次,这个时候写一下LCD,其他时候不写。
不知道AVR能不能同时进行两个任务,应该不行吧。


事实上你眼睛很尖,的确有一块以太网扩展板,再左上角哦,W5100,中间那个是下载线
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
上级专业
同级专业
justinpiggy
进士 专家 学者 机友 笔友
文章
70
回复
1816
学术分
1
2009/06/23注册,1天14时前活动

Harvard Physics

主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:未同步
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
支持的图片格式:jpg, jpeg, png
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}