0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于ACM32F030系列MCU的智能电动牙刷方案

上海航芯 ? 来源:上海航芯 ? 作者:上海航芯 ? 2022-02-18 10:41 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

当代口腔问题频发,让人们越来越重视口腔卫生。传统的刷牙方式,由于个人习惯和刷牙方式的不同,会不同程度地导致牙龈受损,牙菌斑去除不彻底等问题。而电动牙刷设备,基于其相对程序化的刷牙方式,可根据个人口腔特性支持自主选择,调节刷牙力度。而且在刷牙过程中,不需要过多的手部动作,仅需要调节刷牙的角度,更多的清洁工作交付由牙刷本身的特性来完成。方便人们的同时也更能有效的减少口腔问题。

电动牙刷类型

现在市面上电动牙刷品类繁多,从刷头的方式可将其分为两大类型:旋转式和振动式(也叫声波式)。

基于ACM32F030系列MCU的智能电动牙刷方案

图1. 电动牙刷工作方式对比图

旋转式电动牙刷是由电机带动刷头旋转,牙面清洁度高,但牙缝清洁能力薄弱且相较于振动式,更易损伤牙釉质。而振动式,由电机带动刷头进行上下的高频振动,高频摆动的刷头能高效完成洗刷牙齿的动作,可以让牙膏与水的混合物产生大量微小的气泡,气泡爆裂时产生的压力可以更深入牙缝达到深度的清洁效果。

振动式的实现有两种方式,一种由偏心振动电机实现,多用于中低档的电动牙刷方案。该种方式的电动牙刷振动感强,振动无序。另一种则是采用线性电机,业内也称之为磁悬浮电机。

基于ACM32F030系列MCU的智能电动牙刷方案

图2. 磁悬浮电机示意图

磁悬浮电机的优点在于其在工作运行噪声小,机身振感低,振动能量集中,清洁效果佳。因此,本文采用ACM32F030作为主控芯片,基于磁悬浮电机提出一款电动牙刷的设计方案。

设计方案

本文描述的电动牙刷方案,是基于上海航芯ACM32F030系列的MCU进行设计,整体的方案框图如下所示:

基于ACM32F030系列MCU的智能电动牙刷方案

图3. 基于ACM32F030/070电动牙刷设计方案框图

ACM32F0X0 系列是一款支持多种低功耗模式的通用MCU。集成12位1.6 Msps高精度ADC以及比较器、运放、触控按键控制器、段式LCD控制器,内置高性能定时器、多路UART、LPUART、SPI、I2C等丰富的通讯外设,内建AES、TRNG等信息安全模块,支持多种低功耗模式,具有高整合度、高抗干扰、高可靠性的特点。本产品采用ARM Cortex-M0系列内核,最高工作频率64MHz。足以满足一般的电动牙刷方案的需求。

? 人机交互系统

本文论述的设计方案中的人机交互功能是采用简单的LED和按键的方式进行实现。共有1个按键和6个LED。按键需实现设备的开关机以及模式切换功能。设备会根据按键按下时间的长短来判定当前的动作是需要切换模式或是开关机操作。6个LED中有3个用于工作模式指示,最大可支持7种工作模式(2?-1),本设计方案中仅提供了三种模式。另外3个LED用于系统状态指示,包括正常,欠压,充电,充满4种电压状态。

长短按识别程序:

void keyPressHandler(void)
{
  key.isPressed = Key_GetPressValue();
  switch(key.pressState)
  {
    case 0:
      if(key.isPressed)
      {
        key.pressTime = 0;
        key.pressState = 1;
      }
      break;
    case 1:    /*  eliminate jitter  */
      if(key.isPressed)
      {
        if(++key.pressTime > 10)
          key.pressState = 2;
      }
      else
        key.pressState = 0;
      break;
    case 2:    /*  whether long press is existed  */
      if(key.isPressed)
      {
        if(++key.pressTime > LONG_PRESS_TIME)
          key.pressState = 3;
      }
      else
      {
        if(key.shortPressHandler != NULL)
          key.shortPressHandler();
        else
          DEBUG_KEY("have no short press handler!!\r\n");
        key.pressState = 0;
      }
      break;
    case 3:
      if(key.longPressHandler != NULL)
        key.longPressHandler();
      else
        DEBUG_KEY("have no long press handler!!\r\n");
      key.pressState = 4;
      break;
    case 4:    /*  wait for releasing key  */
      if(key.isPressed == 0)
        key.pressState = 0;
      break;
  }
}

工作指示程序:

void appMotorModeLedControl(void)
{
  static uint8_t state = 0xFF;
  
  if(sys.status == SYSTEM_RUNMODE)
  {
    if(state != sys.motorStatus)
    {
      state = sys.motorStatus;
      if(sys.motorStatus == 0)
      {
        ModeLed_Select(MODE_LED_1, MODE_LED_ON);
      }
      else if(sys.motorStatus == 1)
      {
        ModeLed_Select(MODE_LED_2, MODE_LED_ON);
      }
      else if(sys.motorStatus == 2)
      {
        ModeLed_Select(MODE_LED_3, MODE_LED_ON);
      }
    }
  }
  else
  {
    state = 0xFF;
    ModeLed_Select(MODE_LED_UNKNOWN, MODE_LED_OFF);
  }
}

系统指示程序:

void appSysLedController(void)
{
  static uint8_t led_state = 0xFF;
  
  if(led_state != led.state)
  {
    led_state = led.state;
    if(led.state == LED_OFF)
    {
      led.duty = 0;
      PowerLed_Select(PWR_LED_UNKNOWN, PWR_LED_OFF);
      PWM_dutySet(PWM_LED, led.duty);
    }
    else if(led.state == LED_TWINKLE)    // low power warning
    {
      led.duty = 0;
      PowerLed_Select(PWR_LED_R, PWR_LED_ON);
      PWM_dutySet(PWM_LED, led.duty);
    }
    else if(led.state == LED_ON)
    {
      led.duty = 0;
      PowerLed_Select(PWR_LED_R, PWR_LED_OFF);
      PWM_dutySet(PWM_LED, led.duty);
    }
    else if(led.state == LED_BREATHE)
    {
      if(led.duty == PWM_DUTY_MAX)
        led.dir = LED_FADE;
      else
        led.dir = LED_BRIGHTER;
    }
    else
      led.state = LED_OFF;
  }
  else{
    if(led.state == LED_BREATHE)
    {
      PowerLed_Select(PWR_LED_UNKNOWN, PWR_LED_OFF);
      if(led.dir == LED_BRIGHTER)
      {
        if(led.duty < PWM_DUTY_MAX)
          led.duty += BREATHE_INTERVAL;
        else
        {
          if(++led.cnt > BREATHE_HOLD_TIME)
          {
            led.dir = LED_FADE;
            led.cnt = 0;
          }
        }
      }
      else
      {
        if(led.duty > BREATHE_INTERVAL)
          led.duty -= BREATHE_INTERVAL;
        else
        {
          led.duty = 0;
          if(++led.cnt > BREATHE_HOLD_TIME)
          {
            led.dir = LED_BRIGHTER;
            led.cnt = 0;
          }
        }
      }
      PWM_dutySet(PWM_LED, led.duty);
    }
  }
}

电源及功耗管理

电动牙刷产品的续航能力也是一直备受人们关注。本设计方案在低功耗的处理,摒弃了一般的休眠方式,直接采用关闭电源来避免设备在不工作状态下的设备功耗。整个设备的供电线路共有三种,如下图所示。电动牙刷产品的续航能力也是一直备受人们关注。本设计方案在低功耗的处理,摒弃了一般的休眠方式,直接采用关闭电源来避免设备在不工作状态下的设备功耗。整个设备的供电线路共有三种,如下图所示。

基于ACM32F030系列MCU的智能电动牙刷方案

图4. 基于ACM32F030的电动牙刷供电电路(部分)

正常情况下,设备不在充电时,VCHARG电压为0,需要关机时,按键弹开,PWR_KEY为低电平,芯片内部程序也将PWR_LOCK拉低,此时Q2关断,Q2的D极电压同VBAT,从而引起Q1断开,VCCIN断电,系统关机。而开机时,按键按下,PWR_KEY先被拉至高电平,Q2导通,Q2的D极拉低,则Q1导通,设备供电,程序检测到开机,拉高PWR_LOCK,此时,尽管按键弹开,PWR_LOCK仍然会提供Q2的导通电压,系统正常工作。充电时,Q2的导通电压会由VCHARG提供,系统保持在工作状态,此时会程序会检测系统的运行状态,在不需要启动时,进入休眠状态。

电源管理部分,则通过锂电池充电芯片检测是否进行充电,同时通过一路ADC监测电池电压。为减少芯片工作负担,电池电压的欠压和满电通过ADC门限电压功能来实现。ADC的门限电压初始化程序如下:

// ADC Watchdog config
  ADC_WDT_Handle.ITMode      = ENABLE;
  ADC_WDT_Handle.WatchdogMode  = ADC_ANALOGWATCHDOG_RCH_ALL;
  ADC_WDT_Handle.Channel      = channel;
  ADC_WDT_Handle.HighThreshold  = (HIGH_POWER_THS * 0x0FFF) / VREF ;
  ADC_WDT_Handle.LowThreshold  = (LOW_POWER_THS * 0x0FFF) / VREF ; 

智能管理系统

智能管理系统分为两个部分,一部分为上位机的数据处理,由云端处理,另一部分是电动牙刷数据记录和传输。整个的实现过程可简述为,电动牙刷通过惯性测量仪QMI8658C记录电动牙刷在使用过程中的运动轨迹,并实时将该部分数据以及整个系统的工作参数通过BLE发送到手机,手机连接云端,并将数据传输至云平台进行数据解析,分析用户刷牙的健康指数,并将相关建议反馈至手机。电动牙刷作为数据采集设备,需上报实时数据,结构如下:

typedef __packed struct{
  uint32_t time;          // This shows the relative time of each activity
  uint16_t location[3];        // This shows the acceleration of brush when using
  uint16_t pressure;        // This is the force between tooth and brush
  uint16_t angle[3];        // This shows the angle between brush
  
}BLE_RealTimeDataDef;        // This define the data structure about brushing tooth in real time

其中,location为三轴的加速度,angle为三轴的角度。定时上传电动牙刷的相关实时数据。上位机根据一系列点位数据进行建模计算可得到整个牙刷的运动轨迹。

电机驱动系统

电动牙刷的驱动系统是通过H桥芯片MX612E进行处理,MX612E的输入端连接芯片的PWM互补输出端口。如下图所示:

基于ACM32F030系列MCU的智能电动牙刷方案

图5. 电动牙刷电机驱动电路

本设计中的电动牙刷采用磁悬浮电机,内部构造和直流无刷电机相似,但相比于直流无刷电机,其仅有两相输入端。这也就造成该电机在通电后,正负极不变的情况下,电机旋转至某一角度形成平衡后将会停止旋转。切换正负极后则又会在另一个方向旋转形成平衡。在电动牙刷的正常工作中,是通过两相的正负极切换来使电机正反旋转从而带动刷头做高频运动的。因此,其电机速度的控制依靠于输出PWM的输出频率而非占空比。控制代码如下:

void PWM_freqSet(uint8_t PWMx, uint16_t freq)
{
  uint32_t arr;
  if(IS_PWM_INSTANCE(PWMx) == 0)  return;
  if(freq == 0)
  {
    TIM15->ARR = 0;
    return;
  }
  if(freq > PWM_FREQ_MAX)  freq = PWM_FREQ_MAX;
  if(freq < PWM_FREQ_MIN) freq = PWM_FREQ_MIN;
  arr = (PWM_TIMER_FRE / freq);
  if(PWMx == PWM_MOTOR)
  {
    TIM15->ARR = arr-1;
    TIM15->CCR1 = arr / 2;
  }
}

上例中,PWM的占空比为50%,使得在一个PWM周期内,电机可完成一次往返运动。

本文提出的设计方案的主旨是将电动牙刷智能化,在提高人们刷牙效率的同时,也能达到进一步保证人们刷牙质量的目的。通过电动牙刷对惯性的数据采集,实时上传至云端,并对数据进行处理,恢复用户的刷牙轨迹,给出合理建议,纠正用户不良的刷牙习惯。磁悬浮电机的高频振动也能有效清除口腔污渍。岁月恒久远,牙齿永相随 。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    18074

    浏览量

    370885
  • 设备
    +关注

    关注

    2

    文章

    4702

    浏览量

    72023
  • 电动牙刷
    +关注

    关注

    7

    文章

    495

    浏览量

    23165
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    广州唯创电子WT2605C音频蓝牙语音芯片在电动牙刷的应用方案介绍

    在口腔护理智能化浪潮中,广州唯创电子推出革命性电动牙刷解决方案——创新融合蓝牙版WT2605C、MP3版WT2003H、语音芯片版WTV890三大核心芯片,通过多维度功能集成与语音深度定制能力,为
    的头像 发表于 07-09 08:42 ?170次阅读
    广州唯创电子WT2605C音频蓝牙语音芯片在<b class='flag-5'>电动牙刷</b>的应用<b class='flag-5'>方案</b>介绍

    基于CW32L010单片机的扫振一体电动牙刷应用方案

    大幅摆动实现了高效的刷牙方式,这种设计能够更高效地清洁牙齿和牙龈沟,为用户带来全新的洁牙体验?。本文将介绍武汉芯源半导体CW32L010单片机在扫振一体电动牙刷上的应用方案。 图1:电动牙刷
    发表于 06-17 09:38

    MOS管在电动牙刷中的应用分析

    电动牙刷的电机驱动与电源管理系统中,MOS管作为核心功率开关器件,直接决定了产品的效率、续航及可靠性。合科泰电子针对旋转式与声波式电动牙刷的不同需求,通过SGT工艺MOS管(如HKTQ50N03
    的头像 发表于 06-06 16:51 ?312次阅读
    MOS管在<b class='flag-5'>电动牙刷</b>中的应用分析

    电动牙刷品控:为何必须气密性检测?

    电动牙刷作为日常高频使用的个人护理产品,其防水性能直接关系到用户体验和产品寿命。然而,许多消费者曾遇到过电动牙刷进水、短路甚至漏电的情况,这些问题往往源于生产环节的气密性检测疏漏。那么
    的头像 发表于 05-17 11:37 ?260次阅读
    <b class='flag-5'>电动牙刷</b>品控:为何必须气密性检测?

    避坑指南:选购电动牙刷气密检测仪的5个致命误区

    电动牙刷行业,“防水性能”是决定产品口碑的核心指标之一。一支标称IPX7防水的电动牙刷若因气密性不达标导致进水短路,轻则引发消费者投诉,重则触发大规模召回。而电动牙刷气密检测仪作为产品质量
    的头像 发表于 03-25 15:44 ?377次阅读
    避坑指南:选购<b class='flag-5'>电动牙刷</b>气密检测仪的5个致命误区

    串口自主更新NV400F电动牙刷语音IC方案智能洁齿新风尚

    九芯电子NV400F语音芯片方案,凭串口自主更新、低功耗、高集成度等特性,助力电动牙刷升级至“口腔健康管家”,提升用户体验与品牌价值,解决行业痛点,抢占智能
    的头像 发表于 02-25 16:46 ?398次阅读

    探寻大研智造激光焊锡机:为智能电动牙刷焊接注入新动力

    。传统焊接技术在面对智能电动牙刷复杂的 PCB 焊接需求时,面临诸多挑战。大研智造激光焊锡机凭借其先进技术与创新理念,为智能电动牙刷 PCB 焊接提供了卓越解决
    的头像 发表于 01-17 13:58 ?432次阅读

    电动牙刷的充电接口介绍

    电动牙刷与普通牙刷最大的区别就在于一个是电动一个是手动,既然是靠电源驱动的电器,自然避免不了充电问题。而各种样式的电动牙刷采用的充电接口也有所不同,但大部分都是Type-c和USB充电
    的头像 发表于 01-15 09:10 ?1607次阅读
    <b class='flag-5'>电动牙刷</b>的充电接口介绍

    电动牙刷的分类有哪些

    在1945年由瑞士philippe-Guyloog牙医,发明了第一支有线电动牙刷
    的头像 发表于 01-14 09:53 ?1220次阅读
    <b class='flag-5'>电动牙刷</b>的分类有哪些

    基于NV128H语音提示芯片的电动牙刷应用设计方案

    电动牙刷通过NV128H语音芯片实现智能语音提示,提升使用体验。芯片支持多种语音格式,可个性化定制语音内容。九芯电子致力于智能化电子产品研发,注重技术创新与用户体验。
    的头像 发表于 12-24 13:23 ?664次阅读

    矽睿霍尔开关在电动牙刷上的应用

    不仅揭示了技术如何嵌入生活,也揭示了微观世界中精确感知的巨大潜能。 让我们从电动牙刷的“智能化”谈起。这种产品的早期版本只是简单的机械振动装置,用户的体验更多依赖于使用习惯,几乎没有数据反馈或智能控制。市场
    的头像 发表于 12-06 18:11 ?764次阅读

    新一代iMask 3全系列电动牙刷介绍

    在追求品质生活的道路上,口腔护理的重要性日益凸显。今天,我们将为大家隆重介绍新一代 iMask 3 全系列电动牙刷,它以卓越的性能、时尚的外观和先进的科技,为用户口腔健康带来全新的呵护
    的头像 发表于 12-05 11:27 ?874次阅读

    拆解电动牙刷

    今天拆解一款 这是粉丝朋友很久之前寄给我的一个损坏的电动牙刷。 这是个声波电动牙刷,手柄正中间有一个开机按键。 手柄中部是几个模式显示指示灯和充电状态指示灯。 尾部是无线充电插槽,这个电动牙刷
    的头像 发表于 11-20 09:46 ?5474次阅读
    拆解<b class='flag-5'>电动牙刷</b>

    智能电动牙刷的工作原理

    智能电动牙刷逐渐成为很多年轻人的新宠,作为一款消费电子产品,您知道电动牙刷是怎么工作吗,本文带您深入了解电动牙刷工作原理。
    的头像 发表于 09-12 10:37 ?2614次阅读

    解锁电动牙刷方案新玩法!宇凡微联合前瞻研究院发布业内首份《电动牙刷伺服电机洞察白皮书》

    宇凡微联合前瞻研究院耗时三个月对电动牙刷方案开发进行了深度调研,共同发布了《电动牙刷行业洞察白皮书》,白皮书从产业变革角度剖析了电动牙刷伺服电机关键技术迭代过程,结合产业大数据和多品牌
    的头像 发表于 09-06 14:45 ?758次阅读
    解锁<b class='flag-5'>电动牙刷</b><b class='flag-5'>方案</b>新玩法!宇凡微联合前瞻研究院发布业内首份《<b class='flag-5'>电动牙刷</b>伺服电机洞察白皮书》