這裏所說的手機馬達,主要是指應用到手機上的震動小馬達,其主要作用便是讓手機產生震動效果。
常用的手機震動馬達有三種:
1.圓柱形震動馬達
2.扁平鈕釦式震動馬達
3.線性馬達
其中扁平馬達尺寸規格如下:(直徑+厚度,如08表示直徑爲8MM,27表示厚度爲2.7MM):
0827、0830、0834 1020、1027、1030、1034 1227、1234
圓柱馬達尺寸規格如下:(長x寬x高):
11x4.5x3.4mm ; 11x4.3x4.5mm ; 12x4.5x4.5mm ;13x4.4x4.5mm
我們以常用的1027(直徑10mm,厚度2.7mm)扁平馬達爲例,其爆炸圖如下:
直流電流通過電刷和換向器之間的滑動接觸使得電流流入線圈。通電線圈在定子組件形成的永久磁場中切割磁力線產生電磁力,進而推動轉子發生轉動:
由於轉子上安裝了一質量偏心的振子,轉子質量的重心偏離軸的中心,轉子在轉動過程中重心不停的變動,故而產生了震動:
TB上很多店銷售扁平手機馬達,實物如下:
其參數:
額定電壓: 3.0V DC
使用電壓範圍: 2.5~4.0V DC
旋轉方向: 任意方向
使用環境: -20℃~+60℃
保存環境: -30℃~+70℃
額定轉速: 12000±2500RPM Min
額定電流: 70mA Max
起動電流: 90mA Max
起動電壓: 2.3V DC Max
在實際應用中,我們通過MCU的GPIO管腳(MOTOR_CTRL)來控制外部MOS管,進而驅動該震動馬達,參考電路如下:
MOTOR_CTRL = High, 馬達轉動
MOTOR_CTRL = Low, 馬達停止
實現 循環震動1.5s、停止0.5s,示例代碼如下:
int cnt = 0;
gpio_pad_select_gpio(23);
gpio_set_direction(23, GPIO_MODE_OUTPUT);
while(1)
{
printf("cnts: %d\n", cnt++);
printf("set GPIO23: 1 \n");
gpio_set_level(23, 1);
vTaskDelay(1500 / portTICK_RATE_MS);
printf("set GPIO23: 0 \n");
gpio_set_level(23, 0);
vTaskDelay(500 / portTICK_RATE_MS);
}