航模遥控继电器单通道控制2路继电器开关实现原理解析

航模遥控继电器单通道控制2路继电器开关实现原理解析


航模遥控继电器

在这里插入图片描述
在这里插入图片描述

硬件解析

  • 两路型号为: SRD-05VDC-SL-C 继电器
  • 2个PC817光耦
  • 3个S4,1N5819WS肖特基二极管
  • 2个S8050 NPN型三极管
  • 2个指示灯,用于继电器导通时点亮。
  • 1片STC15W104单片机

功能简介

仅支持5V电压接收机,不能超过5.5否则可能会造成模块损坏.(这么写主要原因是STC15单片机工作电压范围决定的。)

  • 1路舵机信号输入,控制2路电子开关
  • 250V/AC 最大受控电压, 10A电流。
  • 受控端支持 10A 250VAC /10A /30VDC
  • 2路输出(同一时间只能一个继电器动作)
  • 无需校准就能兼容各品牌的遥控设备
  • 三段开关通道/比例通道控制
  • 带蓝色LED指示灯功能。
  • ★ 功能描述
    该远程开关通过遥控器上的某个开关通道远程控制飞机模型上多达2路的电气设备
    本设备无需校准,能准确的兼容各种品牌的遥控设备。
    本设备使用接收机供电。

典型应用

  1. 连接
    将信号输入电缆插入接收机的三段开关通道或者摇杆通道,该通道和遥控器上对应。
    将控制端开关和设备连接。
  2. 触发
    (以油门通道为例)将遥控器上的油门遥杆拨到满油门,一个继电器闭合(即公共端和常开端接线接通,公共端和常闭端断开)。将遥控器上的油门遥杆拨到半油门,两路继电器都不闭合(即公共端和常开端断开,公共端和常闭端接通)。将遥控器上的油门遥杆拨到最小油门,另一个继电器闭合(即公共端和常开端接线接通,公共端和常闭端断开)。
(以三段开关通道为例)将遥控器上的三段开关拨到高位,一个继电器闭合(即公共端和常开端接线接通,公共端和常闭端断开)。将遥控器上的三段开关拨到中位,两路继电器都不动作(即公共端和常开端断开,公共端和常闭端接通)。将遥控器上的三段开关拨到低位,另一个继电器闭合(即公共端和常开端接线接通,公共端和常闭端断开)。

原理图

  • 继电器控制端
    在这里插入图片描述
  • 单片机原理图
    在这里插入图片描述
  • 总的原理图绘制
    在这里插入图片描述
  • 绘制的PCBA板图(单片机供电的地方自己多增加的了一个电容,一个滤除高频的一个滤除低频的)
    在这里插入图片描述

因为这只是自己照着模块绘制的原理图和PCBA板,没有验证就不开元路,免得坑人家,基本的原理图就是这样的,不过市面上在出售的这个模块,感觉还是有很多不足的地方:

  1. 从原理图上可以看出,并没有做到真正的隔离。
  2. 不能处理频率较高输入和输出的开关量信号。
  3. 如果是控制PWM输出,建议使用MOS管,而不是使用继电器。
  • 可能采用的是采集模拟量信号,(当然不排除使用单总线的通讯协议)通过单片机采集到的模拟量来判断是否开启,或开启哪一路或多路开关,模拟量采集具体实现,就需要看程序里面去设定区间值了。

RC接收机收到信号后将PPM或SBUS信号转换后,传到对应每个通道

  • 什么PPM信号

PPM信号是将多个控制通道(一般10个控制通道)集中放在一起调制的信号也就是一个PPM脉冲序列里面包含了多个通道的信息。如下图所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

模型接收机转接控制电动车控制器信号转换器

在这里插入图片描述

采用32位单片机完成信号采集、处理、转换,稳定与速度远超普通8位单片机,输入信号自动识别,无需手动切换,即插即用,状态指示简洁明了,5V供电,支持8通道输出,PWM输出标准范围是在1000-2000us。

兼容:

  • PPM(CPPM)
  • PWM(普通接收机信号)
  • SBUS(包括futaba-R7008SB系列、FrSky等)

功能:

  • 输入PWM信号,同时输出PPM与SBUS信号
  • 输入PPM信号,同时输出PWM与SBUS信号
  • 输入SBUS信号,同时输出PWM与PPM信号

指示灯:

  • 无信号输入时,三个指示灯全灭
  • 输入信号指示灯常亮,输出信号指示灯闪烁
  • 例如:输入PPM信号时,PPM对应指示灯常亮,PWM与SBUS信号指示灯闪烁

通道说明:

  • 1-8通道为PWM信号输入或输出通道
  • 9通道为SBUS信号输入通道或 PPM 信号输入、输出通道
  • 10通道为PPM或SBUS信号输出通道

接线指示:

  • 当1-8通道中任意1个或多个通道输入PWM信号时,对应9通道输出PPM信号,10通道输出 SBUS信号
  • 当9通道输入PPM信号时,对应1-8通道输出PWM信号,10通道输出SBUS信号
  • 当9通道输入SBUS信号时,对应1-8通道输出PWM信号,10通道输出PPM信号
  • 3
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
基于STM32的航模遥控器可以通过SBUS协议来接收来自遥控器的信号,然后通过PWM信号控制L29N电机驱动模块。下面是一个简单的代码示例: ```c #include "stm32f1xx_hal.h" #include "stdio.h" #include "stdlib.h" #define SBUS_BUFFER_SIZE 25 #define PWM_MIN 1000 #define PWM_MAX 2000 #define PWM_MID 1500 UART_HandleTypeDef huart1; uint8_t sbus_buffer[SBUS_BUFFER_SIZE]; uint16_t sbus_channels[18]; void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { static uint8_t buffer_index = 0; if (huart->Instance == USART1) { if (buffer_index == 0 && sbus_buffer[0] != 0x0F) { return; } sbus_buffer[buffer_index++] = huart->Instance->DR; if (buffer_index == SBUS_BUFFER_SIZE) { buffer_index = 0; for (uint8_t i = 0; i < 16; i++) { uint16_t value = sbus_buffer[1 + 2 * i] + (sbus_buffer[2 + 2 * i] << 8); sbus_channels[i] = (value > PWM_MAX) ? PWM_MAX : (value < PWM_MIN) ? PWM_MIN : value; } } } HAL_UART_Receive_IT(&huart1, &sbus_buffer[buffer_index], 1); } int main(void) { HAL_Init(); __HAL_RCC_GPIOC_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_USART1_CLK_ENABLE(); GPIO_InitTypeDef GPIO_InitStruct = {0}; GPIO_InitStruct.Pin = GPIO_PIN_13; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); GPIO_InitStruct.Pin = GPIO_PIN_8; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); huart1.Instance = USART1; huart1.Init.BaudRate = 100000; huart1.Init.WordLength = UART_WORDLENGTH_8B; huart1.Init.StopBits = UART_STOPBITS_1; huart1.Init.Parity = UART_PARITY_NONE; huart1.Init.Mode = UART_MODE_RX; huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart1.Init.OverSampling = UART_OVERSAMPLING_16; HAL_UART_Init(&huart1); HAL_UART_Receive_IT(&huart1, sbus_buffer, 1); TIM_HandleTypeDef htim3; __HAL_RCC_TIM3_CLK_ENABLE(); htim3.Instance = TIM3; htim3.Init.Prescaler = 71; htim3.Init.CounterMode = TIM_COUNTERMODE_UP; htim3.Init.Period = 19999; htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; HAL_TIM_PWM_Init(&htim3); TIM_OC_InitTypeDef sConfigOC = {0}; sConfigOC.OCMode = TIM_OCMODE_PWM1; sConfigOC.Pulse = PWM_MID; sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1); HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1); while (1) { uint16_t throttle = sbus_channels[2]; if (throttle > PWM_MAX) { throttle = PWM_MAX; } else if (throttle < PWM_MIN) { throttle = PWM_MIN; } __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, throttle); } } ``` 这个代码示例中,我们使用了STM32的UART模块来接收来自遥控器的SBUS信号,并将其解析为PWM信号。然后,我们使用STM32的定时器模块来生成PWM信号,并通过L29N电机驱动模块将其输出到电机。在主循环中,我们不断地读取油门通道的PWM值,并将其输出到电机。注意,这个示例中只控制了一个电机,如果需要控制多个电机,需要使用更多的PWM输出通道。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值