学习目标

  1. 控制马达震动

    学习内容

    原理图

    57.png

    控制分析

    S8050 NPN三极管特性

    NPN型三极管的工作原理是基于PN结和PNP型晶体管的工作原理。
    当外加正向电压时,发射区的P型半导体被注入少量的N型载流子(电子),这些电子被加速并向基区移动。在基区,电子与空穴结合,从而减少了空穴的浓度。当基区浓度低于发射区浓度时,电子会进一步扩散到集电区,导致集电区产生电流。
    当外加反向电压时,PN结会被反向偏置。此时,电子和空穴被吸引到PN结中心,从而阻止了电流的流动。
    58.png
    B: base, 基极。(理解:基于/根据 这个条件做什么事情)
    E: emitter, 发射极。(理解:发射端,入口)
    C: collector, 集电极。(理解:收集电的区域,用电的器件在这个区域)
    NPN型三极管,C极为输入端,E极为输出端,B极为控制端
    B极 为高电平时,C极到E极的电路导通。
    B极 为低电平时,E极到C极的电路断开。

    震动控制

    通过P0.1引脚控制马达震动。

功能设计

实现震动马达的震动。

  1. #include "Config.h"
  2. #include "GPIO.h"
  3. #include "Delay.h"
  4. #define MOTOR P01
  5. void GPIO_config(void) {
  6. GPIO_InitTypeDef GPIO_InitStructure; //结构定义
  7. GPIO_InitStructure.Pin = GPIO_Pin_1; //指定要初始化的IO,
  8. GPIO_InitStructure.Mode = GPIO_OUT_PP; //指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
  9. GPIO_Inilize(GPIO_P0, &GPIO_InitStructure);//初始化
  10. }
  11. int main() {
  12. int i;
  13. GPIO_config();
  14. EA = 1;
  15. while(1) {
  16. MOTOR = 1;
  17. delay_ms(250);
  18. delay_ms(250);
  19. delay_ms(250);
  20. delay_ms(250);
  21. MOTOR = 0;
  22. delay_ms(250);
  23. delay_ms(250);
  24. delay_ms(250);
  25. delay_ms(250);
  26. }
  27. }

实现的是1秒钟控制一次马达震动。

练习题

  1. 实现震动马达震动
  2. 通过串口控制马达的震动和停止