分类: 单片机&硬件

戴森V6吸尘器电池的程序

呃,怎么说呢,这玩意就不多说了。说起来有点复杂,直接放文件吧。压缩包里一个工程,还有一个hex文件。代码来源:https://github.com/tinfever/FU-Dyson-BMS


这个是不带均衡的版本,当然乱七八糟改了啥我也不太清楚了。因为都是碰到一样问题改一样。解决了充电亮红灯报过流的问题,现在可以用其他任何1.4A以下的充电器充,包括可调电源。修改了亮灯的一些规则,比如按下按钮后通过灯的颜色显示电量,原闪灯电量的代码我也没删,还在。原装的戴森保护板有个问题就是电量会持续不均衡,在这个程序里,就是会以闪黄灯来提示。黄灯闪很多次的话,拆出来平衡一下又能坚持几年。

这个是补好了均衡电阻的版本,61462那块带空焊盘的板子可以短路几个电阻,新增几个电阻来实现均衡功能。这个版本有点问题,不知道为毛均衡mos会自己关掉,然后循环里又会开起来。表现就是脉冲均衡。我查了半天没查出来哪里问题,反正又不是不能用,我都懒得调试了。这个版本放电短路检测阈值被我改大了,我这块板子坏了修过,莫名其妙报短路,之前正常的,电路查了没问题,要么就是94208的问题了。可能热风枪吹了参数有点飘。

电动车充电器改电流

我家小区充电是按功率分段的,350瓦到450瓦是1元2小时,450瓦以上1元1小时。我买充电器的时候就算好了,54.6×8=436.8,有20瓦余量给风扇和转换效率啥的应该也够了,然后我新买的充电器显示456瓦最高将近500瓦。48伏20安时2块钱还充不满,必须得改!拆了充电器,研究了半天电路,原本想改电流么,必定是检流电阻这一块。然后发现,这个检流电阻只是用来转灯的,电流小到一定程度就转灯并转涓流充电。百度了一下,据说可以改源极电阻来调节最大电流。原理大概是通过3842的3脚电流取样脚。没仔细研究。直接把0.14Ω电阻换成0.22欧姆,测得充电电流5.9安。上充电桩试,居然只有320瓦左右,所以现在1块钱可以充3小时。8×2=16ah,6×3=18ah,还算合适。1块钱基本可以充满,而且一般也不会用到完全没电的。

另外吐槽一下现在的电动自行车充电桩,我这个还算不错的了,最多贵一点。有的充电桩,插上去就报错,功率超过一两百瓦就不给充。这也还算好的,最恶劣的比如我家负一层那个,给了钱不给充还不算,钱也不给退,最早的时候甚至抽风刷一次扣两次。当然那时候一次可以无限拔插,一次分次充2辆甚至3辆就还算合算了,然而这个漏洞他倒是堵得很快,扣钱不给退的倒是至今没改。反正那个充电桩,我总体算亏大了,50块钱充了没几次,成本起码要五六块钱一度电了。现在这个充电桩,大约一度电1元出头一点,这是下限,上限像我那个456瓦的,1度电3元。这可能属于成本限制,库仑计,电能表啥的可不便宜。

终于把那破电瓶车换上锂电池了

原车48v12ah的铅酸电池,换成了13串20ah的软包三元锂。保护板斥巨资搞了个带蓝牙带主动均衡的,166元。电池外壳找群友3D打印的,那人的打印机打印尺寸不够大,打成了两半,我用接保险杠那种电热铁丝接了起来,也不知道妥不妥。充电器配了个8A的,原本以为400瓦出头,我家小区那个充电的地方正好是450瓦以上1元1小时,不到一点的那一档是1元2小时,充电器功率正正好,然而,测下来是456瓦,最高将近500瓦,算下来电源效率86%?(见https://www.arya142.top/2022/07/15/电动车充电器改电流/)今天又去修车摊换了内外胎,刹车皮,还套了个座套。这下舒服多了。速度快了,上坡没那么费劲了。另外,最好别炸。

利用串口DSR/CTS等端口获取市电状态并实现断电自动关机的C#程序

我有一个UPS,自带的关机软件有点问题,后台有javaw.exe占满一个CPU核心。本来我也懒得弄,这个自带的软件是用网页上的flash作为设置界面,最近不是flash用不了了吗,然后我也懒得再找办法继续运行这个flash,而且它还有占用CPU这个问题,所以就有想法弄一个自动关机的玩意。原计划是用单片机检测的,但是想想看串口那几个没多大用的端口,正好可以用来检测电平,也不知道有没有人像我这么干的,反正能用就好。下面两个是Program.cs和Form1.cs的代码:

阅读更多

stm32 f103用TM1637驱动数码管

其中读键部分,无符号变量参与右移运算,然后把无符号返回成有符号变量。因为是改的TM1638的程序,不知道为毛他这么搞,所以把类型改成有符号的了,结果出错。搞了半天才搞明白:有符号变量右移的时候,如果是正数左边填0,如果是负数,左边填1。这是基础的东西,结果搞了半天。接下来还得复习一下C语言了。

接线啥的参考手册。TM1637和TM1638不一样,TM1638驱动共阴数码管比较方便,TM1637驱动共阳数码管比较方便。另外TM1637供电电压是5V,高电平低值为0.7VDD,也就是3.5V,而我这个f103是3.3V的,但是很多端口都耐受5V,所以找了一个可以耐受5V的端口,用开漏输出,上拉10k电阻,顺便还可以直接读键。另外那个数码管的时钟点,真的是麻烦,TM1637的SG口只有8个,偏偏这两个时钟点的阳极是连在公共点上的,所以只好再浪费一或二个单片机IO口了。时钟点部分没有写,反正也简单的。下面是TM1637.c的内容。很简略,下次用得上的时候再说。

阅读更多

stm32 PWM调节有延迟

今天遇到一个问题,PWM输出时,如果使能exti外部中断,PWM空占比的调节有延迟。刚发现问题时表现为呼吸灯乱跳,psc的值0还好,但也肉眼可见,设置个二三十就延迟严重,阶梯性的跳亮度。设置一千多就完全找不到亮度变化的规律了。原本以为逻辑上搞错了,检查了一下发现没问题,然后看初始化部分,对照教程来看也没啥问题。然后翻出400多大洋的F407,例程是没问题的,我这个就有问题。因为就是瞎搞,所以我的test project里面是include了一大堆,然后把所有的多余部分都注释掉,发现也能正确运行。然后就一个个试,发现是exti的问题。把中断处理函数的内容都清空,只剩一条清除挂起位,也还是不行。然后我就加了个串口调试,发现psc的值变化是正常的。本来么,换一个端口就没问题了,不过问题还是没有解决,心里实在是痒的慌,到这里碰到瓶颈了,换了一个端口TIM4的,发现问题没有出现。又去查资料,发现 TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable); 这条,Enable是要等到下个周期才会变化,Disable就会立即变化。之前问题算是解决了。不过问题又来了,为毛设置为Enable的时候,不使能exti就没问题,使能了就有问题?!不过这个问题先留着下次再研究吧。等看到一定程度回来可能会比较好。现在这一块对我来说有点深入了。

最近刚开始学习单片机

最近淘宝买了一块正点原子的开发板,400多块钱。显示屏我嫌贵,将近200块钱,所以在第三方买了一块40来块的,照样用的挺好,就是确实显示效果不咋地,不过我要显示效果来干嘛,呵呵。拿回来了解了一下单片机是怎么回事后,发现好像压根用不着买这么贵的板子。芯片中flash的写入寿命,估计也就两三年。然后我买了一块10块钱的stm32f103c8t6,还有一块面包板和原件若干,总共50不到,然后对着f407的教程慢慢学,有问题的地方网上搜索一下。顺便可以学一下外围电路。感觉初学者不太适合学那种成品开发板,比如我这种,很可能就跑一遍例程就完事了,最后可能啥也不明白,换一块mcu,说不定就抓瞎了。说起来f103和f407的各种结构体定义都不一样,我也不知道为啥不统一一下。当然等学好了说不定就明白为什么了。最近目标是做一块温控器,温度探头和固态继电器和加热器件还得买,淘宝初七才开门。或者可以先用mos管做个小功率的。主要问题还是算法方面,感觉得好好研究研究。正点原子那块板,得等f103吃得差不多了再拿出来吧。也不知道学这玩意以后能不能赚的到钱。

电力猫和三相电

因为之前家里网线抽不动,做无线覆盖没法弄,所以特地买了个电力猫,结果根本没法用,具体现象是插上有信号,一旦有数据就立马弱信号,估计是1kbps都没有,然后就断线了。我一直以为是电力猫或者我家空开的原因。这两天我把电力猫带回老家用,发现用的好好的,一点问题都没有。突然想起来家里面是三相电,弱电箱和客厅肯定不是在同一相线上。这就比较坑爹了。如果需要用肯定还要调整强电箱的电线。