『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: sorrypqa

[求助] 有大佬知道ESPHome如何输出50Hz的SPWM信号驱动H桥吗??

[复制链接]
回帖奖励 8 金钱 回复本帖可获得 2 金钱奖励! 每人限 5 次

50

主题

1309

帖子

4992

积分

论坛DIY达人

积分
4992
金钱
3683
HASS币
20
 楼主| 发表于 2023-6-26 11:39:25 | 显示全部楼层
本帖最后由 sorrypqa 于 2023-6-26 11:56 编辑

非常感谢大佬指教,像下面创建一个osc_template的二进制输出模板来控制H桥,osc_template开关时,H桥能同步开关,但H桥开关时,osc_template模板无法同步,我不懂怎么用lambda来获取H桥的开关状态来更新osc_template模板

因为物理按键只能直接控制H桥,无法翻转控制osc_template,没有toggle可用

SNAG-2023-6-26_0002.png


fan: #速度风扇组件
  - platform: speed
    id: Variable_speed_fan
    output: speed_fan_template
    name: "${friendly_name}_fan"
    speed_count: 10 #设置速度级别的数量,该值用于计算每个速度的百分比,同时允许输出中的增量为 1%
    restore_mode: ALWAYS_OFF #启动时将风扇初始化为OFF。
    oscillation_output: osc_template ##摇头开关
#    direction_output: osc_template ##正反转开关可并在一起.在hk中显示在一起/out输出根据需要修改.本例子指向了同功
    on_speed_set: #每次更改风扇速度时激活此触发器
      - lambda: !lambda |-
          if (id(Variable_speed_fan).speed == 2) {
          }

    on_turn_off: #关闭风扇时激活此触发器
      - then:
        - output.turn_off: power_led
        - output.turn_off: speed1_led
        - output.turn_off: speed2_led
        - output.turn_off: speed3_led
        - output.turn_off: osc_template
        - fan.turn_off: oscillation_out
    on_turn_on: #每次打开激活此触发器
      then:
        - output.turn_on: power_led
#      - lambda: !lambda |-

#---------------- #H桥电机----------------------
  - platform: hbridge
    id: oscillation_out
    name: "${friendly_name}_osc" #风扇的名称
    pin_a: motor_forward_pin #连接到H桥引脚A的输出的ID。
    pin_b: motor_reverse_pin #连接到H桥引脚B的输出的ID。
    speed_count: 10
    # enable_pin: motor_enable #连接到H桥的使能引脚的浮点输出的ID(如果H桥使用使能)。
    decay_mode: slow #要与h桥一起使用的衰减模式
    restore_mode: ALWAYS_OFF #启动时将风扇初始化为OFF。
    on_turn_on:
      then:

output:
  - platform: ledc
    pin: $fan_pin
    id: fan_out
#    channel: 1

  - platform: ledc
    pin: $osc1_pin #H桥输出引脚
    id: motor_forward_pin
    frequency: "50Hz"
#    channel: 3

  - platform: ledc
    pin: $osc2_pin #H桥输出引脚
    id: motor_reverse_pin
    frequency: "50Hz"
#    channel: 3
#    inverted: true #反转输出

  - platform: template #模板输出
    id: osc_template
    type: binary #二进制输出的类型
    write_action:
      - if:
          condition:
            lambda: return ((state == 1));
          then:
            - fan.turn_on: oscillation_out
          else:
            - fan.turn_off: oscillation_out

  - platform: template #模板输出
    id: speed_fan_template
    type: float #输出的类型
    write_action: #在更新输出状态时要执行的自动化。
      - if:
          condition:
            lambda: return ((state == 0)); #调节位置比例
          then:
            - output.turn_off: fan_out
            - output.turn_off: speed1_led
            - output.turn_off: speed2_led
            - output.turn_off: speed3_led







回复

使用道具 举报

1

主题

33

帖子

190

积分

注册会员

Rank: 2

积分
190
金钱
157
HASS币
0
发表于 2023-6-26 11:56:43 | 显示全部楼层

回帖奖励 +2 金钱

sorrypqa 发表于 2023-6-25 22:49
我用了,但不知道怎么输出10KHz的PMW信号呀

output:
  - platform: esp8266_pwm
    pin: D1
    frequency: 10000 Hz
    id: pwm_output

引脚这样配置试试
回复

使用道具 举报

50

主题

1309

帖子

4992

积分

论坛DIY达人

积分
4992
金钱
3683
HASS币
20
 楼主| 发表于 2023-6-26 12:26:57 | 显示全部楼层
本帖最后由 sorrypqa 于 2023-7-2 11:29 编辑
brook77 发表于 2023-6-26 11:56
output:
  - platform: esp8266_pwm
    pin: D1

谢谢!是在output引脚里可以设置频率,对单个PWM电机很完美,但多个不同频率一起用竟然会互相干扰,这风扇扫风用24V交流电机,需要H桥输出SPWM信号,目前的ESPHome组件无法做到完美驱动。
回复

使用道具 举报

50

主题

1309

帖子

4992

积分

论坛DIY达人

积分
4992
金钱
3683
HASS币
20
 楼主| 发表于 2023-6-26 13:55:11 | 显示全部楼层
想通过按键时检查oscillating的状态来同步模板,但这样用编译出错:

#----------------------------------摇头按键配置-------------------------------------------
  - platform: gpio
    pin:
      number: $button4_pin
      inverted: true #反转属性
      mode:
        input: true #将引脚配置为输入
#        pullup: true #激活引脚上的内部上拉电阻
    name: "${friendly_name}_dsc" #摇头用按键
    id: "${friendly_name}_dsc"
    internal: true #设为内部组件
    on_press:
      - fan.toggle: oscillation_out
      - if:
          condition:
              lambda: 'return id((Variable_speed_fan).oscillating).state  ;'
          then:
             - output.turn_on: osc_template
          else:
             - output.turn_off: osc_template

回复

使用道具 举报

50

主题

1309

帖子

4992

积分

论坛DIY达人

积分
4992
金钱
3683
HASS币
20
 楼主| 发表于 2023-7-2 11:54:07 | 显示全部楼层
继续顶。。。。。。。。。。。。。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-5-14 23:05 , Processed in 0.658867 second(s), 28 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表