快捷导航

DIY可控航灯控制器Version2(已发布所有硬件资料)

  [复制链接]
发表于 2016-9-15 12:31:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册成为模友吧会员

x
本帖最后由 白小淘 于 2016-10-22 15:46 编辑

第一版做出来有一年多了,但是除了我打样的那些,就没有再做过,原因很简单的,第一版硬件上存在太多问题。
简单点说,第一版硬件上就是一个残缺的东西,不可能被正常使用的。

本来打算完全测试完了再开帖的,受上次的影响太深,怕做出来的东西又不行,最后又是XXXXXXXX……
但还是提前开了,PCB已经送去做了,明天或者后天可以收到。静静的看看是见证奇迹,还是又一次XXXXXXXX……
这样的感觉其实挺好的

主要改进的地方:
三级管发热,主控也严重发热,这个是上次的致命伤,原因是没有限流电阻。
三级管管脚布错位置,这个是残留问题,我12年刚开始接触altium designer的时候用的那个库……说多了都是泪,导致没有硬件经验的我这么多年来的每一块PCB三级管管脚都是错的,我很早就发现了,但是改了就变另一种错误……说实话,这是我的错,一直以来粗心大意,连自己选的元器件的手册都不看一下的。

把信号输入改到支持硬件中断的引脚上了,之前有人说条件不好设置,但是不管怎么样,使用硬件中断来对输入信号做响应是最好的。有望解决之前切换延时的问题。
输出方面,把8个输出中的6个都放在了有支持硬件PWM的脚上,168/328系列的片子也就支持6个了,全部用上。这样,就可以做呼吸灯了,不是说以前的就不行,只是N行代码和一句代码的区别,大大简化了编程。
然后,引出所有的引脚,做了自动复位,所有元件单面放置。
加了自带的供电,可以直接接3S了,不像上次还需要5V接入给单片机供电,实际上,一个完整的系统,供电是必须的,供电都跟不上了,就不用扯其他的了。

上面那些都是废话,简单点:上次的东西有问题,不能用,这次解决了所有我发现了的问题。

哦,还加了电压检测,默认3S输入,割掉一根线,可以支持2-6S。这意味着可以做电压检测了,低压光线报警,当然,后期还可以开发声音报警,或许OSD普及的年代,用处不大,但是……这个又不影响体积成本啥的……

还是我一贯的原则,代码我会全开源,如果没有问题,我可能会在论坛以20-30牛币的价格提供PCB,以方便想DIY的朋友。当然,也不排除同时提供成品的可能。

这么多,没有图,好奇怪,PCB到了直接更新实物图吧
这次的尺寸大点,但是考虑到使用了3P的插头,实际上并没有变大的说,上次的没有插头占地方啊……
考虑到村田那啥封装的晶振不好焊接,电调上那啥封装的晶振不好购买,小量单独购买邮费是致命打击,总之……我还是用了我很不喜欢体积超大看着很不爽的49S,好在通过优化,它最终几乎没有占多余的位置。
1.jpg

评分

参与人数 1牛币 +10 收起 理由
nigesb942 + 10 很给力!

查看全部评分

 楼主| 发表于 2016-9-20 20:51:22 | 显示全部楼层
本帖最后由 白小淘 于 2016-11-13 13:31 编辑

强制置顶一个目录楼。把这个放上来,目的是开始更新硬货了。

2楼  还有3套成品,没有其他的了。

24楼 焊接完成的图和空板
25楼 基础视频,这个没有太大的意义,就是测试一下硬件是不是好的。
26楼 本目录的来源地
27楼 完整的硬件资料,需要自己打样的可以去下载PCB了。
28楼 焊接资料和BOM
44楼更新了程序,这是新的,使用了定时器溢出中断来读取遥控信号,3段模式切换,然而还是有延迟
48楼全新的程序,延迟不超过22ms,根本无法察觉……后期的开发将使用这段程序为基础。  
52楼第一个功能齐全的程序。有电压检测,由于新的模式判断算法 ,切换延时不超过20ms
59楼详细的引导烧写方法。

无限模型426512554欢迎您的加入。

以上内容使用署名-相同方式共享协议发布:
简单点说,必须申明这些东西是我创作的,第二,必须用相同的方式共享(简单点,直接提供本楼的链接即可)
稍微详细点,看下面:           
您可自由
  • 分享 — 复制、发行、展览、表演、放映、广播或通过信息网络传播本作品
  • 创作演绎作品
  • 对本作品进行商业性使用
惟须遵守下列条件
  • 署名 — 您必须按照作者或者许可人指定的方式对作品进行署名。
  • 相同方式共享 — 如果您改变、转换本作品或者以本作品为基础进行创作,您只能采用与本协议相同的许可协议发布基于本作品的演绎作品。
且认识到
  • 弃权 — 若您获得著作权人准许,则上述所有条件都可予以免除。
  • 公有领域 — 若在可适用法律下本作品或本作品的任何部分处于公有领域,则其处于公共领域的状态不受本许可协议影响。
  • 其他权利 — 以下权利不受本许可协议影响:
    • 合理使用,或其他相关法律规定的著作权保护的限制或例外;
    • 作者的人身权
    • 其他人拥有的与本作品本身或与本作品的使用方式有关的权利,例如商品化权隐私权
  • 声明 — 在再使用或者发行本作品时,您必须向他人明示本作品使用的许可协议条款。提供链接是明示的最佳方法。




 楼主| 发表于 2016-10-5 23:46:11 | 显示全部楼层
本帖最后由 白小淘 于 2016-10-5 23:55 编辑

带有电压检测的全功能程序。
这个程序用了新的模式检测算法,节省了大约2ms左右的时间,然后加入的电压检测没有我想象中的耗时,所以,程序的模式切换延时在20ms内
程序从低压状态恢复正常状态的延时会大些,最大在460ms左右,但是这个……正常情况下电压是越来越低的吧……
一共2个模式,没有用3需要可以加上去,加上没有其他影响,1种模式呼吸,一种模式关闭。
任何状态下,电压低于10.8V灯开始单闪,低于10.5V开始常亮。
设计的理想状态下电压检测的误差在50mV以内,由于电阻误差的存在,实际误差会在100-200mV左右,这是使用的普通电阻,换高精会好得多。
检测电压的值,设计的是用实际电压除以0.05376得到的,下面的程序我校正过,所以除的0.0527。

int ZQ=4;         
int mode;
int val=0;

void setup()
{
   DDRB = 0x0E;
   DDRD = 0xF8;   
}

void loop()
{   
  mode=pulseIn(2,1);
  mode=mode/600;
  val=analogRead(0);
  if(val<200)  {m1(0); m2(0); m4(0); m3(1); return;}                    //电压低于10.5,开启模式3,关闭其他
  if(val<=205)  {m1(0); m3(0); m4(0); m2(1); return;}                //电压低于10.8,开启模式2,关闭其他
  if(ZQ!=mode)
  {
    ZQ=mode;
    if(ZQ==1) {m3(0); m2(0); m4(0); m1(1);}                    //这里没有了第2段,可控的模式只写了1,3两种,需要的可以加上去,没有影响
    if(ZQ==3) {m1(0); m2(0); m3(0); m4(1);}

  }
}


void m1(int i)
{

  if(i!=1) return;
  for(int t=0; t<=255; t=t+5)
      {
        analogWrite(3,t);
        analogWrite(5,t);
        analogWrite(6,t);
        analogWrite(9,t);
        analogWrite(10,t);
        analogWrite(11,t);
        delay(8);
      }
      int x=0; while(x <= 36){loop(); x++;}    //主循环运行一遍大约需要11ms,重复运行36遍,相当于延时396ms
      for(int t=255; t>=0; t=t-5)
      {
        analogWrite(3,t);
        analogWrite(5,t);
        analogWrite(6,t);
        analogWrite(9,t);
        analogWrite(10,t);
        analogWrite(11,t);
        delay(8);
      }
      x=0; while(x <= 36){loop(); x++;}
      m1(1);
}

void m2(int i) //模式2为单闪
{
  if(i!=1) return;
  PIND = 0xF8;
  PINB = 0x0E;
  ZQ=4;
  delay(450);
  loop();
  m2(1);
}

void m3(int i) //模式3为常亮所有通道
{
  if(i!=1) return;
  PORTB = 0x0E;
  PORTD = 0xF8;
  ZQ=4;
  delay(8);
  loop();
  m3(1);
}

void m4(int i) //模式4为关闭所有通道
{
  if(i!=1) return;
  PORTB = 0xF1; PORTD = 0x07;
  loop();
  m4(1);
}


评分

参与人数 1牛币 +10 收起 理由
nigesb942 + 10 很给力!

查看全部评分

回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2016-9-26 21:59:31 | 显示全部楼层
本帖最后由 白小淘 于 2016-10-1 18:38 编辑

以下是这么多天没说话的成果,切换延时不大于22ms,人是感觉不到的。
这段程序是适用于三段开关(1模式呼吸,2模式单闪,3模式单闪一下,连闪两下),适用于两段开关(只有三段的1和3模式),也可以不用开关(只有呼吸)。
这段程序暂时还没有电压检测功能。后期加入电压检测后延时可能加大6-8ms,加入其他闪烁模式不会增加延时。
版权:本程序使用知识共享:署名-相同方式共享 协议发布,您可以自由的在任何地方使用该程序,(包括商业化也是被允许的,简单点说,拿去卖都可以)
          只需公开申明该程序为白小淘创作即可,如果您修改了该程序,必须申明以相同的方式共享才可以散布(不申明的只能自己用)。

int ZQ=4;
int mode;
extern volatile unsigned long timer0_millis;

void setup()
{
   DDRB = 0x0E;
   DDRD = 0xF8;   //置高D3-7,置低D0-2
   //TCCR1A = 0;
   //TCCR1B = 1<<CS11;
   //bitSet(TIMSK1,TOIE1);
}

void loop()
{   
  int a=pulseIn(2,1);
  if(a>1660){mode=3;}else{if(a<1330){mode=1;} else{mode=2;}}
  if(ZQ!=mode)
  {
    ZQ=mode;
    if(ZQ==1) {check3(0); check2(0); check1(1);}
    if(ZQ==2) {check1(0); check3(0); check2(1);}
    if(ZQ==3) {check1(0); check2(0); check3(1);}
  }
}

//ISR(TIMER1_OVF_vect){}

void check1(int i)
{
  if(i!=1) return;
  for(int t=0; t<=255; t=t+5)
      {
        analogWrite(3,t);
        analogWrite(5,t);
        analogWrite(6,t);
        analogWrite(9,t);
        analogWrite(10,t);
        analogWrite(11,t);
        delay(8);
      }
      int x=0; while(x <= 31){loop(); x++;}
      for(int t=255; t>=0; t=t-5)
      {
        analogWrite(3,t);
        analogWrite(5,t);
        analogWrite(6,t);
        analogWrite(9,t);
        analogWrite(10,t);
        analogWrite(11,t);
        delay(8);
      }
      x=0; while(x <= 31){loop(); x++;}
      check1(1);
}

void check2(int i)
{
  if(i!=1) return;
  PIND = 0xF8; PINB = 0x0E;
  int x=0; while(x <= 38){loop(); x++;}
  check2(1);
}

void check3(int i)
{
  if(i!=1) return;
  PIND = 0xF8; PINB = 0x0E;
  int x=0; while(x <= 13){loop(); x++;}
  PIND = 0xF8; PINB = 0x0E;
  x=0; while(x <= 43){loop(); x++;}
  PIND = 0xF8; PINB = 0x0E;
  x=0; while(x <= 11){loop(); x++;}
  PIND = 0xF8; PINB = 0x0E;
  x=0; while(x <= 8){loop(); x++;}
  PIND = 0xF8; PINB = 0x0E;
  x=0; while(x <= 11){loop(); x++;}
  PIND = 0xF8; PINB = 0x0E;
  x=0; while(x <= 48){loop(); x++;}
  check3(1);
}

回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2016-9-15 12:31:48 | 显示全部楼层
本帖最后由 白小淘 于 2016-10-22 15:36 编辑

群号码:426512554

硬件已经测试完全正常,所有功能没有问题,简单的图片在24楼,使用老程序的视频在25楼。

沙发被掏空了,目前项目进展不错,我手里没有可对外销售的PCB了。成品还有3套,需要的可以拿走。https://item.taobao.com/item.htm?id=538944657299







发表于 2016-9-15 12:35:51 | 显示全部楼层 来自苹果客户端来自苹果客户端
我来了

评分

参与人数 1牛币 +1 收起 理由
白小淘 + 1 你有送板,请关注沙发

查看全部评分

发表于 2016-9-15 12:37:02 | 显示全部楼层
亚麻跌                     

评分

参与人数 1牛币 +1 收起 理由
白小淘 + 1 你有送板,请关注沙发

查看全部评分

发表于 2016-9-15 12:41:31 | 显示全部楼层
白小淘 发表于 2016-9-15 12:31
沙发自占,更新其他东西用
考虑今天中秋,前10楼全部送1张板,当然,邮费自理。
...

这可以有,大神,中秋快乐
发表于 2016-9-15 12:59:49 | 显示全部楼层 来自苹果客户端来自苹果客户端
  顶   我想简单的顶一下竟然不可以

评分

参与人数 1牛币 +1 收起 理由
白小淘 + 1 你有送板,请关注沙发

查看全部评分

发表于 2016-9-15 13:05:39 | 显示全部楼层 来自苹果客户端来自苹果客户端
pcb很感兴趣,想学一下怎么画的,支持一下楼主

评分

参与人数 1牛币 +1 收起 理由
白小淘 + 1 你有送板,请关注沙发

查看全部评分

发表于 2016-9-15 13:09:15 | 显示全部楼层
楼主高手,支持下!!

评分

参与人数 1牛币 +1 收起 理由
白小淘 + 1 你有送板,请关注沙发

查看全部评分

发表于 2016-9-15 13:17:20 | 显示全部楼层 来自苹果客户端来自苹果客户端
路过帮顶

评分

参与人数 1牛币 +1 收起 理由
白小淘 + 1 你有送板,请关注沙发

查看全部评分

发表于 2016-9-15 13:47:18 | 显示全部楼层 来自苹果客户端来自苹果客户端
这个,要顶

评分

参与人数 1牛币 +1 收起 理由
白小淘 + 1 你有送板,请关注沙发

查看全部评分

发表于 2016-9-15 13:53:00 | 显示全部楼层 来自苹果客户端来自苹果客户端
祝大家中秋快乐,永不炸鸡

评分

参与人数 1牛币 +1 收起 理由
白小淘 + 1 你有送板,请关注沙发

查看全部评分

发表于 2016-9-15 13:53:08 | 显示全部楼层 来自苹果客户端来自苹果客户端
楼主   我也要

评分

参与人数 1牛币 +1 收起 理由
白小淘 + 1 排除我自己以及重复回复的,你依旧是前10,.

查看全部评分

发表于 2016-9-15 14:46:51 | 显示全部楼层
本帖最后由 传说 于 2016-9-15 14:48 编辑

期待中,楼主今天是十五,应该前15楼送 空的PCB板
发表于 2016-9-15 14:50:57 | 显示全部楼层
哈哈顶顶顶                              
发表于 2016-9-15 15:11:41 | 显示全部楼层 来自苹果客户端来自苹果客户端
路过帮顶
发表于 2016-9-15 23:35:40 | 显示全部楼层 来自安卓客户端来自安卓客户端
大神啊
发表于 2016-9-16 00:19:19 | 显示全部楼层 来自苹果客户端来自苹果客户端
楼主英明!
发表于 2016-9-16 01:22:51 | 显示全部楼层
楼主能给一个原理图么?我想用接收机的一个通道控制12V开关,谢谢
发表于 2016-9-16 05:30:12 | 显示全部楼层
还有一个问题,因为板子牵扯到有mcu,那么采用的是什么mcu呢?需要使用什么下载器啊?
发表于 2016-9-16 07:47:57 | 显示全部楼层 来自苹果客户端来自苹果客户端
邮费好贵的

本版积分规则

模友之吧 中国唯一免费送模型网站

反馈建议:2376808768@qq.com

合作伙伴

扫码关注微信公众平台
本站由 承德红璐科技 提供技术支持  Powered by Discuz!©2011-2015 模友之吧 | 冀ICP备13020518号©
快速回复 返回顶部 返回列表