找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

请教两个关于用单片机测放电时间的问题,请指点下,谢谢

查看数: 2369 | 评论数: 6 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-3-12 21:09

正文摘要:

如图是电容放电波形 在开关打开瞬间,波形不连续,应该是开关抖动问题,改用继电器控制,能稍好一些,并联电容也没什么大变化,请教各位有什么方法解决这个问题?我想用可控硅或MOS管来控制,又担会对放电 ...

回复

ID:104797 发表于 2021-3-13 18:17
wulin 发表于 2021-3-13 16:40
电容充放电时间是可以用RC时间常数计算出了的,用示波器也可以直观观察,你这要求有点怪。难道要开发专用 ...

确实有点类似专用仪器了,一块板子要测6个参数,用了5、6台仪器,虽然测试参数简单,但是用的仪器多,测放电时间和最大电压是其中一个,所以想做个能把几个参数都测出来的测量装置,这是其中的一个模块,不想弄的复杂了,但一直没有想出有什么简便的方法。
ID:213173 发表于 2021-3-13 16:40
lhpm641 发表于 2021-3-13 15:35
谢谢指点。
因为充电压12~20V不是固定的(因为还有其它的外转电路),不用AD转换的话,最大放电电压(峰 ...

电容充放电时间是可以用RC时间常数计算出了的,用示波器也可以直观观察,你这要求有点怪。难道要开发专用测量仪器?
ID:104797 发表于 2021-3-13 15:35
wulin 发表于 2021-3-13 09:41
建议用MOS管作为充放电。按图用51单片机外部中断下降沿触发,运放当作电压比较用。原理图和程序不一定能够 ...

谢谢指点。
因为充电压12~20V不是固定的(因为还有其它的外转电路),不用AD转换的话,最大放电电压(峰值)应该怎么用单片机测出来?
ID:213173 发表于 2021-3-13 09:41
建议用MOS管作为充放电。按图用51单片机外部中断下降沿触发,运放当作电压比较用。原理图和程序不一定能够正常运行,但逻辑关系已很清楚。

  1. #include "reg51.h"
  2. sbit key=P1^0;                        //充放电开关
  3. sbit recharge =P1^1; //充电管
  4. sbit discharge=P1^2; //放电管
  5. unsigned int num,num1;//定时器计数变量
  6. unsigned int count=0;        //消抖计数变量
  7. long time; //时间变量us
  8. bit flag=0;//放电结束标志
  9. bit sign=0;//开关状态标志

  10. void main()
  11. {
  12.         TMOD= 0x01;
  13.         TH0 = 0x00;
  14.         TL0 = 0x00;
  15.         TR0 = 0;//关闭定时器
  16.         ET0 = 1;
  17.         EA  = 1;     
  18.         IT0 = 1;
  19.         EX0 = 1;   
  20.         while (1)
  21.         {
  22.                 if(!key)        //放电
  23.                 {
  24.                         if(++count>=500 && sign==0)        //放电
  25.                         {
  26.                                 sign=1;                        //操作记忆
  27.                                 recharge =0;//关充电
  28.                                 discharge=1;//开放电
  29.                                 num=0;                //清0
  30.                                 num1=0;                //清0
  31.                                 time=0;                //清0
  32.                                 TR0 = 1;                //启动定时器
  33.                                 while(!flag);//等待放电结束
  34.                                 flag=0;                //清0
  35.                                 time=(long)(num1*65536)+num;//单位us
  36.                         }
  37.                 }
  38.                 else
  39.                 {
  40.                         count=0;                //清0
  41.                         sign=0;                //复位
  42.                         recharge =1;//开充电
  43.                         discharge=0;//关放电
  44.                 }
  45.         }
  46. }
  47. void t0int() interrupt 1
  48. {
  49.     num1++;//累加
  50. }

  51. void exint0() interrupt 0
  52. {
  53.         TR0 = 0;                //关闭定时器
  54.         num=TH0<<8|TL0; //读取寄存器值
  55.         flag=1;                        //放电结束
  56. }



复制代码




ID:516863 发表于 2021-3-13 00:00
按照你的要求,请参考电池充电保护电路及原理。
ID:516863 发表于 2021-3-12 23:58
请问你的电容容量是1F还是1UF?电压是12V还是20V?是短路放电吗?

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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