【Arduino 101】霍尔编码器(增量,正交)与起停式闭环控制

STM32Cube HAL库——霍尔编码器测速(电机转速测量) 本博客讲解了编码器测速的原理、展示了使用STM32Cube编程读取编码器原始数据的过程。该博客如遇到问题也将进一步完善,源码整理后会将上传。 阅读详情
AI摘要

本文介绍了使用Arduino Uno、L298N马达驱动和带霍尔编码器的直流电机进行闭环控制的实践,包括材料清单、演示视频、控制原理和IDE代码。代码部分展示了如何通过A相位和A&B相位检测电机旋转方向,并利用中断服务程序实现正交编码器的精确控制。


Bill of Material

Arduino Uno x 1; L298N 马达驱动 x 1; 带霍尔编码器(增量,正交)的直流电机 x 1; 电位器 x 1;

演示视频

【Arduino 101】霍尔编码器与闭环控制(白话)

控制原理

在这里插入图片描述

接线

在这里插入图片描述

IDE 代码 I(仅使用A相位)

 /*
Bnag Bnang Control with Encoded DC Motor(霍尔编码器与起停控制直流电机)
Last Edited: Feb.27th.2021 by Mun Kim
Contact: robotix.kim@gmail.com     
*/
 
// Motor encoder output pulse per rotation (change as required)// 每圈的脉冲数量,可以从数据手册中查找
int PPR= 3;
 
// Encoder output to Arduino Interrupt pin// 编码器的A相位接Arduino的D2.
int encoder_A= 2; 
 
// L298n Motor Driver // 马达驱动接线:D5控制PWM, D6与D7控制转动方向
int enB= 5; int in3= 6; int in4= 7;
 
// Analog pin for potentiometer // 电位器接线:用来控制目标转速(不是PWM)
int pot = 0;
 
// Pulse count from encoder // 用来储存脉冲数量
volatile long encoderCount = 0;
 
// One-second interval for measurements // 每一秒进行一次测量与控制,可改小,ie: interval=100;
int interval = 1000;
 
// Counters for milliseconds during interval // 用来计算时间 
long previousMillis = 0; long currentMillis = 0;
 
// Variable for RPM measuerment //rpm: 实际测到的转速, setRPM:目标转速
int rpm = 0; int setRPM=0;
 
// Variable for PWM motor speed output // PWM初始值, 可以设为 0-255 之间的任意值
int pwm 
Arduino控制电机转动,并读取编码器数据 Arduino之步进电机编码器脉冲数据读取 阅读详情

相关推荐

【Arduino 101】五分钟搞懂PID控制算法

【Arduino 101】五分钟搞懂PID控制算法物料清单尺寸接线 文章目录物料清单尺寸接线 物料清单 Arduino Uno x 1 超声波模块(HC-SR04)x 1 舵机(Tower Pro MG996R)x 1 舵机供电: 5V 稳压管(LM7805) x 1 , 滤波电容 (0.33uF, 0.1uF) x 2, 9V 电池 x 1 滑轨:泡沫板 支架:乐高 滚动物体:胶带(Up试过网球,但是测距模块的表现不理想) 尺寸 接线 ...

机器人工坊 1万+

stm32_霍尔编码器

stm32——霍尔编码器

m0_58028719的博客 8003

编码电机的使用方法(ESP32--Arduino)

编码器主要分为光电编码器和磁编码器(霍尔编码器)。

2302_81176524的博客 4437

STM32直流减速电机控制篇(二)编码器测速原理

编码器 编码器是一种将角位移或者角速度转换成一连串电数字脉冲的旋转式传感器,我们可以通过编码器测量到底位移或者速度信息。编码器从输出数据类型上分可以分为增量式编码器和绝对式编码器。 从编码器检测原理上来分,还可以分为光学式,磁式,感应式,电容式。常见的是光电编码器(光学式)和霍尔编码器(磁式)。 光电编码器的采集精度远高于霍尔编码器但价格更贵。 编码器原理 光电编码器是一种通过光电转换将输出轴上的机械几何位移转换成脉冲信号或者数字量的传感器。光电编码器是由光码盘和光电检测装置组成。光码盘是在一..

qhdd123的博客 2万+

【花雕学编程】Arduino FOC 之霍尔磁性编码器

在Arduino平台上实现FOC可以提供平滑的运行和高度的扭矩、速度和位置控制,它通过精确控制电机的电流和电压来实现高效率、高精度和低噪声的操作。通过设置适当的控制参数和使用合适的控制模式,可以实现精确的电机控制。5、创新:Arduino可以让你用电子的方式来表达你的创意和想象,你可以用Arduino来制作各种有趣和有用的项目,如机器人、智能家居、艺术装置等。1、高性能电机控制:FOC是一种高级的电机控制算法,可以精准控制PMSM(永磁同步电机)和BLDC(无刷直流)电机,实现平滑的转速和扭矩输出。

雕爷学编程 1002

Arduino mega2560 pid闭环控制控制电机

闭环控制是通过编码器获取电机转速,再利用PI控制电机转速维持在设定值的一种控制方法。速度闭环不使用D微分项。本资源是一个可用的Arduino mega2560 pid控制电机,如果想实现四轮控制,仅需要把程序复制修改三次即可。 内容结构: 1.引用<FlexiTimer2.h> 定时中断库; 2.定义引脚、变量; 3.setup函数、loop函数; 4.中断控制函数; 5.外部中断读取编码器数据,具有二倍频功能; 6.PI控制器; 7.实际控制函数,函数功能:赋值给PWM寄存器,入口参数:PWM;

浅谈天线 - - - GNSS/BT/4G/2.4G

全球定位导航系统,最成熟的就是美利坚,我大中华,俄罗斯,还有就是欧洲的一个(太次不谈)所以我们在项目调试的时候,小尺寸的陶瓷天线上一般兼容2个频段,体积大一点的可以兼容三个频段,采用组合的形式 GPS+BD GPS+GLONASS GLONASS+BD 或者是单频段的定位天线陶瓷PATC陶瓷片:陶瓷片面积越大,介电常数越大,其共振频率越高,接收效果越高,这就是为什么都推荐使用大一点的陶瓷天线的原因银层:陶瓷天线表面的银层可以影响天线的共振频率,理想的GNSS陶瓷片频点准确落在1575.42MH

BLACKHOLE6的博客 1万+

OpenFOAM收敛问题排查指南:从参数设置到网格优化

本文系统性地介绍了OpenFOAM计算中收敛问题的排查方法。从理解收敛本质出发,详细讲解了如何通过调优求解控制参数(如松弛因子、离散格式)、合理设置时间步长与耦合算法,以及优化网格质量来解决发散难题。文章提供了从软件设置到硬件网格的完整排查路径,帮助用户实现稳定高效的计算流体力学模拟。

fern8的博客 792

STM32Cubemx-H7-17-麦克纳姆轮驱动

我们先看.h,知道哪些函数会有哪些功能和宏定义参数首先 是在.h的宏定义处定义引脚编号,比如tb6612控制方向的引脚,以及设定了哪个定时器作为pwm输出,还有编码计次的中断引脚/* 硬件相关宏定义 *//*1 前进方向往上 42 3*/// TB6612 方向引脚定义/* 定时器相关宏定义 *//* 编码器相关宏定义 */把自己的引脚根据原理图填对应,方向引脚也是,如果发现反转就把对应的引脚定义反过来,编码也是,编码我们用一个引脚就好,都在cubemx配置好。

m0_74211379的博客 1423

2026滑块验证码终极实战:缺口检测算法+人机轨迹模拟,识别率从60%飙升至95%全方案

**摘要:2026年AIGC技术发展导致传统验证码失效,滑块验证码成为主流防护手段。本文深入分析了传统方案识别率低的原因,并提出多级检测融合和行为拟合优化方案。通过图像预处理优化、三级缺口检测引擎(差分图像法、Hu矩轮廓匹配、YOLOv8n模型兜底)将识别率提升至99.2%。同时针对轨迹模拟环节,设计了包含抖动特征、时间随机性和个体差异的行为模型,使通过率从12%提升至87%。该方案解决了传统方法在缺口定位精度和轨迹真实性方面的核心痛点,为应对新一代验证码风控提供了完整的技术框架。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1899

YOLOv8【第二章:卷积创新篇·第23节】一文搞懂,Transformer与卷积混合架构!

🏆 本文收录于 《YOLOv8实战:从入门到深度优化》,该专栏持续复现网络上各种热门内容(全网YOLO改进最全最新的专栏,质量分97分+,全网顶流),改进内容支持(分类、检测、分割、追踪、关键点、OBB检测)。且专栏会随订阅人数上升而涨价(毕竟不断更新),当前性价比极高,有一定的参考&学习价值,部分内容会基于现有的国内外顶尖人工智能AIGC等AI大模型技术总结改进而来,嘎嘎硬核。    ✨ 特惠福利:目前活动一折秒杀价!一次订阅,永久免费,所有后续更新内容均免费阅读!

**My Coding Family** 1388

专栏三:解析spatialCNV的使用

文章Spatially resolved clonal copy number alterations in benign and malignant tissue发在natur

m0_58549466的博客 1252

核心组件大换血:Backbone与Neck魔改篇:YOLO26替换EfficientNetV2主干:神经架构搜索(NAS)的最优解嫁接

YOLO26引入EfficientNetV2作为Backbone的改进方案探索了计算机视觉模型优化的前沿方向。文章首先分析了YOLO26默认C3k2模块的局限性,指出其在通道利用效率和缩放策略上的不足。随后重点介绍了EfficientNetV2的核心优势,包括Fused-MBConv模块、训练感知的NAS搜索空间和渐进式学习策略,这些特性使其在精度和效率上保持领先。最后提出了将EfficientNetV2嫁接至YOLO26的具体方案,强调通道对齐这一关键挑战,并给出两种解决方案。这一改进思路展现了&quot

ZDQ58818的博客 309

AMD SDP 优快云 系列文章设计

摘要 本文档规划了7篇AMD SDP协议解析系列文章的技术博客设计方案。基于《Scalable Data Port (SDP) Specification》1.5.0版本(122页),面向SoC/NoC领域的RTL设计与验证工程师,构建从基础概念到验证实现的知识体系。 系列文章严格遵循协议规范边界,采用五类证据标签区分内容来源(规范原文、勘误、验证推导等),禁止补充未定义的实现细节。包含端口控制、事务传输、一致性协议等核心内容,最终落实到验证平台设计与覆盖率模型。 每篇文章采用统一模板:明确规范依据、问题导

元直的博客 162

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

上一篇: 【玩具】迷你无线遥控手柄 ( Arduino NANO + nRF24L01)
下一篇: 【Arduino 101】五分钟搞懂PID控制算法
机器人工坊
博客等级 码龄6年 716粉丝 9原创
评论 16
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值