三相正弦波产生器的设计 (2).pdf

上传人:罗晋 文档编号:7203814 上传时间:2020-11-05 格式:PDF 页数:4 大小:253.03KB
返回 下载 相关 举报
三相正弦波产生器的设计 (2).pdf_第1页
第1页 / 共4页
三相正弦波产生器的设计 (2).pdf_第2页
第2页 / 共4页
三相正弦波产生器的设计 (2).pdf_第3页
第3页 / 共4页
三相正弦波产生器的设计 (2).pdf_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《三相正弦波产生器的设计 (2).pdf》由会员分享,可在线阅读,更多相关《三相正弦波产生器的设计 (2).pdf(4页珍藏版)》请在三一文库上搜索。

1、 1 三相正弦波产生器的设计 (浙江工贸职业技术学院 电子工程系,浙江温州 325003) () 摘要摘要:电路主要由一片 STC89C52RC 和三片 DAC0832 等组成,把三相正弦波数据储存于单片机 中,利用查表法把数据逐个送至 P1 端口,同时 P2 口送出控制信号,控制 DAC0832 的片选端和 锁存端,以区分出三相信号,最后均经集成运放进行电流电压转换,输出三相正弦波电压波形。 关键词关键词:STC 单片机;查表法;DA 转换;三相正弦波 笔者于 2008 年第 4 期电子世界杂志上, 曾发过一篇单片机控制的三相正弦波信号发生 器的文章,之后就不断收到读者的反响。原文章 是以硬

2、件为主的三相正弦波电路,电路较复杂,输 出正弦波精度也不足。为满足读者的要求,现再设 计一个电路较简单的三相正弦波电路,以供参考。 常用的 AT89S51 单片机,为“12 时钟周期” 指令,采用 12MHz 晶振时,机器周期为 1s,用于 正弦波产生器时,频率难以做高,特别是用于三相 正弦波产生器。 而常用的 STC89 系列单片机, 为 “6 时钟周期”指令,晶振可提至 36MHz,机器周期时 间最短为 1/6s;而对于 STC12C5A60S2 系列单片 机,速度则更快,为单周期指令,晶振也可提至 36MHz, 机器周期时间最短为 1/36s。 虽然 STC 单 片的资料上说晶振还可更高

3、,但实际制作表明:超 过 36MHz 的晶振,起振不稳定,而且振荡电路也 要作一定的修改。 采用 STC 系列单片机设计三相正 弦波, 频率可做得较高。 上述两种 STC 系列单片机 指令与 51 单片机兼容,便于初学者学习。 1 整机电路图 1 整机电路图 整机电路如图 1 所示,主要由 STC89C52RC、 DAC0832 等组成。晶振采用 36MHz,S1S4 为调 节输出波形频率按钮,S1、S2 为快调,S3、S4 为 VREF 8 RFB 9 GND 10 IOUT1 11 IOUT2 12 DI7 13 DI6 14 DI5 15 DI4 16 DI0 7 CS 1 WR1 2

4、GND 3 DI3 4 DI2 5 DI1 6 XFER 17 WR2 18 ILE 19 VDD 20 U2 DAC0832 P1.0/T2 1 P1.1/T2EX 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8 RST 9 P3.0/RxD 10 P3.1/TxD 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14 P3.5/T1 15 P3.6/WR 16 P3.7/RD 17 XTAL2 18 XTAL1 19 VSS 20 P2.0/A8 21 P2.1/A9 22 P2.2/A10 23 P2.3/A11 24 P

5、2.4/A12 25 P2.5/A13 26 P2.6/A14 27 P2.7/A15 28 PSEN 29 ALE 30 EA/VPP 31 P0.7/AD7 32 P0.6/AD6 33 P0.5/AD5 34 P0.4/AD4 35 P0.3/AD3 36 P0.2/AD2 37 P0.1/AD1 38 P0.0/AD0 39 VCC 40 U1 STC89C52RC 5 8 2 3 4 6 7 1 U4 uA741 12K R4 +5 +5 -5 U3 TL431 200 R1 3K R2 RP1 3K3 103 C2 +5 D7 D6 D5 D4 D3 D2 D1 D0 D7 D6

6、D5 D4 D3 D2 D1 D0 +5 Uout Vout Wout D0D7 CS WR1 ILE D0D7 CS WR1 ILE VREF VREF Y1 36M 30P C1 30P C3 C4 10uF 10KR3 +5 104 C6 104 C9 C7 100uF C8 100uF +5 -5 561 C5 4K7 R6 4K7 R7 4K7 R8 4K7 R9 S1 减 S2 加 S3 减 S4 加 +5 1K R5 1K R10 1K R11 561 C10 561 C11 561 C12 图 1 三相正弦波发生器电路 慢调。 每相正弦波信号转换均由DAC0832和A741 各

7、一片组成,为典型 DA 转换应用,DAC0832 是电 流型 DA 转换,其 11 脚输出端 IOUT1 为电流量, A741 的任务是把电流量转换成电压量,为负电压 2 输出。图 1 只画出 U 相,各相电路接法是相同的。 各相的 DAC0832 并行数据 D0D7 端并接在一起, 接单片机的 P1 口,这里没有像常规应用那样采用 P0 口。由片选CS端分出三相数据。片选CS与 WR1相连,P2.0 为低电平时,D0D7 数据写入, 由于 U2 的WR2和XTFER接地, U2 内部的 DAC 数据寄存器处于直通状态,当数据锁存允许 ILE 为 高电平时,U2 进行 DA 转换。 U2 的

8、8 脚为 DA 转换基准电压, 外接由 TL431 组成的稳压电路, R1 为限流电阻, 基准电压如下式 计算 )V(5 . 2)/1 ( 2P1REF +=RRU 2 程序结构图 2 程序结构图 程序结构如图 2 所示,程序开始时,首先对所 用到的 P1 和 P2 口清零,并对寄存器 R1 和 R3 设 置初值。对 R1 加 1,判断 R1 是否加到了 255,如 果未到 255,则快调按钮起效,可快速调节频率, 只有等于 255 时,慢调按钮才有用,实际是慢调起 效的机率为 1/256,该方法调节频率时,输出正弦 波不会产生中断。 开始 端口清零/初值 R1+1 R1=255 ? 慢调起效

9、 快调起效 DPTR赋值三相数据表地址 查数据送入A A=255 ? 数据查完返回 再连续查两个数送至P1 A数据送至P1,DA转换, 进行DA转换 调用延时 查下一组三个数据 Y N N Y 图 2 程序结构图 不管有没有按频率调节按钮,均进入到 DA 转 换程序段,查出第一个数据装入累加器 A 时,要判 断 A 是否为 255,如果为 255 则说明表已查完了, 须重新开始从头查,从而重复输出数据形成周期的 正弦波。须要说明的是三相数据的表未,特地放入 一个数据 255,从而可判别数据是否查完。 第一个数送至 P1 口前一步时,P2 口置为 10011011, 其中P2.7、 P2.3为无

10、用端口, 此时P2.6=0, P2.5=0, 该两端口控制V、 W相DA转换的锁存ILE, 即 U 相 DA 转换时,V、W 相 DA 转换锁存,保持 原来状态,从而 V、W 相波形不会丢失和变化,同 时 P2.0 为 1,U 相片选还未开启。接下第一个数送 至P1, P2口置为10011110, P2.0为0, U相DAC0832 的片选有效,U 相开始 DA 转换,同时 P2.2、P2.1 均为 1,V、W 相片选无效。如此再查出第二个、 第三个数,分别给 V 相、W 相进行 DA 转换。连续 三个数查完后,要调用延时指令,此延时时间决定 输出正弦波的频率。延时完后,再查下一组三个连 续数

11、据,如此直至表查数据查完。 由上可看出,三相数据表的数据是按序穿插在 一起的,即 U、V、W 三相数据按序三个一组排列 在一起的。 3 三相正弦波数据的产生 3 三相正弦波数据的产生 假设正弦波一个周期采集点数为 k 个点, STC89C52RC 单片机为 8 位单片机, P1 最大输出数 为 255,因此正弦波可设定在 1254 之间变化,则 三相正弦波表达式为 += += += 1)3/2/2sin(127 1) 3/2/2sin(127 1)/2sin(127 W V U knU knU knU 上式中,n =1,2,k,计算完成的数据还 须进行四舍五入取整。如果采集点数越多,波形会 更

12、精确,但数据量会较多,会造成正弦波输出上限 频率不够高。 三相数据的穿插,可用 Excel2007 及以上版本 处理较方便。首先 Excel2007 表格第一行为 n 的数 据,即 1、1、1,2、2、2,k、k、k。处理时, 初始数据为 1、1、1,后三个数据格中输入公式, 公式为前一组数对应值加 1,如在第一行第四、五、 六格分别输入公式“=A1+1” 、 “=B1+1” 、 “=C1+1” , 然后选中该行第四、五、六格,拖拉至 k 设定值即 可,但要用“复制单元格”选项。同理表格第二行 初始三个数输入三相正弦波公式,再拖拉即可。 4 程序及简介 4 程序及简介 3 程序采用了汇编程序,

13、以便于理解和计算正弦 波周期,k 取值 60,程序和简介如下: MOV P1,#0 ;端口清零 MOV P2,#0 MOV R3,#10 ;设定初值 MOV R1,#1 ST0: INC R1 ;R1 加 1 CJNE R1,#255,KT ;如果 R1 不等于 255,则跳 至 KT,P3.6、P3.7 暂时失效,因此 P3.6、P3.7 为 慢调按钮。如果 R1 等于 255,则往下至 MT,P3.6、 P3.7 起效。 MT: ;(慢调程序段) JNB P3.6, JIA ;如果 P3.6 按下,则跳至 JIA (加)程序段。 JNB P3.7, JIAN;如果 P3.7 按下, 则跳至

14、 JIAN (减)程序段。 JMP ST1 ;跳至 ST1,进入 DA 转换程序段。 JIA: ;加程序段。 CJNE R3,#255,JIA2 ;如果 R3 不等于 255,则 跳至 JIA2。如果 R3 等于 255,则往下。 JMP ST1 ;跳至 ST1,R3 无法加 1,即已加 至最大值了。 JIA2: INC R3 JMP ST1 JIAN: ;减程序段。 CJNE R3,#1,JIAN2;如果 R3 不等于 1,则跳至 JIAN2。如果 R3 等于 1,则往下。 JMP ST1;跳至 ST1,R3 无法减 1,即已减至 最小值了。 JIAN2: DEC R3 JMP ST1 KT

15、: ;(快调程序段,解释同上) JNB P3.4, JIAT JNB P3.5, JIANT JMP ST1 JIAT: CJNE R3,#255,JIAT2 JMP ST1 JIAT2: INC R3 JMP ST1 JIANT: CJNE R3,#1,JIANT2 JMP ST1 JIANT2: DEC R3 JMP ST1 ST1: ;(DA 转换程序段) MOV DPTR,#TABLE ;装入三相数据表 ST2: CLR A MOVC A,A+DPTR; ;取第一个数 CJNE A,#255,LOOP ;判断是否表尾数 如果不是则转至 LOOP JMP ST0 ;如果是表尾数, 则从头

16、 开始 LOOP: MOV P2,#10011011B MOV P1,A ;第一个数送至P1口 MOV P2,#10011110B CLR A INC DPTR ;表地址加 1 MOVC A,A+DPTR; ;取第二个数 MOV P2,#10101110B MOV P1,A ;第二个数送至P1口 MOV P2,#10101101B CLR A INC DPTR ;表地址加 1 MOVC A,A+DPTR; ;取第三个数 MOV P2,#11001101B MOV P1,A ;第三个数送至 P2 口 MOV P2,#11001011B CLR A INC DPTR CALL DELAY ;调用延

17、时 决定正弦波频率 JMP ST2 ;返加重新开始 DELAY: ;延时程序段 MOV A,R3 MOV R4,A DJNZ R4,$ RET TABLE: DB 140,230,011,153,221,006,166,212,003, DB 179,202,001,190,191,000,202,179,001, DB 212,166,003,221,153,006,230,140,011, DB 237,127,017,243,114,024,248,101,033, DB 251,088,042,253,075,052,254,064,064, DB 253,052,075,251,04

18、2,088,248,033,101, DB 243,024,114,237,017,127,230,011,140, DB 221,006,153,212,003,166,202,001,179, DB 191,000,190,179,001,202,166,003,212, DB 153,006,221,140,011,230,127,017,237, 4 DB 114,024,243,101,033,248,088,042,251, DB 075,052,253,064,063,254,052,075,253, DB 042,088,251,033,101,248 ,024,114 ,24

19、3, DB 017,127,237,011,140,230,006,153,221, DB 003,166,212,001,179,202,000,190,191, DB 001,202 ,179,003,212,166,006,221,153, DB 011,230,140,017,237,127,024,243,114, DB 033,248,101,042,251,088,052,253,075, DB 063,254 ,064,075,253,052,088,251,042, DB 101,248,033,114,243,024,127,237,017, END 5 实验结果 5 实验

20、结果 焊接完成的电路板如图 3 所示,单片机系统采 用 STC 的小系统板,DA 转换和按钮焊在另两张实 验板上。单片机系统晶振为 36MHz,当 k=120 时, 即正弦波采样点数为 120 个点,测得三相正弦波输 出频率范围为 89Hz1162Hz。如频率范围不符合要 求,只需修改延时程序段即可。 图 3 焊好的实验板 实验输出波形如图 4 所示。实验时如发现削底 和削顶失真时,应减小图 1 中反馈电阻 R4 的值。 由于元件参数可能会有少许误差,有时输出的三相 正弦波幅度也会有少许差异,可仔细调节集成运放 的反馈电阻值,使三相正弦波幅度相等。 电压(0.5V/格) 时间(1ms/格) 图 4 输出的三相正弦波 6 结语 6 结语 本文利用了 STC 单片机运行速度高,以及与 51 单片机指令兼容的特性, 用常规的 DA 转换方法 设计了一个三相正弦波发生器。电路和程序均比较 简单,频率上限可做得较高,可用于需三相正弦波 的场合,也可作为三相正弦波信号发生器使用。 在制作过程中如有问题,可加作者 QQ: 530153869 交流。 作者简介:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1