自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(108)
  • 收藏
  • 关注

原创 7.7、Python-常用内置函数

input输出的是字符串类型,用eval将其转成数值类型。字符类型的小数不能直接转成 int类型的数;结果为迭代器对象,需要转换成列表才能看到。将对象都执行一次函数,并将结果留下来。非数的字符不能转成 int 类型;将结果为True的留下来。

2025-11-17 21:27:56 384

原创 7.6、Python-递归函数

目录1、计算n的阶乘2、斐波那契数列

2025-11-17 21:22:21 250

原创 7.5、Python-匿名函数lambda

只能使用一次排序。

2025-11-16 21:45:52 391

原创 7.4、Python-变量的作用域

global:声明变量为全局变量,声明和赋值必须分开进行。

2025-11-16 21:44:40 407

原创 7.3、Python-函数的返回值

若返回值是多个,则返回类型为元组。

2025-11-16 21:43:40 594

原创 7.2、Python-函数参数传递

既有位置传参又有关键字传参,位置传参应在前。

2025-11-14 19:23:41 430

原创 7.1、Python-函数定义与调用

2025-11-14 19:22:28 235

原创 6、Python中的异常处理

目录1、对于可能报错的代码多except结构2、3、raise关键字4、

2025-11-13 21:57:54 142

原创 5.6、Python-正则表达式

匹配区间:左闭右开。

2025-11-13 21:56:11 321

原创 5.5、Python-字符串去重

去重(1)(2)(3)集合。

2025-11-13 21:53:01 167

原创 5.4、Python-数据的拼接

目录1、使用+号拼接2、使用join3、直接拼接(一起打印出来)4、格式化的方式

2025-11-12 21:06:10 233

原创 5.3、Python-数据的验证

数字:阿拉伯数字、罗马数字、中文数字等。

2025-11-12 21:05:01 176

原创 5.2、Python-字符串的编码和解码

errors:错误的解决方案,(strict:严格的,错了直接报错;ignore:忽略;replace:用问号替换转不了的字符)默认编码格式为utf-8,中文占3个字节;gbk中文占2个字节;

2025-11-11 22:25:58 473

原创 5.1、Python-字符串

1、常用操作2、3、千位分隔符。

2025-11-11 22:24:37 217

原创 4、Python3.11新特性

eval:数据转换,转成实际的数据类型。

2025-11-11 22:23:23 205

原创 3.4、Python-集合

不能存储字典和列表集合、列表、字典是可变数据类型。

2025-11-07 21:58:27 307

原创 3.3、Python-字典

字符串、整数、浮点数、元组可以作为键。

2025-11-07 21:56:37 359

原创 3.2、Python-元组

删除。

2025-11-07 21:54:26 304

原创 3.1、Python-列表

end省略,默认到最后一个元素(包含最后一个元素);reverse:False升序,True降序;start省略,默认从0开始;step省略,step默认1;反向索引范围 -1 ~ -N。(3)enumerate枚举。正向索引范围 0~N-1。step为-1,逆序输出。start可省略不写。

2025-11-07 21:53:01 448

原创 2、Python-模式匹配(switch加强版)

不用加break。

2025-11-03 20:06:15 96

原创 1、Python-内置函数、Pass空语句

list1 = [1, 2, 3] list2 = ['a', 'b', 'c'] # 使用 zip 函数打包两个列表 zipped = zip(list1, list2) # 将迭代器转换为列表 result = list(zipped) print(result)zip() 函数用于将多个可迭代对象(如列表、元组、字符串等)中的元素打包成一个个元组,然后返回由这些元组组成的迭代器。5、dir(对象):查看对象具有的属性或方法。1、len(a):字符串长度(字符个数)2、id():查看地址。

2025-11-03 20:03:15 327

原创 4-1 双环PID

如果内环是速度环,外环是位置环,那么内环的实际值读取的就是实际速度,外环的实际值读取的就是实际位置。Encoder_Get函数在整个工程里只能调用一次,想同时获取速度和位置需要再定义两个变量。外环的目标值由自己控制,内环目标值由外环输出值控制。外环调控周期要>=内环调控周期。减小输出限幅可以降低旋转速度。调参顺序:先内环再外环。

2025-07-07 21:32:03 617

原创 3-3 PID-输出偏移和输入死区

虽然由于摩擦等原因,导致误差很小时转盘不动,但输出值不为0,一直有不必要的功耗。问题:目标值一直抖动,实际值与目标值一直存在误差,导致转盘一直抖动。解决方法:限制误差范围(在一定误差范围内不进行调控)测试一下,确定偏移值的大小。

2025-07-06 10:31:54 327

原创 3-2 PID算法改进(微分部分)

目标值切换导致微分项输出产生尖峰,有时不好,这个尖峰是由D项导致的(目标值突然变化,误差的斜率突然变得很大,导致D项很大)如果对P、I、D三项都加滤波,那么波形的相位就会滞后,导致PID的响应速度降低,不适合对响应速度有要求的项目。α范围0~1,用于调节滤波强度(改变本次输出和上次输出的权重),α越大,滤波作用越强。信号中的噪声对微分项影响最大,对P项和I项影响有限,因此一般只给微分项加滤波器。可对微分项加滤波,也可对原始数据加滤波(即对P、I、D三项都加滤波);有时不加微分先行会让实际输出变得更加迅速;

2025-07-06 10:30:25 560

原创 3-1 PID算法改进(积分部分)

在位置式PID的基础上进行改进定速用PI控制,定位置用PD控制。

2025-07-04 22:40:34 940

原创 2-2 PID-代码部分

调试过程中可能会出现按一下按键,电机满转的现象,原因是电机和编码器的极性相反(给电机一个正向驱动力,编码器测速的值却是负的,计算公式就会认为应该加大Out使速度为正,此时本来我们想要的负反馈就变成了正反馈,即误差变得更大了,最终电机满转),将它们都改成顺时针为正或者都为逆时针为正就行了。增量式PID的Out比较依赖上一次Out,如果上一次的Out是错误的,那么增量式PID后续的调节就会持续受到这个错误影响,没有积分项的增量式PID,容易出现实际值与目标值偏移的问题,增量式PID的Ki最好不要设为0。

2025-07-04 22:37:57 848

原创 2-1 PID-底层代码模块

(4)AD——>RP(电位器):目的通过电位器来改变Kp,Ki,Kd。(7)Encoder编码器。(3)Timer定时器。(8)Serial串口。

2025-07-03 19:29:46 232

原创 1-2 PID-连续、离散形式的PID公式

定时时间到了,中断函数中flag置1,中断函数退出,在主循环里不断检查flag。好处:所以涉及硬件的操作都在主程序中进行,不会产生资源访问冲突。弊端:如果主程序代码过多或主程序阻塞了,PID可能无法及时执行,从而导致调控周期不准确。

2025-07-03 19:28:54 1097

原创 1-1 PID基本原理

开环只是大致控制,不够精确。闭环控制更精确,不断测量实际值(如用编码器测速),并与给定目标值比较,(输出值就是PWM)。

2025-07-02 20:40:10 509

原创 3.3.2、CAN总线-数据传输策略

解决 发送方怎么知道什么时候主动广播一个数据,接收方怎么让发送方知道接收方的请求 的问题。

2025-07-02 20:32:00 599

原创 3.3.1、CAN总线-中断式接收

原来的方法是查询接收对单个帧的接收,一般用查询接收,还能充分利用接收FIFO的3个缓存区CAN数据帧最大只能传输8个字节数据,如果有超过8个字节的数据,必须得分多帧传输,此时可对中断接受的程序进行改进,每收到一帧数据就进中断暂存,直到收到完整的所有帧的数据,才置标志位,让主程序处理中断配置,写在CAN_Init之前。

2025-07-01 17:16:53 646

原创 3.2.2、CAN总线-过滤器的使用

之前为了验证,配置的过滤器都是全通。

2025-07-01 17:14:26 400

原创 3.2.1、CAN总线-标准格式、扩展格式、数据帧、遥控帧

可实现不同格式、不同帧的发送。

2025-06-30 17:55:02 492

原创 3.1.3、CAN总线3个设备互相通信

更改ID号,依次将程序烧录进三个设备即可。这种方法ID格式、帧类型是提前设定好的。

2025-06-30 17:53:59 378

原创 3.1.2、CAN总线单个设备环回测试代码部分

(1)16位列表模式:IdHigh,IdLow,MaskIdHigh,MaskIdLow这四个参数分别存入一组ID,可存4个标准ID。需要两个函数,一个判断接收FIFO里是否有报文,另一个读取接收FIFO,把报文内容取出来。MaskIdHigh、MaskIdLow组合到一起,存入第二组32位ID;MaskIdHigh、MaskIdLow组合到一起,存入对应屏蔽位;IdHigh存入第一组ID,MaskIdHigh存入对应的屏蔽位;IdLow存入第二组ID,MaskIdLow存入对应的屏蔽位;

2025-06-29 20:34:48 1165

原创 3.1.1、CAN总线单个设备环回测试

目录1、接线2、函数介绍环回测试时,CAN收发器可以不接,电路也不需要接任何有关CAN通信的设备

2025-06-29 20:30:52 315

原创 2.2.5、CAN总线-错误处理和离线恢复

(1)TEC:发送错误计数器;REC:接收错误计数器;错误计数器增加和减少方式在1.5(2)主动错误、被动错误、离线状态之间的转换与CAN协议规定的一样(在1.5)

2025-06-28 15:41:57 440

原创 2.2.4、CAN总线-时间触发通信(了解即可)

该功能可对所有节点进行同步调度,即每个节点只在一个固定的时间段内进行发送报文,这样可以避免优先级仲裁。是ISO11898-4协议里规定的更高级的功能。

2025-06-28 15:40:55 244

原创 2.2.3、CAN总线-位时间特性、中断

(1)发送中断:当写入发送邮箱并请求发送后,当这个发送邮箱空的时候,CAN外设就可以请求发送中断;如果代码中允许了该中断并且配置了NVIC,则程序就会在发送邮箱空时进入发送中断函数。当CAN外设内部发生一些重要的事件时,程序可以自动跳转到中断函数执行,及时处理重要任务。(2)FIFO0收到一个报文,FMP0不再是0的时候就可以触发中断;各个中断信号输出的通过或门,输出到NVIC,请求中断;(3)对应的中断允许位为1时,允许中断信号通过与门;当中断允许位为1时,与门输出固定为0,中断信号无效;

2025-06-28 15:39:53 537

原创 2.2.2、CAN总线-测试模式、工作模式

(2)环回模式:自己发自己收,同时也可以向总线发送数据。(1)静默模式:自己发自己收,同时也可以接收总线数据。(3)环回静默模式:自发自收,同时与外界隔绝。INAK=0,硬件目前没有确认进入初始化模式。SLAK=0,硬件已经确认没有进入睡眠模式。INAK=1,硬件目前确认进入初始化模式;SLAK=1,硬件已经确认进入睡眠模式;SLEEP=1,请求进入睡眠模式;只有在总线空闲时才能进入空闲模式。SLEEP=0,请求退出睡眠;INRQ=1,请求进入初始化;INRQ=0,请求退出初始化;

2025-06-27 16:14:22 311

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除