用8266学习单片机-12-远程控制直流电机?正反转??

思路

直流电机正反转就是将正负极对调嘛
简单试试就知道:8266上有3.3V 和GND,接两次线就知道电机能正反转

直接接8266GPIO引脚输出

假设控制8266控制D0引脚,电机和8266共地,电机正极直接连到D0.
然会你会发现,D0电平的确发生了改变,但是电机却无动于衷???
hin奇怪哇,电机动都不动????控制台也显示了状态发生变化。。。说明什么???万用表测电压电压也够哇。。结果是电流不给力。。怎么办???电流放大嘛,三极管该上场了

三极管

当然这里不是说放大D0引脚的电流去驱动电机,而是电机使用单独的电源,使用D0控制三极管的开和关
简单的说三极管在这里相当于开关,不过开还是关就靠基极的电位,而这个电位高位则是8266能改变的。

原理


上面的开关就是8266控制的引脚
这里用的是NPN型三极管8050,emm注意e、c别接反了,闻到异味说明接线有问题,赶紧拔掉电源检查
如果检查不出来,就按照实际电路画出电路原理图,对比一下实际的图和上面的原理图之间的差别。

效果

代码

#include 
#include 
#include 

int DcMotto = D0;

const char *ssid = "DC Motto";

const byte DNS_PORT = 53;
IPAddress apIP(192,168,4,1);
DNSServer dnsServer;
ESP8266WebServer WebServer(80);

void handleRoot() {
    WebServer.send(200, "text/html", "


"
); } void handleNotFound(){ WebServer.sendHeader("Location","/"); WebServer.send(303); } void handleDcMotto(){ digitalWrite(DcMotto,!digitalRead(DcMotto)); WebServer.sendHeader("Location","/"); WebServer.send(303); } void setup() { pinMode(DcMotto, OUTPUT); WiFi.mode(WIFI_AP); WiFi.softAPConfig(apIP,apIP,IPAddress(255,255,255,0)); WiFi.softAP(ssid); WebServer.onNotFound( handleRoot); WebServer.on("/DcMotto", HTTP_POST,handleDcMotto); dnsServer.start(DNS_PORT,"*",apIP); WebServer.begin(); } void loop() { dnsServer.processNextRequest(); WebServer.handleClient(); }

思考与提升

这个东西尝试七八次、、、都失败了。。。。期间也差点把三极管烧了。。。手头挺烫的。。。最后在大佬的引导中画出实物图对应的原理图才发现ec接反了
这么简单的电路,原理十分清楚,看原理图是不可能找到问题的。所以要用的实际用的电路图,这个图应该是根据实际电路画出来的

一个二极管控制了正转,那正反转需要几个呢??两??no,四个。见参考二-H桥电路,一半都是直接去买成品的驱动板,自己为一个直流电机搭一个H桥电路。。emmm、也不是不可以。。。

参考

  • PWM?? http://www.51hei.com/bbs/dpj-97273-1.html
  • 4个三极管,有待改进 http://www.51hei.com/bbs/dpj-100347-1.html
  • L293D驱动芯片,没有 https://blog.csdn.net/XiaoCaiDaYong/article/details/82354311

你可能感兴趣的:(Node,MCU)