• 微型直流电机控制基本方法 L298N模块


    控制任务

    让单个直流电机在L298N模块驱动下,完成制动、自由停车,正反转,加减速等基本动作

    芯片模块及电路设计

                            

    图1 L298N芯片引脚

      

    图2 L298N驱动模块

    表1 L298N驱动模块的控制引脚

     使用注意  短路帽连接后内置5V输出使能。调速时,只需要在使能端输入PWM信号就行。使能端低电平时,电机自由停止。通过ENA,IN1,IN2控制电机A,通过ENB,IN3,IN4控制电机B。

     

    图3 L298N驱动模块的Fritzing元件图

      

    图4 单片机控制板Aduino UNO

     

    图5 Aduino UNO 与L298N驱动模块的接线

     

    图6 整个系统的接线

     

    图7 电机控制系统接线原理示意图1

     

    图8 电机控制系统接线原理示意图2

    实际接线:Arduino的引脚6,8,7分别接L298N驱动板的ENA,IN1,IN2

    程序设计

    本程序只对单电机进行控制

      1 //控制板引脚定义
      2 int motor_c_ENA=6;
      3 int motor_c_IN1=8;
      4 int motor_c_IN2=7;
      5 
      6 //子函数定义
      7 void go_forward_high_speed()   //正转 全速
      8 {
      9     digitalWrite(motor_c_ENA,1);    
     10     digitalWrite(motor_c_IN1,0); 
     11     digitalWrite(motor_c_IN2,1);
     12 }
     13 
     14 void go_backward_high_speed()  //反转 全速
     15 {
     16     digitalWrite(motor_c_ENA,1);    
     17     digitalWrite(motor_c_IN1,1);  
     18     digitalWrite(motor_c_IN2,0);
     19 }
     20 
     21 void stop_with_brake()  //制动
     22 {
     23     digitalWrite(motor_c_ENA,1);    
     24     digitalWrite(motor_c_IN1,1);  
     25     digitalWrite(motor_c_IN2,1) ; 
     26 }
     27 
     28 void stop_free()    //自由停车
     29 {
     30     digitalWrite(motor_c_ENA,0);    
     31     digitalWrite(motor_c_IN1,0);  
     32     digitalWrite(motor_c_IN2,0) ; 
     33 }
     34 
     35 void go_forward_speed_up()  //正转 加速
     36 {
     37     digitalWrite(motor_c_IN1,0);   
     38     digitalWrite(motor_c_IN2,1);
     39     for (int a=100;a<=255;a++)  
     40      {
     41         analogWrite(motor_c_ENA,a);
     42         delay(200);
     43      }
     44 }
     45 
     46 void go_backward_speed_up()  //反转 加速
     47 {
     48     digitalWrite(motor_c_IN1,1);   
     49     digitalWrite(motor_c_IN2,0);
     50     for (int a=100;a<=255;a++)  
     51      {
     52         analogWrite(motor_c_ENA,a);
     53         delay(200);
     54      }
     55 }
     56 void go_forward_speed_down()  //正转 减速
     57 {
     58     digitalWrite(motor_c_IN1,0);   
     59     digitalWrite(motor_c_IN2,1);
     60     for (int a=255;a<=100;a--)  
     61      {
     62         analogWrite(motor_c_ENA,a);
     63         delay(200);
     64      }
     65 }
     66 
     67 void go_backward_speed_down()  //反转 减速
     68 {
     69     digitalWrite(motor_c_IN1,1);   
     70     digitalWrite(motor_c_IN2,0);
     71     for (int a=255;a<=100;a--)  
     72      {
     73         analogWrite(motor_c_ENA,a);
     74         delay(200);
     75      }
     76 }
     77 
     78 
     79 void setup() 
     80 {
     81      pinMode(motor_c_ENA,OUTPUT);  //电机C使能和PWM调速口
     82     pinMode(motor_c_IN1,OUTPUT);   //电机C控制口
     83     pinMode(motor_c_IN2,OUTPUT);   //电机C控制口
     84 }
     85 
     86 void loop() 
     87 {
     88    stop_with_brake(); //制动2秒
     89   delay(2000);
     90 
     91    go_forward_speed_up();   //正转 加速 50秒
     92   delay(50000);
     93    go_forward_high_speed();   //正转 全速10秒
     94   delay(10000);
     95    go_forward_speed_down();   //正转 减速50秒
     96   delay(50000);
     97    stop_free();    //自由停车5秒
     98   delay(5000);
     99 
    100    go_backward_speed_up();   //反转 加速 50秒
    101   delay(50000);
    102    go_backward_high_speed();   //反转 全速10秒
    103   delay(10000);
    104    go_backward_speed_down();   //反转 减速50秒
    105   delay(50000);
    106    stop_free();    //自由停车5秒
    107   delay(5000);
    108 }

    程序运行效果

    制动状态开始正转加速,正转全速,正转减速,自由停车,反转加速,反转全速,反转减速,自由停车,循环。

  • 相关阅读:
    MyBatis基础
    Maven入门
    前后端分离之 跨域和JWT
    Hive 查询元数据库获取某个分区的count数
    Hadoop3.0 WordCount测试一直Accept 状态,Nodes of the cluster 页面node列表个数为0
    朴素字符串匹配
    iPhone6 AirDrop找不到我的mac解决方法!注销mac和iPhone的icloud账号
    RecyclerView 刷新后自动滚动的问题,notifyDataSetChanged 后自己滚动
    判断decimal 是否为整数
    微信jssdk config:invalid signature 签名错误 ,问题排查过程
  • 原文地址:https://www.cnblogs.com/MyAutomation/p/9289520.html
Copyright © 2020-2023  润新知