- 博客(426)
- 资源 (16)
- 收藏
- 关注
原创 用Excel教会你PID算法
PID调节示意图如下可以发现:比例项是纠正偏差的主力,越远离偏差绝对值就越大,快速把偏差纠正回来。积分项和以往的状态有关,面积的绝对值越大它的绝对值就越大,它的作用是消除累计偏差。微分项跟斜率有关,比较难解释,总的来说它的作用是:当目标靠近设定值时加速它靠近,当目标远离设定值时阻止它远离。因此微分可以增加系统稳定性,因为到达目的之后,离开会受到阻碍。
2024-02-23 09:02:02 1634
原创 Allegro中设置让Route Keepout(禁止布线区)允许布线或打过孔的方法
Route Keepout即禁止布线区,通常会在绘制元件封装的时候就给元件画上的,目的在于让这个元件的这块区域不能走线或者不让走线碰到这块区域,否则就会显示DRC符号报错,只不过这个错误在Allegro软件中是黄色警告,不是红色错误。但有时候你这个元件得设置禁止布线区,同时你又必须要在上面走线,这种情况下这个DRC或许就分时候去选择需要和不需要了,举个例子:PCIE走线。如下图如图,当走线碰到禁止布线区的时候就会报DRC:Line to Route Keepout Spacing。
2024-02-04 23:00:41 2863
原创 mcu专用看门狗复位芯片(如MAX706)
sgm706是圣邦微(SGMICRO)电子新推出的多功能微处理器监控电路芯片,除了看门狗功能外,还具有上电自动复位、手动复位及低电压报警(复位)等功能,使用起来非常方便可靠,可替代MAX706。一般的电路设计者,使用的阻容复位稳定性极差,时常有按了复位没反应,或是要按一段时间才能复位的经历。使用低电压检测和复位芯片,主要可以最大程度提高单片机的复位性能,其原理是通过预先设定好确定的电压值(阈值)启动复位操作,同时排除瞬间干扰的影响,又有防止单片机在电源启动和关闭期间的误操作效,充分保证数据的**。
2024-01-29 14:54:55 4414 1
原创 cadence SPB17.4 - allegro - CAM350_V10.7CN 引入槽孔(.rou)文件报错问题的优雅解决思路
用cadence SPB17.4做完单板, 在cutout层画上拼板框, 摆上拼板工艺边上的4个定位孔和3个mark点.摆上钻孔表, 导出钻孔文件和槽孔文件. 出全套gerber文件.反复确认过, 在SPB17.4这边, 做的步骤都对.用CAM350_V10.7CN引入SPB17.4导出的gerber文件, 准备编辑单板为拼板.但是CAM350导入.rou时就报错了, 导致导入后, 槽孔层没内容.去查了资料, 大家的通常处理都是编辑.rou文件, 去掉文件开头几行处的%字符以上的所有内容.
2024-01-10 09:59:38 1319
原创 STM32 JLINK SWD调试器手动复位才能烧写的问题
如果我们使用的代码对SWD口进行了一些配置,导致reset指令无法通过SWD口接收的话,调试器就无法reset MCU。解决办法就是不要复用SWDIO 口,否则使用reset pin。手动写代码的时候,SWDIO我们可以自己把握,不去配置就可以用,所以一般来说都在掌控中。MDK中关于reset的设置比较复杂一般使用normal,如果有兴趣可以通过下链接了解。STM32CubeMX的程序就有问题?只有手动复位的情况下,才能进行烧写。为什么烧录程序一次后就无法连接调试器烧录,一定要手动复位?
2024-01-06 16:12:42 1296
原创 TPS5430正负电源模块
(3)D1:开关电源需要整流滤波才能输出直流电压,所以整流二极管的选型也很重要,模块设计时兼容性价比采用了SS34,即为40V反偏电压,3A最大电流,能满足电流设计,有条件的可以使用SS54或者SS56等更大功率的管子,可以提高输出电流的稳定度。(2)C3:由于开关波形的存在,电容必须选用有极性的电容才能更好的起到滤波的效果,容值合适即可,不可过大,这样会加重开关电源开启时的电流负担,正压滤波电容耐压值一般需要大于输入电压,最好是2倍。芯片引脚1(BOOT)靠近电容器C2,尽量减小导线轨迹长度。
2024-01-03 14:03:19 6949 3
原创 基于Ubuntu环境Git服务器搭建及使用
将客户端公钥id_rsa.pub内容复制到服务端.ssh/下新建文件authorized_keys里,这样我们在拉取推送代码时,就不需要输入密码了。在服务器终端输入如下命令,输入两次密码后(比如密码也是:git),一路回车就创建好了。客户端:windows10_x64、Ubuntu20.04。无论是服务端还是客户端都需要先安装git。服务器:Ubuntu18.04。
2023-12-31 22:10:35 2185
原创 QString设置小数点精度位数
因为Qt又默认只保存前6位,所以数据就是123.457。所以对精度要求高的话,就不要直接1234567/10000.用除法。在Qt中,我们可以使用QString::number()函数将float类型转换为QString类型以便在界面上显示。该函数默认显示6位小数,但我们也可以通过设置第二个参数来控制小数点位数。QString使用toDoouble转化double类型,其实精度没有丢失,只是我们使用qDebug打印时出了问题。在上面的代码中,参数’f’表示将数值格式化为浮点数,2表示保留2位小数。
2023-12-31 17:25:42 2017
原创 linux实用技巧:ubuntu18.04安装samba服务器实现局域网文件共享
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。
2023-12-30 18:54:32 2082 2
原创 MOSFET管驱动设计细节,波形分析
因为驱动线路走线会有寄生电感,而寄生电感和MOS管的结电容会组成一个LC振荡电路,如果直接把驱动芯片的输出端接到MOS管栅极的话,在PWM波的上升下降沿会产生很大的震荡,导致MOS管急剧发热甚至爆炸,一般的解决方法是在栅极串联10欧左右的电阻,降低LC振荡电路的Q值,使震荡迅速衰减掉。如果不考虑纹波和EMI等要求的话,MOS管开关速度越快越好,因为开关时间越短,开关损耗越小,而在开关电源中开关损耗占总损耗的很大一部分,因此MOS管驱动电路的好坏直接决定了电源的效率。边沿陡峭,开关速度快,损耗很小。
2023-12-24 17:16:41 2220
原创 利用STM32和可控硅控制220V加热电路
如下图所示,可控硅不受HotPWM1控制,主要原因为电流可以经过可控硅Q1的1和3引脚直接流过,不受MOC3061控制。所以,应该将可控硅的1和2引脚对调,如下下图所示,即可完成控制。
2023-12-24 14:36:49 4944 2
原创 Cadence SPB17.4做Logo封装及添加中文丝印
这种方式是最简单的方法,但制作出来的Logo颗粒度较大,放大看精细度不高,下面介绍第二种方法。使用工具: RATA Raster (BMP) To Allegro (IPF)使用工具:光栅图转矢量图工具(Raster to Vector),AutoCAD。
2023-12-16 15:11:31 1148
原创 MATLAB 系统辨识 + PID 自动调参
有些人可能会一个个试过去,但是那样的话非常的耗时间,所以这边利用 PID 模块的一个功能。um返回的是excel中的数据;在传递函数辨识界面选择零点个数,极点个数,连续 or 离散,点击 estimate 进行辨识。训练完成后,在右边的界面处可以看到结果,点击 Model output 查看拟合程度。拟合度越大越好,最好超过80%及以上是最好的,这边只有79.17,差点意思!在这个界面中,我们可以根据需求调整 pid 响应曲线,最后应用一下即可。确认输入和输出的数据无误后,我们就可以开始进行系统辨识了。
2023-12-15 16:18:22 1173
原创 STM32F030C8读取CS1237采集模拟
第二个想到的原因是,硬件CS1237和STM32的电平兼容问题,我的电路CS1237是5V供电,stm32是3V3供电,它们之间SPI通过22欧姆电阻串联。(1) 设置STM32的DOUT端口为INPUT,监测来自CS1237的DOUT电平,一般芯片上电后,CS1237的DOUT会不断地输出高脉冲(示波器测量约20us的高脉冲),代码中要监测到DOUT的”下降沿“,然后才是读写配置和读取ADC转换数值的操作;一顿仔细检查代码,发现了STM32端口配置的”笔误“,修改后,仍然无法正确配置CONFIG;
2023-12-13 15:04:56 1671 2
原创 热敏电阻NTC、PTC
NTC、PTC是什么?对于没有接触过NTC、PTC或刚接触过NTC、PTC的人来说,NTC、PTC是什么也不知道,当然,了解NTC、PTC概念也是比较简单的,但是当你去搜索资料,看到许许多多的懵懵懂懂的专业名词时,以及看到一些硬件,可能会出现些许傻眼,毕竟没接触过,满脑问号。对于初学者或急于敢项目的软件工程师,尽快初步了解,学习到基本原理,代码跑出正确的数据就是最好的。毕竟学习是渐进的,不可一蹴而就就能深入其原理。
2023-12-09 15:42:21 2405
原创 PID控制参数整定(调节方法)原理+图示+MATLAB调试
首先调节P的数量级达到一个只有2个左右明显峰值的波形,再调节I找到不会波形振荡也不会没有超调的的区间,在区间内找到一个I将稳态误差尽可能消除。最终使用D来控制衰减比和波形的峰值、超调量。最后根据要求的稳态值、调节时间、超调量、上升时间、峰值时间等指标进行微调达到目标。最后可以总结成一个口诀参数整定找最佳,从小到大顺序查,先是比例后积分,最后再把微分加,曲线振荡很频繁,比例度盘要放大,曲线漂浮绕大湾,比例度盘往小扳,曲线偏离回复慢,积分时间往下降,曲线波动周期长,积分时间再加长,
2023-12-09 10:59:18 9147
原创 大电流H桥电机驱动电路的设计与解析(包括自举电路的讲解,以IR2104+LR7843为例)
之前介绍过H桥电机驱动电路的基本原理,但是以集成的电机驱动芯片为示例。这些集成的芯片使用起来比较简单,但是只能适用于一些小电流电机,对于大电流的电机(比如:RS380和RS540电机),则不能使用这些集成的芯片(否则会导致芯片严重发热并烧毁)。此时便需要自行用半桥/全桥驱动芯片和MOS管搭建合适的H桥电机驱动电路实现对大电流电机的驱动控制。在学习此部分之前,需要先掌握基础H桥驱动的工作原理,具体可参看此篇博客:电机驱动芯片(H桥、直流电机驱动方式)
2023-12-09 09:26:07 8051 6
原创 J-LINK J-FLASH 下载STM32单片机程序使用教程
下载失败时,重新connect,然后点击 unsecure chip解锁芯片 再点击 erase chip擦除芯片,然后再重新Program F5即可正常下载 )如果芯片有读写保护或下载失败,可以点击先Unsecure Chip(解除保护)再点击Erase Chip(擦除芯片),然后再烧重新烧写程序。另一种方法是 烧写失败后 重新连接MCU,点击Targe- Production Programming F7, 即可开始烧写程序,这个选项会自动执行芯片擦除+烧写+校验3个步骤。然后重新对目标板断电,上电。
2023-12-02 17:45:49 4401
原创 AD7124-4 实测热电偶数据读取,电压精度到稳定到±1uV, 电压波动260nV, 温度精度到±0.01℃
AD7124是目前常用的一种24位ADC,在全功率模式、9.4SPS的速率、gain = 128的状态运行,均方根(rms)可达到23nV;信号误差在±10uV左右,单片价格在¥135~150,对于测控仪器中采集芯片的选型来说,该芯片价位处于中端层面,性价比较高。AD7124的引脚排布、硬件SPI的驱动方式我已经在上一篇文章发布过,这里不再做过多赘述,链接如下:使用stm32的硬件SPI驱动AD7124的方法首先介绍一下AD7124几个常用寄存器的基本功能。
2023-12-02 17:33:46 3872
原创 Solidworks模型上色技巧以及增加快捷键快速打开和关闭“阴影效果和楼板反射”
全书共17章,主要包括SOLIDDWORKS 2020概述、草图绘制、3D草图和3D曲线、参考几何体、草绘特征、放置特征、特征的复制、修改零件、装配体设计、动画制作、工程图设计、齿轮泵设计综合实例、曲面造型基础、饭金设计基础、焊接基础知识、有限元分析和运动仿真等内容。2、此时,你可以选择按层级排列,然后选择“实体”层级,按住shift或ctrl键,将这几个紫色都选中,再按delete键删除。如这个尾顶机构上的紫色零件。如果应用到零部件层,那么只改变这个装配体中该零件的颜色,其他装配体中这个零件的颜色不变。
2023-11-28 20:14:41 3727
原创 SolidWorks快捷键
SolidWorks快捷键可在软件里自行设置,自定义鼠标笔势,这里列举的是系统原定快捷键合集,文末有所有合集图片。SHIFT+ 鼠标左键 选择FeatureManager设计树中两个选定项目之间的所有特征或 零件。CTRL+1/2/3/4/5/6 前视/后视/左视/右视/上视/下视。CTRL + SHIFT +TAB 暂时将所有隐藏的组件显示为透明,SHIFT+方向键;SHIFT +TAB 1、显示鼠标光标所指的零件。CTRL+SHIFT+Q 强制重建所有配置。CTRL+SHIFT +C 复制外观。
2023-11-22 19:56:57 901
原创 solidworks怎么识别STEP文件特征?
step或者stp文件解决了,各软件文件格式转化的问题,也统一了文件格式,也方便数控加工,切削,但是客户用的软件和我们用的软件不一样,就会转成step或者stp文件,但是我们想要编辑却看不到其步骤,步骤也就是我们建模时候用的特征,因为实体是由特征构成,常见的特征有拉伸,旋转,放样,扫描等。值得注意的是SolidWorks featureworks插件只能识别,拉伸,体积,拔摸,旋转,孔,圆角/倒角,筋等特征,曲面放样,扫描等曲面就识别不了。用featureworks插件识别特征后,如下图。
2023-11-15 14:27:13 4381
原创 Qt图形视图框架:QGraphicsItem详解
我们在使用QGraphicsView框架的时候,经常需要自定义QGraphicsItem,并且需要实现Item的平移、改变大小和旋转的效果。接下来介绍他们的一种实现方式。
2023-11-15 09:34:57 978
原创 Qt界面设计时使各控件依据窗口缩放进行自适应填充的方法——使用布局、Spacer等控件
关于 Qt 布局管理,有专门的帮助文档页面Layout Management。本章的主要内容就是介绍布局管理的知识,Qt 设计师里面不仅有布局器的控件可以拖动使用,还可以在窗体里面选择控件,然后点击设计师上面的工具按钮自动添加布局器。本节首先大致介绍一下 Qt 设计师里面关于布局器的操作界面。Qt 的窗口主要内容包括: 布局的样式 , 基于UI界面设置布局 , 基于API设置布局。Qt 窗口布局是指将多个子窗口按照某种排列方式将其全部展示到对应的父窗口中的一种处理方式。
2023-11-11 17:00:23 8647
原创 CMake教程--QT项目使用CMake
其中,BasicUsageEnvironment, groupsock, liveMedia, UsageEnvironment都是live555项目的子模块,mediaServer是集成所有子模块打包成为可执行文件的部分。调用环境变量: $ENV{NAME}这种做法会导致项目里即便改了一处代码,也会编译所有代码,导致编译时间较长,不能很好利用增量编译,再说C/C++本身编译就很慢。变量的引用方式是使用${},在IF中,不需要使用这种方式,直接使用变量名亦可。在工程build目录下执行。
2023-11-11 15:17:23 2841
原创 QRadioButton、QCheckBox样式表
如果启用了自动互斥,属于同一个父部件的单选框的行为就和属于一个互斥按钮组的一样。如果你需要为属于同一父部件的单选框设置多个互斥按钮组,把它们加入QButtonGroup中。就像QPushButton一样,单选框可以显示文本,以及可选的小图标。当然,也可以设置setExclusive(false)来关闭互斥,从而实现多选功能。上面,我们通过调用QButtonGroup的setExclusive(true)来设置按钮组中的单选框互斥。槽函数,用来判断当前点击的按钮,以及获取按钮组中各个按钮的选中状态。
2023-11-11 08:50:01 2378
原创 stm32 Bootloader设计(YModem协议)
若第1字节为SOH时有128字节,为STX时有1024字节,这部分为数据区。“Foo.c” 文件名, 超级终端下,在文件名后还有文件大小。官方dome也是因为使用了这个文件大小进行比对。这就是为什么用SecureCRT中的YMODEM协议而无法正确传输的原因。在文件名和文件大小之后,如果不满128字节,以0补满。最后两字节:这里需要注意,只有数据部分参与了效CRC验,不包括头和编码部分。
2023-11-08 15:23:42 1894
原创 STM32 IAP应用开发--bootloader升级程序
IAP(In-Application Programming) 指MCU可以在系统中获取新代码并对自己重新编程,即可用程序来改变程序。在应用编程(IAP)是用户的应用代码对片内Flash存储器进行擦除/编程的方法。这种方式的典型应用就是用一小段代码来实现程序的下载,实际上单片机的ISP功能就是通过IAP技术来实现的,即片子在出厂前就已经有一段小的boot程序在里面,片子上电后,开始运行这段程序,当检测到上位机有下载要求时,便和上位机通信,然后下载数据到数据存储区,从而实现固件升级。
2023-11-05 15:12:32 2060
原创 Qt中正确的设置窗体的背景图片的几种方式
2.做过Qt开发的朋友应该都知道,Qt的子窗体是会继承父窗体的属性的,这就证明了为什么父窗体的背景在子窗体中也会有,这个是对这个原因的一个非常合理的解释。那么问题来了,我们怎么才能做到子窗体不继承父窗体的背景呢?1.在QWidget中这种方法是不行的,如果你足够细心的话,你会发现使用同样的设置背景图片的方法,背景图片其实并没有发生真实改变,但是它的子窗体背景图片是会发生改变的。背景色设置和背景图片设置也是一样的道理,如果不想窗口中的部件颜色和主窗口一样,也是需要#MainWindow来设置限定范围。
2023-11-03 14:17:37 17073
原创 QT之多个界面相互切换 (stackedWidget控件)
QStackedWidget是一个堆栈窗口控件,使用QStackedLayout布局,可以填充一些小控件,但同一时间只有一个小控件可以显示。QStackedWidget类实现组件层叠,但它是一个组件,而不是一个容器。stackedWidget控件: 可以自由在多个widget切换,可以通过点击顶部菜单,显示不同界面,在实际开发中应用很广泛。- 将一个组件添加到容器的末尾,返回添加组件的索引;- 将组件添加到指定的容器位置,返回添加组件的索引;- 将索引为index的组件设为可见,是个槽函数。
2023-11-03 13:46:49 3705
原创 基于Qt 的可视化图片处理程序——图片的加载与保存
在 Qt 中,我们一种最常用的图片加载方式就是使用 QImage 库,此处我们通过 QImage 加载图片,之后通过加载到 QPixmap 中,最终显示在 Label 上。在保存图片之前,我们需要先提取要进行保存的目标图片,通过一种类似于截屏的方式 pixmap()->toImage() 对图片进行提取,然后缩放到原来的大小,最后进行保存。首先要确定,使用 Qt 中 QFileDialog 库中的 getLoadFile 进行选择文件。
2023-11-03 11:48:23 3587
原创 Qt控件 UI设计 QPushbutton、QToolButton、QMenu
1.信号和槽:qt的这个功能基本就是对c++回调函数的封装,使用起来比回调函数更方便,但是牺牲一些性能,会更慢一点。connect的参数我是这么理解的:谁,发出什么信号,想让谁,实现什么功能。2.区别:toolbutton更特殊一点,可以配置快捷键触发槽,一般只用图片做按钮配置放在toolbar内,就像下图编辑界面的功能选项,用toolbutton就很简单。new一个pushbutton,new一个QMenu,new几个QAction,将action的对象加入menu的对象,
2023-11-03 09:03:18 659
原创 如何使用ps制作ico图标文件
然后调整图片大小,因为不调整的话会出现无法保存为ico文件的情况,因为ico文件最大像素为64x64,也就是4096像素。点击图像,选择图像大小,或者直接使用快捷键Ctrl+Alt+I。在这里你可以调整抠出来的图片边缘羽化程度,以及设置背景图层。最后是保存为ico文件格式,选择文件,点击存储为,也可以使用快捷键Shift+Ctrl+S。如何使用ps制作ico图标文件。我这里将他设置为64x64像素。
2023-11-01 14:40:49 4948
原创 QSS 自定义QLineEdit
原文链接:https://blog.csdn.net/Staranywhere/article/details/107306276本文将通过简单示例介绍QLineEdit样式如何自定义。QLineEdit通用属性如下:borderborder-radiusmarginpaddingbackgroundcolorfontborder-imageQLineEdit特有属性如下:lineedit-password-characterThe QLineEdit password character
2023-10-28 10:15:49 471
原创 QPushButton样式设置
设置所有边框为2个像素,样式为实线,颜色为黑色。设置上边框为2个像素,样式为实线,颜色为黑色。设置左上角圆角为:10px。设置圆角都为:10px。
2023-10-28 08:59:09 4396
原创 QWidget|QFrame设置背景透明且可以带有边框颜色
之前在项目中有个需求:视频播放窗口电子放大功能,需要在播放视频的QWidget上绘制一个可以拖拽的矩形框,但是单独的drawRect并不能获得焦点去拖拽。QWidget覆盖到该窗口上,将其背景设置为透明即可,但是设置透明之后,其底色的黑色无法消除,经多方CSDN博主的成果于一身,搞定了该需求。效果: 窗口整体透明,但窗口控件不透明,QLabel控件只是字显示,控件背景色透明;在该窗口绘制一个矩形框,为画刷填充一个任意的颜色,重点:将其透明度降为不为0的数值即可。同样在构造函数中,效果和第一种方法相同。
2023-10-27 19:53:23 2342
原创 Qt下实现支持多线程的单例模式
实现单例模式的代码很多。本文的单例模式实现代码是本人一直在工程项目中使用的,现拿出和大家交流分享。本文实现的单例模式,支持多线程,采用双重校验检索的方式,集成析构类,杜绝内存泄漏,稳定性好。使用C++/Qt的朋友们可以了解一下。不再废话,直接上代码。单例是一种软件设计模式,采用单例模式书写的类可以确保在一个工程中只有一个对象实例。再通俗点,就是一个类写好了之后,就不需要也无法再把这个类实例化了,因为写这个类的时候已经确保了有且仅有一个已经实例化的对象。这样不是很蠢么?
2023-10-27 15:20:38 1035 2
原创 Qt重定向QDebug,Qt/C++开源作品39-日志输出增强版V2022
相对于第三方的日志库,在 Qt 中使用 QDebug 打印更便捷,有时候也需要对 QDebug 输出进行重定向,如写入文件等。返回的函数指针我们可以保存起来,需要输出到控制台时进行调用。
2023-10-26 08:13:06 867
FreeRTOSv202112.00.zip
2022-01-04
cJSON(STM32CubeMX5.3.0).rar
2021-10-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人