Simple Nano Circuit 开发日记(30)

Day: 30, SLOC: 4614。

​最近几天小仿真软件写的有些怠慢,代码膨胀比较厉害。好在终于将主要想法实现了出来,接下来将用2-3天填补遗留的若干缺陷、再花上一周左右做一做代码收敛和文档补全。之后便可以继续下一阶段的开发了。接下来将完成交流电源,再把电感和电容加进来。功能开发的脉络虽然清晰,但实际上这对我而言还是非常有挑战的:当电路只有电阻时,仿真求解只需用到线性代数,可一旦引入了电容和电感,将会用到微分的知识,期望用到的知识点不会太多、太难。

Day: 31, SLOC: 4635。

今天代码与昨天比起来,增加的并不多,但实际上也是做了一些工作的,因为主要是对原有代码进行修缮,所以单纯代码行数上看不出来什么。但借助 git diff 可以看出来,今天也是进行了200多行代码的调整。

主要是解决了此前遗留的奇异矩阵求解问题。

当矩阵是奇异矩阵时,程序会尝试去求解一个元,完成这一个元的求解之后,再次判定矩阵是否是奇异矩阵:如果依然是,则放弃此次求解;如果已经不再是奇异矩阵,就进行求解。

上面这个是之前的思路,然而上面这个思路其实是存在问题的,正确的做法是:如果奇异矩阵在完成了一次解奇异之后,依然是奇异矩阵,可以再次尝试解奇异:如此反复解无可解才认为矩阵无解。若是经过了多次解奇异之后满秩了,那么就可以求解了。

从以上错误的做法到正确的做法,就是今天主要完成的工作。

除此之外还做了一些其他的调整:为 Pin 引脚增加了一些属性,这样在进行相关的运算时就不用再通过引脚找到它的 IC 再去做 IC 判定,引脚在创建时就已经将 IC 信息记录下来,用的时候直接询问就可以了。

同时,引脚不仅记录着 father IC 的信息,还记下了引脚自身的极性信息,例如在电源上时,每一个电源引脚的正负极;在三极管上时每一个引脚的电极……这样可以为后面的仿真提供一些便利。

这里是当前这个小项目的整体结构,通过doxygen生成,方便整体查阅类、方法、变量的名称,以便建立整体认知、逐步微调各个名称,以便让代码的可读性有所改善。

每天学习一些新的知识,尽可能保持自己的学习动力。

Related Posts

备忘

当前使用的差异 物料号 我用 正确建议 规格差异 备忘 Q2 BSC340N08NS3G BSC320N20NS3G 80V23A vs 200V32A Q1 BSC028N06LS3G BSC028N06LS3 或 BSC028N06NS 60V100A 一、关于Q2物料: 1、我的选择应该是有危险的,实际上也是出现问题了的——被击穿了; 二、关于Q1物料: 1、我选择的就是官方推荐的,用的是 BSC028N06LS3 ,我选择的只是多了一个尾缀“G”,这个尾缀可能是对IC的环保封装进行了标注,具体回头再看一下; 2、官方推荐的实际上有两个,分别是 BSC028N06LS3 和…

树莓派(6)基于LT3748的设计过程

原文地址:https://www.farnell.com/datasheets/1332863.pdf

树莓派(5)四个PoE PD方案的初期备忘

最近粗略的看了三个PoE PD方案,分别是: 核心芯片 品牌 拓扑结构 说明 BD9G341AEFJ ROHM Buck 非隔离、无变压器单元。外围电路简单。需前端PD模块。 LT3748 LINEAR Flyback 隔离、反激、主边反馈。需前端PD模块。 Si3404-A-GM SKYWORKS Flyback 隔离、反激、副边反馈。内置PD模块。 DPA425R 从电路的复杂程度上而言,BD9G341AEFJ看上去是最简单的。它没有用到变压器结构、也没有隔离机制,因而用到的IC既少、又容易获得。所以我想先尝试以BD9G341AEFJ为目标,自己试着实现一个DCDC模块。 在Mouser上能够看到这个芯片共有两款料号,分别是BD9G341AEFJ-E2和BD9G341AEFJ-LBE2。其中后者尾椎中多出来的“LB”是long time support in Industrial market的含义。也就是说如果面向工业化设计时,BD9G341AEFJ-LBE2这款芯片更适合采用。 此外在Mouser上还有一款BD9G341AEFJ-EVK-101评估板,它的BD9G341AEFJ-EVK-101…

补录一个之前遇到的问题

在2025年4月21日的《通过MT3608进行升压问题不大》文章中,提到了一句“关于上面的第4点,要再花时间额外写一篇博客”。当初遇到的是什么问题呢? 我从电源板上得到“电能”之后,会将电能分成5V和11.4V两路,传递给蜂鸣板,以令蜂鸣板上的两部分模块同时开始工作。然而在这个电力传输通道上,却出现了一些莫名其妙的情况:通过中间的四根导线将电能传递到蜂鸣板之后,蜂鸣器发出来的声音十分浑浊、沙哑。 我现在已经记不清之前写文章时听到的声音状态了,而现在听到的声音状态一定和之前的不一样、有了些许好转,但依然不是饱满、洪亮的声音。 这个问题,还要再花时间研究一下。 其实我也不用纠结之前听到的声音有多么恶劣,毕竟最近一段时间对电路进行了很大幅度的调整,可能已经解决了不少问题。只需要在此刻听到的声音的基础上,继续完善、优化电路就可以了。

电源芯片基本完成

如前文提到的,上一版电路板无法正常工作,原因就是IP5407芯片停止工作了。然而与前文猜测的也许不同,并不一定是我猜测的PCB布线过窄引起的。还有可能是外部线缆(从电池到PCB、从开关电源到PCB)的线径太小;还有一种可能就是上一版电路中,我在输出位置使用的3颗22uF电容用的是X5R导致的。 无论哪一种可能性,本质上都是IP5407看到的电池电压出现了错误、虚低,导致芯片停止工作。 因为没有精力逐项排查,所以我今天新做出来的电路,就索性将上面的怀疑问题,全都改良了一遍。结果,问题得到解决,现在电路可以正常工作了。因而也就不再仔细推敲上一版中究竟是哪里出现的问题了。 现在接下来的工作开始变得有些尴尬:接下来做什么呢? 想着应该是先将整体功能全部实现出来,所以下一个工作,就是完成前面板PCB的设计与制作。 经过测试,这个电路还是存在问题的 现在怀疑是C7这颗电容是多余的,但是在反复测试过程中,将电路板烧毁了。还要再找时间重新做一块电路板,好辛苦。我为什么会怀疑是C7电容导致的问题呢? 现在IP5407上电之后,明显会出现一个1秒的延迟,看它的技术手册提到1s停摆是因为出现了过流保护、会间断1秒重新上电。当我将电路导通时,整个电路中C7这个电容是饿着的、并且这个电容容量还不小,所以它很可能会在上电瞬间吃电吃到过流,引起IP5407停摆。一秒之后,C7已经被其他电容充上电、也被上一次停摆之前充上电,所以整个电路就是稳定的,所以只要经历一次停摆,就能恢复正常工作。 如此想来,C7现在就是重点怀疑对象。

简单电路的想法及尝试(2)

之前想到一个简单的电路,然后画了画、今天动手试了一下,感觉没有问题、可以实现。但是比较郁闷的是其中要使用单刀双掷开关、或者更方便一些就是使用双刀双掷开关。虽然使用更高级的开关可以让电路简化,但是这些高级的开关并不好找,即便真的有、手感上和形式上也很难满足我的需求。 所以我觉得还是退而求其次,用比较简单的单刀单掷开关来实现吧。以下是第一部分电路的重新规划——完全改用单刀单掷开关来实现。电路看上去应该是可以运行的,不知道实际效果怎么样,还要再花时间搭建真实的电路来验证一下: 我设想的电路整体分成三个部分,上面是第一部分。现在觉得第一部分的电路无论怎么实现,都是可以搞定的,毕竟它的功能最简单;难的是第二部分的电路,没有想好怎么才能只通过一个单刀单掷开关实现。 另外,上面的第一部分电路现在也只是核心功能,如果考虑到更复杂的情况,例如将LED增加进去,也会让问题变得复杂。 看来这个“小功能”也不是一朝一夕能够搞定的,我索性也就不着急、慢慢学习、慢慢尝试了。 想了想,第二部分电路的结构大概清晰了,并且有对第一部分电路进行了微小调整,至此的基本思路如下: