hzn1948 发表于 2009-10-15 16:28:00

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

受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正弦波信号发生器

universal 发表于 2009-10-15 16:43:13

无图无真相

hzn1948 发表于 2009-10-15 16:44:06

本实例用到了AVR单片机的大部分资源和指令,并形成一个有实用价值的项目
所以称其为AVR综合应用实例
其采用的元件很少,MCU配置很低,顾冠以"迷你"

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

lin28 发表于 2009-10-15 16:48:17

貌似很强大   期待上资料

hzn1948 发表于 2009-10-15 16:48:20

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

应为:

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

hzn1948 发表于 2009-10-15 16:51:46

争取明天能把原理图发上来
(晚上不在的)

xyz2008 发表于 2009-10-15 17:24:35

mark

squash 发表于 2009-10-15 17:25:10

期待中

CoolBird007 发表于 2009-10-15 17:39:10

被成功忽悠的漂过~~~

cjr82123 发表于 2009-10-15 18:45:48

继续跟踪。。

hithyy 发表于 2009-10-15 19:31:08

表示关注

desire 发表于 2009-10-15 19:45:07

支持!!!

ggyyll8683 发表于 2009-10-15 20:26:31

期待。。。。。

lang6027 发表于 2009-10-15 23:10:31

期待中,看看

hzn1948 发表于 2009-10-16 09:36:53

http://cache.amobbs.com/bbs_upload782111/files_20/ourdev_492173.JPG
原理图 (原文件名:Mini_meter_sch.JPG)

hzn1948 发表于 2009-10-16 09:42:54

哈哈,终于明白如何"贴"图了,原来一直没注意发言框下方的"上传文件....",晕!

zhaojun_xf 发表于 2009-10-16 09:45:58

期待

wlhj521334 发表于 2009-10-16 10:06:13

期待

wangxiaoacc 发表于 2009-10-16 10:12:37

服了你了,图的分辨率太小,字看不见呀。把图改成pdf格式传上来行吗?要不我帮你转。

hzn1948 发表于 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)
其它就只剩下电阻电容了

hzn1948 发表于 2009-10-16 10:25:08

回18楼:请把转换的方法说一下,我好再学一着

CSLIN93 发表于 2009-10-16 10:29:45

mark!

wangxiaoacc 发表于 2009-10-16 10:29:57

我用这个Acrobat_8_Pro.iso制作pdf,挺大的400M吧,你可以网上下,它可以读写pdf文件。可以吧其他文件转换成pdf,安装好后你会发现你多了一个打印机,一个虚拟打印机,吧文件打印成pdf。

mystm32 发表于 2009-10-16 10:56:33

mark

hzn1948 发表于 2009-10-16 10:59:00

protel99se的sch文件ourdev_492211.rar(文件大小:8K) (原文件名:Sheet3.rar)

hzn1948 发表于 2009-10-16 11:12:27

原理图已上传,有兴趣的自己打开看吧,欢迎拍砖
需要说明的是,该制作属于学习型的,自娱自乐,山寨版作品,与真仪器的要求相差很远
各位拍砖时还望手下留情

elecfun 发表于 2009-10-16 11:23:00

很强的说!
手机上的,回去在研究

root_007 发表于 2009-10-16 11:29:07

快快完成,俺们好仿一个。:D

yanwuxu 发表于 2009-10-16 12:18:22

谢楼主分享,顺便转换成PDF格式方便需要的兄弟们^_^
基于Atmega88的 迷你多功能仪表PDF格式ourdev_492233.pdf(文件大小:19K) (原文件名:main.pdf)

hzn1948 发表于 2009-10-16 14:29:12

用手机拍了一些照片,以证明项目的真实性,效果好坏就不计较了
我在一块洞洞板上搭接了两套实验电路,都经过多次改动,所以很乱,难以见人所以都在镜头外

http://cache.amobbs.com/bbs_upload782111/files_20/ourdev_492285.jpg
启动界面 (原文件名:IMG0244A.jpg)

http://cache.amobbs.com/bbs_upload782111/files_20/ourdev_492286.jpg
日历时钟温度显示 (原文件名:IMG0245A.jpg)

http://cache.amobbs.com/bbs_upload782111/files_20/ourdev_492287.jpg
测104电容 (原文件名:IMG0246A.jpg)

http://cache.amobbs.com/bbs_upload782111/files_20/ourdev_492288.jpg
测某电感 (原文件名:IMG0247A.jpg)

http://cache.amobbs.com/bbs_upload782111/files_20/ourdev_492289.jpg
测该电感时用频率计测得的频率值 (原文件名:IMG0248A.jpg)

http://cache.amobbs.com/bbs_upload782111/files_20/ourdev_492290.jpg
输出方波 (原文件名:IMG0249A.jpg)

hzn1948 发表于 2009-10-16 15:00:39

http://cache.amobbs.com/bbs_upload782111/files_20/ourdev_492309.jpg
(原文件名:IMG0250A.jpg)

http://cache.amobbs.com/bbs_upload782111/files_20/ourdev_492310.jpg
(原文件名:IMG0251A.jpg)

http://cache.amobbs.com/bbs_upload782111/files_20/ourdev_492311.jpg
(原文件名:IMG0252A.jpg)

http://cache.amobbs.com/bbs_upload782111/files_20/ourdev_492312.jpg
电压表,测DS1302的后备电池 (原文件名:IMG0253A.jpg)

http://cache.amobbs.com/bbs_upload782111/files_20/ourdev_492313.jpg
测3.9欧电阻 (原文件名:IMG0254A.jpg)

http://cache.amobbs.com/bbs_upload782111/files_20/ourdev_492314.jpg
测100K电阻 (原文件名:IMG0255A.jpg)

wangxiaoacc 发表于 2009-10-16 15:39:08

非常好哦!

plc_avr 发表于 2009-10-16 16:22:57

很好!MARK!

huwuzhao 发表于 2009-10-16 16:34:18

LZ能介绍下原理么?

hzn1948 发表于 2009-10-16 16:58:44

任何方面的原理和实现方法我都会介绍和回答
各位可以先看原理图,做一些思考
抱歉我晚上都不在线的

Semiconductor 发表于 2009-10-16 19:05:11

期待......

cuikai12345 发表于 2009-10-16 23:17:16

不错

hzn1948 发表于 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的作用是减小放电时的冲击电流

hzn1948 发表于 2009-10-17 10:27:59

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

jchqxl 发表于 2009-10-17 12:11:38

谢谢

czhaii 发表于 2009-10-17 13:12:31

hzn1948 发表于 2009-10-17 13:38:01

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

hzn1948 发表于 2009-10-19 08:49:42

自己顶一下
继续阐述觉得没动力了,看看情况再说
另外,稍后我会提供.hex运行文件

huwuzhao 发表于 2009-10-19 09:11:18

支持,LZ出个套件吧。

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

hzn1948 发表于 2009-10-19 09:30:42

测量电感,原理和方法与L_C_CE_METER制作资料相同
可在本网站搜该帖,里面有详细说明

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

guolun 发表于 2009-10-19 14:56:06

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

hzn1948 发表于 2009-10-19 16:25:18

PDF版本的原理图在28楼已经有了
谢谢楼上的软件

wangxiaoacc 发表于 2009-10-19 16:26:10

这个软件不错,比我那个小多了~

ch2003_23 发表于 2009-10-19 16:35:32

强悍

whimsy 发表于 2009-10-20 12:44:34

好,顶一下

hzn1948 发表于 2009-10-23 10:22:45

呵呵,居然快沉到海底了!

lv998127 发表于 2009-10-23 14:04:47

我帮顶

gps422129 发表于 2009-10-23 14:34:44

好东西。支持LZ顶

jchqxl 发表于 2009-10-23 14:39:05

谢谢

hzn1948 发表于 2009-10-23 15:32:33

也许有人怀疑,如此简单的制作,测量的精度,稳定性究竟如何?

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

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

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

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

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

sange 发表于 2009-10-23 16:06:38

mark

lv998127 发表于 2009-10-23 16:14:29

楼主能上传NTC测温那部分程序上来吗?贪心问多句:
温度查表的代码如何弄的?

huwuzhao 发表于 2009-10-23 16:19:49

LZ整个套件吧,俺可以当仪表用。

hzn1948 发表于 2009-10-23 16:25:03

本制作中采用了ADC键盘,目的是为了节省I/O口,并非这ADC键盘有什么好,相反是有缺点
这时钟也不实用,学习学习而已,如果去掉,省下的端口可改为键盘信号输入

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

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

hzn1948 发表于 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
   anditemp,0xFE
   out   DDRB,temp
   sbi   PORTB,0

   lds   temp,ACSR
   anditemp,~(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
   sbrcFLAG,t1_ovf
   ret
   sbrsFLAG,ac_comp_out
   rjmpwait_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

   clrr1      ;数字滤波
   movr2,xh
   movr3,xl

   lsrr2
   rorr3
   lsrr2
   rorr3

   ldsyh,r_tested_h
   ldsyl,r_tested_l
   lsryh
   roryl
   lsryh
   roryl

   ldsxh,r_tested_h
   ldsxl,r_tested_l
   subxl,yl
   sbcxh,yh
   addxl,r3
   adcxh,r2
   stsr_tested_h,xh
   stsr_tested_l,xl

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

   ldiwz,(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

   sbiwz,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
   brshplus_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
   brminegtive
   rjmpplus
   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

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

hzn1948 发表于 2009-10-23 16:43:55

分度电阻表t_r_table中的数据不一定对,我是用公式算的,10000对应25度
只要该表数据正确,测出来的温度就会正确

snail0204 发表于 2009-10-23 16:58:04

mark

kevintang 发表于 2009-10-23 17:08:48

怀疑测量电容的准确性,不信可以试一试:在电容上串一只电阻看容量值是否改变,期待楼主的结果

wangxiaoacc 发表于 2009-10-23 17:27:34

做点pcb大家一起玩吧,看汇编头大。要是手头有这个成品就有兴趣了改c程序了。

qianhng 发表于 2009-10-23 20:14:47

哈哈,和hzn1948是同道阿!汇编个头小,速度快,个人感觉很好!

hzn1948 发表于 2009-10-24 08:26:43

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

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

hzn1948 发表于 2009-10-24 08:56:50

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

xk2yx 发表于 2009-10-24 09:04:01

关注。

88488848 发表于 2009-10-24 09:14:38

怎么没穿酷子呀?

ggddll 发表于 2009-10-24 09:28:27

关注!

hzn1948 发表于 2009-10-24 10:45:23

回68楼:
不穿裤子比穿裤子好,功能强大与否一目了然

wangxiaoacc 发表于 2009-10-24 12:36:16

如果你想这样扩展的话,不过加个ATmega128,再加个usb芯片比如d12,加个段式液晶,加个3.2寸的液晶接口。接个红外的接受头。再加个4x4的键盘。sd卡读写口。这样就差不多了吧。然后128的引脚都引出来。

hzn1948 发表于 2009-10-24 14:22:32

楼上是否能考虑不要用M128,我倾向于用M16
理由:不宜太复杂,精简是原则
   便于用直插器件,作为学习板有直观和方便更换的好处

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

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

88488848 发表于 2009-10-24 21:21:09

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


楼主什么时候上HEX呀

shaoyidong 发表于 2009-10-25 07:49:31

mark

bkkman 发表于 2009-10-25 09:30:59

【62楼】 kevintang
怀疑测量电容的准确性,不信可以试一试:在电容上串一只电阻看容量值是否改变,期待楼主的结果
————————————————————————————————————————
问题是没搞清电容测量原理。

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

hzn1948 发表于 2009-10-25 10:53:31

用恒流源充电的好处不明显,恒流源用的元器件多,业余条件下精度不会高,而电阻充电,只要这一个电阻准就可以了

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

jydq 发表于 2009-10-25 12:04:12

楼主最好做个PCB,大家一起公摊费用好了。

wangxiaoacc 发表于 2009-10-25 13:19:14

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

ilikemcu 发表于 2009-10-25 20:50:47

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

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

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

hzn1948 发表于 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

hzn1948 发表于 2009-10-26 08:29:21

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

hzn1948 发表于 2009-11-1 11:28:14

与大家分享一个深刻的经验教训:

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

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

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

qianhng 发表于 2009-11-1 15:35:11

但是我有没接AVCC的,4位数据线的LCD1602一样正常工作阿。

hzn1948 发表于 2009-11-1 16:32:47

不知楼上是否是M88直插
我又试了一次:重新将该连线剪断,回到变成一行黑块,再焊上就又好了

visonlee 发表于 2009-11-1 18:45:06

记号一下

wahaha 发表于 2009-11-1 20:16:51

MARK

qianhng 发表于 2009-11-2 08:38:30

是pdip的m48,见《用M8制作电感、电容、电解电容测量仪表》
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3279392


可能m48和m88不一样吧

hzn1948 发表于 2009-11-2 09:47:50

究竟是M48还是M8?资料上用的是M8呀

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

qianhng 发表于 2009-11-2 11:13:51

我做的是仿的,用的m48,在【186楼】

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

hzn1948 发表于 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为好,免得出莫名其妙的问题

hzn1948 发表于 2009-11-3 15:02:24

没有弄明白的莫名其妙的问题还有一个:
在我的制作里,测量电容时如果电容很小,例如100P,测量结果会发生跳变:
100,115   两种结果交替出现
程序反复检查了不知多少遍了,仍未找到合理的解释

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

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

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

望高手指教,先谢了!

qianhng 发表于 2009-11-3 16:03:34

如果用频率测小电容的话,100P跳变时,看频率各是多少,查查问题出自硬件还是软件。

hzn1948 发表于 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的自动适应 "

qianhng 发表于 2009-11-3 17:59:51

是不是放电时间不够?
要不一直测量,拿去极值平均值来显示?

wangxiaoacc 发表于 2009-11-20 15:37:05

别停呀,大家讨论起来

guiziliu 发表于 2009-11-20 16:09:46

mark

bjj9217 发表于 2009-11-20 16:17:18

mark

foxsports 发表于 2009-11-21 08:47:11

印记一下,学习

kele2009 发表于 2009-11-21 09:16:46

MARK
页: [1] 2 3 4
查看完整版本: AVR综合应用实例:[原创] 基于Atmega88的 迷你多功能仪表