搜索
bottom↓
回复: 396

AVR综合应用实例:[原创] 基于Atmega88的 迷你多功能仪表

[复制链接]

出0入0汤圆

发表于 2009-10-15 16:28:00 | 显示全部楼层 |阅读模式
受L_C_CE_METER制作资料的启发,决定设计制作一款功能更强的迷你测量仪
为了追求精简,精确,多功能,费尽了心计,经过半年时间的不断试验摸索,终得一果,心中充满喜悦
发帖与大家分享
所有程序都已调试完成,原理图也整理好了,但我对于如何把原理图(PROTRL格式),照片贴上来
竟是不知道如何操作,请哪位先指教一下
关于开源问题:全部是汇编,交流比较困难,程序比较复杂,我回答问题也会吃力
             打算逐步分模块介绍实现原理和编程思路,与大家一起探讨

先把实现的功能,性能指标介绍如下:

1. L_METER  测量电感,原理和方法与L_C_CE_METER制作资料相同
            分辨率0.1uH,测量范围  0-----16H
            
2. C_CE_METER 测量电容和电解电容的电容量以及  电容的漏电阻
            分辨率1P,测量范围  0-----10000uF
            测量时不用区分 C,CE,也不用区分容量大小,一键操作

3. F_METER 测量频率,在 0-----1000kHz 全量程均显示********.***Hz
            取样时间>1秒,测量结果稳定精确,与示波器显示值完全一致

4. 0---5V 电压表  分辨率 1mV  测量结果稳定

5. 0---65M 电阻表 分辨率 1 欧姆  测量结果稳定

6. 基于DS1302的日历时钟以及对时功能和设定功能

7. 采用热敏电阻构建的温度计 分辨率 0.01度  测量结果稳定
                            准确度依赖分度电阻表数据

8. 120Hz-----2000kHz 方波信号发生器

9. 1Hz------40000Hz  正弦波信号发生器

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2009-10-15 16:43:13 | 显示全部楼层
无图无真相

出0入0汤圆

 楼主| 发表于 2009-10-15 16:44:06 | 显示全部楼层
本实例用到了AVR单片机的大部分资源和指令,并形成一个有实用价值的项目
所以称其为AVR综合应用实例
其采用的元件很少,MCU配置很低,顾冠以"迷你"

通过本实例,我想证明两点:
  1.AVR 很好,很强大
  2.ASM 很好,很强大

出0入0汤圆

发表于 2009-10-15 16:48:17 | 显示全部楼层
貌似很强大   期待上资料

出0入0汤圆

 楼主| 发表于 2009-10-15 16:48:20 | 显示全部楼层
"1Hz------40000Hz  正弦波信号发生器"

应为:

1Hz------4000Hz  正弦波信号发生器

出0入0汤圆

 楼主| 发表于 2009-10-15 16:51:46 | 显示全部楼层
争取明天能把原理图发上来
(晚上不在的)

出0入0汤圆

发表于 2009-10-15 17:24:35 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-10-15 17:25:10 | 显示全部楼层
期待中

出0入0汤圆

发表于 2009-10-15 17:39:10 | 显示全部楼层
被成功忽悠的漂过~~~

出0入0汤圆

发表于 2009-10-15 18:45:48 | 显示全部楼层
继续跟踪。。

出0入0汤圆

发表于 2009-10-15 19:31:08 | 显示全部楼层
表示关注

出0入0汤圆

发表于 2009-10-15 19:45:07 | 显示全部楼层
支持!!!

出0入0汤圆

发表于 2009-10-15 20:26:31 | 显示全部楼层
期待。。。。。

出0入0汤圆

发表于 2009-10-15 23:10:31 | 显示全部楼层
期待中,看看

出0入0汤圆

 楼主| 发表于 2009-10-16 09:36:53 | 显示全部楼层

原理图 (原文件名:Mini_meter_sch.JPG)

出0入0汤圆

 楼主| 发表于 2009-10-16 09:42:54 | 显示全部楼层
哈哈,终于明白如何"贴"图了,原来一直没注意发言框下方的"上传文件....",晕!

出0入0汤圆

发表于 2009-10-16 09:45:58 | 显示全部楼层
期待

出0入0汤圆

发表于 2009-10-16 10:06:13 | 显示全部楼层
期待

出0入0汤圆

发表于 2009-10-16 10:12:37 | 显示全部楼层
服了你了,图的分辨率太小,字看不见呀。把图改成pdf格式传上来行吗?要不我帮你转。

出0入0汤圆

 楼主| 发表于 2009-10-16 10:20:19 | 显示全部楼层
结合原理图作如下说明:

芯片: M88@16MHz
显示器: LCD1602,六线驱动模式
键盘: 四键ADC键盘,分别是 执行键EXEC,模式切换键MOD,加(INC),减(DEC)
DS1302时钟:独立的单元,可以摘除而不影响其它模块工作
串行下载接口兼LCD接口,未经验证
LM393,一路用于测电感,一路用于测温度
RS487,备用,INT0引脚(PD2)备用
工作接口:公共端COM,正弦波信号输出端SINE_WAVE,电感/频率输入端F_L_METER,
         其它信号输入输出端OTHERS(原理图中L_METER应为F_L_METER)
其它就只剩下电阻电容了

出0入0汤圆

 楼主| 发表于 2009-10-16 10:25:08 | 显示全部楼层
回18楼:请把转换的方法说一下,我好再学一着

出0入0汤圆

发表于 2009-10-16 10:29:45 | 显示全部楼层
mark!

出0入0汤圆

发表于 2009-10-16 10:29:57 | 显示全部楼层
我用这个Acrobat_8_Pro.iso制作pdf,挺大的400M吧,你可以网上下,它可以读写pdf文件。可以吧其他文件转换成pdf,安装好后你会发现你多了一个打印机,一个虚拟打印机,吧文件打印成pdf。

出0入0汤圆

发表于 2009-10-16 10:56:33 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2009-10-16 10:59:00 | 显示全部楼层
protel99se的sch文件ourdev_492211.rar(文件大小:8K) (原文件名:Sheet3.rar)

出0入0汤圆

 楼主| 发表于 2009-10-16 11:12:27 | 显示全部楼层
原理图已上传,有兴趣的自己打开看吧,欢迎拍砖
需要说明的是,该制作属于学习型的,自娱自乐,山寨版作品,与真仪器的要求相差很远
各位拍砖时还望手下留情

出0入134汤圆

发表于 2009-10-16 11:23:00 | 显示全部楼层
很强的说!
手机上的,回去在研究

出0入0汤圆

发表于 2009-10-16 11:29:07 | 显示全部楼层
快快完成,俺们好仿一个。:D

出0入0汤圆

发表于 2009-10-16 12:18:22 | 显示全部楼层
谢楼主分享,顺便转换成PDF格式方便需要的兄弟们^_^
基于Atmega88的 迷你多功能仪表PDF格式ourdev_492233.pdf(文件大小:19K) (原文件名:main.pdf)

出0入0汤圆

 楼主| 发表于 2009-10-16 14:29:12 | 显示全部楼层
用手机拍了一些照片,以证明项目的真实性,效果好坏就不计较了
我在一块洞洞板上搭接了两套实验电路,都经过多次改动,所以很乱,难以见人所以都在镜头外


启动界面 (原文件名:IMG0244A.jpg)


日历时钟温度显示 (原文件名:IMG0245A.jpg)


测104电容 (原文件名:IMG0246A.jpg)


测某电感 (原文件名:IMG0247A.jpg)


测该电感时用频率计测得的频率值 (原文件名:IMG0248A.jpg)


输出方波 (原文件名:IMG0249A.jpg)

出0入0汤圆

 楼主| 发表于 2009-10-16 15:00:39 | 显示全部楼层

(原文件名:IMG0250A.jpg)


(原文件名:IMG0251A.jpg)


(原文件名:IMG0252A.jpg)


电压表,测DS1302的后备电池 (原文件名:IMG0253A.jpg)


测3.9欧电阻 (原文件名:IMG0254A.jpg)


测100K电阻 (原文件名:IMG0255A.jpg)

出0入0汤圆

发表于 2009-10-16 15:39:08 | 显示全部楼层
非常好哦!

出0入0汤圆

发表于 2009-10-16 16:22:57 | 显示全部楼层
很好!MARK!

出0入42汤圆

发表于 2009-10-16 16:34:18 | 显示全部楼层
LZ能介绍下原理么?

出0入0汤圆

 楼主| 发表于 2009-10-16 16:58:44 | 显示全部楼层
任何方面的原理和实现方法我都会介绍和回答
各位可以先看原理图,做一些思考
抱歉我晚上都不在线的

出0入9汤圆

发表于 2009-10-16 19:05:11 | 显示全部楼层
期待......

出0入0汤圆

发表于 2009-10-16 23:17:16 | 显示全部楼层
不错

出0入0汤圆

 楼主| 发表于 2009-10-17 10:01:55 | 显示全部楼层
一、电容测量原理:
"电容的测量是基于对RC电路的时间常数的计算,由脉冲电路原理可知,电容的充电速度与R和C的大小有关,R与C的乘积越大,过渡时间就越长。这个RC的乘积就叫做RC电路的时间常数τ,即τ=R∙C。"----摘自"用M8制作电感,电容,电解电容测量仪表"

    测量的原理就是:由被测电容和一确定的电阻组成的电路上加脉冲电压U,测量电容上电压从零升至0.632U所需时间τ
     则有:C=τ/R    若R的单位用欧姆,τ的单位为秒,则C的单位为法拉

    本制作采取测0.5τ
    所需比较器采用M88内部的模拟比较器
    0.5τ对应的比较电压为0.3935U,该电压由R5,R6建立并接到AIN1引脚
   
    由比较器输出内部触发T/C1捕捉,获得时间测量值:TCNT1H,TCNT1L

    期间如发生T/C1溢出,说明C太大,数据溢出,则改变T/C1的预分频系数或切换所用电阻R9改为R8
    改变以后经过放电,重新测.由此实现从0p-----10000uF的自动适应

    如何放电?----相关I/O口输出低电平即可,R0的作用是减小放电时的冲击电流

出0入0汤圆

 楼主| 发表于 2009-10-17 10:27:59 | 显示全部楼层
二.电压表,电阻表,电容漏电阻测量原理:
   由原理图可知,电容测量接点(OTHERS)经R3接到ADC_1,后台运行的ADC模数转换程序随时将该点电压值转换,
   并经过数字滤波,获得的测量值存放在相应单元,应用程序随时可以调用
   经过计算就可得到电压或电阻的测量值

出0入0汤圆

发表于 2009-10-17 12:11:38 | 显示全部楼层
谢谢

出0入0汤圆

发表于 2009-10-17 13:12:31 | 显示全部楼层

出0入0汤圆

 楼主| 发表于 2009-10-17 13:38:01 | 显示全部楼层
三. 温度测量
    采用NTC热敏电阻
    本制作与众不同的地方在于:
      不经过转换成电压,然后ADC转换得到结果
      而是采用测电容相同的原理,只不过是已知C反过来求得R,所以就是测量电阻
      这种方法得到16BIT分辩率,高于ADC的10BIT
      测量电路由热敏电阻R1,电容C13,电压比较器U3B组成
      电压比较器U3B的输出接M88 PB0,用捕捉功能
      电阻测出来以后通过查表加插值计算,获得分辩率至0.01度的温度测量值

出0入0汤圆

 楼主| 发表于 2009-10-19 08:49:42 | 显示全部楼层
自己顶一下
继续阐述觉得没动力了,看看情况再说
另外,稍后我会提供.hex运行文件

出0入42汤圆

发表于 2009-10-19 09:11:18 | 显示全部楼层
支持,LZ出个套件吧。

电感测量原理能介绍下么?

出0入0汤圆

 楼主| 发表于 2009-10-19 09:30:42 | 显示全部楼层
测量电感,原理和方法与L_C_CE_METER制作资料相同
可在本网站搜该帖,里面有详细说明

电路图也相同,参数有些不同C9=22000P,对照资料中为1800P
                         L1=20uH,  对照资料中为86uH

出425入0汤圆

发表于 2009-10-19 14:56:06 | 显示全部楼层
感谢楼主,为了支持楼主,我向楼主和大家推荐个软件,这个软件安装后,你的打印机列表会增加了一个pdfFactory Pro,我喜欢把它设为默认的打印机,打印的东西(包括PROTEL, AUTOCAD)可以打印成PDF格式,方便传输,修改,也可以从它哪儿选物理的打印机打印。点击此处下载 ourdev_493391.rar(文件大小:2.51M) (原文件名:PDF_Factory_Pro_v2.50.rar)

出0入0汤圆

 楼主| 发表于 2009-10-19 16:25:18 | 显示全部楼层
PDF版本的原理图在28楼已经有了
谢谢楼上的软件

出0入0汤圆

发表于 2009-10-19 16:26:10 | 显示全部楼层
这个软件不错,比我那个小多了~

出0入0汤圆

发表于 2009-10-19 16:35:32 | 显示全部楼层
强悍

出0入0汤圆

发表于 2009-10-20 12:44:34 | 显示全部楼层
好,顶一下

出0入0汤圆

 楼主| 发表于 2009-10-23 10:22:45 | 显示全部楼层
呵呵,居然快沉到海底了!

出0入0汤圆

发表于 2009-10-23 14:04:47 | 显示全部楼层
我帮顶

出0入0汤圆

发表于 2009-10-23 14:34:44 | 显示全部楼层
好东西。支持LZ顶

出0入0汤圆

发表于 2009-10-23 14:39:05 | 显示全部楼层
谢谢

出0入0汤圆

 楼主| 发表于 2009-10-23 15:32:33 | 显示全部楼层
也许有人怀疑,如此简单的制作,测量的精度,稳定性究竟如何?

现在我来介绍一下频率计的测量精度以及实现方法:

我在一楼这样表述:
       测量频率,在 0-----1000kHz 全量程均显示********.***Hz
       取样时间>1秒,测量结果稳定精确,与示波器显示值完全一致

也许有人会说这0.001Hz的分辩率是虚假的,是故弄玄虚,可是我要告诉你,这是真的!
我在上面发的图片中有一测频率的例子,在该例情况下,连续反复测量几十次,
测量值的波动仅有0.008Hz
当然在频率较高的情况下,0.001Hz的分辨率没有多大意义,但在几赫兹几十赫兹时却是必须的

请看下面的方法:
输入信号经过整形变为等间隔方波脉冲,本制作中由LM393完成
精确的1秒延时;本制作的1秒延时程序采用统计1000个1ms定时中断的方法,不受其它中断影响
联合使用测频率法和测周期法:先测量周期,同时完成与信号沿同步,再测量频率(延时1秒),
接着立即测量"半周期",获取频率值的小数部分数据
计算得到测量结果

各位路过的高手请发表见解

出0入0汤圆

发表于 2009-10-23 16:06:38 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-10-23 16:14:29 | 显示全部楼层
楼主能上传NTC测温那部分程序上来吗?贪心问多句:
温度查表的代码如何弄的?

出0入42汤圆

发表于 2009-10-23 16:19:49 | 显示全部楼层
LZ整个套件吧,俺可以当仪表用。

出0入0汤圆

 楼主| 发表于 2009-10-23 16:25:03 | 显示全部楼层
本制作中采用了ADC键盘,目的是为了节省I/O口,并非这ADC键盘有什么好,相反是有缺点
这时钟也不实用,学习学习而已,如果去掉,省下的端口可改为键盘信号输入

我的ADC模数转换模块是这样工作的:
ADC中断读取数据,切换通道,但不启动转换
1ms定时中断里启动ADC转换,判断中断次数是否等于32*通道数,等于的话则更新测量值

每通道每次测量值读取后累加到该通道的累加和保存单元,累加32次的结果为测量结果
另外存放到测量结果单元,这样一来,工作程序不要考虑和干涉ADC,可从测量结果单元
随时调用任一通道测量值

出0入0汤圆

 楼主| 发表于 2009-10-23 16:35:58 | 显示全部楼层
//***************测温******************
.DSEG
r_tested_h:    .byte 1
r_tested_l:    .byte 1
ts:            .byte 1   ;tempreture0~120 of -20~100
tem:           .byte 1   ;温度
td:            .byte 1   ;小数部分


.CSEG
TEMP_UPDATE:
   in    temp,DDRB      ;SETTING ICP1
   andi  temp,0xFE
   out   DDRB,temp
   sbi   PORTB,0

   lds   temp,ACSR
   andi  temp,~(1<<ACIC)

   ldi   temp,0              ;禁止t2,adc中断
   sts   TIMSK2,temp

     ;ini_t1:
   clr   temp
   sts   TCCR1A,temp
   sts   TCCR1B,temp
   lds   temp,TIMSK1
   ori   temp,1<<TOIE1|1<<ICIE1
   sts   TIMSK1,temp
   clr   temp
   sts   TCNT1H,temp
   sts   TCNT1L,temp

   cbr   FLAG,1<<t1_ovf      ;清中断发生标记
   cbr   FLAG,1<<ac_comp_out

   ldi   temp,1<<ICES1|1<<CS10
   sts   TCCR1B,temp

   sbi   PORTC,CE

   wait_cap:           ;等待中断
   wdr
   sbrc  FLAG,t1_ovf
   ret
   sbrs  FLAG,ac_comp_out
   rjmp  wait_cap

   cli
   cbi   PORTC,CE
   in    temp,DDRB
   ori   temp,0x01
   out   DDRB,temp
   cbi   PORTB,0

   ldi   temp,1<<TOIE2
   sts   TIMSK2,temp
   ldi   temp,0x00
   sts   TIMSK1,temp

   clr  r1      ;数字滤波
   mov  r2,xh
   mov  r3,xl

   lsr  r2
   ror  r3
   lsr  r2
   ror  r3

   lds  yh,r_tested_h
   lds  yl,r_tested_l
   lsr  yh
   ror  yl
   lsr  yh
   ror  yl

   lds  xh,r_tested_h
   lds  xl,r_tested_l
   sub  xl,yl
   sbc  xh,yh
   add  xl,r3
   adc  xh,r2
   sts  r_tested_h,xh
   sts  r_tested_l,xl

   lds  r2,temp_factor_h  ;乘系数(<1)校准,电容选用比标准值偏大一点
   lds  r3,temp_factor_l
   rcall MUL16

   ldiw  z,(2*t_r_table)  ;查表
   lds   temp,ts
   dec   temp
   ldi   temp3,2
   mul   temp,temp3
   add   zl,r0
   adc   zh,r1

   dec   temp

   find_match:
   inc   temp
   lpm   r7,z+
   lpm   r6,z+

   mov   r2,xh
   mov   r3,xl

   sub   r3,r7
   sbc   r2,r6

   brlo find_match

   dec   temp        ;插值计算
   sts   ts,temp

   sbiw  z,4
   lpm   r5,z+
   lpm   r4,z+
   mov   r0,r4
   mov   r1,r5

   sub   r1,xl
   sbc   r0,xh
   clr   r2
   clr   r3

   sub   r5,r7
   sbc   r4,r6

   rcall DIV16      ;计算小数部分值

   lds   temp,ts
   cpi   temp,20
   brsh  plus_d     ;正负调整
   clr   r0
   clr   r1
   sub   r1,r3
   sbc   r0,r2
   mov   r2,r0
   mov   r3,r1

   plus_d:
   rcall CONV3      ;二/十进制转换
   sts   td,r4

   lds   temp,ts
   ldi   temp3,20
   sub   temp,temp3
   brmi  negtive
   rjmp  plus
   negtive:
   com   temp
   plus:
   mov   r3,temp
   clr   r1
   clr   r2
   rcall CONV1       ;二/十进制转换
   sts   tem,r7

   ret

t_r_table:
.dw 65535,65535,65535,65535,65535,64271,60922,57771,54806,52014
.dw 49383,46904,44567,42363,40283,38319,36465,34713,33057,31491
.dw 30011,28610,27284,26028,24839,23711,22643,21629,20669,19757
.dw 18891,18069,17288,16546,15840,15170,14632,13925,13347,12797
.dw 12273,11774,11298,10845,10412,10000,9607,9231,8873,8530
.dw 8203,7891,7592,7307,7034,6773,6523,6284,6055,5836
.dw 5626,5425,5232,5048,4871,4700,4538,4382,4232,4088
.dw 3950,3817,3689,3567,3449,3336,3227,3123,3022,2926
.dw 2832,2743,2656,2573,2493,2416,2342,2270,2201,2135
.dw 2071,2009,1949,1892,1836,1783,1731,1681,1633,1586
.dw 1541,1498,1456,1415,1376,1338,1301,1266,1231,1198
.dw 1166,1135,1104,1075,1047,1020,993,968,943,918
.dw 895,872,850,829,809,788,0

//*******************************

出0入0汤圆

 楼主| 发表于 2009-10-23 16:43:55 | 显示全部楼层
分度电阻表t_r_table中的数据不一定对,我是用公式算的,10000对应25度
只要该表数据正确,测出来的温度就会正确

出0入0汤圆

发表于 2009-10-23 16:58:04 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-10-23 17:08:48 | 显示全部楼层
怀疑测量电容的准确性,不信可以试一试:在电容上串一只电阻看容量值是否改变,期待楼主的结果

出0入0汤圆

发表于 2009-10-23 17:27:34 | 显示全部楼层
做点pcb大家一起玩吧,看汇编头大。要是手头有这个成品就有兴趣了改c程序了。

出0入0汤圆

发表于 2009-10-23 20:14:47 | 显示全部楼层
哈哈,和hzn1948是同道阿!汇编个头小,速度快,个人感觉很好!

出0入0汤圆

 楼主| 发表于 2009-10-24 08:26:43 | 显示全部楼层
回62楼:你的要求有点苛刻,电容串了电阻我想就是用专业仪器也不会有相同的结果
       也许我依据的测量原理使得串电阻的影响比较大一点(测量值偏小直至失去意义),并联电阻也会影响(测量值偏大)
       我无法评价这种情况与专业仪器之间差距有多大
       串联电阻的情况下,电容值愈大,影响也愈大(充电电流大,电阻上压降大)

       试验数据如下:104电容,1K电阻,相差百分之二;10K电阻时相差百分之十
                    1000uF电容已无法测量而出错

出0入0汤圆

 楼主| 发表于 2009-10-24 08:56:50 | 显示全部楼层
回63楼:做PCB我觉得还没考虑成熟,我正在考虑进一步扩充使之成为一款使用方便,功能强大,有众多应用实例支持的学习开发板
       目前这一部分不再改变,打算增加一片M88(或M16),互相通讯并增加其它功能,希望大家来出主意
       有兴趣按本制作的原理图为硬件平台开发C应用程序的话,现在就可以行动了

出0入0汤圆

发表于 2009-10-24 09:04:01 | 显示全部楼层
关注。

出0入0汤圆

发表于 2009-10-24 09:14:38 | 显示全部楼层
怎么没穿酷子呀?

出0入0汤圆

发表于 2009-10-24 09:28:27 | 显示全部楼层
关注!

出0入0汤圆

 楼主| 发表于 2009-10-24 10:45:23 | 显示全部楼层
回68楼:
不穿裤子比穿裤子好,功能强大与否一目了然

出0入0汤圆

发表于 2009-10-24 12:36:16 | 显示全部楼层
如果你想这样扩展的话,不过加个ATmega128,再加个usb芯片比如d12,加个段式液晶,加个3.2寸的液晶接口。接个红外的接受头。再加个4x4的键盘。sd卡读写口。这样就差不多了吧。然后128的引脚都引出来。

出0入0汤圆

 楼主| 发表于 2009-10-24 14:22:32 | 显示全部楼层
楼上是否能考虑不要用M128,我倾向于用M16
理由:不宜太复杂,精简是原则
     便于用直插器件,作为学习板有直观和方便更换的好处

     扩展的FLASH存储器件应满足脱机烧写和语音/音乐实验需要
接个红外的接受头。再加个4x4的键盘-----这可以定下来

引脚都引出来-----不要引出来,尽量将能做的实验预先考虑设计好,这是区别于其它的特色

出0入0汤圆

发表于 2009-10-24 21:21:09 | 显示全部楼层
【42楼】 hzn1948
积分:297
派别:
等级:------
来自:
自己顶一下
继续阐述觉得没动力了,看看情况再说
另外,稍后我会提供.hex运行文件  
   
2009-10-19,08:49:42


楼主什么时候上HEX呀

出0入0汤圆

发表于 2009-10-25 07:49:31 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-10-25 09:30:59 | 显示全部楼层
【62楼】 kevintang
怀疑测量电容的准确性,不信可以试一试:在电容上串一只电阻看容量值是否改变,期待楼主的结果  
————————————————————————————————————————
问题是没搞清电容测量原理。

假如测量用充电电阻改为恒流源效果更好,所费也不多;另外制作时电容测量驱动采样用四线制更能提高精度。

出0入0汤圆

 楼主| 发表于 2009-10-25 10:53:31 | 显示全部楼层
用恒流源充电的好处不明显,恒流源用的元器件多,业余条件下精度不会高,而电阻充电,只要这一个电阻准就可以了

另外楼上所说"电容测量驱动采样用四线制",能否进一步说明一下

出0入0汤圆

发表于 2009-10-25 12:04:12 | 显示全部楼层
楼主最好做个PCB,大家一起公摊费用好了。

出0入0汤圆

发表于 2009-10-25 13:19:14 | 显示全部楼层
楼主定下原理图,我们讨论下,然后画板,最好做到10x10的。这样打样也就100元10片。最近我们最好讨论电路设计,尽快定下来,东西拖到最后都不了了之了。
我的意见是,用M16尽量简洁我同意,但是我还是觉得把引脚引出并且尽量容易扩展才好。

出0入50汤圆

发表于 2009-10-25 20:50:47 | 显示全部楼层
8. 120Hz-----2000kHz 方波信号发生器

9. 1Hz------4000Hz  正弦波信号发生器

对这个有点兴趣,应该输出的频率不是连续的吧?

出0入0汤圆

 楼主| 发表于 2009-10-26 08:01:32 | 显示全部楼层
下面的网页上有与本制作同类型的资料
推荐大家去看看,集思广益,然后再来这里讨论,取长补短,完善本制作

http://218.16.124.207/bbs/bbs_content.jsp?bbs_sn=3659526&bbs_page_no=1&bbs_id=3041

出0入0汤圆

 楼主| 发表于 2009-10-26 08:29:21 | 显示全部楼层
回79楼:
目前的程序比较不连续,因为受输入手段的限制,只有加/减控制,为了兼顾调节的速度
在连续性太好时加大了步距
另外,数字式控制本身产生不连续,不连续的程度在不同的频率范围是不同的
例如方波在最高频率2000KHZ一下子降到1600KHZ,然后1330,1142.....
本制作是用T/C0  (T/C1 比较输出引脚被LCD1602使用)
如果用T/C1,就有办法改善

出0入0汤圆

 楼主| 发表于 2009-11-1 11:28:14 | 显示全部楼层
与大家分享一个深刻的经验教训:

手册里有一段话,....即使不用ADC,引脚AVCC也应与VCC相连接....

我为了证实我提供的原理图和初步设计的PCB是否有错,按PCB布局搭接了一块新的实验电路
但我采用分步的方法,先连接了与LCD1602相关的部分,然后通电试验,结果只有一行黑块
怎么弄都不行,郁闷了两个星期,首战失利就没继续下去

不知怎么想起AVCC引脚未连接可能有问题,直接连了一根线-----OK!

出0入0汤圆

发表于 2009-11-1 15:35:11 | 显示全部楼层
但是我有没接AVCC的,4位数据线的LCD1602一样正常工作阿。

出0入0汤圆

 楼主| 发表于 2009-11-1 16:32:47 | 显示全部楼层
不知楼上是否是M88直插
我又试了一次:重新将该连线剪断,回到变成一行黑块,再焊上就又好了

出0入0汤圆

发表于 2009-11-1 18:45:06 | 显示全部楼层
记号一下

出200入0汤圆

发表于 2009-11-1 20:16:51 | 显示全部楼层
MARK

出0入0汤圆

发表于 2009-11-2 08:38:30 | 显示全部楼层
是pdip的m48,见《用M8制作电感、电容、电解电容测量仪表》
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3279392


可能m48和m88不一样吧

出0入0汤圆

 楼主| 发表于 2009-11-2 09:47:50 | 显示全部楼层
究竟是M48还是M8?资料上用的是M8呀

M8和M88不一样很有可能,M48和M88应该一样啊

出0入0汤圆

发表于 2009-11-2 11:13:51 | 显示全部楼层
我做的是仿的,用的m48,在【186楼】

不过那个hex计算有BUG^_^

出0入0汤圆

 楼主| 发表于 2009-11-3 14:38:18 | 显示全部楼层
为了弄清真相,我做了进一步试验,将原来16M外部晶振改为内部8M(只改融丝)
LCD1602工作正常,而且AVCC可以不接VCC

两种频率设置下如果AVCC不与VCC相连,用表量得AVCC脚的电压均为4.2V,而VREF脚电压不同
16M时VREF电压0.1V,8M时VREF4.2V

M88手册中还有一处,电气性能参数中说到AVCC允许最低电压为VCC-0.3V

所以还是按器件手册的要求处理AVCC为好,免得出莫名其妙的问题

出0入0汤圆

 楼主| 发表于 2009-11-3 15:02:24 | 显示全部楼层
没有弄明白的莫名其妙的问题还有一个:
在我的制作里,测量电容时如果电容很小,例如100P,测量结果会发生跳变:
100,115   两种结果交替出现
程序反复检查了不知多少遍了,仍未找到合理的解释

这也是至今未上传HEX的原因

有感兴趣的高手请帮助分析分析,有哪些可能的原因

测小电容时,1P相当于一个CPU周期0.0625us
模拟比较触发T/C1捕捉

望高手指教,先谢了!

出0入0汤圆

发表于 2009-11-3 16:03:34 | 显示全部楼层
如果用频率测小电容的话,100P跳变时,看频率各是多少,查查问题出自硬件还是软件。

出0入0汤圆

 楼主| 发表于 2009-11-3 16:49:45 | 显示全部楼层
我测电容时没有相关的频率的
请看我前面帖子的说明:


"2. C_CE_METER 测量电容和电解电容的电容量以及  电容的漏电阻
            分辨率1P,测量范围  0-----10000uF
            测量时不用区分 C,CE,也不用区分容量大小,一键操作"

"测量的原理就是:由被测电容和一确定的电阻组成的电路上加脉冲电压U,测量电容上电压从零升至0.632U所需时间τ
     则有:C=τ/R    若R的单位用欧姆,τ的单位为秒,则C的单位为法拉

    本制作采取测0.5τ
    所需比较器采用M88内部的模拟比较器
    0.5τ对应的比较电压为0.3935U,该电压由R5,R6建立并接到AIN1引脚
     
    由比较器输出内部触发T/C1捕捉,获得时间测量值:TCNT1H,TCNT1L

    期间如发生T/C1溢出,说明C太大,数据溢出,则改变T/C1的预分频系数或切换所用电阻R9改为R8
    改变以后经过放电,重新测.由此实现从0p-----10000uF的自动适应 "

出0入0汤圆

发表于 2009-11-3 17:59:51 | 显示全部楼层
是不是放电时间不够?
要不一直测量,拿去极值平均值来显示?

出0入0汤圆

发表于 2009-11-20 15:37:05 | 显示全部楼层
别停呀,大家讨论起来

出0入0汤圆

发表于 2009-11-20 16:09:46 | 显示全部楼层
mark

出0入46汤圆

发表于 2009-11-20 16:17:18 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-11-21 08:47:11 | 显示全部楼层
印记一下,学习

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-7-23 10:21

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

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