找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

简易星三角启动电机 单片机C51程序

查看数: 7222 | 评论数: 10 | 收藏 5
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2017-1-13 15:45

正文摘要:

当电机较大时,启动是个必须注意的问题。比较简单且用的很多的是星三角启动,这里写出了星三角启动的核心部分。每一个IO口接上继电器,再控制交流接触器,就OK了。但,要注意,星、角交流接触器一定要互锁,否则一旦 ...

回复

ID:420635 发表于 2025-9-6 17:51
#include <reg51.h>  // 硬件定义 sbit K1 = P3^1;  // 启动按键 sbit J1 = P1^5;  // 主继电器 sbit J2 = P1^6;  // 星接继电器 sbit J3 = P1^7;  // 角接继电器  // 全局变量 unsigned int ms_count = 0;    // 毫秒计数器(10ms/次) unsigned char sec_count = 0;  // 秒计数器(100次10ms=1s) bit star_start_flag = 0;      // 星型启动标志 bit delay_done_flag = 0;      // 50s延时完成标志 bit switch_delay_flag = 0;    // 200ms切换缓冲延时标志  // 定时器0初始化(10ms中断一次,12MHz晶振) void Timer0_Init(void) {     TMOD &= 0xF0;  // 清定时器0模式     TMOD |= 0x01;  // 定时器0:16位定时模式     TH0 = (65536 - 10000) / 256;  // 10ms初值(12MHz)     TL0 = (65536 - 10000) % 256;     ET0 = 1;       // 使能定时器0中断     TR0 = 1;       // 启动定时器0     EA = 1;        // 开总中断 }  // 定时器0中断服务函数(10ms触发一次) void Timer0_ISR(void) interrupt 1 {     TH0 = (65536 - 10000) / 256;  // 重装载10ms初值     TL0 = (65536 - 10000) % 256;      // 1. 50s星型启动延时计数     if (star_start_flag && !switch_delay_flag) {         ms_count++;         if (ms_count >= 100) {  // 100*10ms=1s             ms_count = 0;             sec_count++;             if (sec_count >= 50) {  // 累计50s                 sec_count = 0;                 delay_done_flag = 1;             }         }     }      // 2. 200ms切换缓冲延时计数(仅在切换阶段生效)     if (switch_delay_flag) {         ms_count++;         if (ms_count >= 20) {  // 20*10ms=200ms             ms_count = 0;             switch_delay_flag = 0;  // 200ms延时完成         }     } }  // 按键消抖(稳定检测) bit Key_Scan(sbit key) {     if (key == 0) {         unsigned int i;         for (i = 0; i < 2000; i++);  // 20ms消抖         if (key == 0) return 1;     }     return 0; }  void main(void) {     Timer0_Init();     J1 = 1; J2 = 1; J3 = 1;  // 初始状态:所有继电器断开      while (1) {         // 检测启动按键,触发星型启动         if (Key_Scan(K1)) {             star_start_flag = 1;             delay_done_flag = 0;             switch_delay_flag = 0;             J1 = 0;  // 主继电器闭合             J2 = 0;  // 星接继电器闭合             while (Key_Scan(K1));  // 等待按键松开         }          // 50s延时完成后,执行星→三角切换         if (star_start_flag && delay_done_flag) {             J2 = 1;  // 先断开星接继电器             switch_delay_flag = 1;  // 启动200ms缓冲延时             ms_count = 0;           // 清零毫秒计数器              // 等待200ms延时完成             while (switch_delay_flag);              J3 = 0;                // 闭合角接继电器(J1保持闭合)             star_start_flag = 0;   // 清零启动标志         }     } }
ID:1118200 发表于 2025-9-4 21:54
不好使
ID:1052001 发表于 2022-11-25 23:02
cycy1030 发表于 2020-12-16 13:24
你好,请问有对应的proteus图吗

我也想问有没有仿真图呀
ID:987686 发表于 2022-1-28 18:39
有没有延时调节功能
ID:755463 发表于 2021-12-22 16:29
谢谢,正需要实在太及时了
ID:735076 发表于 2020-12-16 13:24
你好,请问有对应的proteus图吗
ID:71883 发表于 2019-9-26 15:02
不错可以参考
ID:74649 发表于 2017-1-19 07:40
正需要谢谢
ID:74649 发表于 2017-1-17 08:18
好好好好好好好好
ID:7485 发表于 2017-1-13 18:46
就是延时10~40秒切换交流接触器吧?

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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