
算法
文章平均质量分 69
qlexcel
万物皆为比特
展开
-
前馈控制知识
很多论文上面说电流环(ACR)、速度环(ASR)一般使用PI调节器,位置环适用P调节器即可,这种说法其实不够严谨,因为只有Kpos时,位置环必然会有稳态误差(误差与Kpos值呈反比),这个在实际应用中是允许的。目前位置环主要有两种设计方案:1,对位置指令和位置反馈的误差进行累加,累加器经过Kpos后,送给速度环的给定。这个也比较好理解,当F(s)这部分分量变多后,APR输出的分量就会减小,因为APR的输出就是位置误差的累加,最终产生的效果就是位置环跟踪误差变小。第一种设计方案居多。3,位置环前馈设计方法。原创 2025-02-14 09:48:59 · 702 阅读 · 0 评论 -
BMP格式详解
//BMP信息头typedef __packed struct{ uint32_t biSize ; //BITMAPINFOHEADER结构所需要的字数。 long biWidth ; //图象的宽度,以象素为单位 long biHeight ; //图象的高度,以象素为单位 uint16_t biPlanes ; //为目标设备说明位面数,其值将总是被设为1 uint16_t biBitCoun原创 2021-09-13 11:58:08 · 10539 阅读 · 0 评论 -
双线性内插值算法
原理 在图像的仿射变换中,很多地方需要用到插值运算,常见的插值运算包括最邻近插值,双线性插值,双三次插值,兰索思插值等方法,OpenCV提供了很多方法,其中,双线性插值由于折中的插值效果和运算速度,运用比较广泛。 越是简单的模型越适合用来举例子,我们就举个简单的图像:3*3 的256级灰度图。假如图像的象素矩阵如下图所示(这个原始图把它叫做源图,Source):234 38 2267 44 1289 65 63 这个矩阵中,元素坐标(x,y)是这样确定的,x从左到右,从0开始,原创 2021-08-01 15:24:40 · 5171 阅读 · 1 评论 -
keil调用bat文件,实现删除、复制、加密文件功能
用法通过如下方式打开“User”子标签可以看到左边有3个触发条件:“Before Compile C/C++ File”:编译C/C++源文件前触发“Before Build/Rebuild”:Build之前“After Build/Rebuild”:Build之后每个触发条件后,可以添加两条指令:“Run #1”、“Run #2” 点指令栏后面的文件图标,可以把某个路径的bat文件添加进来。然后keil就会自动在满足上面3个触发条件时,调用对应的bat文件来执行了。例子 比如我要原创 2021-05-18 09:39:08 · 3886 阅读 · 0 评论 -
字符串匹配的KMP算法和C语言代码,不需要思考就能理解
KMP算法用于判断一个字符串是否包含另一个字符串,如果包含就返回脚标。其实KMP算法本身特别简单,我看了几篇本章都号称简单易懂,结果看得我云里雾里,直到我看到了阮一峰:字符串匹配的KMP算法,才真正看懂。下文基本上都是阮一峰文章的转述,代码也是在网上其他地方找的。特此说明。一、KMS算法的处理过程下面用KMP算法在字符串"BBC ABCDAB ABCDABCDABDE"中寻找字符串"ABCDABD":首先,字符串"BBC ABCDAB ABCDABCDABDE"的第一个字符...原创 2020-06-22 23:45:54 · 1144 阅读 · 1 评论 -
步进电机加减速算法介绍和基于AVR446_Linear speed control of stepper motor的步进电机加减速实现
本文大部分内容来自《硬石电机控制专题指导手册》一、引出1、步进电机速度,是根据输入的脉冲信号的变化来改变的。理论上,给一个脉冲,步进电机就旋转一个步距角。但实际上,如果脉冲信号变化太快,步进电机由于内部的反向电动势的阻尼作用,转子与定子之间的磁反应将跟随不上电信号的变化,将导致堵转和丢步。2、步进电机运行起来后,如果要立即停止,由于所带负载具有惯性,可能会导致过冲。因此步进电机需...原创 2020-02-06 18:43:37 · 12419 阅读 · 11 评论 -
讲解卡尔曼滤波附代码讲解
本文很多内容来自https://blog.youkuaiyun.com/u010720661/article/details/63253509,笔者只是加以补充和扩展,让初学者更容易理解。一、应用领域1、有一个存在误差的传感器的值和自己的估计值2、两个或多个传感器之间相信谁。二、准备知识1、高斯分布、高斯白噪声2、方差、协方差https://www.cnblogs.com/bigmon...原创 2020-02-16 15:54:53 · 8762 阅读 · 1 评论 -
位置式PID与增量式PID的介绍和代码实现
PID分为位置式PID与增量式PID。一、位置式PID1、表达式为:2、缺点:1)、由于全量输出,所以每次输出均与过去状态有关,计算时要对ek进行累加,工作量大;2)、因为计算机输出的uk对应的是执行机构的实际位置,如果计算机出现故障,输出的uk将大幅度变化,会引起执行机构的大幅度变化,有可能因此造成严重的生产事故,这在实生产际中是不允许的3)、如果偏差一直是正的或者负...原创 2019-12-22 11:26:30 · 34041 阅读 · 7 评论 -
PMSM的FOC 矢量控制算法调试流程,新手上手流程
先放一张矢量控制框图:一、验证三相逆变模块的正确输出。不接电机,使用高级定时器输出6路互补PWM,改变占空比,测量三相逆变模块的U、V、W对地波形的占空比是否正常。二、测试相电流采样电路的功能。1、不接电机,连续采样相电流,此时采样值为相电流为0时的值,此时值应该比较稳定,变化不大,如果变化比较大,说明有问题。2、接上电机,给U相设置占空比为5%,V、W占空比为0,此时可以用万...原创 2019-07-21 20:06:25 · 45309 阅读 · 16 评论 -
简洁高效的linux kfifo环形缓冲区
代码来自于:https://blog.youkuaiyun.com/vertor11/article/details/53741681,侵删。struct kfifo{ uint8_t *buffer; uint32_t in; // 输入指针 uint32_t out; // 输出指针 uint32_t size; // 缓冲区大小,必须为2的次幂}/...转载 2019-07-12 00:08:21 · 801 阅读 · 0 评论 -
查表法的CRC8和CRC16程序
//CRC高位字节值表const uint8_t auchCRCHi[] = { 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0...原创 2019-07-11 23:31:05 · 2050 阅读 · 0 评论 -
FOC和SVPWM的C语言代码实现
SVPWM的原理讲解在这儿:https://blog.youkuaiyun.com/qlexcel/article/details/74787619#comments现在开始分析C语言的代码(代码建议复制到notepad++中查看),为方便读者试验,每个代码都是独立的子模块,复制到工程中就可以编译运行:一、配置高级定时器TIM1产生6路互补PWM,带刹车保护详细配置代码如下,把下面的程序段拷贝到m...原创 2019-07-09 23:09:41 · 139872 阅读 · 220 评论 -
stm32芯片利用唯一ID对程序进行加密的一种方法
#define STM32_ID_D 352525 //任意的一个数 //stm32芯片的ID地址,把地址减去一个数,避免汇编里面直接出现ID的地址,不然很容易暴露加密与ID号有关volatile u32 STM32_ID_addr[3]={0x1ffff7e8 - STM32_ID_D,0x1ffff7ec + STM32_ID_D,0x1ffff7f0 - STM32_ID_D};...转载 2019-06-16 16:11:03 · 16373 阅读 · 8 评论 -
一次代码提速过程
注:图片来自《感悟设计 电子设计的经验与哲理》原创 2016-04-06 22:57:10 · 590 阅读 · 0 评论 -
PID参数调节总结
原文链接:点击打开链接经验:1.采样频率低(如500ms),Kp一般是0.01级别;采样频率高(如1ms),Kp一般是1级别,2.先只设Kp其它参数为0,然后看图形如何,一般Kp越大,系统响应速度加快,系统的超调加大,调节的时候也长,当Kp增大到一定值,闭环系统趋于不稳定;3.2步完后,根据经验比例I/微分D=2,一般还要更大(10倍左右),比例控制使系统响应由大的转载 2016-07-30 21:11:40 · 11200 阅读 · 0 评论 -
动态阈值--大津法理解
原文在这儿:点击打开链接简介:大津法(OTSU)是一种确定图像二值化分割阈值的算法,由日本学者大津于1979年提出。从大津法的原理上来讲,该方法又称作最大类间方差法,因为按照大津法求得的阈值进行图像二值化分割后,前景与背景图像的类间方差最大(何为类间方差?原理中有介绍)。原理:对于图像I(x,y),前景(即目标)和背景的分割阈值记作T,属于前景的像素点数转载 2017-01-18 17:02:59 · 9516 阅读 · 0 评论 -
SVPWM算法原理及详解
1.概述 SVPWM是近年发展的一种比较新颖的控制方法,是由三相功率逆变器的六个功率开关元件组成的特定开关模式产生的脉宽调制波,能够使输出电流波形尽可能接近于理想的正弦波形。空间电压矢量PWM与传统的正弦PWM不同,它是从三相输出电压的整体效果出发,着眼于如何使电机获得理想圆形磁链轨迹。SVPWM技术与SPWM相比较,绕组电流波形的谐波成分小,使得电机转矩脉动降低,旋转磁场更逼近...原创 2017-07-10 18:34:30 · 359758 阅读 · 197 评论 -
ASCII、GB2312、GBK、Unicode、UTF-8介绍和转换
1、ASCII码 上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为 ASCII 码,一直沿用至今。ASCII 码一共规定了128个字符的编码,比如空格SPACE是32(二进制00100000),大写的字母A是65(二进制01000001)。这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位,最前面的一位统...原创 2018-11-20 15:19:03 · 2005 阅读 · 0 评论 -
FAT16文件系统结构扇区数据分析
FAT,英文为File Allocation Table,文档分配表。先要记住几个概念: 扇区:一般扇区为512个字节。 簇:由若干个扇区组成,是存取数据的最小单位。如果簇大小为16K,文件大小为1字节,那也要用一个簇来存,而且该簇不用再拿来他用。 FAT文件系统就是专门管理这些簇的。一个文件可能占据一个或者多个簇,按正确的顺序去读取这些簇,就可以获取这个文件的内容...原创 2018-11-20 19:37:30 · 6538 阅读 · 0 评论 -
FAT16和FAT32文件系统的区别和对比
FAT(File Allocation Table)是“文件分配表”的意思。就是用来记录文件所在位置的表格,它对于硬盘的使用是非常重要的,假若丢失文件分配表,那么硬盘上的数据就会因无法定位而不能使用了。 扇区:一般扇区为512个字节。 簇:由若干个扇区组成,是存取数据的最小单位。如果簇大小为16K,文件大小为1字节,那也要用一个簇来存,而且该簇不用再拿...转载 2018-11-20 20:11:16 · 24834 阅读 · 1 评论 -
FAT32文件系统结构分析
FAT,英文为File Allocation Table,文档分配表。先要记住几个概念: 扇区:一般扇区为512个字节。 簇:由若干个扇区组成,是存取数据的最小单位。如果簇大小为16K,文件大小为1字节,那也要用一个簇来存,而且该簇不用再拿来他用。 FAT文件系统就是专门管理这些簇的。一个文件可能占据一个或者多个簇,按正确的顺序去读...原创 2018-11-21 14:09:53 · 6584 阅读 · 1 评论 -
FATFS配置长文件名,为何跟编码转换有关
要打开FATFS的长文件名功能,必须添加OEMCP与Unicode的编码转换函数,同时也就要把OEMCP与Unicode的编码转换数组添加进来,这是为什么呢? OEMCP在936代码页下就是GBK,这个编码转换也就是GBK和Unicode互转。FATFS是使用的GBK编码,文件的短文件名也是GBK编码,因此不需要转换,可是文件的长文件名使用的UTF-16编码,这是...原创 2018-12-02 16:40:58 · 2702 阅读 · 0 评论 -
51单片机中将变量、数组、函数设置在固定位置,定位到绝对地址
一、不带初值的变量或数组直接使用_at_ 关键字加上地址就行。如: unsigned char idata myvar _at_ 0x40; unsigned char code myvar[10] _at_ 0x40;_at_ 关键字的前后都有空格。二、带初值的变量或数组要将某变量定位在一绝对位置且要赋初值,此时用 _at_ 不能完成,要进行如下操作:1、在工程中建...原创 2018-12-16 16:44:18 · 9861 阅读 · 0 评论 -
u32和字符串的转换函数
/************************************************************ 函数名:u32tostr** 功能描述:将一个32位的变量dat转为字符串,比如把1234转换为“1234”** 输入参数:dat为待转换的long型变量 str为指向字符数组的指针,转换后的字符串放在其中** 输出参数原创 2016-04-02 15:00:27 · 11067 阅读 · 1 评论