L298N驱动4个电机驱动小车

2023-11-04

程序代码下载地址:
L298N驱动小车
L298N硬件说明

  1. **电源: 驱动电源+12V ,+5V电压输出为单片机供电,GND

  2. **输出连接电机:OUT0/OUT2-通道A,OUT3/OUT4-通道B

  3. **与单片机接口 通道A、B使能:ENA、ENB 逻辑输入IN1/IN2(控制一侧电机),IN3/IN4(控制另一侧电机)

在这里插入图片描述
硬件连接电路
在这里插入图片描述

调速原理:
通过调节ENA/ENB引脚输出电压的高低完成车速调节,利用ST32定时器的PWM功能,实现PWM占空比调节。
pwm程序段

#include "pwm.h"
#include "led.h"
TIM_HandleTypeDef 	TIM3_Handler;      	//定时器句柄 
TIM_OC_InitTypeDef 	TIM3_CH1Handler;	//定时器2通道1句柄
TIM_OC_InitTypeDef 	TIM3_CH2Handler;	//定时器2通道1句柄
void TIM3_PWM_Init(u16 arr,u16 psc)
{   TIM3_Handler.Instance=TIM3;         	//定时器3
    TIM3_Handler.Init.Prescaler=psc;       	//定时器分频
    TIM3_Handler.Init.CounterMode=TIM_COUNTERMODE_UP
    TIM3_Handler.Init.Period=arr;          	//自动重装载值
    TIM3_Handler.Init.ClockDivision=TIM_CLOCKDIVISION_DIV1;	         
    TIM3_Handler.Init.AutoReloadPreload =
    TIM_AUTORELOAD_PRELOAD_ENABLE;   //使能自动重载
    HAL_TIM_PWM_Init(&TIM3_Handler);   //初始化PWM TIM3_CH2Handler.OCMode=TIM_OCMODE_PWM1; //模式选择PWM1
TIM3_CH2Handler.Pulse=arr;            //设置比较值,占空比
 TIM3_CH2Handler.OCPolarity=TIM_OCPOLARITY_HIGH; //输出比较极性为高HAL_TIM_PWM_ConfigChannel(&TIM3_Handler,&TIM3_CH2Handler,TIM_CHANNEL_2);//配置TIM3通道2
	  HAL_TIM_PWM_Start(&TIM3_Handler,TIM_CHANNEL_2);  
TIM3_CH1Handler.OCMode=TIM_OCMODE_PWM1;     TIM3_CH1Handler.Pulse=arr;            //设置比较值,占空比
TIM3_CH1Handler.OCPolarity=TIM_OCPOLARITY_HIGH; HAL_TIM_PWM_ConfigChannel(&TIM3_Handler,&TIM3_CH1Handler,TIM_CHANNEL_1);//配置TIM3通道1
HAL_TIM_PWM_Start(&TIM3_Handler,TIM_CHANNEL_1);  //开启TIM3
}	
}

电机程序段

#include "motor.h"
#include "led.h"
#include "delay.h"
void MOTOR_Init(void)
{
    GPIO_InitTypeDef GPIO_Initure;
    __HAL_RCC_GPIOA_CLK_ENABLE(); //开启GPIOA时钟
    __HAL_RCC_GPIOB_CLK_ENABLE(); //开启GPIOB时钟  
   __HAL_RCC_GPIOD_CLK_ENABLE(); //开启GPIOD时钟
    GPIO_Initure.Pin= GPIO_PIN_5| GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8; 
    GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP; //推挽输出
    GPIO_Initure.Pull=GPIO_PULLUP;          	//上拉
    GPIO_Initure.Speed=GPIO_SPEED_HIGH;    	 //高速
    HAL_GPIO_Init(GPIOA,&GPIO_Initure);
   GPIO_Initure.Pin=GPIO_PIN_9|GPIO_PIN_11;   //PB9  PB11
    HAL_GPIO_Init(GPIOB,&GPIO_Initure); 
}
void DirForward(void)   //前进程序,前进时LED1亮
{       LED1=0;	
        ENA=1;	
        MOTORA0=0;MOTORA1=1;
       ENB=1;		
       MOTORB0=0;MOTORB1=1;
       delay_ms(1000);
       LED1=1;
}
 void Stop(void)      //停止程序,停止时LED0-LEED7亮
{HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7,GPIO_PIN_RESET);
	ENA=1;	
	MOTORA0=0;MOTORA1=0;
	ENB=1;		
	MOTORB0=0;MOTORB1=0;
delay_ms(1000);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7,GPIO_PIN_SET);	}
  void DirBack(void)  //后退程序,后退时LED7亮
{   LED7=0;	
	ENA=1;	
	MOTORA0=1;MOTORA1=0;
	ENB=1;		
	MOTORB0=1;MOTORB1=0;
	delay_ms(1000);
	LED7=1;
	}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

L298N驱动4个电机驱动小车 的相关文章

  • TensorFlow中的变量(Variables)

    在TensorFlow中 变量 Variable 是特殊的张量 Tensor 它的值可以是一个任何类型和形状的张量 与其他张量不同 变量存在于单个 session run 调用的上下文之外 也就是说 变量存储的是持久张量 当训练模型时 用变
  • 机器学习课后习题 --回归

    一 单选题 1 以下 组变量之间存在线性回归关系 A 学生的性别与他的成绩 B 儿子的身高与父亲的身高 C 正方形的边长与面积D 正三角形的边长与周长 2 回归问题和分类问题的区别是 A 回归问题有标签 分类问题没有 B 回归问题输出值是离
  • 【Verilog】ROM & RAM

    文章目录 RAM ROM ROM 只读存储器 概念 源代码 testbench 仿真波形 RAM 随机访问内存 概念 源代码与testbench 仿真波形 RAM ROM ROM 只读存储器 概念 ROM内部的数据是在ROM制造工序中 在工

随机推荐

  • IDEA创建Maven项目 利用Junit进行单元测试

    文章目录 一 构建Maven项目 1 新建maven项目 File gt New gt Project 2 输入GroupId和ArtifactId 前者定义项目组 后者定义项目名称 3 配置Maven 4 finish 项目骨架如下 5
  • dncnn图像去噪_基于GANs训练去噪深度神经网络实现了良好的图像盲去噪效果

    从包含噪音的图像中去除未知噪音是一项充满挑战的工作 由于缺乏有效的训练数据使得这一领域面临许多问题 中山大学的研究人员们提出了一种 两步走 的框架 通过GANs训练输入图像的噪声分布来并利用生成的噪声样本生成了丰富的训练数据 并基于此训练了
  • Java中存储金额的数据类型-BigDecimal

    在程序中存储金额的数据类型用 java math BigDecimal 在数据库中存储金额的数据类型用 decimal 金额必须是完全精确的计算 故不能使用double或者float 长度可以自定义 如10 小数点在项目中用的是2 保留2位
  • Q2净利润同比下降17% ,英特尔该如何应对强势崛起的AMD?

    7月26日 英特尔发布了其2019年第二季度财报 根据其最新财报来看 净利润同比下滑了17 但第二季度的业绩超出了华尔街分析师预期 第二季度营收为165亿美元 市场分析师预期157亿美元 同时根据第二季度的表现 英特尔也提高了第三季度和全年
  • 用Selenium测试web应用

    问题1 当用户在网上商店购物时 一次完整的购买流程需要用户进行好几个步骤的操作 包括选择商品 填写订单信息 选择支付方式 确认订单等 涉及四到五个页面以及数十个类的协作 如何在开发过程中始终确保该流程能够正确无误 畅通无碍 问题2 客户提出
  • 以MacOS 13为例,VMware 16安装MacOS

    因为临时需要用到MacOS和Linux 手边又没有Mac机器 只能拿虚拟机应急 最终感受很差 除非应急 不然绝对不推荐 先声明缺点 无法连接网络 至少拨号型校园网不行 由于读不到显卡使用起来很卡 时常无故重启 如果你能接受这些缺陷 只是先看
  • 怎么将webm格式转换成mp4,3招轻松学

    怎么将webm格式转换成mp4 相对于已经广为人知的MP4 还有许多人对于WebM这种视频格式不太熟悉 WebM是一种免费开源的媒体文件格式 虽然Web 目前应用范围越来越广泛 但大家还是更习惯使用MP4 因为mp4是目前最为流行的视频文件
  • BI大数据到底是什么

    在互联网时代 大数据炙手可热 许多人言必称大数据 但能够真正说清大数据为何物的人并不多 如何借助大数据挖掘出巨大的商业价值 究竟如何定义大数据 大数据有哪些特征 本文旨在理清大数据概念 阐明大数据应用方式及探究未来大数据发展之道 1 大数据
  • 机器人抓取检测技术的研究现状

    1 分析法 图 1 为分析法在进行抓取检测时所采用的 一般策略 3 3 Sahbani A El Khoury S Bidaud P An overview of 3D object grasp synthesis algorithms J
  • 使用动态IP是否会影响网络

    今天我们要谈论的话题是关于动态IP和网络的关系 也许有些小伙伴对这个概念还比较陌生 但别担心 我会简单明了的给你理清楚 让我们一起看看动态IP到底能否影响到网络 首先 我们先来搞明白什么是动态IP 在互联网世界中 每一个连接到网络的设备都被
  • SpringCloud是什么?

    参考链接 http blog csdn net forezp article details 70148833 一 概念定义 Spring Cloud是一个微服务框架 相比Dubbo等RPC框架 Spring Cloud提供的全套的分布式系
  • 网络安全技术(刘化君)第一章课后答案

    补充第七题答案 近年来 网络安全攻击事件层出不穷 以下是一些常见的网络安全攻击事件及其攻击手段 勒索软件攻击 勒索软件通过加密用户数据或控制用户设备来勒索赎金 攻击手段主要包括利用漏洞入侵 网络钓鱼 邮件附件等方式传播勒索软件 并利用加密技
  • Android “adb”不是内部或外部命令,也不是可运行的程序或批处理文件

    在Android Studio app真机测试中adb可以轻松找到安卓设备 ADB全称Android Debug Bridge 用于Android设备进行交互 也可以这样理解ADB是Android Studio连接安卓设备之间的一个桥梁或者
  • [1154]如何将字符串转换为datetime

    usr bin env python coding utf 8 import datetime import time 日期时间字符串 st 2017 11 23 16 10 10 当前日期时间 dt datetime datetime n
  • Unity踩坑 - 自定义动画事件Animator事件帧设置后不触发的情况

    动画设置 选择动画窗口并且设置事件 拖动到自己想要触发的位置 具体调整可以打开动画窗口 选择对应的Clip进行逐帧控制 设置事件 在这里写要触发的函数的名称 1 函数权限必须是Public的 2 大小写敏感 并且前后不能有空格 3 触发动画
  • Django REST framework中的序列化Serializers

    序列化器允许将诸如查询集和模型实例之类的复杂数据转换为原生 Python 数据类型 然后可以将它们轻松地呈现为 JSON XML 或其他内容类型 序列化器还提供反序列化 在首次验证传入数据之后 可以将解析的数据转换回复杂类型 简单来说 服务
  • 性能测试的指标

    性能测试的常见指标有 响应时间 并发数 吞吐量 点击数 错误率和资源利用率 一 响应时间 指的是用户从客户端发起一个请求开始 到客户端接收到从服务器端返回的结果 整个过程所耗费的时间 不包括前端页面的处理时间和渲染时间 这也是客户最能只管感
  • 蓝桥杯第七届模拟风扇

    一 初始化系统 首先将系统初始化 关闭蜂鸣器继电器 include STC15 h define uchar unsigned char define uint unsigned int void InitHC138 uchar n swi
  • 求两个正整数的最大公约数Python版

    求两个数的最大公约数我分别采用辗转相除法 辗转相减法 枚举法来求得 最小公倍数就是两个数之积除以最大公约数的结果 1 辗转相除法 思路 1 将两整数求余 a b x 2 如果x 0 则b为最大公约数 3 如果x 0 则 a b b x 继续
  • L298N驱动4个电机驱动小车

    程序代码下载地址 L298N驱动小车 L298N硬件说明 电源 驱动电源 12V 5V电压输出为单片机供电 GND 输出连接电机 OUT0 OUT2 通道A OUT3 OUT4 通道B 与单片机接口 通道A B使能 ENA ENB 逻辑输入