黄工无刷电机学习
直播中

费加罗

8年用户 814经验值
私信 关注
[问答]

TCRT5000红外反射传感器与SG90舵机的工作原理

TCRT5000红外反射传感器的工作原理是什么?
SG90舵机的工作原理是什么?

回帖(1)

张婧怡

2021-10-11 10:25:04
  TCRT5000红外反射传感器:
  引脚定义
  D0:TTL开关信号输出
  A0:模拟信号输出(不同距离输出不同的电压,此引脚可以不接)
  工作原理:
  TCRT5000传感器的红外发射二极管不断发射红外线,黑色是不反射红外线的,也就是说循迹模块遇到黑线,模块D0输出高电平,输出指示灯熄灭;
  反之D0输出低电平
  应用范围场景
  黑白线检测,(循迹小车)
  障碍检测,(手扫开关)
  实现代码
  while (1)
  {
  /* USER CODE END WHILE */
  /* USER CODE BEGIN 3 */
  if(GPIO_PIN_RESET==HAL_GPIO_ReadPin(D0_GPIO_Port,D0_Pin))
  {
  printf(“blackrn”);
  }
  if(GPIO_PIN_SET==HAL_GPIO_ReadPin(D0_GPIO_Port,D0_Pin))
  {
  printf(“whitern”);
  }
  HAL_Delay(200);
  }
  SG90舵机:
  引脚定义
  
  工作原理:
  通过定时器PWM控制,给相应的占空比旋转相应角度
  舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围内的角度控制脉冲部分,总间隔为2ms。以180度角度伺服为例,那么对应的控制关系是这样的:
  0.5ms--------------0度;
  1.0ms------------45度;
  1.5ms------------90度;
  2.0ms-----------135度;
  2.5ms-----------180度;
  
  CUBEMX配置
  
  
  实现代码
  // /*舵机参数:f=50hz,t=20ms
  // --------------------------
  // |0 |45 |90 |135|180| 度|
  // -------------------------
  // |0.5 |1.0|1.5|2.0|2.5| 毫秒|
  // --------------------------
  // angle:角度值,0~180
  void Servo_Control(uint8_t angle)
  {
  float temp;
  //占空比值 = 1/9 * 角度 + 5
  temp =(1.0 / 9.0) * angle + 5.0;
  //200脉宽 0.1ms一单位
  //修改占空比
  __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, (uint16_t )temp);
  }
  while (1)
  {
  /* USER CODE END WHILE */
  /* USER CODE BEGIN 3 */
  if(ststus==0)
  {
  i++;
  if(i==180)
  {
  ststus=1;
  }
  }
  else if(ststus==1)
  {
  i--;
  if(i==0)
  {
  ststus=0;
  }
  }
  Servo_Control(i);
  HAL_Delay(1);
  }
举报

更多回帖

发帖
×
20
完善资料,
赚取积分