打印

旋钮开关通过单片机控制磁保持继电器

[复制链接]
15002|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
一杯美式|  楼主 | 2024-6-7 11:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
要使用一个三种状态的旋钮开关,控制三个磁保持继电器动作,我目前程序是使用定时器每100ms扫描一次开关状态,如果开关状态改变就打开对应的磁保持继电器另外两个继电器关闭,但是磁保持继电器会有移动或者碰撞时会自动弹开,这时候旋钮开关并没有旋转就导致会是一个错误状态,程序中怎么处理才能避免这种情况

使用特权

评论回复
评论
tyw 2024-6-7 13:10 回复TA
旋钮开关改按钮 
xch 2024-6-7 13:08 回复TA
那就假装没控制好,再定期刷新继电器驱动。比如100ms 刷新一次 

相关帖子

沙发
一杯美式|  楼主 | 2024-6-7 11:17 | 只看该作者

旋钮开关通过单片机控制磁保持继电器

void key_Service(void)
{
        // 采用轮询方法每100ms扫描一次开关状态,如果不变计数器清零进入下一次轮询,
        if(glTime.Scan_Count >= 100)
                {
                        CurrentFlag = Key_Scan();
                       
                        if( CurrentFlag != PreiousFlag )    // 检查当前的 CurrentFlag 是否与上一次相同
                        {
                                 switch(CurrentFlag)
                                        {
                                                case 1:
                                                        GPIO_Write(1,INA1);     /* INA1高电平保持100ms  */
                                                        GPIO_Write(1,INB2);     /* INB2高电平保持100ms  */
                                                        delay_Tim_ms(150);      /* 延时100ms            */
                                                        GPIO_Write(0,INA1);     /* INA1低电平保持                */
                                                        GPIO_Write(0,INB2);     /* INB2低电平保持                */
                                                        break;
                                                case 0:
                                                        GPIO_Write(1,INB1);     /* INB1高电平保持100ms  */
                                                        GPIO_Write(1,INA2);     /* INA2高电平保持100ms  */
                                                        delay_Tim_ms(150);      /* 延时100ms                */
                                                        GPIO_Write(0,INB1);     /* INB1低电平保持                */
                                                        GPIO_Write(0,INA2);     /* INA2低电平保持                */
                                                        break;
                                        }
                                PreiousFlag = CurrentFlag;
                        }
                        glTime.Scan_Count = 0;
                }
       
}

/*
        函 数 名 称 :Key_Scan()
        函 数 功 能 :按键扫描函数,返回值0或1 代表开关的大小电流两种状态
        返 回 值 :0 或 1
       
*/
int Key_Scan(void)
{
        int state = 0;
       
        if(PinRead_Key() == key_left)                  // 读IO口状态
        {
               
                delay_Tim_ms(30);                                 // 延时消抖       
                                                                       
                if(PinRead_Key() == key_left)        // 再读一次IO状态
                {
                        state = key_left;
                }
        }
        else if(PinRead_Key() == key_right)
        {
                delay_Tim_ms(30);
                if(PinRead_Key() == key_right)
                {
                        state = key_right;
                }
        }
        return state;
}

这是部分控制程序

使用特权

评论回复
板凳
LcwSwust| | 2024-6-7 11:18 | 只看该作者
程序能检测到继电器的状态吗

使用特权

评论回复
地板
一杯美式|  楼主 | 2024-6-7 11:33 | 只看该作者
LcwSwust 发表于 2024-6-7 11:18
程序能检测到继电器的状态吗

检测不到,只能检测旋钮开关状态,继电器状态不知道怎么检测

使用特权

评论回复
5
LcwSwust| | 2024-6-7 11:47 | 只看该作者
一杯美式 发表于 2024-6-7 11:33
检测不到,只能检测旋钮开关状态,继电器状态不知道怎么检测

哦,那可不可以给继电器线圈一直通电或给PWM信号?

使用特权

评论回复
6
一杯美式|  楼主 | 2024-6-7 11:49 | 只看该作者
LcwSwust 发表于 2024-6-7 11:47
哦,那可不可以给继电器线圈一直通电或给PWM信号?

磁保持继电器不能一直通电,它驱动要先拉高再拉低,一直通电可能会导致损坏

使用特权

评论回复
7
LcwSwust| | 2024-6-7 13:00 | 只看该作者
一杯美式 发表于 2024-6-7 11:49
磁保持继电器不能一直通电,它驱动要先拉高再拉低,一直通电可能会导致损坏 ...

那就PWM呗,比如通100ms,断400ms.

使用特权

评论回复
8
飞舸house| | 2024-6-7 17:21 | 只看该作者
还是要解决磁保持继电器,为什么会移动或者碰撞的时候,会弹开的问题。一般不会有这个问题

使用特权

评论回复
9
zchong| | 2024-6-7 20:39 | 只看该作者
楼上老板说的对,为啥会弹开?这个是不受控的弹开,软件要向处理无外乎两种方式:1、要能检测到继电器的接点状态,并与控制状态比较,不一致就重发控制命令;2、不管发生了什么情况,控制命令周期执行,异常的常态会恢复到正常状态。

使用特权

评论回复
10
ocon| | 2024-6-8 21:39 | 只看该作者
通过软件解决硬件失效只能用做锦上添花,首先要明确硬件失效的原因:1、质量问题;2、选型错误;

使用特权

评论回复
11
mwxpk| | 2024-6-10 18:48 | 只看该作者
21上武功绝奇。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

0

粉丝