我的账户
中国电子DIY

科技成就未来

亲爱的游客,欢迎!

已有账号,请

如尚未注册?

【小制作】重新改版的网线测试仪并打样

  [复制链接]
27845 87
1317296227 发表于 2016-12-23 00:58:38 | 只看该作者 |只看大图 |阅读模式 打印 上一主题 下一主题
       以前无聊的时候手工做过一次基于单片机IO口扫描的网线测试,链接如下:
网线测试仪 - 单片机论坛 - 中国电子DIY之家 - 最受欢迎的电子制作论坛! http://www.lzrkj.com/thread-38158-1-1.html
       上次做的网线测试仪在公司没想到还挺多人用的,使用频率也挺高的,上次有个同事不小心接错了电源,直接把小板子给烧了,这次部门要搭建自动化工厂,又需要做大量的网线,有同事建议我再做一个,同时根据同事的要求增加了三个速度选择按钮,分别为0.5s,1s,2s。
       其中0.5s是为了快速扫描网线,看是否有问题;另外1s和2s是为了调试网线,自动化工厂有些地方的网线为非标准的网线,要根据物料的接口定义做对应的网线,速度慢点方便观察非标准网线的线序是否错误。
       这次做的网线测试仪总的来说还是有两个不小的毛病的,至少我自己暂时只发现了这两个,分别是:
       1、由于给灯供电的电源我是直接接在了板子设计的12V的电源上,另一端通过电阻就直接接在了单片机的IO口上,而不是采用的三极管或者其他的器件来控制每一条线路的导通,所以当我接入的电源是12V的时候,就会出现一个现象,单片机导通的那两个灯工作正常,但是其他的灯却也有微弱的亮度,这真的是一大败笔,这也是设计的时候没有考虑好的;这里主要的原因是因为当单片机的IO口置高的电压为5V,而灯的正极是一个12V的电压,所以这两者之间就有了一个压降,于是灯就有了微弱的亮度,索性的是我在设计的时候预留了一个贴片电阻的位置用作调试用,所以在实际的板子中我焊接一个电阻也就能解决这个问题,但是这个问题始终不是很好。下图中红色箭头指向的就是这里设计的问题点。
        
        2、第二个问题就是没有考虑进入保护电路,其实也是我根本不知道这个保护电路如何做好一点,就是我考虑的是整个板子的工作电压不大于12V,虽然根据之前被烧的经历我增加了一个二极管,但是这也只能是防止接反,并不能有效的保护电路。原来是有个想法是在二极管后面加一个贴片的保险,但是由于手上没有,也就没有增加了,这里想问下大家有没有好的方案介绍,求大神指导下。
       下面是PCB板的软件截图:
        
       下面是PCB板的3D截图:
      
       下面是打样后的一些事物图,放出来大家批评下
       下面的是焊接了的实物图,焊工比较垃圾:
      
      
      
      
      
      
      
      
      

       下面的是打样的PCB板:
      
      
      
      
       这里附上程序代码:

  1. /**********************网线测试仪*****************************
  2.         网线测试仪,定义三个按钮作为速度选择
  3.         速度选择分别有30ms/1s/2s
  4.         程序初始化默认进入1s运行函数
  5.         其中网线扫描口用的P2口
  6. *************************************************************/
  7. #include <reg52.h>
  8. #include <intrins.h>                                  //循环左右移头文件
  9. #define uchar unsigned char
  10. #define uint unsigned int
  11. sbit sw1 = P3^5;                                        //定义30ms按钮
  12. sbit sw2 = P3^6;                                        //定义1S按钮
  13. sbit sw3 = P3^7;                                        //定义2S按钮
  14. uint i,a,b;                                                        //定义变量
  15. void delay(int t)
  16. {
  17.         int y;
  18.         for(;t>0;t--)
  19.                 for(y=110;y>0;y--);
  20. }
  21. void key1();                                                //函数声明
  22. void key2();
  23. void key3();
  24. void key1()                                                        //30ms运行函数
  25. {
  26.         if(sw1 == 0)
  27.         {
  28.                 delay(10);
  29.                 if(sw1 == 0)
  30.                 {
  31.                         sw2 = sw3 = 1;
  32.                         P2 = a;
  33.                         b = 1;
  34.                         while(b)
  35.                         {
  36.                                 for(i=9;i>0;i--)
  37.                                 {
  38.                                         P2 = _crol_(a,1);                 
  39.                                         for(i=30;i>0;i--)                 //1/2s
  40.                                         {
  41.                                                 delay(10);                       
  42.                                                 if(sw2 == 0)
  43.                                                 {
  44.                                                         delay(5);
  45.                                                         if(sw2 == 0)
  46.                                                         {
  47.                                                                 key2();
  48.                                                         }
  49.                                                 }
  50.                                                 if(sw3 == 0)
  51.                                                 {
  52.                                                         delay(5);
  53.                                                         if(sw3 == 0)
  54.                                                         {
  55.                                                                 key3();
  56.                                                         }
  57.                                                 }
  58.                                         }
  59.                                         a = P2;
  60.                                 }
  61.                         }
  62.                 }
  63.         }       
  64. }
  65. void key2()                                                  //1S运行函数
  66. {
  67.         if(sw2 == 0)
  68.         {
  69.                 delay(10);
  70.                 if(sw2 == 0)
  71.                 {
  72.                         sw1 = sw3 =1;
  73.                         P2 = a;
  74.                         b = 1;
  75.                         while(b)
  76.                         {
  77.                                 for(i=8;i>0;i--)
  78.                                 {
  79.                                         P2 = _crol_(a,1);
  80.                                         for(i=60;i>0;i--)                 //1S
  81.                                         {
  82.                                                 delay(10);                       
  83.                                                 if(sw1 == 0)
  84.                                                 {
  85.                                                         delay(5);
  86.                                                         if(sw1 == 0)
  87.                                                         {
  88.                                                                 key1();
  89.                                                         }
  90.                                                 }
  91.                                                 if(sw3 == 0)
  92.                                                 {
  93.                                                         delay(5);
  94.                                                         if(sw3 == 0)
  95.                                                         {
  96.                                                                 key3();
  97.                                                         }
  98.                                                 }
  99.                                         }
  100.                                         a = P2;
  101.                                 }
  102.                         }
  103.                 }
  104.         }       
  105. }
  106. void key3()                                           //2S运行函数
  107. {
  108.         if(sw3 == 0)
  109.         {
  110.                 delay(10);
  111.                 if(sw3 == 0)
  112.                 {
  113.                         sw1 = sw2 = 1;
  114.                         P2 = a;
  115.                         b = 1;
  116.                         while(b)
  117.                         {
  118.                                 for(i=8;i>0;i--)
  119.                                 {
  120.                                         P2 = _crol_(a,1);
  121.                                         for(i=200;i>0;i--)                 //2S
  122.                                         {
  123.                                                 delay(10);                       
  124.                                                 if(sw1 == 0)
  125.                                                 {
  126.                                                         delay(5);
  127.                                                         if(sw1 == 0)
  128.                                                         {
  129.                                                                 key1();
  130.                                                         }
  131.                                                 }
  132.                                                 if(sw2 == 0)
  133.                                                 {
  134.                                                         delay(5);
  135.                                                         if(sw2 == 0)
  136.                                                         {
  137.                                                                 key2();
  138.                                                         }
  139.                                                 }
  140.                                         }
  141.                                         a = P2;
  142.                                 }
  143.                         }
  144.                 }
  145.         }
  146. }
  147. void main()
  148. {
  149.         P2 = 0xff;                                  //IO赋初值
  150.         a = 0xfe;
  151.         sw2 = 0;                                  //初始执行1s函数
  152.         while(1)
  153.         {
  154.                 key1();
  155.                 key2();
  156.                 key3();
  157.         }
  158. }
复制代码

      下面放上PCB的工程和源程序,共一个包:
       网线测试仪.zip (4.01 MB, 下载次数: 346)


     希望各位大神多批评,多给点建议。

2.png (477.65 KB, 下载次数: 4229)

2.png

5.png (544.45 KB, 下载次数: 4225)

5.png

9.png (559.51 KB, 下载次数: 4223)

9.png
参与人数 8下载币 +32 刀币 +38 收起 理由
13674116870 + 10 + 5 支持DIY精神!
Ascend + 10 + 10 支持DIY精神!
BOOM。。 + 1
疯爱 + 5 支持DIY精神!
diyhome + 5 + 5
看门查水表 + 2 + 2 支持DIY精神!
hxrong + 5 + 5 支持DIY精神!
黎明之光 + 5 支持DIY精神!

查看全部评分总评分 : 下载币 +32 刀币 +38

收藏
收藏19
分享
分享
支持
支持7
反对
反对0

精彩评论87

跳转到指定楼层
2#
 楼主| 1317296227 发表于 2016-12-23 01:14:39 | 只看该作者
半夜了,沙发肯定就自己坐了
3#
### 发表于 2016-12-23 07:30:01 | 只看该作者
本帖最后由 ### 于 2016-12-23 07:33 编辑

楼主还可以加入其他线缆的测试功能,比如手机充电线以及各类延长线和硬盘光驱线和串并口延长线和音视频线测试以及转接头测试的功能,常用的插座都加进去就能测试任何线的问题了。
4#
 楼主| 1317296227 发表于 2016-12-23 08:24:11 来自手机 | 只看该作者
### 发表于 2016-12-23 07:30
楼主还可以加入其他线缆的测试功能,比如手机充电线以及各类延长线和硬盘光驱线和串并口延长线和音视频线测 ...

之前没想那么多,只是根据同事的需求做了这么一个单一功能
5#
luyuxus 发表于 2016-12-23 09:33:43 | 只看该作者
两个RJ45口不应该是能分开的吗?在一起有什么意义啊!!
6#
看门查水表 发表于 2016-12-23 09:39:30 | 只看该作者
不错!程序写的很有层次感,我喜欢
不过啊最好分成两个,发射一个接受一个,这样方便安装好以后的线进行测试
7#
dgpower 发表于 2016-12-23 12:37:24 | 只看该作者
多谢分享!实践是检验真理的唯一标准

多用才能暴露问题,才能发现改进机会
8#
FSLTKJ 发表于 2016-12-23 12:38:40 | 只看该作者
用带隔离变压器的网口就不怕烧了。
9#
秋天的树 发表于 2016-12-23 14:48:19 来自手机 | 只看该作者
很实用的作品!给赞
10#
xiaoyao_mdj 发表于 2016-12-23 15:06:26 来自手机 | 只看该作者
我自己以前用stc单片机做过一个,用电位器接AD接囗做调速,还接了一个双联继电器做查找网线接交换机哪个接囗。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关注我们
中国电子DIY官方微信

客服电话:000-000-0000

客服邮箱:776513803@qq.com

周一至周五 9:00-18:00

公司地址:深圳市南山区美丽湾大厦B座

Powered by Discuz! X3.4@ 2001-2013 Comsenz Inc.

  • 线上博彩公司网站
  • 希尔顿娱乐
  • tlpl tlpl
  • 美大法官人候选人被指性侵 举报者同意下周出面作证 2018-11-26
  • 陈致中夜奔招待所惹议 陈水扁质疑民进党要借此切割扁家 2018-11-26
  • 巴西国博废墟内找到头骨化石 可能是镇馆之宝“卢西亚” 2018-11-25
  • 1146份中报显示:逾七成公司净利增长 2018-11-25
  • 温哥华中国小留学生低龄化 陪读妈妈也忧大麻合法化 2018-11-24
  • 曾被骂丑 金喜善9岁女儿逆天长腿让键盘侠闭嘴 2018-11-24
  • 为后辈操碎心!姚明传授精准罚篮秘籍 男篮该好好学学 2018-11-23
  • 成都市已有3734户企业被列入信用“黑名单” 2018-11-22
  • 贴上家长这样做能消除宝宝入园后综合征 2018-11-22
  • 双鸭山主动对接转观念探新路 2018-11-21
  • 李霄鹏:佩莱伤势不明 我了解国安和施密特 决赛会很残酷 2018-11-21
  • 肇庆火车站综合体建设进入冲刺阶段 2018-11-20
  • 人工智能这么火 习近平总书记三年九次大会提它都说了啥? 2018-11-19
  • 习近平同科特迪瓦总统瓦塔拉举行会谈 2018-11-19
  • 在平凡岗位上书写人生华章 2018-11-18
  • tlpl