制作一个自己的灭弧器
薛定谔的猫2014/08/27高电压技术 IP:山东
本帖最后由 薛定谔的猫 于 2014-8-27 15:37 编辑

在特斯拉线圈中一个很重要的部分就是灭弧器。

传统的555灭弧器普遍存在低ontime下不稳定,难以精确定量输出,数据不直观,RC设计繁琐,制作良品率低等问题。

而使用单片机的灭弧器又对玩家的技术水品要求比较高,但是单片机精确定量,直观显示的优势又是显而易见。

这里我们抛砖引玉,使用目前市面上非常常见的开源硬件arduino来制作一个简单易用的灭弧器。

(仅简单的介绍一个实例,不对单片机的技术细节问题作出介绍,有问题欢迎大家多多交流)


1、Hardware

格式工厂QQ图片20140827044656.jpg      格式工厂QQ图片20140827044710.jpg


这里我们使用高压局前段时间开发的一款硬件,基于arduino UNO设计,MCU使用MEGA328,USB2TTL使用FT232,增加了光纤头,MIDI接口等外设。

shield上有USB2MIDI,I2C扩展并口(主要用来驱动1602 2004等并口显示屏)等芯片,附带了四个脉冲按键和两个E12编码器。

由于开发阶段仓促和前期考虑不周等原因,这俩板子现在有一打bug(图中可以看到大量跳线),所以暂不对大家开放

首先讲一下硬件的连接部分。

为了实现1602显示状态,两个编码器设定灭弧的频率和工作周期,并且用光纤头输出等功能,我们在硬件上做出如下设计:

1)减少IO使用,用I2C扩展芯片PCF8574T扩展出四线并口用于驱动LCD(具体接法和本文用到的arduino I2C1602库见附件);
                                                            
attachment icon IIC模块资料.zip 1.19MB ZIP 72次下载

2)使用中断方式读取编码器状态,需要将编码器连接在mcu的外部中断脚上,mega328有PD2、PD3两个中断引脚,就是arduino UNO板子上的数字IO口 2、3
                                                             QQ截图20140827051231.jpg

3)我们随便找一个IO用于输出灭弧信号,这里使用的是PD5,arduino的IO5
                                                             QQ截图20140827051454.jpg


这样基本的硬件已经搭建完成了。


2、Software

1)首先我们介绍灭弧器的核心部分,就是如何产生并输出一个特定频率和脉宽的波形。
    
    这里我们用mega328的timer1,CTC模式来产生频率。
    arduino的晶振频率是16MHz,8分频产生500KHz的信号 ,每周期就是0.5us,可以基本达到我们需要的频率精度。
    再设置比较器的值,来输出我们需要的频率 。


    



   这里我们就得到默认的50HZ的灭弧信号了

   然后是输出


    


这时就能从我们定义的输出引脚输出灭弧信号了。



3)改变灭弧信号的值。

    这里可以用多种方法方法改变灭弧信号,我们用比较直观的数字编码器来改变频率和脉宽

    
    我们使用的旋转编码器接法时序为
                    ← CCW(逆时针)
A   -----------             --------------  HIGH
                   ----------                    LOW

                   → CW(顺时针)
B  --------             ------------------  HIGH
              ----------                         LOW
     QQ截图20140827055139.jpg

     ENA脚下降沿触发时查询B脚的电平,若为低电平时,由时序图可知为顺时针方向旋转(CW),位置增加1
    
     而ENA脚上升沿触发时查询B脚的电平,若为高电平时,由时序图可知为顺时针方向旋转(CW)。
    
     ENB脚下降沿触发时查询B脚的电平,若为高电平时,由时序图可知为逆时针方向旋转(CCW),位置减少1
    
     而ENA脚上升沿触发时查询B脚的电平,若为低电平时,由时序图可知为逆时针方向旋转(CCW)。


    使用中断读取编码器位置后  对bps和ontime重新赋值,再复位定时器,输出新的灭弧信号

    




于是,这个arduino灭弧器大部分的功能就已经完成了。


3)显示状态,


   把当前灭弧器的状态直接显示在LCD上,更加直观
   这里我们直接调用I2c 1602的库文件来简化代码,这个库文件在上面的附件中有。
   由于1602并不适合快速刷新,在中断里面又不能放太多操作,所以我们在主循环中检测到BPS或者ONTIME变化时再改变显示内容,以提升显示效果,
   内容很简单,直接看代码

    




    





以上就是整个灭弧器的功能了,非常简单,这只是目前基于这个硬件的一个初步功能,直接上传ino文件供大家交流


attachment icon arduino interrupterV0.9.attach 3.65KB ATTACH 59次下载


目前的效果


格式工厂microMsg.1408849330177.jpg    格式工厂1408847274959.jpg

这只是目前初步实现的一部分功能,一个试验,将来会基于这个硬件做更多的开发,加入midi灭弧  音色控制等等功能。

上学期C语言差点挂科,花了两天时间大致学习了一下arduino,凭着我个人的一知半解完成的整个程序的编写,内容肯定存在很多不足之处,还请大家指正。














+50  科创币    rudolf    2014/08/27 再接再励
+25  科创币    kcltxinshou    2014/08/27 赞扬
+100  科创币    ry7740kptv    2014/08/27 本期最佳作品奖
+500  科创币    1211    2014/08/28 赞扬
+100  科创币    sukeytang    2014/08/28 赞扬
来自:电气工程 / 高电压技术动手实践:实验报导
13
 
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
薛定谔的猫 作者
10年4个月前 IP:未同步
715987
本帖最后由 薛定谔的猫 于 2014-8-27 07:30 编辑

精度测试,感谢奇侠侠用屌屌的示波器测了一堆数据,

首先是设定1234Hz  56uS



   QQ图片20140827070133.jpg      QQ图片20140827070142.jpg


恩 频率差了1Hz


下面是测到的数据

QQ截图20140827070836.jpg


可以看出 在极小脉宽和比较高的频率时,灭弧器的输出误差比较大,但是在常用的灭弧信号范围中,输出的精度能够达到要求,基本上是可以使用的。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
薛定谔的猫作者
10年4个月前 IP:未同步
715988
本帖最后由 薛定谔的猫 于 2014-8-27 07:30 编辑

恩 存在一个开机显示有四个乱码的问题,转动编码器之后就消失,目前原因不明。

如图  

格式工厂1408835955928.jpg
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
大帅哥
10年4个月前 IP:未同步
715990
是买的套件自己焊的吗
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
大帅哥
10年4个月前 IP:未同步
715991
是买的套件自己焊的吗
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
薛定谔的猫作者
10年4个月前 IP:未同步
715994
大帅哥 发表于 2014-8-27 07:39
是买的套件自己焊的吗


这个是高压局自己开发的
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
魔羯司令在此
10年4个月前 IP:未同步
716034
這有點複雜了。實現精準可以直接用高頻晶振進行分頻,用計數器來做。比較簡單
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
tromso
10年4个月前 IP:未同步
716077
开源, 这是造福大家啊。。。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
1176764177
10年4个月前 IP:未同步
716083
薛猫年会那个金属壳子灭弧器是用的usb协议么??
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
kcltxinshou
10年4个月前 IP:未同步
716084
薛定谔的猫 发表于 2014-8-27 07:29
精度测试,感谢奇侠侠用屌屌的示波器测了一堆数据,

首先是设定1234Hz  56uS


这款示波器得多少钱啊
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
薛定谔的猫作者
10年4个月前 IP:未同步
716110
魔羯司令在此 发表于 2014-8-27 10:46
這有點複雜了。實現精準可以直接用高頻晶振進行分頻,用計數器來做。比較簡單


这里用的定时器,原理一样的 加了一些婆婆妈妈的功能
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
薛定谔的猫作者
10年4个月前 IP:未同步
716111
1176764177 发表于 2014-8-27 14:02
薛猫年会那个金属壳子灭弧器是用的usb协议么??


midi 内置了usb2midi
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
1176764177
10年4个月前 IP:未同步
716113
嗖嘎我以为用的avr做的usb协议
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
ry7740kptv
10年4个月前 IP:未同步
716344
能加个Audio Sampling就更好了~
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
上级专业
同级专业
薛定谔的猫
专家 学者 机友 笔友
文章
76
回复
454
学术分
2
2010/08/15注册,2个月6天前活动

西安理工大学电气工程及其自动化 硬件与射频

主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:未同步
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
支持的图片格式:jpg, jpeg, png
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}