- 博客(135)
- 收藏
- 关注
原创 Odrive0.5.1-FOC电机控制 axis.cpp代码实现(一)
/ 校准电流 // ...其他参数 } config_;// 1. 主控制循环(实时中断调用) bool Axis::run_control_loop() { // FOC算法执行 motor_.update(current_meas_);} } // 2. 校准例程 bool Axis::start_calibration() { // 检查电机是否就绪 // 执行编码器、电阻、电感校准 motor_.measure_phase_resistance();:定义“轴”的蓝图(包含哪些部件、如何配置)。
2025-04-11 10:45:16
1009
原创 穷人掉的最深的坑——就是不停地学习
在这个信息爆炸的时代,我们陷入了一个可怕的认知误区——总以为学得不够多才是问题的根源。这种思维就像是一个无底洞,让无数渴望改变命运的人不断下坠,最终陷入永远在准备,但是永不行动的恶性循环中。我们疯狂地囤积各种课程、书籍、干货文章,手机里存着几个G的学习资料,书架摆满了未拆封的畅销书。心理学研究表明,这种囤积行为,会带来虚假的充实感,让我们误以为自己在进步。就像那些办了健身卡却从不锻炼的人,购买知识的行为本身就成了目的。更可怕的是,我们开始用学习的时长来衡量成长。
2025-04-11 10:33:53
668
原创 Odrive0.5.1-FOC电机控制 arm_cos_f32.cpp arm_sin_f32.cpp代码实现(二)
见arm_cos_f32.c 代码分析文章。
2025-04-09 11:11:59
662
原创 Odrive0.5.1-FOC电机控制 arm_cos_f32.cpp arm_sin_f32.cpp代码实现(一)
在 our_arm_cos_f32 函数中,查表(Look-Up Table, LUT) 的核心是 预计算的正弦值表 sinTable_f32,通过巧妙利用余弦与正弦的相位关系实现快速余弦计算。这段代码实现了一个优化的浮点余弦函数 (our_arm_cos_f32) ,主要用于实时嵌入式系统中的快速三角函数计算。长度:FAST_MATH_TABLE_SIZE(例如256点,即每 2π/256 ≈ 0.0245 弧度一个采样点)。:速度更快,但误差增大(电机控制中典型用256点,误差±0.1%)。
2025-04-09 11:10:40
1667
原创 Odrive0.5.1-FOC电机控制核心代码 Odrive motor.cpp(.hpp)代码实现(四)
这段代码是 FOC(Field-Oriented Control)电压控制 的一部分,目的是根据电机当前电角度 pwm_phase,将 d/q 电压向量通过 逆 Park 变换(inverse Park transform) 转换为 αβ 坐标系下的电压向量,然后交给 SVM 做三相 PWM 输出。这是一个电流控制器,在 FOC 控制中它属于内环控制,作用是:将期望的 d/q 电流(电机磁通和转矩)转换为 α/β 坐标的调制波形,驱动三相电机输出 PWM。总结一张图(简略流程)
2025-04-09 11:07:42
780
原创 Odrive0.5.1-FOC电机控制核心代码 Odrive motor.cpp(.hpp)代码实现(三)
这段代码是 ODrive 中用于测量电机相电阻(phase resistance)的函数,通过注入测试电流并测量电压降来计算电阻值。作用:动态测量电机相电阻(单位:Ω),用于自动校准或故障检测。输入参数:test_current:测试电流幅值(如5A)。max_voltage:允许的最大测试电压(防止过压损坏)。输出:true:测量成功,结果存入 config_.phase_resistance。false:测量失败(错误码记录在 axis_->error_)。12 bool Motor::measu
2025-04-09 11:06:19
1753
原创 刷手机=慢性疲劳?神经科学家:这才是真正的休息
当你在自习室埋头苦学两小时后,哈欠连天、眼皮沉重,手指却不自觉地摸向口袋里蠢蠢欲动的手机。刷起美剧或抖音的瞬间,仿佛打开了潘多拉魔盒,转眼半小时流逝。重新捧起书本时,涣散的注意力却像断了线的风筝,怎么也收不回来。你摇摇头,把这归咎于"今天状态不好"。周末早晨,你在被窝里刷着手机,心想"反正周末就该放松"。可奇怪的是,明明躺着刷了一上午短视频,疲惫感没有得到释放,反而越来越重了。朋友圈里,好友们也在抱怨,"周末比上班还累",这条动态让你莫名心安——原来大家都这样。但这真的只是状态问题吗?
2025-04-09 07:59:27
1177
原创 Odrive0.5.1-FOC电机控制核心代码 Odrive motor.cpp(.hpp)代码实现(二)
这段代码是 ODrive 中计算电机实际电流限制(effective current limit)的函数,它综合了多个限制因素(配置值、硬件能力、电压限制等),确保电流控制既满足用户需求,又不会超出系统安全范围。计算电机运行时允许的 实时最大电流值(单位:A)。这段代码是 ODrive 中将 ADC 原始值转换为电机相电流(单位:安培)的核心函数,主要用于电流采样信号的处理。它会根据电机类型(普通电机或异步感应电机ACIM)和系统限制,动态计算实时可用的扭矩上限。普通电机(电流控制模式)
2025-04-08 15:52:24
401
原创 Odrive0.5.1-FOC电机控制核心代码 Odrive motor.cpp(.hpp)代码实现(一)
它基于电机的 相电阻(phase resistance) 和 相电感(phase inductance) 动态计算电流环的 比例增益(P gain) 和 积分增益(I gain)。根据电机参数(phase_inductance 和 phase_resistance)和控制带宽(current_control_bandwidth),自动计算电流环的 P 增益 和 I 增益。这是一种基于模型的控制器调参(Model-Based Tuning),确保电流环的动态响应最优。电流环比例增益(Kp)
2025-04-08 15:48:08
1442
原创 普通人逆袭成为富一代的核心密码
例如,每一次健身时,努力比上一次推起更大的重量,不断让自己能够承受更大的压力。他们不会因失败而退缩,不会用借口掩饰自己的不足,而是直面问题,持续行动,直至成功。培养这两个品质,就能在正确的方向上持续积累,最终实现财富的跃迁。心理上,学会让自己拥抱挫折和痛苦,跟随自己内心的恐惧,将其当成指向标,越是恐惧的事情,越是你更应该做的。你经受的内阻力越大,那尚未呈现的艺术/项目/事业对你来说就越重要,当你最终做到时,就越能感到满足。通过持续践行这些习惯,你不仅在积累知识,更在潜移默化中,培养着成功者必备的专注品质。
2025-04-08 08:37:00
752
原创 总遇不到贵人?《别独自用餐》里藏着答案
任何领域的成功,尤其在商界,注重的是人之间的合作,和利益的共享。作者在当球童时,服务过当地的一个贵妇人,他与其他球童不同的是,会先前到高尔夫球场了解各个洞的距离和位置,并且在服务过程中都力求完美。作者的父亲是美国的第一代移民,当时从事的是一个工厂的普通工人,他希望作者能够接受好的教育。之后他也一直接受的是美国顶级的教育。他当时作出了一件让所有人都很震惊的事情,就是去求助了他从未谋面的公司CEO。相当于他的上司的上司的上司。厚脸皮其实是一种神奇的天赋,如果连被拒绝的勇气都没有,那你这辈子很可能会过得很憋屈。
2025-04-06 09:06:26
280
原创 【已解决】信捷PLC 驱动步进电机 Y2~Y10无法控制方向
问题记录:做项目的时候,使用到了信捷XD3-24RT-E型号的PLC。起初将步进电机驱动器的PUL-连接到Y0、DIR-连接到Y1时,可以正常控制正反转。解决办法,将COM2连接到0V之后,Y2便可以正常控制高低电平,来驱动电机正反转。测到的电压为12V~24V,问题解决。利用万用表检测到电压:Y1可以正常控制高低电平,但是Y2一直都是24V。Y1 脉冲个数负 -> 逆时针旋转 -> 电压 23.18V。Y1 脉冲个数正 -> 顺时针旋转 -> 电压 305mV。
2025-03-07 10:58:20
806
原创 关闭网络自动代理,浏览器报错ERR_PROXY_CONNECT_FAILD
在设置中的网络和Internet -> 代理中,将手动设置代理,关闭即可。
2025-03-05 11:19:32
218
原创 PLC上传电机参数到http服务器
此项目中利用了Modbus-RTU协议,WIFI模块开启Modbus轮询模式并作为主机,不断向PLC发送数据,获取PLC寄存器中的电机参数值,然后通过WIFI模块的GE上位机,自带的Modbus数据转自定义json格式数据,进行转换后,上传到http服务器。②选择串口2,因为PLC的AB引脚连接的就是串口2;然后再D1000~到D1011寄存器中分别填入以下的数据,48,1,218,0,1057,1,3210,0,3,0,47,1。交流电220V接口,插上电后,试电笔测试线路,亮灯的线为火线,反之为零线。
2025-02-26 15:53:45
1263
原创 一篇文章轻松学会,Qt模块化编程,利用.pri文件自定义添加文件夹
Qt开发过程中,如何在左栏的根目录下,添加自己定义的目录和目录下的文件呢?这篇文章教会大家如何轻松自定义文件夹,并添加到工程中。.pri文件中的内容如下,将ap3216c目录路径,添加到根目录下,并且其中包含了我们的cpp、h文件。目录中除了你的cpp文件、h文件还需要创建一个.pri文件,这是我们自定义添加目录的关键文件。还没完,在我们的.pro文件中添加.pri文件,这时候就能看到,自定义的文件夹被添加进工程了。首先创建一个目录,此处为ap3216c。嵌入式Crafter。
2024-12-29 17:12:09
393
原创 SolidWorks21装配体中一个零件无法改为线架图
右键零件弹出栏中选择零部件显示改为默认显示,再切换线架图,就会发现整个装配体都能切换为线架图了!
2024-11-15 14:00:09
901
原创 驱动编译dstled: version magic ‘4.1.15 SMP preempt mod_unload modversions ARMv7 p2v8 ‘ should be ‘4.1.15
通过检查文件发现自己修改内核路径少了一部分,Makefile和c_cpp_properties.json中的内核路径都需要修改成自己的内核路径,我就是少改了c_cpp_properties.json中的内核路径。修改完成后,make -j32编译下,cp dtsled.ko ledApp ~/linux/nfs/rootfs/lib/modules/4.1.15,再一次运行加载驱动指令即可成功!报错如下,通过查阅资料得知这种报错是内核版本和模块版本不一致,所以导致加载不成功。
2024-11-14 09:25:07
621
1
原创 正点原子IMX6ULL--嵌入式Linux开发板学习中常用命令和笔记记录
make xxx_defconfig //使用默认配置文件配置 Linux。tar -xjvf file.tar.bz2 解压 tar.bz2。tar -xzvf file.tar.gz 解压tar.gz。tar –xZvf file.tar.Z 解压tar.Z。make menuconfig //启动图形化配置界面。虚拟网络编辑器切换下无线网卡或者有线网卡试试看!虚拟网络编辑器切换下无线网卡或者有线网卡试试看!虚拟网络编辑器切换下无线网卡或者有线网卡试试看!make -j16 //编译 Linux。
2024-11-14 08:07:32
1021
原创 嵌入式Linux--IMX6ULL编译设备树报错Configuration file “.config“ not found!
make imx_v7_defconfig 显示如下,则成功配置.config文件。重新make dtbs,完美解决!
2024-11-14 08:06:03
494
原创 【已解决】编译Linux内核报错multiple definition of yylloc
在学习正点原子的驱动开发指南过程中,在编译Linux内核时出现以下报错,内核文件为:linux-imx-rel_imx_4.1.15_2.1.0_ga。./mx6ull_alientek_emmc.sh文件内容如下。
2024-10-26 15:26:53
802
原创 编译Uboot报错arm-linux-gnueabihf-gcc: error: unrecognized -march target: armv5
【代码】编译Uboot报错arm-linux-gnueabihf-gcc: error: unrecognized -march target: armv5。
2024-10-23 08:42:33
1037
1
原创 【QT上位机/嵌入式项目】基于IMX6ull--Bluez蓝牙健康助手上位机
【QT上位机/嵌入式项目】基于IMX6ull--Bluez蓝牙健康助手上位机。
2024-10-10 12:32:55
725
原创 IMX6ULL嵌入式Linux开发板(正点原子)无线网络连接+Qt编译Scp传执行文件到开发板
本实验使用模块(正点原子购买ALPHA开发板赠送的USB WIFI模块,可直接插到电脑上联网测试好坏,若需要安装USB WIFI驱动则需要安 装驱动精灵安装相应的驱动即可!),使用 USB 2.0 HOST接口,ALPHA底板4个USB接 口都可以。正点原子提供 USB WIFI测试脚本,仅供用户参考。测试前准备 USB WIFI RTL8188EUS/RTL8188CUS模块,一般USB。
2024-10-08 10:26:59
1880
原创 Linux作业
掌握文件和目录压缩解压命令,包括:gzip命令、 bzip2命令、tar命令、zip命令、unzip命令、 rar命 令,以及它们的综合运用实例:zip加密压缩以及 Python破解、rar加密压缩以及Python破解和zip命 令隐藏恶意代码。掌握Linux文件和目录权限表示法,掌握文件和目 录的权限设置的使用方法,包括:chmod命令、 chown命令、chgrp命令、ln命令、find命令和 umask命令。
2024-09-25 16:12:11
231
原创 【开源】LVGL+FreeRTOS 基于STM32F411CEU6的健康助手项目制作
STM32F411CEU6 主控TFT 1.8inch 显示屏DTH11 温湿度传感器HC-05 蓝牙模块蜂鸣器模块Max30102 心率血氧传感器XGZP6847A 压力传感器波轮按键+独立按键MPU6050 陀螺仪模块。
2024-09-21 10:39:46
2335
3
原创 【完美解决】Ubuntu 20.04 解决蓝牙无法使用 安装USB蓝牙适配器驱动 蓝牙无法打开 No default controller available 等一系列问题
问题的起因为,我在Vmware虚拟机下的Ubuntu20.04无法正常打开蓝牙,开关开启后依然无法检测到设备。然后我尝试了一系列的步骤bluetoothctl 输入power on及其他指令,报错:No default controller available,也尝试了几乎我能查阅到的所有方法,重新安装bluez,blueman等等,我还重新修改了源以为是下载软件时出现了问题。
2024-09-21 09:55:58
8909
14
原创 解决Ubuntu下换清华源报错:由于没有公钥,无法验证下列签名: NO_PUBKEY 3B4FE6ACC0B21F32
通过指令 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 3B4FE6ACC0B21F32 将76F1A20FF987672F替换为你报错中 NO_PUBKEY 后的ID 3B4FE6ACC0B21F32 输入运行sudo apt-get update即可正常。通过sudo vim /etc/apt/sources.list 输入上述代码更换清华的镜像源,但在sudo apt-get update后出现以下报错。
2024-09-20 16:05:47
14281
6
原创 【详解】数据库E-R图——医院计算机管理系统
某医院病房计算机管理中需要如下信息:科室:科室名,科室地址,科室电话,医生姓名病房:病房号,床位号,所属科室名医生:工作证号,姓名,性别,出生日期,联系电话,职称,所属科室名病人:病历号,姓名,性别,诊断记录,主管医生,病房号其中,一个科室有多个病房、多个医生,一个病房只能属于一个科室,一个医生只属于一个科室,但可负责多个病人的诊治,一个病人的主管医生只有一个。完成如下设计:(1)设计该计算机管理系统的E-R图;(2)将该E-R图转换为关系模型结构;
2024-09-12 18:38:55
2840
原创 【详解】数据库E-R图——图书管理系统
一个图书管理系统中有如下信息:图书:书号,书名,数量,位置借书人:借书证号,姓名,单位出版社:出版社名,邮编,地址,电话,E-mail约定:(1)任何人可借多种书,任何一种书可为多个人所借,借书证号具有唯一性。(2)借书和还书时,要登记相应的借书日期和还书日期;(3)一个出版社可以出版多种书籍,同一本书仅为一个出版社所出版,出版社具有唯一性。根据以上情况,完成如下设计:(1)构造满足需求的E-R图。(2)将E-R图转换为等价的关系模式。(3)指出转换后的每个关系模式的候选键。
2024-09-12 17:35:38
12746
原创 Ubuntu报错:正在等待缓存锁:无法获得锁 /var/lib/dpkg/lock-frontend 锁正由进程 7647
请注意,手动删除锁文件可能会导致软件包系统处于不一致的状态,这可能需要更复杂的修复步骤。在这种情况下,请确保你有其他可靠的修复方法或备份,以防需要恢复系统。如果没有其他APT进程在运行,可能是因为锁文件没有正确释放。这个错误表明你正在尝试使用APT(高级包装工具)时,它无法获取所需的锁文件。锁文件用于防止多个进程同时修改系统软件包,这可能会导致损坏。如果上述步骤不能解决问题,可能需要重启你的系统来清理可能挂起的进程。如果有其他进程正在运行,请等待它们完成或者使用。之后,你可以尝试重新运行你的APT命令。
2024-09-10 19:40:08
1869
原创 【一行代码搞定】LVGL修改默认背景颜色为黑色&&设置暗色调主题
在lv_conf.h中根据注释/*0: Light mode;1: Dark mode*/可知修改宏LV_THEME_DEFAULT_DARK为1便可以将主题颜色设置为暗色。
2024-09-10 10:45:42
2050
原创 【小项目】python贪吃蛇小游戏设计
添加pygame库,在cmd中输入以下代码,进行安装。如果输入pip install pygame出现以下报错,可以尝试在前面加入python3 -m。
2024-09-09 15:24:26
1259
原创 【一篇文章搞定】LVGL显示中文+解决keil下LVGL无法正常显示中文及error:#8:missing closing quote问题
是编译器的一个命令行选项,用于指定编译器输出的语言为英文。在网上查阅了资料,很多人都在说可能是编码格式的问题,让我将文件和keil的编码格式改为UTF-8,但都不好使,最后通过以下方式解决了问题。编码格式在lvgl字体转换网站转换后默认就是UTF-8格式,网上说可以参数改为带有BOM格式的UTF-8编码格式,但是我修改后发现并没有什么卵用。在编译器设置或命令行中,添加如下选项来强制输出为英文:这样,所有编译器消息都会使用英文显示。:确保团队中每个人看到的一致的英文消息,避免因语言差异导致的理解错误。
2024-09-09 10:26:26
2875
4
原创 张飞硬件11~19-电容篇笔记
生活生产中常见电压:220V(AC)整流为310V(DC),弱电控制信号:3.3V,5V,12V,15V,18V,24V,36V,48V,64V,80V,100V。尽量别去选小封装,耐压高的,因为价格一般都比较贵。芯片旁边需要放置一些电容来索取电流,更加稳定的供电,通常放几uF的电容,一般是瓷片电容,例如1uF、2.2uF、3.3uF、4.7uF。小结:电解电容、钽电容,大多数用来存储能量,所以容量偏大,一般需要配合小容量的瓷片电容进行退耦,例如常见的100nF(104)。早期晶体管工艺,功耗偏大;
2024-09-05 14:47:20
1612
原创 张飞硬件10-TVS管篇笔记
TVS或称瞬变电压抑制二极管,是在二极管工艺基础上发展起来的新产品,其电路符号和普通稳压管相同,外形也与普通二极管无异。当TVS管两端经受瞬间的高能量冲击时,它能以极高的速度将其阻抗骤然降低,同时吸收一个大电流,将其两端电压钳位在一个预定的数值上,从而确保后面的电路元件免受瞬态高能量冲击而损坏。
2024-09-05 14:41:53
456
原创 解决FreeRTOS下systick系统定时器延时不精准--STM32F4 FreeRTOS下通过DWT实现精确us延时
因为在FreeRTOS项目的练习中,使用到了DTH11温湿度传感器,这是一个单总线驱动的传感器,在驱动的过程中对延时的精确要求比较高,并且需要使用us级的延时。FreeRTOS中并没有现成的us级延时可供使用,起初我用的是裸机中使用的systick系统定时器,但是上系统后就无法正常驱动DTH11了。
2024-09-03 08:29:11
782
原创 【STM32项目设计】STM32F411健康助手--MPU6050陀螺仪驱动(6)
此项目使用的是软件I2C,MPU6050的SCL连接到STM32的PB10,SDA连接到STM32的PB9。
2024-09-02 09:07:06
2058
原创 【STM32项目设计】STM32F411健康助手--MAX30102 心率血氧传感器(5)
【代码】【STM32项目设计】STM32F411健康助手--MAX30102 心率血氧传感器(5)
2024-09-02 08:56:38
4276
2
原创 STM32 Debug卡死在BKPT 0xAB
今天在调试程序的时候遇到了这个问题,最后发现是因为没有初始化串口,就调用了printf函数导致的,如果不需要用串口调试数据,那么需要把它们注释掉,否则就会出现这个问题!
2024-09-02 07:37:36
494
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅