本帖最后由 zhao133 于 2024-5-8 11:38 编辑
今天给大家分享一下我16年设计的扫地机器人的方案,因为扫地机器人对电机运行噪声要求不高,经评估最终选用方波控制。电机类型:无感直流无刷电机,电机控制方式无感方波,当时使用的主控芯片是ST的STM8S003F3P6,原因,方波驱动无刷电机、芯片价格便宜,芯片尺寸小。我这个方案在当时最大的优势是成本,因为产品是属于消费电子,成本比较敏感,而整个方案在当时做下来含税还不到5块钱(ST的STM8S003F3P6当时价格是1.3元左右,三个N+P对管一共才1.5元左右,其他器件和PCB加起来不到2块钱)。
这次我跟大家分享的是如何对这款驱动板的软硬件升级。产品升级我们我们考虑的就几个因素:产品的成本问题、物料采购渠道、性能落后。而这次我跟大家分享的是对产品性能提升。方波驱动无刷电机当然也有本身的优势,比如电机启动速度快,成本低。但也存在不可忽略的不足问题:电机运行噪声、干扰大等问题。为了解决电机运行噪声和干扰问题,我这次升级的思路把电机控制方式改为正弦波。解决方案有两种:一、电机控制方式改为无感FOC控制;二采用伪正弦控制方式。
无论是FOC还是伪正弦,我们对MCU的运算能力都有要求,而8位机执行大量的乘除法运算还是比较吃力。我这次采用极海的003替换ST的003。当然,选用极海的003也是有理由的,据了解,极海推出这款芯片当时是为了替换ST的8位机003,因此,极海的APM32F003F6P6芯片封装、管脚功能及定义与与ST的STM8S003F3P6的兼容性较好,并且极海的APM32F003F6P6是一款32位的单片机,理论上可以轻松实现FOC、伪正弦等运算。
主控芯片从8位机变成32位机,需注意以下几点:1、芯片的工作电压。很多时候我们使用8位机设计硬件时,MCU的工作电压选用5V,而32位机一般都不支持5V供电,因为芯片的功耗跟工作电压和主频有关;2、定时器的使用,这个需要详细了解两者之间的差异,我们使用定时器一般是为了产生有规律的间隔时间,定时执行或查询;3、ADC的分辨率的差异,8位机由于价格便宜,ADC一般采用8位、10位、12位分辨率,而32位单片机一般都是10位、12位的分辨率。如果我们使用8位机的ADC分辨率是10位,现在换成32位机ADC分辨率是12位,这时我们检测到的电压FF时,8位机读到的AD是1024,而32位机读到的AD是4096。软件代码需要注意调整ADC判断的阈值。如果8位机与32位机的工作电压也不一样,换成32位机时,我们会通过LDO把电压降至合适的工作电压,这时ADC采集到的值会更加麻烦。
接下来,我给大家举个例子说明一下芯片更换可能会面临的问题,假设8位机与32位机两者ADC的分辨率是一样的,都是12位,原方案8位机MCU工作电压是5V,被测电压是3V,换成32位机MCU工作电压调整至3.3V,被测电压还是3V。5V供电的8位机读到的AD值是(3V / 5V) * 4096 = 2457,3.3V供电的32位机读到的AD值是(3V / 3.3V) * 4096 = 3723。如果我们的软件AD处理部分代码没有做调整,这时我们软件会认为输入电压是(3723 / 4096) *5V = 4.54V。这时我们的软件会按照4.54V的输入电压处理,软件认为此电压是异常电压,执行异常电压处理的代码... ...
上述的总结和分享对于一些新手小白可能还没遇到过,希望能给大家带来一点帮助。关于伪正弦控制,我大概在14年的时候已经做出来了,当时在microchip的16位单片机和英飞凌的M0都验证过,大家如果对伪正弦控制有兴趣,可以大胆尝试。
|