摘要:本文提出了一种采用中颖8位单片机SH79F168作为主控芯片的航模无刷电调方案,用AD采样的方法进行反电动势检测以控制无位置传感器的无刷直流电机。该芯片内部集成了PWM、ADC、增强外部中断等有针对性的功能模块,使软硬件设计都大为简化。经实际项目应用,该系统运行稳定可靠,且与市面上的其它控制方案相比具有成本优势。

1 概述

无位置传感器的无刷直流电机(Brushless Direct Current Motor, BLDCM)由于其快速、可靠性高、体积小、重量轻等特点,在航模领域得到了广泛的应用。但是与有刷电机和有位置传感器的无刷直流电机相比,其控制算法要复杂得多。加上航模设计中对重量和体积的要求非常严格,因此要求硬件电路尽可能简单,更增加了软件的难度。

本文提出了一种基于中颖8位单片机SH79F168的控制方案,借助于该芯片片内集成的针对电机控制的功能模块,只需很少的外围电路即可搭建控制系统,实现基于反电动势法的无位置传感器BLDC控制,在保证稳定性和可靠性的基础上大大降低了系统成本。而且该芯片与传统8051完全兼容,易于上手,从而也降低了研发成本。

2 系统硬件设计

本方案选用中颖的8位单片机SH79F168做为主控芯片。该芯片采用优化的单机器周期8051核,内置16K FLASH存储器,兼容传统8051所有硬件资源,采用JTAG仿真方式,内置16.6M振荡器,同时扩展了如下功能:

双DPTR指针. 16位 x 8乘法器和16位/8除法器.

3通道12位带死区控制PWM,6路输出,输出极性可设为中心或边沿对齐模式;同时集成故障检测功能,可瞬时关闭PWM输出;

7通道10位ADC模块;

内置放大器和比较器,可用作电流放大采样和过流保护;

增强的外部中断,提供4种触发方式;

提供硬件抗干扰措施;

Flash自编程功能,方便存储参数;

主系统硬件架构如图1所示,从图中可以看出该系统大部分功能都由片内集成的模块完成。外围电路的简化一方面可以提高系统可靠性,另一方面也降低了成本。

图 1 系统硬件架构

三相逆变桥采用上桥PMOS用三极管驱动,下桥NMOS用PWM端口直接驱动的方式,如图2所示。

图 2  三相逆变桥

SH79F169片内集成了三通道6路PWM端口,可分别独立配置为PWM输出或者IO输出。将PWM01~PWM21配置为PWM输出,直接驱动三相逆变桥的下桥;PWM0~PWM2配置为IO端口,经过晶体管反相电路后驱动三相逆变桥的上桥。

外部中断输入INT4x配置为双沿触发,即输入信号的上升沿和下降沿都能触发中断,可用于捕捉调速给定信号。

3 系统软件设计

由于SH79F168的硬件已经完成了大量的任务,软件的部分相对简化很多。主程序流程图如图3所示。

图 3  主程序流程图

为便于理解,该流程图经过了尽量的简化,只保留最关键的步骤。主流程中没有列出“检测BEMF”和“换相”两个关键的步骤,因为它们分别在PWM中断和timer0中断中进行。

3.1 反电动势过零点检测

在PWM输出高期间,假设断开相绕组端电压为 ,反电动势为 ,供电电压为 ,则三者之间有如下关系[1]:

SH79F168提供PWM周期中断和占空比中断。当周期中断发生时不断检测断开相的端电压,并与 比较,直到检测到过零点或者PWM输出低(根据PWM占空比中断标志位判断),即可实现在PWM输出高期间的反电动势过零点检测。每次换相后就切换到另一个通道,检测下一个断开相的端电压,如此循环,实现实时检测。

需要注意是刚换相后的一段时间内,由于MOS管的续流,断开相绕组的电压会出现尖峰。为了准确检测反电动势,可以选择在刚换相的一到两个PWM周期内不进行采样,避开尖峰电压。

3.2 起动算法

BLDC电机的反电动势和转速正相关,在起动和低速运行阶段,电机产生的反电动势为零或很小,因此往往需要经过一段强制加速,使反电动势上升到能够检测过零点的水平。

航模电机一般在较低速时即会产生比较明显的反电动势,这个特点为起动提供了很大的便利。先给电机任意两相通电,使电机获得一个初速度,这时检测断开相电压并等待其发生过零。若检测到过零点则换相,若经过较长一段时间还没有检测到过零则强制换相,重复这个过程直至电机稳定运行。这种起动方式,不但实现简单,而且稳定可靠。在这种方式不能适用时,再根据应用场合考虑选用特定的起动方式,可参考文献[2],限于篇幅本文不详述。

3.3 换相计算

一般在用反电动势法进行BLDC控制的时候,需要对每两次换相的间隔时间进行计时,得到60°电角度时间,然后除以2作为检测到过零点后30°延时的定时值。这就需要用到两个定时器/计数器,一个用作计数器对每两次换相的间隔进行计数,另一个用作定时器实现30°延时。本方案中为了节省timer资源,用一个timer同时完成两项功能。

在每次换相后,检测到该通电状态下的过零点之间,timer0用作计数器;在检测到过零点之后,之前的计数值即为30°电角度,将其作为定时值装入timer0,timer0用作定时器开始定时。定时时间到后,在timer0中断中进行换相。然后timer0又用作计数器,如此循环。正常情况下,由于电机转速很高,每次换相到检测到过零点之间的时间很短,timer0在计数模式下不会发生中断。若timer0在计数模式时发生中断,必然是计数溢出,说明电机经过较长的时间还没有检测到过零点,而这可以作为电机堵转的标志。根据实际情况,可对timer0在计数模式下连续发生中断的次数进行计数,超过一定值即认为发生堵转。这样,timer0还实现了堵转保护的功能。  1/2    1 2 下一页 尾页

转载于:https://blog.51cto.com/2044763/426706

基于中颖SH79F168单片机的航模无刷电调方案相关推荐

  1. 无刷电调--BLHELI_S的焊接问题与固件烧录

    无刷电调–BLHELI_S的学习笔记 焊接时容易出现的问题 1.EFM8BB21F16G芯片引脚虚接 这种情况下有可能会导致固件无法烧录,电机不能初始化,芯片发烫,解决方法就是找到虚焊的引脚焊接结实 ...

  2. arduino 控制无刷电机_Arduino Uno 驱动无刷电调

    本帖最后由 希岩 于 2020-5-28 13:06 编辑 Arduino提供了PWM驱动库,但很难调整PWM频率.手头有有个无刷电机和一个电调,如何驱动电调呢? 可以看下面的连接http://www ...

  3. 【无人机】无刷电调学习之路

    ** [无人机]无刷电调的学习之路 ** 本文学习:模吧作者[我爱萝丽爱萝丽]2020新版 无刷电调DIY教程 https://www.moz8.com/forum.php?mod=viewthrea ...

  4. BLHeli无刷电调 调参介绍 某宝八元电调

    BLHeli无刷电调 调参介绍 (八元电调) 本人使用某宝8元电调,针对电调需要5v供电以及低速抖动高速停转问题,进行解决. 这是某宝上提供照片: 这里因为电调没有bec,所以需要外部5v电源输入: ...

  5. FOC驱动器和无刷电调的区别

    FOC的优势: 低转速下控制 由于控制原理的区别,无刷电调只能控制电机工作在高转速下,低速下无法控制:而FOC控制器则完全没有这个限制,不论在什么转速下都可以实现精确控制. 电机换向 同上面的理由,由 ...

  6. BLHeli无刷电调 后续

    BLHeli无刷电调 调参介绍 (八元电调) 本人使用某宝8元电调,后续调试问题. 之前使用的集中供电,就是四个电调使用同一个5v电源供电,但是这样有很多问题: 1.集中供电这样在机身里面线乱糟糟的. ...

  7. 无刷电调_新款好盈XR10 PRO G2电调搭载XRAY T4车架简评

    RCFans高级Fans yyc 的作业 随着首批好盈XR10 PRO G2电调发售,这款在模博会备受关注的新品大家都陆续收到.搭载高性能32位M4微处理器.内置电源反接保护电路.双开关设计.可精准调 ...

  8. BLDC有感无刷电动车控制器方案,基于STC12/STM32开发

    BLDC有感无刷电动车控制器方案,基于STC12/STM32开发61299616684285144工控助手0101

  9. 三级无刷交流发电机matlab模型,三级无刷交流发电机调压系统的建模及其仿真分析...

    一.引言本文引用地址:http://www.eepw.com.cn/article/177221.htm 三级式无刷交流同步发电机由副励磁机.励磁机和主发电机组成.主发电机为旋转磁极式同步发电机:交流 ...

  10. esp8266模拟车模航模接收机控制电调驱动电机

    前言:有玩过车模/航模/车模的可能都知道,更换电调,只需要按说明书把口子一接就好了,那么自己用arduino或者单片机又要怎么控制电调来驱动电机呢?这里,我就介绍一下怎么用esp8266来控制电调驱动 ...

最新文章

  1. iOS开发UI篇—UIWindow简单介绍
  2. execute、executeQuery和executeUpdate之间的区别
  3. 自然语言处理技术(NLP)在推荐系统中的应用 原2017.06.29人工智能头条 作者: 张相於,58集团算法架构师,转转搜索推荐部负责人,负责搜索、推荐以及算法相关工作。多年来主要从事推荐系统以及机
  4. 什么是死锁(deadlock)?
  5. java uuid 排序_如何在java中将UUID保存为二进制(16)
  6. P3704-[SDOI2017]数字表格【莫比乌斯反演】
  7. uva 12563——Jin Ge Jin Qu hao
  8. 第一次Sprint总结
  9. 两个getchar,一个getchar,getch的不同点 出现的不同情况
  10. latex 数学公式
  11. win7 启用网络发现
  12. UVA11876 N + NOD (N)【欧拉筛法+前缀和】
  13. Java基础知识回顾--正则表达式
  14. 翻译: 4.2. 从零开始实现多层感知器MLP pytorch
  15. HoloView -- Tabular Datasets
  16. 有限单元法基本原理和数值方法_有限元法基本原理
  17. ps怎么缩放图层大小_PS怎么快速修改图层大小|Adobe Photoshop CS6图层大小尺寸调整--系统之家...
  18. 马斯洛提出动机理论_人做事的动机来自于哪里?--马斯洛需求层次理论解读
  19. 计算机考研落榜了怎么办,如果,你考研落榜了怎么办?
  20. 30线性空间04——子空间的直和、n个子空间的直和、直和分解、直和补

热门文章

  1. iOS Xcode Implicit declaration of function 'callbackBlock' is invalid in C99
  2. MYSQL数据库的数据完整性
  3. (第十一周)规格说明书练习作业——吉林市一日游
  4. 7类数据分析常见的统计陷阱,快来排雷!
  5. 春天:谁是最得意的诗人?
  6. 无缝对接Spark与R:Sparklyr系列—探讨属于数据科学家的Spark
  7. Lesson 05 for Plotting in R for Biologists
  8. fatal error LNK1169: 找到一个或多个多重定义的符号 解决方案
  9. appium 原理解析(转载雷子老师博客)
  10. Insert Delete GetRandom O(1)