头像-239006

多啦Z梦

  • 天津市
  • 单片机 嵌入式 电源技术 模拟技术 LED/显示 传感器/MEMS
  • 消费电子 汽车电子 安防电子 能源电源 光电显示 计算机网络 智能硬件 测试仪器及设备 其它

个人成就

获得 59 次赞

帮助过46人

电源接负载的时候,突然间把负载切断,发现电压会有个很高的峰值

这是变压器的电感效应在阻止电流变化导致的,所以负载变化应该尽量小,不能太大,以避免电压的波动。

http协议的网页软件开发怎么实现

HTTP属于高级的应用协议了,为了使用这种高级协议,你必须加载整个协议栈才能实现,从底层的PHY,到MAC,ARP,IP,TCP/UDP,最后才是HTTP,如果要支持PING还得加载IGMP。最好是直接使用现成的库,STM32的库里应该是有TCP/IP V4的包可以用的。用了库以后,只要设置好网络地址,就可以着手HTTP的操作了。HTTP,就是通过TCP连接方式进行通信的一个协议。学习它的协议头格式,可以完成与浏览器的交互,另外要想做出精美的网页,还得会HTML和CSS,要快速入门,需要会的东西也挺多的。要准确的回答你的问题也挺难的,毕竟这里都不是一两句话能说清楚的东西,只能大概给你搭了一个架子。细节上来说,我就只介绍一下WEB控制硬件的核心重点:例如,你要用按钮控件来开灯,那么你在HTML页面中可能会写如下的代码:<form method="POST" action="ProcessLED"><input type="submit" name="LED" value="开灯" /></form>其中method选择了POST方式,就是隐含提交的,但是这会在HTTP头中附带的POST参数集中看到表单中所有的项目,此例中则会看到有“LED=开灯”这样的数据(HTTP头上还有很多其它信息,我这里只是强调数据中包含这一信息),然后,你的程序就根据读取到的这一信息来处理打开LED灯的硬件操作,怎么打开LED会单片机应该就知道如何做,不详细讲了。然后因为灯已经开了,并且POST页面提交后实际上是转向action后所指的ProcessLED页面的(在单片机页面上,其实这只是一个标识,只在有文件系统时这才对应一个文件,WEB是根据URL串来区别给出什么回应的),那么既然灯已经是开着的了,那如果要回到刚才那个控制灯的页面上的话,显然不能再显示“开灯”了,所以这里在WEB上要做2件事,第一件事是在ProcessLED的页面中要发送返回的命令,不过我们假设开灯操作不只是一个IO打开,而是要用串口发送给一个下位机去处理带地址控制的多个LED灯之一,那么如果使用重定向直接扔回之前的开关控制页面就是不明智的了,因为重定向很快,甚至还没有来得及得到灯的回应。万一你发送了开灯命令下去,灯超时了,并没有返回ACK之类的状态消息呢?所以这里建议做成阻塞之的,就是说,ProcessLED页面上,先显示一个“正在开灯...”的提示,因为WEB是一次性加载的,不能实时运行,所以需要通过JS或定时刷新的HTTP头来实现页面重载,在ProcessLED页面里内嵌一个用来守候并检测状态的子框架,子框架里读取开灯的结果,并使用JS(可能涉及AJAX的概念,具体请参考相关教程,这里不讲太深)来回调至浏览器前台,如果开灯失败,则可以通过top.location.href扔到报错页上,如果你的系统能够知道原因,还可以在那里写下失败的原因,例如“您要开的灯在5秒内没有回应主机的请求,开灯失败,请检查远端LED灯是否已经上电。”如果成功了呢?可以先alert一个消息告诉用户“开灯成功”,然后就是我刚才说的2件事中的第2件了,重新显示控制灯的页面(也就是前面给出代码的那个页)时,value就不能再是“开灯”了,因为灯已经开着了,你要再操作它,显然是关灯对不对?没错,所以这里要改成关灯。而ProcessLED再收到这个按钮事件时,因为值是关灯,所以操作也不同了,大致同开灯的操作,不再重复介绍。这大概就是使用HTTP协议来控制硬件的一个Flash The LED例程文字版吧~

为社么触碰到外部引出的引脚也会引起中断

跟用什么函数无关,触摸都有反应,说明输入阻抗太高,太灵敏了,一定要并接适当的拉电阻,降低IO输入的灵敏度才行。

POE电源转12V有没有性价比高的芯片推荐?

可以看看XLSemi的XL系列芯片,比如XL7005。不知你用多大电流,还有很多种型号,7005只是我最近接触到的一款,电流比较小。我看到这个片子是用在电动车上的,接通信电源肯定是没问题的。

l298n驱动四个黄色香蕉电机。。老师也没说几v的应该是

同侧前后轮转向应该是相同的,若并联,不存在“交叉”一说。只有左右才会相反。不过,如果你前后串联的话,那就可以用12V电源了,因为一个6V,串联后俩就是12V了。

三极管驱动继电器问题

为什么不直接用OC方式来驱动继电器呢?大部分都是这样设计的。继电器一端接+5V,另一端接在集电极上,发射极接地。你这样的射随输出方式,继电器本身的电阻叠加进去,影响了管子的导通,NMOS要是这样驱动的话,也得做高驱电路才能保证打开的。

l298n驱动四个黄色香蕉电机。。老师也没说几v的应该是

你那个“交叉连接”我也不太能理解,猜测因为左右轮的旋转方向是相反的,所以极性要颠倒一下,所以才叫“交叉”,但是2个电机之间肯定不会是串或并联关系,因为智能小车的4个轮子应该都是独立驱动的,要不然就不能转向了。它是需要左右差动来实现转向的。交叉过的电机,在驱动信号上,同一条线代表的前进和倒退方向就一致了。你前边说3-6V,是指电机的额定电压吗?如果是的话,不建议用12V供电,因为H桥输入12V的话,输出也会是12V的,超过了电机的额度电压会严重缩短其使用寿命。建议使用1S锂电供电即可。最多也不要超过2S磷酸铁锂电池供电。因为磷酸铁锂满电是3.3V/节,而普通锂电池则是满电4.2V,标称也有3.7V,这样2S最高会达到8.4V,严重超过6V了。而2S磷酸铁锂电池再经过H桥驱动的压降则比较接近6V,对它的寿命影响不大。

舵机的控制信号可以用定时器产生吗

当然可以的。你之所以有这样的疑问,是你对剁鸡信号了解不够深入造成的。其实它是这样实现的:首先,由定时器产生50Hz(或其它频率信号)用于发送PWM信号的周期,即,50Hz的信号下,所有通道的信号,每秒发50轮。触发后,先从第一个通道开始,例如第一个通道在中位,1500us,就算非要用定时器,可以用另一个定时器来产生1500us的宽度即可,注意不需要重载,一次性的减计数即可,因为这一个通道发送完以后,下个通道的脉宽并不相同。实际上用简单的延时也可以完成这个操作的。这个过程就是,CH1变高,延时1500us,然后再把CH1变低。接下来,并不需要做特别的处理,就可以按CH1的方法来发送CH2,然后依次发到CH8。重点就在这里,CH1-8并不是同时发送的。因为它们有独立的端口,所以对它们自己来说,都是在以50Hz的频率收到指定的脉冲信号,但是整体上来说是轮流的,而不是同时的。当8个通道都发送完成后,发送过程就结束了,再次等待50Hz定时器触发。在这里特别说一下:不用担心1/50秒内完不成8个通道的发送!!!因为,每个通道都是1-2ms宽的脉冲,且之间可以无间隔(只有PPM因为在同一条线上发送才需要有间隔),8个通道即使都是最大的2ms一共也才16ms,而1/50秒有20ms,还富余4ms,只要不做10个以上的通道,50Hz肯定是能轮过来的。