找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9556|回复: 10
收起左侧

stm32控制L298N直流电机源代码

  [复制链接]
ID:428726 发表于 2018-11-18 15:56 | 显示全部楼层 |阅读模式
L298N是目前智能小车应用很广泛的价格也比较便宜的电机驱动,用来驱动直流电机。

L298N

输出A 输出B 分别接两个直流电机,电机两根线随便接,如果发现两电机方向是反着的,就调换下接线就ok了。

12V供电 这个是外部电源为驱动板供电的接口,一般驱动电压实际可以接受的输入范围是7~12V,此时可以使能板载的5V逻辑供电。当使用大于12V的驱动电压时,为了避免稳压芯片损坏,首先要拔掉板载5V输出使能的跳线帽,然后在5V输出端口外部接入5V电压对L298N内部逻辑供电。

5V供电 引出5V电压接到Arduino板,给Arduino板供电(驱动电压7~12V)连接到UNO板的5V,同时Arduino板也要引出一条GND线,连接到L298N的GND与外部电源共地。

ENA ENB通道A使能,通道B使能,当你不用PWM时不需要拔掉跳线帽,当你需要PWM时,将需要拔掉跳线帽,接到arduino上的模拟输入输出接口。

IN1 IN2 IN3 IN4逻辑输出口,其中IN1 IN2 控制一个电机的转动,IN3 IN4 控制另一个电机的转动,只要一个置高 一个置低,就可以让电机转动起来。

单片机源程序如下:
  1. #include "motor.h"  //??led???
  2. #include "stm32f10x.h"  //??STM32???
  3. #include "stm32f10x_rcc.h"  //??STM32?RCC???
  4. #include "delay.h"       //???

  5. void Motor_12_Config(void)  //???????
  6. {
  7.         GPIO_InitTypeDef GPIO_InitStructure;   //??GPIO_InitTypeDef???
  8.   RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE);  //??????
  9.         RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE);
  10.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5; //??IN??
  11.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //??????
  12.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  //??????
  13.         GPIO_Init(GPIOA, &GPIO_InitStructure);  //???GPIOA?????,??
  14.        
  15.         GPIO_ResetBits(GPIOB,GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6); //??????
  16.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6; //??IN??
  17.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //??????
  18.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  //??????
  19.         GPIO_Init(GPIOB, &GPIO_InitStructure);  //???GPIOA?????,??
  20. }

  21. void Motor_1_STOP(void)
  22. {
  23.         IN1(High);
  24.         IN2(High);
  25. }

  26. void Motor_1_PRun(void)
  27. {
  28.         IN1(Low);
  29.         IN2(High);
  30. }

  31. void Motor_1_NRun(void)
  32. {
  33.         IN1(High);
  34.         IN2(Low);
  35. }

  36. void Motor_2_STOP(void)
  37. {
  38.         IN3(High);
  39.         IN4(High);
  40. }

  41. void Motor_2_PRun(void)
  42. {
  43.         IN3(Low);
  44.         IN4(High);
  45. }

  46. void Motor_2_NRun(void)
  47. {
  48.         IN3(High);
  49.         IN4(Low);
  50. }

  51. void Motor_3_STOP(void)
  52. {
  53.         IN5(High);
  54.         IN6(High);
  55. }

  56. void Motor_3_PRun(void)
  57. {
  58.         IN5(Low);
  59.         IN6(High);
  60. }

  61. void Motor_3_NRun(void)
  62. {
  63.         IN5(High);
  64.         IN6(Low);
  65. }

  66. void Motor_4_STOP(void)
  67. {
  68.         IN7(High);
  69.         IN8(High);
  70. }

  71. void Motor_4_PRun(void)
  72. {
  73.         IN7(Low);
  74.         IN8(High);
  75. }

  76. void Motor_4_NRun(void)
  77. {
  78.         IN7(High);
  79.         IN8(Low);
  80. }
复制代码

所有资料51hei提供下载:
stm32控制L298N源代码.rar (277.91 KB, 下载次数: 277)
回复

使用道具 举报

ID:524059 发表于 2019-4-28 22:52 | 显示全部楼层
为什么有一个错误
回复

使用道具 举报

ID:501464 发表于 2019-5-2 19:04 | 显示全部楼层
有没有电路图和仿真图,求回复
回复

使用道具 举报

ID:589354 发表于 2019-8-2 15:22 | 显示全部楼层
IN 怎么连接呀
回复

使用道具 举报

ID:645788 发表于 2019-11-20 15:00 | 显示全部楼层
求motor.c 和.h文件
回复

使用道具 举报

ID:331795 发表于 2020-1-19 21:21 | 显示全部楼层
求motor.c 和.h文件
回复

使用道具 举报

ID:710468 发表于 2020-3-17 21:53 | 显示全部楼层

上面就是。c啊
回复

使用道具 举报

ID:592235 发表于 2020-4-16 16:41 | 显示全部楼层
这可以直接移植到stm32f103的板子上吗?
回复

使用道具 举报

ID:482448 发表于 2020-5-9 20:27 | 显示全部楼层
楼主你好,我们俩思路是一致的,我的电机只有一个能转,一个转不了,后来我发现是控制IN1,IN2的GPIO口PB3,PB4不能变化,请问为什么呢
回复

使用道具 举报

ID:482448 发表于 2020-5-9 20:29 | 显示全部楼层
我的思路和你一致,请问楼主,为什么我同时设置GPIOB3~6作为L298N的IN1~IN4,而且我同时设置为推挽输出,为什么PB3,PB4不能变化呢
回复

使用道具 举报

ID:826615 发表于 2020-10-7 17:23 | 显示全部楼层
楼主有没有实物连线图啊,科技小白····
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表