IC优质推荐优势:优质商家[放心]、 品质保障[安心]、稳定库存[开心]点击搜索体验DS1307
DS1307型号参数和PDF资料下载

厂家:Dallas

描述:64 x 8 Serial Real Time Clock

产品培训模块:Lead (SnPb) Finish for COTSObsolescence Mitigation Program

标准包装:50

类别:集成电路 (IC)

家庭:时钟/计时 - 实时时钟

系列:-

类型:时钟/日历

特点:闰年,NVSRAM,方波输出

存储容量:56B

时间格式:HH:MM:SS(12/24 小时)

数据格式:YY-MM-DD-dd

接口:I?C,2 线串口

电源电压:4.5 V ~ 5.5 V

电压 - 电源,电池:2 V ~ 3.5 V

工作温度:0°C ~ 70°C

安装类型:通孔

封装/外壳:8-DIP(0.300",7.62mm)

供应商设备封装:8-PDIP

包装:管件

----------

Risym Tiny RTC I2C模块 24C32存储器 DS1307时钟模块

【TELESKY】DS1307时钟模块 Tiny RTC I2C模块 24C32存储器 时钟

Tiny RTC I2C模块 24C32存储器 DS1307时钟 时钟模块

全新 DS1307Z DS1307ZN DS1307N 计时-实时时钟 SOP8 贴片

贴片 DS1307 时钟电路,计时-实时时钟 串口 64X8 SOP-8

七星虫 兼容Arduino Tiny RTC I2C模块 24C32存储器 DS1307时钟

直插 DS1307 时钟电路,计时-实时时钟 串口 64X8 DIP-8

全新 DS1307Z 时钟电路,计时-实时时钟 SOP-8

全新 DS1307N 直插 DIP-8 时钟电路,计时-实时时钟IC

【Risym】DS1307Z DS1307 实时时钟芯片 贴片SOP8

时钟模块 OpenJumper出品 时钟模块(DS1307)(含电池) Arduino兼容

树莓派 时钟模块 Rpi RTC DS1307 RaspberryPi 电池可拆卸更换

树莓派 时钟模块 Rpi RTC DS1307 RaspberryPi 绿色PCB板

全新 DS1307Z 时钟电路,计时-实时时钟 SOP-8 可以直接拍

电子积木 Tiny RTC I2C模块 24C32存储器 DS1307时钟

热卖 MAX美信 原装 DS1307ZN DS1307ZN+T 原装进口 现货

电子积木 Tiny RTC I2C模块 24C32存储器 DS1307时钟 Arduino

全新国产DS1307ZN 时钟电路 DS1307Z DS1307 串口 贴片SOP-8

HW-111 Arduino Tiny RTC I2C模块 24C32存储器 DS1307时钟

原装正品 贴片 DS1307ZN+ SOIC-8 芯片 串行 I2C实时时钟

DS1307时钟芯片+ 24C128存储+ DS18B20温度传感器三合一模块 清仓

【MT】DS1307Z 贴片SOP8 时钟电路,计时芯片 10只8元

DS1307 直插DIP-8 时钟电路,计时-实时时钟 串口 64X8

Arduino Tiny RTC I2C模块 24C32存储器 DS1307时钟模块 带电池

Arduino Tiny RTC I2C模块 24C32存储器 DS1307时钟 厂家直销

Arduino DS1307 实时时钟模块 I2C接口 做闹钟 RTC送电池掉电走时

实时钟 时间 模块 DS1307 掉电走时 高精度 低功耗 arduino树莓派

全新 实时时钟芯片 DS1307Z DS1307ZN+TR DS1307ZN

贴片 DS1307Z SOP-8 DS1307 时钟电路,实时时钟 串口 64X8 特价

国产全新 DS1307 DIP-8 直插 电子原件 元器件

可直拍全新现货 DS1307 DIP-8 时钟电路,计时-实时时钟 串口 64X8

RTC 实时时钟模块 进口DS1307 IIC接口 时间 日期 送电池

【特价】DS1307 SOP★原装正品【请拍前先与店主确认价格为准】

RTC I2C模块 存储器 DS1307 时钟模块 24C02 ds1302

DS1307相关文章和问答
  • DS1307晶振不起振问题 2017-9-19 21:18:40
  • 作者:liujiacn

    DS1307的32.768K晶体不起振.我用DS1307做时钟电路,完全断电后(电池也取出了)再上电晶振就不起振了,I2C通讯是对的,程序检查也没问题,没断电时还是正常运行,一断电后晶振就不起振了...郁闷啊!!求助有什么解决方法能让晶振起振啊,求高手指点。

    作者:chunyang

    如果有晶体匹配电容,试着加大或减小容量试试,如果没有匹配电容只能换合适的晶体。

    作者:shibai8899

    我也用过DS1307,是不需要匹配电容的。但在BAT引脚上如果未装有备用电池就会出现I2C通讯正常,但芯片不能正常工作的现象,不知道是否与LZ说的是同一个原因。LZ可以装上备用电池再试。

    作者:原野之狼

    替换些器件进行比较分析下 或许是伪劣产品

    作者:mzsd007

    DS1302 1307假芯片一大把,是否上当了?很多时候假货把工程师整的极度郁闷呢

  • 刚刚完成的DS1307的驱动程序,与大家分享! 2017-9-19 21:18:39
  • 作者:XIANSir

    没有硬件,所以只是仿真通过了,具体硬件能不能用大家还得自己试试啊!;P整个工程打包:

    作者:XIANSir

    部分代码:/****************************************************************************************************************************************** * 函数名称: DS13GetX()* 功能说明: 从DS1307地址addr开始获取size个字节的数据,获取的数据存储在全局变量Buff中,分别为addr->Buff[0] addr+1->Buff[1] ... * 输 入: ui08 addr 获取数据从addr开始,即从DS1302的地址addr处获取第一个要获取的数据* ui08 size 要获取的数据个数,不能等于0* 输 出: ui08 RET_OK 成功从DS1307获取数据 RET_ERR 从DS1307获取数据过程中出现错误* 注意事项: 1、获取的数据存储在全局变量Buff中,分别为addr->Buff[0] addr+1->Buff[1] ... * 2、调用函数时给size赋值0会导致函数返回RET_ERR ******************************************************************************************************************************************/ui08 DS13GetX(ui08 addr,ui08 size){ ui08 i = 0; if(addr+size > 64) //要访问的所有数据的地址都不能大于63 { return RET_ERR; } if((size > 8) || (size == 0)) //size不能超过Buff[]的容量,且size为0无意义 { return RET_ERR; } /* 这里的写操作实际是一个伪写操作,作用是设置下面的读数据的起始地址 */ iic_genS(); //产生起始信号 iic_send(DS1307_ADDR|0); //发送DS1307芯片地址及读写位,0表示写 if(ACK_NO == iicIsAck()) //检测DS1307是否有响应 { iic_genP(); //产生停止信号 return RET_ERR; } iic_send(addr); //发送读取数据的起始地址 if(ACK_NO == iicIsAck()) //检测DS1307是否有响应 { iic_genP(); //产生停止信号 return RET_ERR; } iicgenSr(); //产生Repeated Start iic_send(DS1307_ADDR|1); //发送DS1307芯片地址及读写位,1表示读 if(ACK_NO == iicIsAck()) //检测DS1307是否有响应 { iic_genP(); //产生停止信号 return RET_ERR; } for(i=0;size>0;i++,size--) //从addr处读取size个字节的数据 { Buff = iic_reci(); iicDoAck(); } iic_reci(); //DS1307要求必须使用NOAck来结束数据读取 iicNoAck(); //DS1307要求必须使用NOAck来结束数据读取 iic_genP(); //产生停止信号 return RET_OK;}/****************************************************************************************************************************************** * 函数名称: DS13SetX()* 功能说明: 向DS1307地址addr开始写入size个字节的数据,将要写入的数据存储在全局变量Buff中,分别为Buff[0]->addr Buff[1]->addr+1 ... * 输 入: ui08 addr 数据被写入从addr开始的地址处,即向DS1302的地址addr处写入第一个要设置的数据* ui08 size 要设置的数据个数,不能等于0* 输 出: ui08 RET_OK 成功向DS1307设置数据 RET_ERR 向DS1307设置数据过程中出现错误* 注意事项: 1、将要写入的数据存储在全局变量Buff中,分别为Buff[0]->addr Buff[1]->addr+1 ... * 2、调用函数时给size赋值0会导致函数返回RET_ERR ******************************************************************************************************************************************/ui08 DS13SetX(ui08 addr,ui08 size){ ui08 i = 0; if(addr+size > 64) //要访问的所有数据的地址都不能大于63 { return RET_ERR; } if((size > 8) || (size == 0)) //size不能超过Buff[]的容量,且size为0无意义 { return RET_ERR; } iic_genS(); //产生起始信号 iic_send(DS1307_ADDR|0); //发送DS1307芯片地址及读写位,0表示写 if(ACK_NO == iicIsAck()) //检测DS1307是否有响应 { iic_genP(); //产生停止信号 return RET_ERR; } iic_send(addr); //发送数据要写入的地址 if(ACK_NO == iicIsAck()) //检测DS1307是否有响应 { iic_genP(); //产生停止信号 return RET_ERR; } for(i=0;size>0;i++,size--) { iic_send(Buff); if(ACK_NO == iicIsAck()) //检测DS1307是否有响应 { iic_genP(); //产生停止信号 return RET_ERR; } } iic_genP(); //产生停止信号 return RET_OK;}

    作者:hippo821

    呃、:L

    作者:abin0415

    :L

    作者:cgkdxx

    谢谢大哥 还没看明白,再看看

    作者:Vin2721

    大神

    作者:xfzl

    附件怎么无法下载呢?

    作者:416356084

  • 高人指教:读DS1307寄存器时,DS1307不工作? 2017-9-19 21:18:43
  • 作者:chm269

    DS1307寄存器时,DS1307不工作?是用PROTUES 仿真程序:#include <reg52.h>#include <absacc.h>//#include <intrins.h> void _nop_(void);#define Uchar unsigned char#define Uint unsigned int#define Lcd_cmd_wr XBYTE [0x8000]#define Lcd_data_wr XBYTE [0x8100]#define Lcd_busy_rd XBYTE [0x8200]#define Lcd_data_rd XBYTE [0x8300]#define Lcd_cls 0x01#define Lcd_home 0x02#define Lcd_setmode 0x04#define Lcd_setvisible 0x08#define Lcd_shift 0x10#define Lcd_setfunction 0x20#define Lcd_setcgaddr 0x40#define Lcd_setddaddr 0x80#define DS1307_W 0xD0#define DS1307_R 0xD1sbit busy=P0^7;sbit E=P1^1;sbit A15=P2^7;sbit wdg=P3^4;sbit I2C_SCK=P1^6;sbit I2C_SDA=P1^7;sbit led=P1^0;Uchar RTC_ADDRESS[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06};Uchar WRITE_DATA[]={0x31,0x02,0x13,4,0x21,0x05,0x09};Uchar DISPLAY_DATA[7];void Delay_us(Uchar i){ while(i--);}void short_delay(){ _nop_();_nop_(); _nop_();_nop_(); _nop_();_nop_();}void delay(){ Uint i=500; while(i--) {Uchar j=120; while(j--); }}//***********************************************// I2C subprocedure////***********************************************bit I2C_Start(void){ short_delay(); I2C_SDA =1; short_delay(); I2C_SCK =1; short_delay(); if ( I2C_SDA == 0) return 0; if ( I2C_SCK == 0) return 0; I2C_SDA = 0; short_delay(); I2C_SCK = 0; short_delay(); return 1;}void I2C_Stop(void){ short_delay(); I2C_SDA = 0; short_delay(); I2C_SCK = 1; short_delay(); I2C_SDA = 1; short_delay();}void I2C_Ack(void){ short_delay(); I2C_SDA=0; short_delay(); I2C_SCK=1; short_delay(); I2C_SCK=0; short_delay();}void I2C_Nack(void){ short_delay(); I2C_SDA=1; short_delay(); I2C_SCK=1; short_delay(); I2C_SCK=0; short_delay();}bit I2C_Send_Byte(unsigned char d){ unsigned char i=8; bit bit_ack; while( i-- ) { short_delay(); if ( d &0x80 ) I2C_SDA =1; else I2C_SDA =0; short_delay(); I2C_SCK = 1; short_delay(); I2C_SCK = 0; d = d << 1; } short_delay(); I2C_SDA = 1; short_delay(); I2C_SCK = 1; short_delay(); bit_ack = I2C_SDA; I2C_SCK =0; short_delay(); return bit_ack;}unsigned char I2C_Receive_Byte(void){ unsigned char i = 8, d; short_delay(); I2C_SDA = 1; while ( i--) { d = d << 1; short_delay(); I2C_SCK =1; if ( I2C_SDA ) d++; short_delay(); I2C_SCK =0; } return d;}//**********************************************************************************//void wrcmd(Uchar i){ Lcd_cmd_wr=i; Delay_us(10); wdg=1; wdg=0;}void wrdata(Uchar i){ Lcd_data_wr=i; Delay_us(10); wdg=1; wdg=0;}//****************************************************************************//// DS1307读写子程序/****************************************************************************/void Write_DS1307( unsigned char address,unsigned char dat ) { I2C_Start(); I2C_Send_Byte(DS1307_W); I2C_Send_Byte(address); //发送地址 I2C_Send_Byte(dat); //发送数据 I2C_Stop(); } unsigned char Read_DS1307 ( unsigned char address ) { Uchar temp; I2C_Start(); I2C_Send_Byte(DS1307_W); I2C_Send_Byte(address); I2C_Start(); I2C_Send_Byte(DS1307_R); temp=I2C_Receive_Byte(); I2C_Nack(); I2C_Stop(); return temp;}/****************************************************************************///****************************************************************************// DS1307 init ////**************************************************************************//void DS1307_init(void){ Uchar i,*p,*s; p=RTC_ADDRESS; s=WRITE_DATA; for(i=0;i<7;i++) { Write_DS1307(*p,*s); p++; s++; }}//********************************************************************read timevoid Read_time(void){ Uchar i,*p; p=RTC_ADDRESS; for(i=0;i<7;i++) { DISPLAY_DATA=Read_DS1307(*p); p++; }}/*显示屏字符串写入函数*/void LCD_write_str(unsigned char x,unsigned char y,unsigned char *s) { if (y == 0) { wrcmd(0x80 + x); } else { wrcmd(0xC0 + x); } while (*s) { wrdata( *s); s ++; }}/*显示屏单字符写入函数*/void LCD_write_char(unsigned char x,unsigned char y,unsigned char date) { if (y == 0) { wrcmd(0x80 + x); } else { wrcmd(0xC0 + x); } wrdata( date); }void main(){ P1=0xff; Lcd_cmd_wr=0x38; Delay_us(10); Lcd_cmd_wr=0x0c; Delay_us(10); DS1307_init(); Read_time(); while (1) { Read_time(); LCD_write_char(1,0,((DISPLAY_DATA[0]>>4)&0x0f)+0x30); LCD_write_char(2,0,(DISPLAY_DATA[0]&0x0f)+0x30); LCD_write_char(4,0,((DISPLAY_DATA[1]>>4)&0x0f)+0x30); LCD_write_char(5,0,(DISPLAY_DATA[1]&0x0f)+0x30); LCD_write_char(7,0,((DISPLAY_DATA[2]>>4)&0x0f)+0x30); LCD_write_char(8,0,(DISPLAY_DATA[2]&0x0f)+0x30); LCD_write_char(1,1,((DISPLAY_DATA[4]>>4)&0x0f)+0x30); LCD_write_char(2,1,(DISPLAY_DATA[4]&0x0f)+0x30); LCD_write_char(4,1,((DISPLAY_DATA[5]>>4)&0x0f)+0x30); LCD_write_char(5,1,(DISPLAY_DATA[5]&0x0f)+0x30); LCD_write_char(7,1,((DISPLAY_DATA[6]>>4)&0x0f)+0x30); LCD_write_char(8,1,(DISPLAY_DATA[6]&0x0f)+0x30); }}如果在死循环里屏蔽掉Read_time();DS1307就正常计时。不会上传图片

    作者:chm269

    上图protues 仿真

    作者:chm269

    顶一下

    作者:ningling_21

    程序确定没问题?为何不用1302

    作者:chm269

    TO ningling_21估计应该是Read_time()有问题,自己看不出来。因为这是按我的一块学习板上画的仿真电路,板上的LCD1602坏了。板上用的是1307

    作者:ningling_21

    我的读时间是这样的,实际测试无误I2C_Gets(0xd0,0x00,7,s); //读时间,7字节

    作者:chm269

    我试一下去

  • 请教DS1307不起振的原因 2017-9-19 21:18:42
  • 作者:laijie_991

    关于DS1307的32.768K晶体不起振.问题1:在没有配置初始时间的时候,我上电包括电池和外部电源,它是否表现为 晶振不工作?问题2:目前匹配电容为10pf,匹配电阻为47K,而且线路很短且步线工整,按照我 的理解是硬件的可能性较大,请指教.

    作者:laijie_991

    ds1307,工作是正常了.但是1天误差时间在10s左右.ds1307,工作是正常了.是里面寄存器CH没有打开.因此没有时钟波形.但是1天误差时间在10s左右.误差有点大,一方面可能是32.768的晶振误差太大,还有就是芯片本身误差就比较大,现在正在查问题,希望高手指点一二.如果芯片本身做不大,是否有其它精度高的RTC推荐,谢谢.

    作者:ayb_ice

    RTC的精度仅与晶振有关...

  • ds1307星期天的问题 2017-9-19 21:18:42
  • 作者:jbzx

    ds1307星期的范围是1-7,请问:星期天是1还是7?

    作者:无智

    去www.icgo.com.cn找个datasheet看看,以前用过的DS1302是1到7!

    作者:jbzx

    数据手册上没有手册上只有1-7,但是没写星期天是几.DS12c887我用过,星期天是1,不知道ds1307星期天是几?

    作者:jbzx

    ding

  • 我的DS1307为何无应答? 2017-9-19 21:18:41
  • 作者:luomh98

    提示: 作者被禁止或删除 内容自动屏蔽

    作者:hotpower

    先用IO模拟I2C/SMBus~~~可能是模块设置不对

    作者:luomh98

    提示: 作者被禁止或删除 内容自动屏蔽

    作者:qjy_dali

    用逻辑分析仪搞定它当然深度可以的存贮式示波器也一样

    作者:luomh98

    提示: 作者被禁止或删除 内容自动屏蔽

    作者:mikesullen

    仔细检查硬件连接问题如果单片机发出的时序没问题,极有可能是个比较简单的硬件连接问题。

    作者:wzh801114

    建议你换用我们的时钟IC提供技术和样片当您在科研、生产、采购时碰到疑难,当您苦苦寻觅而一筹莫展,请联系我们,或许我们有您急需的产品,或许您的困难将迎刃而解!全面替代DS1302/DS1307/HT1380/HT1381/PCF8563/PCF8583/R5C372/R8025可充电电池非易失储存器时钟芯片工业级晶振数字温度补偿接口I2C总线接口年误差不超过2分钟使用寿命5至10年详细资料和产品价绍你可以看一下我们的网站:www.whwave.com.cn深圳兴威帆电子技术有限公司王子华0755-8311183513538258113

    作者:hotpower

    楼上应该穿裤子~~~学习学习~~~

    作者:victech

    我用F340与F020用SMBus通讯也遇到了同样的问题F340做Master,F020做Slave,F340的时序地址发出都正常,但就是没有应答。F020也进中断,Debug状态下状态寄存器总是返回0x00。楼主能不能帮忙分析一下什么原因,谢谢!

    作者:luowei2651

    kan

    作者:Gsyong

    请问问题解决了吗?我也遇到没有应答信号的问题,关键是我的晶振都没有起振!

  • VS1307 和 DS1307 构成的RTC时间不准 2017-9-19 21:18:38
  • 作者:ningling_21

    如题:STC11F60XE,LCD构成的时钟,按键+通信。时间调整后24小时就偏差有的1-2分钟,有些偏差几十分钟。更换32.768K晶振无效。程序中也不会修改时间间。大家有没有遇到这样的问题?

    作者:dirtwillfly

    这个程序要对时间进行修正才行的。首先你用示波器测一下32.768K晶振和STC11F60XE的晶振是否是精准的,若是不准可以更换电容进行调节或者用软件进行修正。网上也有类似的讨论,你可以去看看

    作者:ningling_21

    修正?RTC芯片的时间如果还要修正,那RTC还有什么用呢?再说,单片机哪知道RTC快了,还是慢了呢?

    作者:renwocai

    RTC本身不准。如果确定单片机所用的晶振的频率理论上是可以修正的。或者换RTC

    作者:dirtwillfly

    RTC芯片如果不用修正,就不用有国家标准时间了:lol

    作者:ningling_21

    总不能一天修正一次吧我说的是,首先要手动调整时间和标准时间校准,之后就要RTC自己运行了...

    作者:ningling_21

    RTC应该允许的误差范围,一年误差几分钟是允许的...

    作者:dirtwillfly

    让程序自动修正,可以是每天一次,也可以每小时一次,甚至每分钟一次都没问题修正不是对时

    作者:wh6ic

    不想频繁时间修正也可以,可以购买高精度的32768晶振,有+/-5ppm的,4~5毛钱一粒,一天的累积误差不到0.5秒。市面上买到的极便宜的32768通常是筛选下来的,有的误差的确很离谱。

    作者:ningling_21

    RTC还要不断修正,以什么作参考呢? 谁知道它会快还是会变慢...

    作者:dirtwillfly

    所以开始的时候,你要每天对一下时间,看快了或慢了多少秒,然后改程序,直到误差满意为止或者拟采用GPS授时之类的方式

    作者:HORSE7812

    mark

    作者:juliuszwj

    晶振偏差引起的,要高精度就用高精度RTC或者晶振。8025T或者TCXO吧。

    作者:ningling_21

    偏差离散度这么高,一个一个调整的搞那产品岂不是没法做了...GPS改方案,成本又高了.

    作者:QuakeGod

    正规的产品还真的就是一个一个修正的呢。那些高档的机械表也是这么做出来的。当然不用用一天的时间来测偏差多少,如果你有高精度的时钟源,那么几秒钟的时间你就可以测出每天会差几秒,然后调节程序或电容即可。一个人一天调整完上千个没有任何问题。

    作者:ningling_21

    问题已浮出水面:开始测试的大部分都是DS1307,后来发现有个别VS1307时间误差很小,就把所有的DS1307都换成了VS1307再测试,连续运行48小时,误差小于3秒... 并且一致性也很好。

  • DS1307+AT24C32计时 2017-9-19 21:18:37
  • 作者:crystal1987

    想问下各位,在做RTC时,DS1307+AT24C32是使用外部晶振,STM32也是使用外部晶振,为什么DS1307+AT24C32的计时比STM32的准确?是因为它的晶振更精确么?

    作者:mmuuss586

    用时钟芯片精度更高点;STM32的时钟,外接的32.768的那个吗?可以自己校准看看;

    作者:airwill

    原因在时钟源上.

    作者:crystal1987

    好的,谢谢回复。STM32的校准已经做过啦,没有校准前每天快7s,校准后每天快1s,但是这个精度感觉还不够;网上看到好多使用DS1307+AT24C32,所以想问问,为啥DS1307+AT24C32比STM32+外接32.768K的晶振计时准。

    作者:crystal1987

    谢谢,不过,没太明白,能说的清楚些么。时钟源选择的是SLE,外接32.768K晶振。我觉得和时钟源应该关系不大,重要的还是那个32K的晶振吧。

  • 采用AVR单片机的小型采暖炉控制系统抗干扰设计 2017-9-19 21:18:35
  • 摘要:本文针对 AVR单片机在小型工业控制系统实践应用中遇到的数据跳动、静电感应、尖峰电压、液晶显示花屏等抗干扰问题,在分析单片机在小型工业控制系统应用中的干扰源基础上,提出了用阻容滤波、光耦隔离、压敏电阻以及选用合适器件、调整液晶显示窗开孔尺寸、采用外部看门狗和外部时钟等一系列具体抗干扰的技术措施。通过在小型采暖炉控制系统中实践和应用,取得良好效果。

    1. 引言:

    单片机在工业控制领域应用时不同于民用、商用领域中的应用,工业控制所处的环境相对比较恶劣,干扰源多,其常见干扰源来自现场工业电气在投入、运行、切断等工况下产生的静电感应、尖峰电压、浪涌电流等干扰。实践表明,在工作室中按用户要求设计的小型工业采暖控制系统,尽管各项逻辑功能及技术指标的测试都正常,但该系统拿到现场上却不能使用,检测失灵,操作失控,显示花屏等现象接踵而来。经分析,其干扰是从现场不同路径传入单片机控制系统的。切断干扰源,提高单片机抗干扰能力是解决控制系统正常工作的前提。

    2 抗干扰措施

    2.1 测温信号的抗干扰

    测温电路采用的是单总线芯片DS18B20,该芯片具有测温精度高,连接线路简单等优点,其测温范围为-55℃到+125℃。适合于采暖系统测温,在实际应用中当温度在 60℃以下时可正常工作,随着温度的升高,当温度大于 60℃以上时,测温数据开始跳动,且温度越高跳动越剧烈,甚至无法观测。电源加了滤波退偶电路效果不明显,在数据线上并接小电容进行高频旁路时,电容小不起作用,电容大了则数字信号消失。最后经试验在数字电路上加如图 1所示标称值的 RC阻容滤波电路达到了预期效果。


    2.2 限位开关信号的抗干扰

    由于限位开关及馈线与 220V交流负载比较靠近,因此,负载产生的交流强磁场直接对限位开关及馈线产生干扰。解决的办法采用光电隔离方式,通过光耦组件 PC827将单片机控制回路与被控回路负载(如电机)隔离开来。从而大大减小了来自负载回路对单片机产生的干扰。

    2.3 电源回路的抗干扰

    电源干扰中的尖峰干扰是一种频繁出现的叠加于电网正弦波上的高能脉冲,其幅度可达几千伏,宽度只有几个毫微秒或几个微秒,抑制办法可从多方面入手。如图 2所示,T1为电源变压器,在其交流电源的输入端并联压敏电阻 RV用来吸收电网瞬间产生的尖峰电压;C1为高频旁路电容,抑制高频差模干扰,C2和 C3用来抑制高频共模干扰。电感 L1中两个线圈绕向相同,流过的电流大小相等,但每一瞬变间的电流方向相反使感生的电磁场方向也相反,故生成的反电势干扰可以相互抵消。可有效抑制电源端较低频率的干扰。


    2.4 输出驱动电路的抗干扰

    输出驱动采用电磁继电器方式,通过电接点带动交流电机或直流电磁铁,尽管继电器具有一定的电磁隔离作用,但交流电机或电磁铁激磁线圈断开时会产生高压反电势产生串扰。解决的办法如图3(a)所示,在交流负载如电机两端并接一个高压电容C2,当驱动电路使继电器接点 K断开电机时产生的高压反电势可由并接在电机负载上的电容 C2来吸收掉。该电容大小应适当,一般取所带电机中分相电容 C1的十分之一即可。太小作用不明显,太大则影响分相电容的工作,以致启动力矩太小电机堵转。

    另外继电器内部的交流 220V接点离继电器线圈很近,很容易产生静电干扰,严重时会使液晶显示器乱码。实践证明继电器结构不同其抗静电干扰能力也不同。应尽量选择继电器线圈与接点距离较远的为好,如图3(b)中的 J2结构的继电器(JQX14F系列)等。


    2.5 液晶显示器的抗干扰

    显示电路采用 LCD汉字液晶显示。LCD液晶显示与 LED数码管显示相比具有信息量大,省电,且连接线路简单等优点。但液晶显示的一个致命弱点是抗静电干扰能力差,在使用中一旦有较强的干扰信号出现,显示器就会出现乱码或花屏。尤其是有汉字的液晶显示器花屏出现的机率更高。解决的方法是一方面尽量切断产生静电干扰的途径,另方面是减少液晶显示器本身产生静电干扰的条件。其中,后者更为重要。一般液晶显示器在结构上都有固定液晶显示器面板的金属框。如果在安装时该金属框直接接触外边的固定表盘,形成接触面,使液晶面板会通过金属框及外面固定的金属表盘之间产生电容效应,因而静电干扰不可避免。如图 4所示,要减少静电干扰就必须减少电容效应。具体解决的措施是:将开孔尺寸拓展到图中虚线位置。使得显示器的金属框远离仪表机壳,实测结果电容效应几乎为零。从而乱码和花屏现象不再出现。


    2.6外部看门狗与外部时钟

    看门狗也称程序监视定时器。尽管 AVR单片机系统内也有该功能的设置,但在应用实践中发现当干扰严重时该功能会失效,即系统死机后单片机内部的看门狗也无法复位。故有必要在单片机外部单独设计看门狗电路。如图 5所示,由 MC4060芯片及外围电路构成一个看门狗电路。MC4060是一个带外接振荡的 14分频定时计数器,R18和 C2时间常数决定振荡频率。采用如图 5所示的参数时,该振荡频率经过 2秒左右时间后 14分频计数器将被记满,Q14由低电平变高电平经三极管 Q3构成的反相器使输出变为低电平,M16单片机被复位。程序正常运行时,会在规定的时间以内(2S左右)由程序向看门狗 MC4060芯片及时发清零(喂狗)信号,使定时计数器还没有记满就被清除,故不会产生复位信号;当程序“跑飞”时,看门狗便不能在规定的时间内得到清除(喂狗)信号,则看门狗将使 M16单片机复位使程序重新开始工作。

    为配合看门狗在控制器死机后的复位工作,如图 5所示控制器的系统时钟由外部的时钟专用集成电路 DS1307提供,AVR单片机内部时钟资源仅对程序中的延时变量提供相对时间。这样的好处是当看门狗一旦使系统复位,AVR内部时钟必然要清零,而外部系统时钟不会被清零,不影响控制器定时启动或定时停止等项功能的实施。另外,外部时钟 DS1307芯片耗电极省仅需 0.5微安,而内部时钟即使在省电模式下也需要几毫安以上。若用小型 20mAh容量锂电作电源后备,掉电后外部专用时钟可在几年内信息不丢,而内部时钟不到一天就没电了。


    3.结束语

    在设计开发 A VR单片机在工业控制系统中的应用中,抗干扰是一个不能绕过去的现实课题。要解决该课题,熟悉常用的抗干扰措施是一个重要前提。但由于干扰因素多,控制对象及所要求的控制功能不尽相同,所以抗干扰措施并没有固定模式,只能在实践中通过不断摸索来筛选更合理更有效的方案。本文所述的抗干扰措施是一点实践经验的总结,供参考。

    本文创新点:1.在 DS18B20数据线上接阻容电路;2.在电源的输入端并联压敏电阻以吸收尖峰电压;3.加大液晶显示器开孔尺寸以减少它本身产生静电干扰。



    来源:zhengxiaoxiao
  • 与GPRS模块串口连接的小区无线抄表系统 2017-9-19 21:18:34
  • 引 言

    电能计量是现代电力营销系统中的一个重要环节。传统的电量结算是依靠人工定期到现场抄取数据,在实时性、准确性和应用性等方面都存在诸多不足之处;将现代通信技术和计算机技术以及电能量测量技术结合在一起,能够及时、准确、全面地反映电量的使用(即销售)情况。本方案首先采用短距离无线通信方式将用户电表的电量信息集中起来,然后通过GPRS无线局域网,以一种短消息的方式将此信息送给总控中心,以实现远程自动无线抄表功能。

    1 系统总体设计

    基于GPRS的智能小区无线抄表系统主要由3部分组成:无线电表、现场主控节点以及远程GPRS无线控制终端。

    图1是某小区的无线抄表系统组成框图。其中无线电表是将传统的电表所采集到的电量做相应的处理,并配置无线收发模块以短距离无线的方式将此电量信息发进出去。现场主控节点除了配置无线数传模块外,还需要配置GPRS无线收发模块,首先将每个楼层以无线方式所采集到的电量数据集中起来,然后通过GPRS模块将此信息发送出去。远程GPRS无线控制终端主要完成对GPRS无线数据的收发,以对现场所采集到的电量数据作相应的处理。

    2 现场主控节点设计

    无线抄表系统中最主要的是现场主控节点的设计。该部分主要包括无线数据收/发以及GPRS数据收/发两部分。其中无线数据收发系统中所采用的模块与无线电表中所使用的模块相同。现场主控节点设置在小区各楼层的中心位置,负责定时将单个单元采集点测量的应变数据进行初步的集中。主控节点通过无线数传模块完成对现场采集点的信令控制和数据提取,并通过GPRS模块对远端主控中心的数据请求作出响应。现场主控节点组成框图如图2所示。

    主站以Armel公司的AT89C2051作为主控制器,包括无线数传模块、存储模块、电平转换模块和时钟模块。微控制器选用ATB9C2051。该控制器内部有1个全双工异步串行通信模块UART,可以发送/接收8位数据,带有帧错误检测功能。数据存储器选择容量为64 KB的EEPROM存储器AT24C256,通过微控制器的I/O口(P1.2引脚)外接存储器的SDA脚,实现数据读/写;P1.3引脚外接SCL脚,提供读/写时序信号。微控制器通过串行接口TX(P3.0引脚)和RX(P3.1引脚)外接无线数传模块的发送和接收单元,通过MAX232电平转换芯片接GPRS模块的RS232口。单片机的串行口同时连接两个设备的串行口,容易出现硬件冲突。采用分时复用方式可保证同一时刻只连接一个设备的串口。

    时钟模块采用基于I2C总线结构的时钟芯片DS1307。DSl307串行实时时钟芯片是一种低功耗,全部采用BCD码的时钟/日历芯片,内带56字节的NVSRAM。地址和数据是通过I2C总线进行串行传输的。它能提供秒、分、时、日、星期、月和年信息。它具有可编程方波输出信号;时钟可以以24小时模式工作或者用AM/PM来指示以12小时模式工作。DS1307有一个内置电源敏感电路,能检测到主电源掉电并自动切换至电池供电;可选工业温度为一40~+85℃。微控制器模拟I2C总线的读/写控制时序完成对实时时钟信息的读/写操作。

    2.1 基于DTD462A的数据收/发模块设计

    DTD462A属于微功率智能型无线数传模块,其内部集成了8位CMOS低功耗高速MCU AT90S2313。DTD462A最大发射功率为10mW,工作在433MHz的ISM频段;采用基于FSK的调制方式和高效前向纠错信道编码技术,具有较高的数据抗突发干扰和随机干扰的能力,可靠传输距离可达300m;提供透明的数据接口,能适应任何标准或非标准的用户协议;具有休眠功能以及可靠性高、体积小、重量轻的特点。系统采用DTD462A-96,通信接口速率为9600bps,通信信道是半双工的,最适合点对多点的通信方式。

    DTD462无线数传模块提供标准RS232、RS485和UART/TTL电平3种接口方式,可直接与计算机、RS485设备、单片机或其他UART器件连接使用。DTD462提供1个9针的连接器(JPl),其定义及与终端的连接方法如表1所列。

    图3给出了DTD462A与AT89C2051的接口设计方法。

    DTD462A数传模块的第8脚SLP(SLEEEP)是休眠控制信号。为进一步降低系统功耗,软件控制现场数据采集节点的DTD462A模块平时工作在间歇休眠状态。SLP(SLEEP)信号持续1ms低电平(4800 bps以上200μs即可),DTD462A进入休眠。如果休眠信号到来时,DTD462A正在接收空中数据或正在将接收的串口数据发射到空中,则当接收完该组数据后,DTD462A才进入体眠状态。第9脚RST(RESET)是微功率数传模块的MCU外部复位信号。该信号用来复位MCU,也可唤醒已经体眠的MCU。该信号持续lOμs低电平,DTD462A复位或被唤醒。在RESET信号的上升沿后20ms,DTD462A即可开始工作。

    平时,现场主控节点的DTD462A模块处于休眠状态。当需要对采集节点进行数据请求时,唤醒DTD462A;当所有的采集节点的数据传送完后,DTD462A重新进入休眠状态。现场主控节点对DTD462A状态的控制是通过AT89C2051 P1口的P1.6和P1.7脚实现的。

    2.2 GPRS终端设计原理

    GPRS终端采用Q2403A核心模块研制而成。Q2403A是法国Wavecom公司推出的新一代无线通信GSM/GPRS模块,基于EGSM/GPRS 900/l800 MHz双频,带有16 MB的闪存和2MB的SRAM,支持class2,通过AT指令控制;体积为58.3mm×32.2 mm×3.9 mm;执行ETSI GSM Phase 2+标准;下载速率为26.8kbps,上传速率为13.4 kbps;功耗为2W(900MHz)和1W(1800MHz);SIM 3V/5V和SIM检测;支持GPRSWAP。

    在硬件构成上,远端控制中心采用PC+GPRS模块的架构,各现场主控中心则采用MCU+GPRS模块的硬件架构。GPRS模块仅提供标准的RS232通信接口,与PC机连接十分方便,因而远端控制中心的构造很容易实现;在桥梁现场,GPRS模块与MCU间是通过串行口进行通信的,通信速率最高可达115 200 bps;系统采用GPRS模块,默认的波特率为9600 bps。模块与控制器间的通信协议是AT命令集,其中大部分命令是符合协议“ATcommand set for GSM Mobile Equipment(ME)(GSM07.07 version 6.4.O Release1997)”的,但也有一些是Wavecom公司定义的AT命令。MCU提供TTL电平标准的串行口UART,而GPRS模块的串行通信口是属于RS232电平标准的。二者不能直接相连,需要设置TTL-RS232电平转换模块。利用MAK3232C实现电平转换功能,其转换原理如图4所示。除了串口发送(TX)、串口接收(RX)之外,MCU与GPRS模块之间还有一些硬件握手信号,如DTR、CTS、DCD等。为了简化微控制器的控制,硬件设计时没有使用全部的硬件握于信号,而只使用数据载波检测DCD(Data Carrier Detect)和终端准备DTR(Da-ta Terminal Ready)信号。DCD信号可以检测GPRS模块是处于数据传送状态还是处于AT命令传送状态,DTR信号用来通知GPRS模块传送工作已经结束。

    硬件连接完成后,在进行收/发短消息之前,应该对GPRS模块进行一定的设置。主要的设置工作有:通信波特率,采用“AT+IPR=(波特率)&W”命令,本系统采用模块默认的波特率9 600 bps;短消息服务中心号码,通过“AT+CSCA=+8613800270500”将服务中心号码设置为13800270500。

    3 系统软件设计

    系统上电复位首先完成对各端口和模块的初始化。作为现场采集系统的主站,与子站通信时,微控制器定时向各子站发出唤醒信息,然后转入接收状态,等待应答。主站收到应答信号后发送传输数据命令,并且接收该子站发送来的数据,接收完最后一帧数据后,返回检查是否为最后一个子站。如果是,则结束本次数据采集工作;如果不是,则修改握手协议中子站地址识别信息,采集下一个子站的数据。主控节点程序流程如图5所示。

    4 结论

    系统中为每个家庭的电表中配置了无线收/发模块,而在楼层比较密集的地方设置一个现场主控节点。现场主控节点通过无线收/发模块将每个家庭中电表记录的电量信息收集以后进行缓存,然后通过GPRS模块将这些集中的电量信息发送给总控中心,真正实现了总控中心的远程无线抄表功能。此外,该系统还可扩展其他功能,例如当无线电表工作异常时,可以向远程终端发出报警信息,以实现远程终端对电表的实时监控。



    来源:小草
筛选
  • 供应商
  • 型号
  • 数量
  • 厂商
  • 批号
  • 封装
  • 备注
  • 询价