我的账户
中国电子DIY

科技成就未来

亲爱的游客,欢迎!

已有账号,请

如尚未注册?

北京赛车有规律走势吗: 【小制作】重新改版的网线测试仪并打样

  [复制链接]
27825 87
1317296227 发表于 2016-12-23 00:58:38 | 只看该作者 |只看大图 |阅读模式 打印 上一主题 下一主题
       以前无聊的时候手工做过一次基于单片机IO口扫描的网线测试,链接如下:
网线测试仪 - 单片机论坛 - 中国电子DIY之家 - 最受欢迎的电子制作论坛! //www.xko6z.cn/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

客服邮箱:[email protected]

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

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

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

  • 全面理解中国共产党领导是中国特色社会主义最本质的特征 2018-12-14
  • 您访问的页面找不回来了 2018-12-14
  • 2017年度新闻记者证核验人员名单公示 2018-12-13
  • 习近平总书记主持召开文艺工作座谈会两周年 2018-12-11
  • 你问对了,但没有说到点子上。我告诉你吧,最根本的问题是私有制。私有制不除,腐败问题就不会消灭。懂了吧,哈哈。 2018-12-10
  • 过一个端端正正的端午节 2018-12-09
  • 奇闻怪事:瑶族怪异风俗习惯之烟袋定情 2018-12-09
  • 劫匪持枪抢劫金店 川渝警方联动20小时破案 2018-12-08
  • 尧都区车站街建设社区老党员高德宏同志手抄“党章”庆党生 2018-12-08
  • 中央环保督察组:石家庄市无极县“敷衍整改” 2018-12-07
  • 内乱困扰西班牙 C罗亟须正名 2018-12-06
  • 平昌冬奥会“北京八分钟”研发团队:让中国机器人登上世界之巅 2018-12-05
  • 我国社会主义社会是无阶级的阶层社会,不存在剥削阶级和被剥削阶级,但存在富裕阶层和贫困阶层。 2018-12-04
  • 南方都市报:数看世界杯你家爱豆粉了谁? 2018-12-04
  • 中央纪委对涉党和国家机构改革的党内法规和相关文件作出清理 2018-12-03
  • 764| 50| 342| 162| 584| 598| 222| 924| 889| 102|