軟硬件全(quan)開(kai)源(yuan),航芯方(fang)案分(fen)享 | 智(zhi)能電動牙刷方(fang)案
當代口(kou)(kou)腔問題(ti)頻(pin)發,讓人(ren)們越來越重視口(kou)(kou)腔衛生。傳統的刷(shua)(shua)(shua)(shua)牙(ya)(ya)方(fang)式,由于(yu)(yu)個人(ren)習(xi)慣(guan)和刷(shua)(shua)(shua)(shua)牙(ya)(ya)方(fang)式的不同,會不同程度(du)地(di)導致牙(ya)(ya)齦(yin)受損,牙(ya)(ya)菌斑去除不徹(che)底等問題(ti)。而電動(dong)牙(ya)(ya)刷(shua)(shua)(shua)(shua)設備,基于(yu)(yu)其相對程序化(hua)的刷(shua)(shua)(shua)(shua)牙(ya)(ya)方(fang)式,可根據個人(ren)口(kou)(kou)腔特(te)性支持自主選擇(ze),調節(jie)刷(shua)(shua)(shua)(shua)牙(ya)(ya)力度(du)。而且在刷(shua)(shua)(shua)(shua)牙(ya)(ya)過(guo)程中,不需要過(guo)多的手部動(dong)作(zuo),僅需要調節(jie)刷(shua)(shua)(shua)(shua)牙(ya)(ya)的角度(du),更多的清潔(jie)工作(zuo)交付由牙(ya)(ya)刷(shua)(shua)(shua)(shua)本身的特(te)性來完成。方(fang)便(bian)人(ren)們的同時也更能(neng)有效的減少口(kou)(kou)腔問題(ti)。
電動牙刷類型
現在市面(mian)上電動牙刷品(pin)類(lei)繁多,從刷頭的方式可將其分為兩(liang)大類(lei)型:旋轉(zhuan)式和振(zhen)動式(也叫(jiao)聲波式)。參考
圖(tu)(tu)1. 電動(dong)牙刷工作方式對(dui)比(bi)圖(tu)(tu)
旋轉(zhuan)(zhuan)式(shi)(shi)電(dian)(dian)動(dong)(dong)牙(ya)刷(shua)(shua)是由(you)電(dian)(dian)機帶動(dong)(dong)刷(shua)(shua)頭(tou)(tou)旋轉(zhuan)(zhuan),牙(ya)面清潔度高(gao),但牙(ya)縫清潔能力薄弱且(qie)相較于振動(dong)(dong)式(shi)(shi),更易損傷牙(ya)釉質。而(er)振動(dong)(dong)式(shi)(shi),由(you)電(dian)(dian)機帶動(dong)(dong)刷(shua)(shua)頭(tou)(tou)進行上下的(de)(de)高(gao)頻振動(dong)(dong),高(gao)頻擺(bai)動(dong)(dong)的(de)(de)刷(shua)(shua)頭(tou)(tou)能高(gao)效完成洗(xi)刷(shua)(shua)牙(ya)齒的(de)(de)動(dong)(dong)作(zuo),可以(yi)(yi)讓(rang)牙(ya)膏與(yu)水的(de)(de)混合物產生大量微小的(de)(de)氣泡,氣泡爆裂時產生的(de)(de)壓(ya)力可以(yi)(yi)更深入牙(ya)縫達到深度的(de)(de)清潔效果。
振(zhen)(zhen)動(dong)(dong)式的實(shi)現有兩種(zhong)方(fang)式,一種(zhong)由偏心振(zhen)(zhen)動(dong)(dong)電(dian)機(ji)實(shi)現,多(duo)用(yong)于(yu)中低檔的電(dian)動(dong)(dong)牙(ya)刷方(fang)案。該種(zhong)方(fang)式的電(dian)動(dong)(dong)牙(ya)刷振(zhen)(zhen)動(dong)(dong)感(gan)強,振(zhen)(zhen)動(dong)(dong)無序。另(ling)一種(zhong)則(ze)是采用(yong)線性(xing)電(dian)機(ji),業內也稱之為磁懸浮電(dian)機(ji)。
圖(tu)(tu)2. 磁懸浮(fu)電機示意圖(tu)(tu)
磁(ci)懸浮(fu)電(dian)機(ji)的優(you)點在(zai)于其在(zai)工作運行噪聲小,機(ji)身振感低,振動能量(liang)集中,清潔(jie)效果佳。因此,本(ben)文采用ACM32F030作為(wei)主控芯片(pian),基(ji)于磁(ci)懸浮(fu)電(dian)機(ji)提出一款電(dian)動牙刷的設計方(fang)案。
設計(ji)方案
本文描述的電動(dong)牙刷方案,是基于上海航芯ACM32F030系列(lie)的MCU進(jin)行設計,整(zheng)體(ti)的方案框圖如下所示(shi):
圖(tu)3. 基于ACM32F030/070電動牙刷(shua)設計(ji)方案框圖(tu)
ACM32F0X0 系(xi)列(lie)是一款支持多種(zhong)低功耗(hao)模(mo)式的通(tong)用(yong)MCU。集(ji)成12位1.6 Msps高精(jing)度ADC以及比較器(qi)、運放(fang)、觸控(kong)按鍵(jian)控(kong)制(zhi)(zhi)器(qi)、段(duan)式LCD控(kong)制(zhi)(zhi)器(qi),內置高性能定(ding)時器(qi)、多路UART、LPUART、SPI、I2C等豐富(fu)的通(tong)訊(xun)外(wai)設,內建AES、TRNG等信(xin)息安全模(mo)塊,支持多種(zhong)低功耗(hao)模(mo)式,具(ju)有(you)高整合度、高抗干擾、高可(ke)靠(kao)性的特點。本產品采(cai)用(yong)ARM Cortex-M0系(xi)列(lie)內核,最高工作頻(pin)率64MHz。足(zu)以滿足(zu)一般的電動牙刷方案的需求。
掃碼即可立即購買ACM32F070KBU7
備注:ACM32F030和070軟硬件兼容
掃碼即可立即購買開發板
軟(ruan)硬件下(xia)(xia)載(zai)鏈接如下(xia)(xia):
? 人機交互系統
本(ben)文論述的(de)(de)(de)設計方(fang)案(an)中(zhong)的(de)(de)(de)人機交互功能(neng)是(shi)采用簡單的(de)(de)(de)LED和按鍵(jian)(jian)的(de)(de)(de)方(fang)式(shi)(shi)進行實(shi)現(xian)。共有1個按鍵(jian)(jian)和6個LED。按鍵(jian)(jian)需(xu)實(shi)現(xian)設備的(de)(de)(de)開關機以及模(mo)(mo)式(shi)(shi)切(qie)換功能(neng)。設備會根據按鍵(jian)(jian)按下(xia)時間的(de)(de)(de)長短(duan)來判定當前的(de)(de)(de)動作(zuo)是(shi)需(xu)要切(qie)換模(mo)(mo)式(shi)(shi)或(huo)是(shi)開關機操作(zuo)。6個LED中(zhong)有3個用于工作(zuo)模(mo)(mo)式(shi)(shi)指(zhi)示(shi),最大可(ke)支持7種(zhong)工作(zuo)模(mo)(mo)式(shi)(shi)(23-1),本(ben)設計方(fang)案(an)中(zhong)僅提供了(le)三種(zhong)模(mo)(mo)式(shi)(shi)。另外3個LED用于系統狀態指(zhi)示(shi),包括正常,欠(qian)壓(ya),充電,充滿4種(zhong)電壓(ya)狀態。
長(chang)短按識別程序:
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); } }
系(xi)統指示程(cheng)序(xu):
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); } } }
? 電源及功耗管理
電動牙刷產品的(de)(de)(de)續(xu)航能力也是(shi)一(yi)直備(bei)受人們關注。本設(she)計方案在(zai)低功(gong)(gong)耗的(de)(de)(de)處理,摒棄了(le)一(yi)般的(de)(de)(de)休眠方式,直接采(cai)用關閉電源來避免(mian)設(she)備(bei)在(zai)不(bu)工作狀態下(xia)的(de)(de)(de)設(she)備(bei)功(gong)(gong)耗。整(zheng)個(ge)設(she)備(bei)的(de)(de)(de)供電線(xian)路共有(you)三種,如下(xia)圖(tu)所示。
圖4. 基于ACM32F030的電動牙刷(shua)供電電路(部分)
正常(chang)情況下,設備(bei)不(bu)在充(chong)電時(shi)(shi),VCHARG電壓(ya)為(wei)0,需(xu)(xu)要(yao)關(guan)機時(shi)(shi),按(an)(an)鍵彈開(kai),PWR_KEY為(wei)低(di)(di)電平(ping),芯片內部程序(xu)(xu)也將PWR_LOCK拉(la)低(di)(di),此時(shi)(shi)Q2關(guan)斷(duan)(duan),Q2的(de)(de)D極電壓(ya)同VBAT,從而引(yin)起Q1斷(duan)(duan)開(kai),VCCIN斷(duan)(duan)電,系(xi)統關(guan)機。而開(kai)機時(shi)(shi),按(an)(an)鍵按(an)(an)下,PWR_KEY先被拉(la)至高電平(ping),Q2導(dao)(dao)通,Q2的(de)(de)D極拉(la)低(di)(di),則Q1導(dao)(dao)通,設備(bei)供電,程序(xu)(xu)檢測(ce)到開(kai)機,拉(la)高PWR_LOCK,此時(shi)(shi),盡(jin)管(guan)按(an)(an)鍵彈開(kai),PWR_LOCK仍然會(hui)提供Q2的(de)(de)導(dao)(dao)通電壓(ya),系(xi)統正常(chang)工(gong)作。充(chong)電時(shi)(shi),Q2的(de)(de)導(dao)(dao)通電壓(ya)會(hui)由(you)VCHARG提供,系(xi)統保持在工(gong)作狀態,此時(shi)(shi)會(hui)程序(xu)(xu)會(hui)檢測(ce)系(xi)統的(de)(de)運行狀態,在不(bu)需(xu)(xu)要(yao)啟動時(shi)(shi),進入休眠狀態。
電(dian)源管理(li)部(bu)分,則通過鋰電(dian)池(chi)充(chong)電(dian)芯(xin)片檢測(ce)是否(fou)進行充(chong)電(dian),同時通過一路ADC監測(ce)電(dian)池(chi)電(dian)壓(ya)。為減少芯(xin)片工作負擔,電(dian)池(chi)電(dian)壓(ya)的(de)(de)欠壓(ya)和滿電(dian)通過ADC門限(xian)電(dian)壓(ya)功(gong)能來實(shi)現(xian)。ADC的(de)(de)門限(xian)電(dian)壓(ya)初始化程序如下:
// 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 ;
? 智能管(guan)理(li)系統
智能管理系統分(fen)(fen)(fen)為(wei)(wei)兩個(ge)部(bu)分(fen)(fen)(fen),一(yi)部(bu)分(fen)(fen)(fen)為(wei)(wei)上(shang)位機(ji)的(de)數(shu)(shu)(shu)據處理,由云端處理,另(ling)一(yi)部(bu)分(fen)(fen)(fen)是電動牙(ya)(ya)刷(shua)數(shu)(shu)(shu)據記錄(lu)和傳輸。整個(ge)的(de)實(shi)現(xian)過(guo)(guo)程可簡述為(wei)(wei),電動牙(ya)(ya)刷(shua)通過(guo)(guo)慣性(xing)測量儀QMI8658C記錄(lu)電動牙(ya)(ya)刷(shua)在(zai)使用(yong)過(guo)(guo)程中(zhong)的(de)運動軌跡,并實(shi)時(shi)將該部(bu)分(fen)(fen)(fen)數(shu)(shu)(shu)據以及整個(ge)系統的(de)工作(zuo)參數(shu)(shu)(shu)通過(guo)(guo)BLE發送到手機(ji),手機(ji)連接(jie)云端,并將數(shu)(shu)(shu)據傳輸至云平臺進行數(shu)(shu)(shu)據解(jie)析(xi),分(fen)(fen)(fen)析(xi)用(yong)戶刷(shua)牙(ya)(ya)的(de)健康指(zhi)數(shu)(shu)(shu),并將相關建議反饋(kui)至手機(ji)。電動牙(ya)(ya)刷(shua)作(zuo)為(wei)(wei)數(shu)(shu)(shu)據采(cai)集設備,需上(shang)報實(shi)時(shi)數(shu)(shu)(shu)據,結構(gou)如下:
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
其(qi)中,location為(wei)三(san)軸的(de)加速度,angle為(wei)三(san)軸的(de)角(jiao)度。定時(shi)上(shang)傳電(dian)動(dong)牙刷的(de)相關實時(shi)數據(ju)。上(shang)位機根據(ju)一系列點位數據(ju)進(jin)行建模計算可得(de)到整個牙刷的(de)運(yun)動(dong)軌跡(ji)。
? 電機驅動系(xi)統
電動(dong)牙刷的驅(qu)動(dong)系統是通過H橋芯(xin)片(pian)MX612E進行處理,MX612E的輸入端連接芯(xin)片(pian)的PWM互補輸出端口。如下圖所示(shi):
圖5. 電動(dong)牙刷(shua)電機(ji)驅動(dong)電路
本設(she)計中的(de)(de)電(dian)動(dong)牙(ya)刷(shua)采用磁懸浮(fu)電(dian)機,內部(bu)構(gou)造和直流無刷(shua)電(dian)機相似,但相比于(yu)(yu)直流無刷(shua)電(dian)機,其(qi)僅(jin)有兩相輸(shu)(shu)入端。這也就造成該電(dian)機在通電(dian)后,正負(fu)極不變的(de)(de)情(qing)況下,電(dian)機旋(xuan)轉(zhuan)至某一角度形(xing)成平衡(heng)后將(jiang)會停止旋(xuan)轉(zhuan)。切換正負(fu)極后則又(you)會在另(ling)一個方(fang)向(xiang)旋(xuan)轉(zhuan)形(xing)成平衡(heng)。在電(dian)動(dong)牙(ya)刷(shua)的(de)(de)正常工作中,是(shi)通過(guo)兩相的(de)(de)正負(fu)極切換來使電(dian)機正反旋(xuan)轉(zhuan)從而(er)帶動(dong)刷(shua)頭做高頻運動(dong)的(de)(de)。因(yin)此,其(qi)電(dian)機速度的(de)(de)控(kong)制(zhi)依靠(kao)于(yu)(yu)輸(shu)(shu)出PWM的(de)(de)輸(shu)(shu)出頻率而(er)非(fei)占空比。控(kong)制(zhi)代碼如下:
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的占空(kong)比為(wei)50%,使得(de)在一個PWM周期內,電(dian)機可(ke)完(wan)成一次往返運動。
本文(wen)提(ti)出(chu)的設(she)計方案的主旨是將電(dian)動牙刷智(zhi)能化,在提(ti)高(gao)人們刷牙效率的同(tong)時,也能達到進一步保證人們刷牙質(zhi)量的目(mu)的。通過電(dian)動牙刷對(dui)慣性(xing)的數據采(cai)集,實時上傳至云端,并(bing)對(dui)數據進行(xing)處理(li),恢復用(yong)(yong)戶的刷牙軌跡(ji),給出(chu)合理(li)建議,糾正用(yong)(yong)戶不良的刷牙習慣。磁懸(xuan)浮(fu)電(dian)機(ji)的高(gao)頻振動也能有效清除(chu)口腔污漬。歲月恒(heng)久遠,牙齒永(yong)相隨 ^-^。
上海航芯(xin) · 原廠(chang)直連: