l298n电机驱动直流电机各种程序

合集下载

电机驱动l298n原理

电机驱动l298n原理

电机驱动l298n原理
L298N是一种常见的电机驱动器,可用于控制直流电机或步
进电机。

它使用了H桥电路的原理。

H桥电路是由四个开关(晶体管或MOSFET)组成的,它们
按特定的方式连接在一起,形成了一个桥形结构。

这种结构可以控制电流的流向和电机的旋转方向。

L298N中的H桥电路分为两个部分,分别用于控制电机的两
个端口。

每个部分都由一个上半H桥和一个下半H桥组成。

当上半H桥的两个开关关闭时,与电机连接的两个端口之间
的电流会开始流动,电机会顺时针旋转。

当下半H桥的两个
开关关闭时,电流改变方向,电机会逆时针旋转。

L298N通过控制这些开关的状态来实现电机的速度和方向控制。

它具有使能信号(ENA, ENB)和方向信号(IN1, IN2,
IN3, IN4)的输入引脚,通过改变这些输入信号的状态,可以
控制电机的转速和转向。

例如,当ENA引脚为高电平,IN1为高电平,IN2为低电平时,上半H桥的两个开关会关闭,电流会从ENA引脚流入
IN1引脚,然后流入电机的一个端口,然后返回到IN2引脚,
最后回到GND。

这样,电机会以某个速度顺时针旋转。

通过改变ENA、IN1和IN2的电平状态,可以控制电机的转
速和方向。

类似地,通过控制ENB、IN3和IN4的电平状态,
可以控制电机的另一个端口。

总之,L298N电机驱动器采用H桥电路的原理,通过控制开关的状态来控制电流的流向和电机的转速和方向。

L298N控制直流电机正反转

L298N控制直流电机正反转

L298N控制直流电机正反转一、概述在现代工业自动化和机械设备中,直流电机因其控制简单、响应迅速等特点而被广泛应用。

直流电机的控制并非一件简单的事情,特别是要实现其正反转功能,就需要一种可靠的电机驱动器。

L298N是一款常用的电机驱动器模块,它基于H桥驱动电路,可以有效地控制直流电机的正反转,并且具备过载保护和使能控制功能,使得电机控制更为安全、可靠。

L298N模块内部集成了两个H桥驱动电路,可以同时驱动两个直流电机,且每个电机的驱动电流可达2A,使得它适用于驱动大多数中小型的直流电机。

L298N模块的控制逻辑简单明了,只需通过控制其输入逻辑电平,即可实现电机的正反转、停止等功能。

掌握L298N 模块的使用方法,对于熟悉和掌握直流电机的控制具有重要的意义。

在接下来的内容中,我们将详细介绍L298N模块的工作原理、控制逻辑、驱动电路连接方法以及在实际应用中的使用技巧,以帮助读者更好地理解和应用L298N模块,实现直流电机的正反转控制。

1. 简述直流电机在工业和生活中的重要性直流电机,作为一种重要的电能转换和传动设备,在工业和生活中发挥着至关重要的作用。

它们广泛应用于各种机械设备中,成为驱动各种工业设备和家用电器运行的核心动力源。

在工业领域,直流电机的重要性无可替代。

它们被广泛应用于各种生产线上的机械设备,如机床、泵、风机、压缩机、传送带等。

这些设备需要稳定、可靠的动力源来驱动,而直流电机正好满足这些需求。

它们具有高效、稳定、易于控制等优点,能够实现精确的速度和位置控制,从而提高生产效率和产品质量。

直流电机还在交通运输领域发挥着重要作用。

例如,电动汽车、电动火车、无人机等新型交通工具都采用了直流电机作为动力源。

这些交通工具需要高效、环保的动力系统来驱动,而直流电机正是满足这些需求的理想选择。

在生活中,直流电机也无处不在。

它们被广泛应用于各种家用电器中,如电扇、吸尘器、洗衣机、冰箱、空调等。

这些家电需要稳定、可靠的动力源来运行,而直流电机正是这些家电的核心动力源。

L298N驱动模块使用说明

L298N驱动模块使用说明

1.产品说明产品说明::本L298N 驱动模块,采用ST 公司原装全新的L298N 芯片,采用SMT 工艺稳定性高,采用高质量铝电解电容,使电路稳定工作。

可以直接驱动两路3-16V 直流电机,并提供了5V 输出接口(输入最低只要6V),可以给5V 单片机电路系统供电(低纹波系数),支持3.3V MCU ARM 控制,可以方便的控制直流电机速度和方向,也可以控制2相步进电机,5线4相步进电机。

是智能小车必备利器。

:产品参数:.产品参数1.驱动芯片:L298N双H桥直流电机驱动芯片2.驱动部分端子供电范围Vs:+5V~+16V ; 如需要板内取电,则供电范围Vs:+6V~+16V3.驱动部分峰值电流Io:2A4.逻辑部分端子供电范围Vss:+5V~+7V(可板内取电+5V)5.逻辑部分工作电流范围:0~36mA6.控制信号输入电压范围(IN1 IN2 IN3 IN4):低电平:-0.3V≤Vin≤1.5V高电平:2.3V≤Vin≤Vss7.使能信号输入电压范围(ENA ENB):低电平:-0.3≤Vin≤1.5V(控制信号无效)高电平:2.3V≤Vin≤Vss(控制信号有效)8.最大功耗:20W(温度T=75℃时)9.存储温度:-25℃~+130℃10.驱动板尺寸:55mm*45mm*33mm(带固定铜柱和散热片高度)12.其他扩展:控制方向指示灯、逻辑部分板内取电接口。

3.接口说明接口说明::图中蓝色端子为电机驱动输出端与驱动电源输入端,排针处为电机控制逻辑输入端与5V 电源输出端OUT4 OUT3 OUT2 OUT1 控制电机输出端 VDD GND 为驱动电源输入端输入电压+6-16V。

l298n驱动电机的工作原理_L298N驱动步进电机程序

l298n驱动电机的工作原理_L298N驱动步进电机程序

l298n驱动电机的工作原理_L298N驱动步进电机程序步进电机简介步进电动机是一种将电脉冲信号转换成角位移或线位移的机电元件。

步进电动机的输入量是脉冲序列,输出量则为相应的增量位移或步进运动。

正常运动情况下,它每转一周具有固定的步数;做连续步进运动时,其旋转转速与输入脉冲的频率保持严格的对应关系,不受电压波动和负载变化的影响。

由于步进电动机能直接接受数字量的控制,所以特别适宜采用微机进行控制。

(一)步进电机的种类目前常用的有三种步进电动机:(1)反应式步进电动机(VR)反应式步进电动机结构简单,生产成本低,步距角小;但动态性能差。

(2)永磁式步进电动机(PM)永磁式步进电动机出力大,动态性能好;但步距角大。

(3)混合式步进电动机(HB)混合式步进电动机综合了反应式、永磁式步进电动机两者的优点,它的步距角小,出力大,动态性能好,是目前性能最高的步进电动机。

它有时也称作永磁感应子式步进电动机。

(二)步进电动机的工作原理图X1三相反应式步进电动机结构示意图1定子2转子3定子绕组图x1是最常见的三相反应式步进电动机的剖面示意图。

电机的定子上有六个均布的磁极,其夹角是60。

各磁极上套有线圈,按图1连成A、B、C三相绕组。

转子上均布40个小齿。

所以每个齿的齿距为E=360/40=9,而定子每个磁极的极弧上也有5个小齿,且定子和转子的齿距和齿宽均相同。

由于定子和转子的小齿数目分别是30和40,其比值是一分数,这就产生了所谓的齿错位的情况。

若以A相磁极小齿和转子的小齿对齐,如图,那么B相和C相磁极的齿就会分别和转子齿相错三分之一的齿距,即3。

因此,B、C极下的磁阻比A磁极下的磁阻大。

若给B相通电,B相绕组产生定子磁场,其磁力线穿越B相。

L298N驱动步进电机程序(带PWM)

L298N驱动步进电机程序(带PWM)

MCU选择的是stm32F103RBT6,步进电机选择4相5线5V步进电机马达减速电机28BYJ-48-5V,驱动选择的是L298N模块,模块供电选择12V供电(5V可能带不起来),模块的OUT1、OUT2接小型步进电机的一个线圈,OUT3、OUT4接另一个线圈,注意L298N模块的GND和MCU 的GND相连。

*******************************************************************************步进电机头文件Stepmotor.h#ifndef __MOTOR_H#define __MOTOR_Hvoid Motor_Init(void);void Motor_Go(void);#endif源文件Stepmotor.c#include "stepmotor.h"#include "sys.h"void Motor_Init(void){GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);//使能PB端口时钟GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_5| GPIO_Pin_7| GPIO_Pin_8;//PB3接IN1 PB5接IN2 PB7接IN3 PB8接IN4GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//IO口速度为50MHzGPIO_Init(GPIOB, &GPIO_InitStructure);//GPIO_ResetBits(GPIOB,GPIO_Pin_3|GPIO_Pin_5| GPIO_Pin_7| GPIO_Pin_8);******************************************************************************* PWM调制头文件mypwm.h#ifndef __TIMER_H#define __TIMER_H#include "sys.h"void MYTIMER3_Init(u16 arr,u16 psc);void TIM3_PWM_Init(u16 arr,u16 psc);#endif源文件mypwm.c#include " mypwm.h#include "stm32f10x.h"void TIM3_PWM_Init(u16 arr,u16 psc){TIM_OCInitTypeDef TIM_OCInitTypestucture;TIM_TimeBaseInitTypeDef TIM_TimeBaseInitstucture;GPIO_InitTypeDef GPIO_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);//使能定时器时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO, ENABLE);//使能PC端口,复用时钟GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7;//PC6接ENA PC7接ENB GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //推挽复用输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//IO口速度为50MHz GPIO_Init(GPIOC, &GPIO_InitStructure);//GPIO_PinRemapConfig(GPIO_FullRemap_TIM3,ENABLE);//TIM_TimeBaseInitstucture.TIM_Period=arr;//自动装载值TIM_TimeBaseInitstucture.TIM_Prescaler=psc;//预分频值TIM_TimeBaseInitstucture.TIM_CounterMode=TIM_CounterMode_Up;//计数模式向上TIM_TimeBaseInitstucture.TIM_ClockDivision=0 ;//TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitstucture);TIM_OCInitTypestucture.TIM_OCMode=TIM_OCMode_PWM1 ;//模式1TIM_OCInitTypestucture.TIM_OCPolarity=TIM_OCPolarity_High;//高电平TIM_OCInitTypestucture.TIM_Pulse=599;//改变数值调节占空比TIM_OCInitTypestucture.TIM_OutputState=TIM_OutputState_Enable;//使能TIM_OC1Init(TIM3,&TIM_OCInitTypestucture);TIM_OC1PreloadConfig(TIM3,TIM_OCPreload_Enable);//使能预装载TIM_OCInitTypestucture.TIM_OCMode=TIM_OCMode_PWM1 ;//模式1TIM_OCInitTypestucture.TIM_OCPolarity=TIM_OCPolarity_High;//高电平TIM_OCInitTypestucture.TIM_Pulse=599;TIM_OCInitTypestucture.TIM_OutputState=TIM_OutputState_Enable;//使能TIM_OC2Init(TIM3,&TIM_OCInitTypestucture);TIM_OC2PreloadConfig(TIM3,TIM_OCPreload_Enable);//使能预装载TIM_Cmd(TIM3,ENABLE);//使能定时器}*******************************************************************************主函数#include "stepmotor.h"#include "stm32f10x.h"#include "delay.h"#include "timer.h"int main(){delay_init();Motor_Init();TIM3_PWM_Init(999,71);// 72M/(71+1)(999+1)=1K hzwhile(1) //正转{GPIO_SetBits(GPIOB,GPIO_Pin_5| GPIO_Pin_7| GPIO_Pin_8);//0111GPIO_ResetBits(GPIOB,GPIO_Pin_3);delay_ms(4);GPIO_SetBits(GPIOB,GPIO_Pin_3| GPIO_Pin_7| GPIO_Pin_8);//1011GPIO_ResetBits(GPIOB,GPIO_Pin_5);delay_ms(4);GPIO_SetBits(GPIOB,GPIO_Pin_3| GPIO_Pin_5| GPIO_Pin_8);//1101GPIO_ResetBits(GPIOB,GPIO_Pin_7);delay_ms(4);GPIO_SetBits(GPIOB,GPIO_Pin_3| GPIO_Pin_5| GPIO_Pin_7);//1110GPIO_ResetBits(GPIOB,GPIO_Pin_8);delay_ms(4);}}。

教大家使用L298N电机驱动模块,电机控制正反转、调速很轻松!

教大家使用L298N电机驱动模块,电机控制正反转、调速很轻松!

教大家使用L298N电机驱动模块,电机控制正反转、调速很轻松!普及数电模电知识,科教兴国。

大家好,今天和大家来学习L298N电机驱动模块。

L298N是双H 桥电机驱动芯片,可以驱动两个直流电机或者一个步进电机,能实现电机的正反转以及调速。

先来看看L298N芯片实物:上图是15脚Multiwatt封装的L298N。

L298N兼容标准的TTL逻辑,是一款高电压、高电流双全桥驱动器,能够驱动感性负载,例如继电器、电磁阀、直流电机、步进电机等。

两个独立的使能信号用于使能或禁能设备,每一个桥的下管射极相连,射极引脚可以连接相应的采样电阻,用以过流保护,芯片的逻辑供电与负载供电分离,以使芯片可以工作在更低的逻辑电压下。

这个芯片那么多引脚,对于各引脚的功能定义,我们可以通过数据手册来了解:从下往上数,按照序号,1脚和15脚是:电机电流(或叫桥驱动电流)检测引脚;2、3脚是A桥输出引脚,可接一个直流电机;4脚是负载驱动供电引脚,这个引脚和地之间必须要接一个100nF的无感电容;5脚和7脚是A桥信号输入,兼容TTL电平;6脚和11脚是使能输入,兼容TTL,低电平禁能,高电平使能;8脚是地,GND;9脚是逻辑供电,该引脚到地必须连接一个100nF的电容;10脚和12脚是B 桥信号输入,同样兼容TTL逻辑电平;13脚和14脚是B桥输出,可接一个直流电机。

在这里需要提一下,是关于1脚和15脚:当需要对电机电流进行检测时,分别在sense A、B两个引脚上串接个小电阻,当A、B两个桥的电流(电机电流)流过两个电阻时转换成电压,这个电压被送到控制L298工作的上位机(或控制电路),上位机就根椐这个电压的高低判断L298是否工作正常。

如果这个电压超过设计上限时,上位机就判L298有故障,可采取如下保护措施:1、停止步进脉冲输出,关断电机电流。

2、给EN脚一个低电平,关闭L298。

如sense不用,就直接将sense A、B两脚接地。

Arduino实验笔记1:L298N Arduino 控制直流电机和步进电机

Arduino实验笔记1:L298N Arduino 控制直流电机和步进电机

一。控制直流电机正反转
上代码来自
intKp; intdir1PinA=4; intdir2PinA=7;
intdir1PinB=8; intdir2PinB=12;
voidsetup(){ pinMode(4,OUTPUT);//IO pinMode(7,OUTPUT);//IO pinMode(8,OUTPUT);//IO pinMode(12,OUTPUT);//IO pinMode(10,OUTPUT);//PWM引脚 pinMode(11,OUTPUT);//PWM引脚 } voidloop(){
连线图,手画的看起来差点,但很清楚。
二。步进电机实验
上代码来自的朋友
/* 作者:极客工坊 时间:2012年5月24日 IDE版本号:1.0.1 发布地址:[url][/url] 作用:当你按下按钮后1秒钟,灯会亮,然后维持5秒钟,熄灭 */ voidsetup() { pinMode(4,INPUT);//将4号数字口设置为输入状态,13号数字口设置为输出状态 pinMode(11,OUTPUT); } voidloop() { intn=digitalRead(4);//创建一个变量n,将4号数字口的状态采集出来赋值给 他。
digitalWrite(dir2PinB,HIGH); analogWrite(10,map(Kp,500,0,0,255)); analogWrite(11,map(Kp,500,0,0,255)); }
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>后退-------

l298n电机驱动模块工作流程

l298n电机驱动模块工作流程

l298n电机驱动模块工作流程下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。

文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by theeditor. I hope that after you download them,they can help yousolve practical problems. The document can be customized andmodified after downloading,please adjust and use it according toactual needs, thank you!In addition, our shop provides you with various types ofpractical materials,such as educational essays, diaryappreciation,sentence excerpts,ancient poems,classic articles,topic composition,work summary,word parsing,copy excerpts,other materials and so on,want to know different data formats andwriting methods,please pay attention!L298N 电机驱动模块是一种常用的直流电机驱动模块,它可以控制两个直流电机的正反转和速度。

L298N电机驱动器使用说明书

L298N电机驱动器使用说明书

L298N电机驱动器使用说明书注意:本说明书中添加超链接的按CTRL并点击连接,即可看到内容。

L298N是ST公司生产的一种高电压、大电流电机驱动芯片。

该芯片采用15脚封装。

主要特点是:工作电压高,最高工作电压可达46V;输出电流大,瞬间峰值电流可达3A,持续工作电流为2A;额定功率25W。

内含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器线圈等感性负载;采用标准逻辑电平信号控制;具有两个使能控制端,在不受输入信号影响的情况下允许或禁止器件工作有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作;可以外接检测电阻,将变化量反馈给控制电路。

使用L298N芯片驱动电机,该芯片可以驱动一台两相步进电机或四相步进电机,也可以驱动两台直流电机。

简要说明:一、尺寸:80mmX45mm二、主要芯片:L298N、光电耦合器三、工作电压:控制信号直流5V;电机电压直流3V~46V(建议使用36伏以下)四、最大工作电流:2.5A五、额定功率:25W特点:1、具有信号指示。

2、转速可调3、抗干扰能力强4、具有过电压和过电流保护5、可单独控制两台直流电机6、可单独控制一台步进电机7、PWM脉宽平滑调速8、可实现正反转9、采用光电隔离六、有详细使用说明书七、提供相关软件八、提供例程及其学习资料驱动器结构详解1.信号电源引入端2.控制信号输入端3.直流电机调速PWM脉宽信号输入端。

(控制步进电机或者控制直流电机无需调速时,保持此状态)4.控制信号指示灯5.光电隔离(抗干扰) 6.核心芯片(L298N)7.二极管桥式续流保护8.电源滤波9.端子接线实例一:步进电机的控制实例步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合于单片机控制。

步进电机可分为反应式步进电机(简称VR)、永磁式步进电机(简称PM)和混合式步进电机(简称HB)。

一、步进电机最大特点是:1、它是通过输入脉冲信号来进行控制的。

L298N(L297+L298N)电机驱动器使用说明

L298N(L297+L298N)电机驱动器使用说明

用 PWM 信号对
1、具有信号指示 2、转速可调 3、抗干扰能力强 4、具有续流保护 5、可单独控制两台直流电机 6、可单独控制一台步进电机 7、PWM 脉宽平滑调速(可使 直流电机调速) 8、可实现正反转 9、采用光电隔离
控制步进电机:
实例一:步进电机的控制实例
步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一 个脉冲信号,步进电机就转动一个角度,因此非常适合于单片机控制。 步进电机可分为反应式步进电机(简称 VR)、永磁式步进电机(简 称 PM)和混合式步进电机(简称 HB)。 一、步进电机最大特点是: 1、它是通过输入脉冲信号来进行控制的。 2、电机的总转动角度由输入脉冲数决定。 3、电机的转速由脉冲信号频率决定。 二、步进电机的驱动电路 根据控制信号工作,控制信号(ENA ENB)由单片机产生。(或者其他 信号源) 三、控制步进电机的速度 如果给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会 再转一步。两个脉冲的间隔越短,步进电机就转得越快。调整单片机
将短接帽短接)实现电机正反转就更容易了,输入信号端 IN1 接高电
平输入端 IN2 接低电平,电机 M1 正转。(如果信号端 IN1 接低电平,
IN2 接高电平,电机 M1 反转。)控制另一台电机是同样的方式,输入
信号端 IN3 接高电平,输入端 IN4 接低电平,电机 M2 正转。(反之
则反转),PWM 信号端 A 控制 M1 调速,PWM 信号端 B 控制 M2 调
QQ:1035573910.
采用 15 脚封装。主要特点是:工作电压高,最高工作电压可达 46V;
输出电流大,瞬间峰值电流可达 3A,持续工作电流为 2A;最大功率 25W。内含两个 H 桥的高电压大电流全桥式驱动器,可以用来驱动直 流电动机和步进电动机、继电器线圈等感性负载;采用标准逻辑电平 信号控制;具有两个使能控制端,在不受输入信号影响的情况下允许 或禁止器件工作有一个逻辑电源输入端,使内部逻辑电路部分在低电 压下工作;可以外接检测电阻,将变化量反馈给控制电路。使用 L298N 芯片驱动电机,该芯片可以驱动一台两相步进电机或四相步进电机, 也可以驱动两台直流电机,是智能小车必备。

电机驱动L298N带光耦

电机驱动L298N带光耦

直流/步进两用驱动器使用说明直流/步进两用驱动器原理图(图片可以放大)直流/步进两用驱动器原理图(图片可以放大)实例一,直流电机控制方式使用说明使用直流/步进两用驱动器可以驱动两台直流电机。

分别为M1和M2。

引脚A,B可用于输入PWM脉宽调制信号对电机进行调速控制。

(如果无须调速可将两引脚接5V,使电机工作在最高速状态,既将短接帽短接)实现电机正反转就更容易了,输入信号端IN1接高电平输入端IN2接低电平,电机M1正转。

(如果信号端IN1接低电平,IN2接高电平,电机M1反转。

)控制另一台电机是同样的方式,输入信号端IN3接高电平,输入端IN4接低电平,电机M2正转。

(反之则反转),PWM信号端A控制M1调速,PWM信号端B控制M2调速。

可参考下图表:实例二,两相四线步进电机控制方式使用说明使用直流/步进两用驱动器可以驱动一台步进电机。

A,B端分别用短接帽接通5V电源点。

M1和M2四个接线端子分别接步进电机的两个绕组。

要实现步进电机的旋转,输入信号端IN1,IN2,IN3,IN4依次接入低电平。

(正转接入低电平的顺序是IN1→IN2→IN3→IN4,反转接入低电平的顺序是IN4→IN3→IN2→IN1)。

改变脉冲的速度即可改变电机的转动速度,脉冲越快电机的转速也就越快。

脉冲速度超过了电机的反应速度就容易造成电机失步。

(果接入信号正常,电机发生抖动现象,证明电机接线一相接反。

须调节电机接线顺序。

)实例三,四相六线步进电机控制方式使用说明使用直流/步进两用驱动器可以驱动一台四相六线步进电机和控制一台两相四线步进电机的程序是一样的。

(只是接线方式有一点不同,四相六线步进电机需要将其中的两个公共端接电源即可。

如上图接法。

)M1和M2四个接线端子分别接步进电机的两个绕组。

要实现步进电机的旋转,输入信号端IN1,IN2,IN3,IN4依次接入低电平。

(正转接入低电平的顺序是IN1→IN2→IN3→IN4,反转接入低电平的顺序是IN4→IN3→IN2→IN1)。

l298驱动直流电机方法

l298驱动直流电机方法
sbit s1=P3^2; /* L298的Input 1 */
sbit s2=P3^3; /* L298的Input 2 */
uchar t=0; /*中断计数器*/
uchar m1=0; /*电机1速度值*/
uchar tmp1; /*电机当前速度值*/
/*电机控制函数index-电机号(1,2); speed-电机速度(-100—100) */
10.驱动板尺寸:55mm*49mm*33mm(带固定铜柱和散热片高度)
11.驱动板重量:33g
12.其他扩展:控制方向指示灯、逻辑部分板内取电接口。
使用说明:
步进电机的驱动: 板上的ENA与ENB为高电平时有效,这里的电平指的是TTL电平。ENA为A1和A2的使能端,ENB为B1和IB2的使能端。BJ接步进电机公共端。
[日期:2011-03-21 ] [来源:本站原创 作者:admin] [字体:大 中 小] (投递新闻)
产品参数:
1.驱动芯片:L298N双H桥直流电机驱动芯片
2.驱动部分端子供电范围Vs:+5V~+35V ; 如需要板内取电,则供电范围Vs:+7V~+35V
3.驱动部分峰值电流Io:2A
4.逻辑部分端子供电范围Vss:+5V~+7V(可板内取电+5V)
{
motor(1,i);
delay(5000);
}
for(i=0;i<=100;i++) /*反转加速*/
{
motor(1,-i);
delay(5000);
}
for(i=100;i>0;i--) /*反转减速*/
{
motor(1,-i);
delay(5000);

L298N在直流电机PWM调速系统中的应用

L298N在直流电机PWM调速系统中的应用

驱动46V、2A 以下的电图2P WM 控制原理图机。

由L298N 构成的设电机始终接通电源时, 电机转速最大为V max , PWM 功率放大器的工作V d = V max # D ( 1 )式中: V d表示电机的平均速度; V max表示电机使能端, 控制电机的停转。

这些特性使得L298N 到不同的电机平均速度, 从而达到调速的目的。

第9 卷第4 期2009 年7 月潍坊学院学报Journal of Weifang Univer sityVol. 9 No. 4Jul. 2009L298N 在直流电机PWM 调速系统中的应用孙绪才*( 潍坊学院, 山东潍坊261061)摘要: 介绍了L298N 芯片的特点和工作原理, 提出了基于L298N 芯片设计电机PWM 控制系统的方法, 设计出了电机调速系统电路图, 重点研究了基于MCS- 51 单片机用软件产生P WM 信号的途径,并讨论了一种独特的通过采用计数法加软件延时法实现P WM 信号占空比调节的方法。

运行试验表明,系统工作稳定可靠, 满足直流电动机的调速要求。

关键词: L298N; 电机; 调速; 控制系统中图分类号: T P273 文献标识码: A 文章编号: 1671- 4288( 2009) 04- 0019- 03电子技术的高度发展, 促使直流电机调速逐步t ion) , 它是指将输出信号的基本周期固定, 通过调从模拟化向数字化转变, 特别是单片机技术的应用, 使直流电机调速技术又进入到一个新的阶段, 智能化、高可靠性已成为它发展的趋势。

本文在研究直整基本周期内工作周期的大小来控制输出功率的方法。

在PWM 驱动控制的调整系统中, 按一个固定的频率来接通和断开电源, 并根据需要改变一个周流电机驱动技术和P WM 方法的基础上, 设计了基期内/ 接通0和/ 断开0 时间的长短[ 3] 。

因此, PWM于L298N 芯片的直流电机调速系统硬件电路, 并提供一种用单片机软件实现PWM 调速的方法。

L298N步进电机驱动器使用说明

L298N步进电机驱动器使用说明

L298N电机驱动器使用说明兴创科技L298N是ST公司生产的一种高电压、大电流电机驱动芯片。

该芯片采用15脚封装。

主要特点是:工作电压高,最高工作电压可达46V;输出电流大,瞬间峰值电流可达3A,持续工作电流为2A;额定功率25W。

内含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器线圈等感性负载;采用标准逻辑电平信号控制;具有两个使能控制端,在不受输入信号影响的情况下允许或禁止器件工作有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作;可以外接检测电阻,将变化量反馈给控制电路。

使用L298N芯片驱动电机,该芯片可以驱动一台两相步进电机或四相步进电机,也可以驱动两台直流电机。

宝贝简介:一、尺寸:65mmX41mm X28mm二、主要芯片:L298N、光电耦合器三、工作电压:控制信号直流4.5~5.5V;驱动电机电压5~30V四、可驱动直流(5~30V之间电压的电机)五、最大输出电流2A (瞬间峰值电流3A)六、最大输出功率25W七、特点:1、具有信号指示2、转速可调3、抗干扰能力强4、具有续流保护5、可单独控制两台直流电机6、可单独控制一台步进电机7、PWM脉宽平滑调速(可使用PWM信号对直流电机调速)8、可实现正反转9、采用光电隔离实例一:步进电机的控制实例步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合于单片机控制。

步进电机可分为反应式步进电机(简称VR)、永磁式步进电机(简称PM)和混合式步进电机(简称HB)。

一、步进电机最大特点是:1、它是通过输入脉冲信号来进行控制的。

2、电机的总转动角度由输入脉冲数决定。

3、电机的转速由脉冲信号频率决定。

二、步进电机的驱动电路根据控制信号工作,控制信号由单片机产生。

(或者其他信号源) 三、基本原理作用如下:步进电机控制:将IN1,IN2和IN3,IN4两对引脚分别接入单片机的某个端口,输出连续的脉冲信号。

L298N控制直流电机正反转

L298N控制直流电机正反转

98推 介Design L298N控制直流电机正反转文/张天鹏 徐磊 北京林业大学工学院摘要:在分析了直流电机驱动芯片 L298N 的性能、结构的基础上,结合 SPCE061A EMU BOARD单片机(61板),介绍实现驱动直流电机的转正反一种简单方法.文中给出了控制原理图,还给出来了控制直流电机正反转驱动程序。

实际测试表明,利用该方法设计的直流电机驱动系统具有硬件结构简单、软件编程容易。

关键词:直流电机 单片机 L298N一、背景介绍(一)预备知识1.熟悉凌阳单片机的工作原理。

2.熟悉键盘扫描原理和L298n驱动电机原理。

3.熟悉汇编语言及C语言。

(二)直流电机控制原理对于普通直流电机,其控制方法比较简单,只需给电机的两根控制线加上适当的电压即可使电机转动起来,电压越高则电机转速越高。

对于直流电机的速度调节,可以采用改变电压的方法,也可采用PWM调速方法。

PWM调速就是使加在直流电机两端的电压为方波形式,加在电机两端的电压就在VLoad和0V之间不停的跳变,对应的电机电压波形如图 1 所示:图1 PWM调速原理图此时加在电机两端的平均电压Uo=Th/(Th+Tl)*VLoad,可以通过调整PWM的占空比来改变Th和Tl的比值。

这样就可以通过PWM调节加在电机两端的平均电压,从而改变电机的转速。

与步进电机类似,不能将单片机的I/O直接与直流电机的引线相接,而要在二者之间增加驱动电路。

也可利用L298N电机驱动芯片实现直流电机驱动(注:我们小组在本次试验中采用L298N芯片驱动直流电机正反转)。

(三)L298N芯片资料恒压恒流桥式2A驱动芯片L298N:L298是SGS公司的产品,比较常见的是15脚Multiwatt封装的L298N,内部同样包含4通道逻辑驱动电路。

可以方便的驱动两个直流电机,或一个两相步进电机。

L298N芯片可以驱动两个二相电机,也可以驱动一个四相电机,输出电压最高可达50V ,可以直接通过电源来调节输出电压;可以直接用单片机的I O口提供信号;而且电路简单,使用比较方便。

L298N驱动电机C程序

L298N驱动电机C程序
L298N驱动电机C程序
#include
#define sen_port P1
sbit SEN1=P1^0;
sbit SEN2=P1^1;
sbit EN1=P2^2;
sbit IN1=P2^3;
sbit IN2=P2^4;
sbit EN2=P2^5;
sbit IN3=P2^6;
sbit IN4=P2^7;
{
IN1=1;
IN2=0;
IN3=0;
IN4=1;
EN1=1;
EN2=1;
}
void turn_right() //right moto is runing, but left moto is brake
{
IN1=0;
IN2=0;
IN3=1;
IN4=0;
EN1=1;
EN2=1;
}
void rotate_right() //left moto is running forward, and right moto is running backward
IN4=1;
EN1=1;
EN2=1;
}
void main(void)
{
delay(10);
P0=0x55;
while(1)
{
// P0=P1;
// delay(100); forward();
// delay(100); stop();
delay(100); backward();
delay(100); stop();
{
IN1=0;
IN2=1;
IN3=0;
IN4=1;
EN1=1;
EN2=1;
}

HAL库直流电机编码测速(L298N驱动)笔记

HAL库直流电机编码测速(L298N驱动)笔记

HAL库直流电机编码测速(L298N驱动)笔记主函数开始后的处理流程:1.外设初始化:HAL_Init()2.系统时钟配置RCC振荡器初始化:HAL_RCC_OsConfig()RCC时钟初始化:HAL_RCC_ClockConfig()系统滴答定时器初始化:HAL_SYSTICK_Config()3.按键GPIO初始化GPIO端⼝时钟使能:__HAL_RCC_GPIOA_CLK_ENABLE()⼯作模式激活下拉或上拉引脚初始化:HAL_GPIO_Init()4.串⼝初始化串⼝GPIO端⼝使能:__HAL_RCC_GPIOA_CLK_ENABLE()串⼝初始化(包含串⼝硬件初始化):HAL_UART_Init()5.编码器定时器初始化定时器时钟使能:__HAL_RCC_TIM3_CLK_ENABLE()编码器GPIO引脚初始化GPIO端⼝时钟使能:__HAL_RCC_GPIOB_CLK_ENABLE()⼯作模式激活下拉或上拉引脚初始化:HAL_GPIO_Init()编码器中断优先级配置设置中断优先级:HAL_NVIC_SetPriority()使能中断请求:HAL_NVIC_EnableIRQ()定时器基本环境初始化:HAL_TIM_Base_Init()定时器时钟源配置:HAL_TIM_ConfigClockSource()定时器输⼊捕获环境初始化:HAL_TIM_IC_Init()定时器主输出模式同步:HAL_TIMEx_MasterConfigSynchronization()定时器输⼊捕获配置:HAL_TIM_IC_ConfigChannel()6.编码器定时器启动:HAL_TIM_Base_Start()7.L298N定时器初始化基本环境初始化:HAL_TIM_Base_Init()时钟源配置:HAL_TIM_ConfigClockSource()⽐较输出初始化(包含mcu硬件初始化):HAL_TIM_PWM_Init()初始化:HAL_TIM_Base_MspInit()反初始化:HAL_TIM_Base_MspDeInit()主输出模式同步:HAL_TIMEx_MasterConfigSynchronization()刹车和死区时间配置:HAL_TIMEx_ConfigBreakDeadTime()通道⽐较输出配置:HAL_TIM_PWM_ConfigChannel()定时器实际时钟频率为:72MHz/(定时器预分频+1)=36MHzPWM频率为:定时器实际时钟频率/(定时器周期+1),[定时器周期为900的话,36MHz/(900+1)=40Khz]实际PWM频率为:PWM频率/(⾼级定时器重复计数寄存器值+1),[⾼级定时器重复计数寄存器值为0的话,40KHz/0+1=40KHz] PWM占空⽐为:定时器通道⽐较输出脉冲/定时器周期*100%,占空⽐为50%时电机不转。

l298n电机驱动直流电机各种程序

l298n电机驱动直流电机各种程序

#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit INPUT1 = P1^0; //控制口sbit INPUT2 = P1^1;sbit INPUT3 = P1^2;sbit INPUT4 = P1^3;sbit ENA = P1^4; //产生PWM波sbit ENB = P1^5;uint MA=0,MB=0;uint SpeedA=20;//50%占空比uint SpeedB=20;void delay(uint z) {uint x,y;for(x=z;x>0;x--)for(y=125;y>0;y--);}void main(void){delay(1000) ;delay(1000) ;INPUT1=1;INPUT2=0;INPUT3=1;INPUT4=0;TH0 = 0xF4;TL0 = 0x48;TH1 = 0xF4;TL1 = 0x48;TMOD = 0x11;TR0 = 1;TR1 = 1;ET0 = 1;ET1 = 1;EA = 1;while(1){}}void time0_int() interrupt 1 using 1TR0=0;TH0=0xF4;TL0=0x48;MA++;if(MA< SpeedA){ENA = 1;}else ENA = 0;if(MA == 40){MA = 0;}TR0 = 1;}void time1_int() interrupt 3 using 1{TR1=0;TH1=0xF4;TL1=0x48;MB=MB + 1;if(MB < SpeedB){ENB=1;}else ENB = 0;if(MB == 40){MB = 0;}TR1 = 1;}(2)#include <reg52.h>sbit KEY1 = P3^1;sbit PWM = P1^5;unsigned char CYCLE; //定义周期该数字X基准定时时间如果是10 则周期是10 x 0.1ms unsigned char PWM_ON ;//定义高电平时间void delay(unsigned int cnt)while(--cnt);}main(){unsigned char PWM_Num;//定义档位TMOD |=0x01;//定时器设置1ms in 12M crystalTH0=(65536-1000)/256;TL0=(65536-1000)%256;//定时1mSIE= 0x82; //打开中断TR0=1;CYCLE = 10;// 时间可以调整这个是10步调整周期10ms 8位PWM就是256步while(1){if(!KEY1){delay(10000);if(!KEY1){PWM_Num++;if(PWM_Num==4)PWM_Num=0;switch(PWM_Num){case 0:P1=0xFE;PWM_ON=0;break;//高电平时长case 1:P1=0xFD;PWM_ON=4;break;case 2:P1=0xFB;PWM_ON=6;break;case 3:P1=0xF7;PWM_ON=8;break;default:break;}}}}}/********************************//* 定时中断*//********************************/void tim(void) interrupt 1 using 1{static unsigned char count; //TH0=(65536-1000)/256;TL0=(65536-1000)%256;//定时1mSif (count==PWM_ON){PWM = 1; //灯灭}count++;if(count == CYCLE){count=0;if(PWM_ON!=0) //如果左右时间是0 保持原来状态PWM = 0;//灯亮}}(3)/***************电子电机驱动模块直流电机控制程序**************************/ #include <reg52.h>sbit IN1=P1^0;sbit IN2=P1^1;sbit IN3=P1^2;sbit IN4=P1^3;sbit EN1=P1^4;sbit EN2=P1^5;unsigned int pwm_H;unsigned int pwm_L;/***********初始函数函数**********************************//*日期:2012年2月2日*//*版本号V1.2*//*说明:初始化系统,调用速度设置函数前请先初始化*/void InitSpeed(){TMOD=0X01;TL0=0;TH0=0;TR0=1;ET0=1;EA=1;}/***********速度设置函数**********************************/ /*日期:2012年2月2日*//*版本号V1.2*//*说明:0-1000级速度,值越高速度越快*/void SetSpeed(unsigned int num){if(num<1000){pwm_L=65535-num;pwm_H=65536-(1001-num);}else return ;}/***********速度设置函数**********************************/ /*日期:2012年2月2日*//*版本号V1.2*//*说明:左转设置函数*/void TurnLeft(){IN1=0;IN2=1;IN3=0;IN4=1;}/***********速度设置函数**********************************/ /*日期:2012年2月2日*//*版本号V1.2*//*说明:右转设置函数*/void TurnRight(){IN1=1;IN2=0;IN3=1;IN4=0;}/************电机使能*********************************//*日期:2012年2月2日*//*版本号V1.2*//*说明:右转设置函数*/void MotorGo(){EN1=0;EN2=0;}void main(){InitSpeed();TurnRight();MotorGo();SetSpeed(999);while(1);}/*******定时器0中断服务程序*************/ void Timer0() interrupt 1 using 1{static char stepFlag;TR0=0;if(stepFlag==1){TL0=pwm_H;TH0=pwm_H>>8;EN1=0; //电机1不使能EN2=0; //电机2不使能stepFlag=0;}else{TL0=pwm_L;TH0=pwm_L>>8;EN1=1; //电机1使能EN2=1; //电机2使能stepFlag=1;}TR0=1;}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit INPUT1 = P1^0; //控制口
sbit INPUT2 = P1^1;
sbit INPUT3 = P1^2;
sbit INPUT4 = P1^3;
sbit ENA = P1^4; //产生PWM波sbit ENB = P1^5;
uint MA=0,MB=0;
uint SpeedA=20;//50%占空比
uint SpeedB=20;
void delay(uint z) {
uint x,y;
for(x=z;x>0;x--)
for(y=125;y>0;y--);
}
void main(void)
{
delay(1000) ;
delay(1000) ;
INPUT1=1;
INPUT2=0;
INPUT3=1;
INPUT4=0;
TH0 = 0xF4;
TL0 = 0x48;
TH1 = 0xF4;
TL1 = 0x48;
TMOD = 0x11;
TR0 = 1;
TR1 = 1;
ET0 = 1;
ET1 = 1;
EA = 1;
while(1){}
}
void time0_int() interrupt 1 using 1
TR0=0;
TH0=0xF4;
TL0=0x48;
MA++;
if(MA< SpeedA){
ENA = 1;
}
else ENA = 0;
if(MA == 40){
MA = 0;
}
TR0 = 1;
}
void time1_int() interrupt 3 using 1
{
TR1=0;
TH1=0xF4;
TL1=0x48;
MB=MB + 1;
if(MB < SpeedB){
ENB=1;
}
else ENB = 0;
if(MB == 40){
MB = 0;
}
TR1 = 1;
}
(2)
#include <reg52.h>
sbit KEY1 = P3^1;
sbit PWM = P1^5;
unsigned char CYCLE; //定义周期该数字X基准定时时间如果是10 则周期是10 x 0.1ms unsigned char PWM_ON ;//定义高电平时间
void delay(unsigned int cnt)
while(--cnt);
}
main()
{
unsigned char PWM_Num;//定义档位
TMOD |=0x01;//定时器设置1ms in 12M crystal
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;//定时1mS
IE= 0x82; //打开中断
TR0=1;
CYCLE = 10;// 时间可以调整这个是10步调整周期10ms 8位PWM就是256步while(1)
{
if(!KEY1)
{
delay(10000);
if(!KEY1)
{
PWM_Num++;
if(PWM_Num==4)PWM_Num=0;
switch(PWM_Num){
case 0:P1=0xFE;PWM_ON=0;break;//高电平时长
case 1:P1=0xFD;PWM_ON=4;break;
case 2:P1=0xFB;PWM_ON=6;break;
case 3:P1=0xF7;PWM_ON=8;break;
default:break;
}
}
}
}
}
/********************************/
/* 定时中断*/
/********************************/
void tim(void) interrupt 1 using 1
{
static unsigned char count; //
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;//定时1mS
if (count==PWM_ON)
{
PWM = 1; //灯灭
}
count++;
if(count == CYCLE)
{
count=0;
if(PWM_ON!=0) //如果左右时间是0 保持原来状态
PWM = 0;//灯亮
}
}
(3)
/***************电子电机驱动模块直流电机控制程序**************************/ #include <reg52.h>
sbit IN1=P1^0;
sbit IN2=P1^1;
sbit IN3=P1^2;
sbit IN4=P1^3;
sbit EN1=P1^4;
sbit EN2=P1^5;
unsigned int pwm_H;
unsigned int pwm_L;
/***********初始函数函数**********************************/
/*日期:2012年2月2日*/
/*版本号V1.2*/
/*说明:初始化系统,调用速度设置函数前请先初始化*/
void InitSpeed()
{
TMOD=0X01;
TL0=0;
TH0=0;
TR0=1;
ET0=1;
EA=1;
}
/***********速度设置函数**********************************/ /*日期:2012年2月2日*/
/*版本号V1.2*/
/*说明:0-1000级速度,值越高速度越快*/
void SetSpeed(unsigned int num)
{
if(num<1000)
{
pwm_L=65535-num;
pwm_H=65536-(1001-num);
}
else return ;
}
/***********速度设置函数**********************************/ /*日期:2012年2月2日*/
/*版本号V1.2*/
/*说明:左转设置函数*/
void TurnLeft()
{
IN1=0;
IN2=1;
IN3=0;
IN4=1;
}
/***********速度设置函数**********************************/ /*日期:2012年2月2日*/
/*版本号V1.2*/
/*说明:右转设置函数*/
void TurnRight()
{
IN1=1;
IN2=0;
IN3=1;
IN4=0;
}
/************电机使能*********************************/
/*日期:2012年2月2日*/
/*版本号V1.2*/
/*说明:右转设置函数*/
void MotorGo()
{
EN1=0;
EN2=0;
}
void main()
{
InitSpeed();
TurnRight();
MotorGo();
SetSpeed(999);
while(1);
}
/*******定时器0中断服务程序*************/ void Timer0() interrupt 1 using 1
{
static char stepFlag;
TR0=0;
if(stepFlag==1)
{
TL0=pwm_H;
TH0=pwm_H>>8;
EN1=0; //电机1不使能
EN2=0; //电机2不使能
stepFlag=0;
}
else
{
TL0=pwm_L;
TH0=pwm_L>>8;
EN1=1; //电机1使能
EN2=1; //电机2使能
stepFlag=1;
}
TR0=1;
}。

相关文档
最新文档