找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 512|回复: 28
收起左侧

请教朋友们,MCUGND接220V的零线要注意哪些事项?

  [复制链接]
ID:899981 发表于 2025-4-17 10:19 | 显示全部楼层 |阅读模式
看别人这样做的,我用华大的不知道咋样。
回复

使用道具 举报

ID:466505 发表于 2025-4-17 11:29 | 显示全部楼层
要注意不要直接接到电脑上调试
回复

使用道具 举报

ID:1109793 发表于 2025-4-17 12:31 | 显示全部楼层
就算3个头的插头,都不能保证零线火线的对错,如果是2个头的,就更不能保证了。是不是可以做个指示灯,插错了闪一下。
回复

使用道具 举报

ID:277550 发表于 2025-4-17 12:57 | 显示全部楼层
不是插错、插错,而是地线和单片机的GND  未必是0v的电势差。
回复

使用道具 举报

ID:1109793 发表于 2025-4-17 14:30 | 显示全部楼层
devcang 发表于 2025-4-17 12:57
不是插错、插错,而是地线和单片机的GND  未必是0v的电势差。

接一块儿不就是0V了嘛
单片机用变压器供电,或者用倍压式阻容降压那种电路也可以。
回复

使用道具 举报

ID:940483 发表于 2025-4-17 15:21 | 显示全部楼层
光耦隔离上一下吧
有一定概率会出现高压浪涌的
回复

使用道具 举报

ID:69038 发表于 2025-4-17 16:11 | 显示全部楼层
热板,慎重!
最好能接个220V的隔离变压器,再调试。
不然的话,请楼主多保重。。
回复

使用道具 举报

ID:1137639 发表于 2025-4-17 21:01 | 显示全部楼层
一般情况下,不建议将MCU的GND直接接220V的零线,这样做存在较大风险。如果因特殊情况确实需要连接,以下是一些注意事项: - **电气安全方面**     - **确保隔离措施**:220V零线虽然在正常情况下电位相对较低,但它与火线之间存在220V的电压差,一旦零线出现故障或电位异常,可能会使MCU及其相关电路带上危险电压。因此,必须使用合适的隔离变压器或光耦等隔离器件,将220V交流电源与MCU电路隔离开来,防止强电窜入弱电系统,造成人员触电和设备损坏。     - **良好的接地系统**:即使将MCUGND连接到220V零线,设备仍然需要一个独立的、良好的接地系统。接地电阻应符合相关标准要求,一般不大于4欧姆。这样可以在发生漏电等故障时,将电流引入大地,保障人员和设备的安全。同时,要确保零线和地线之间的连接正确,避免零线与地线混接,否则可能导致漏电保护器误跳闸。 - **电路设计方面**     - **电压匹配**:MCU的工作电压通常是较低的直流电压,如3.3V、5V等。而220V零线的电压是交流电,需要通过合适的电源转换电路将其转换为MCU所需的直流电压,并确保电压稳定在MCU的工作电压范围内,且具有足够的电源纹波抑制能力,以防止电压波动对MCU的正常工作产生影响。     - **共模干扰问题**:连接220V零线可能会引入共模干扰,影响MCU的正常运行。可以采用共模电感、滤波电容等措施来抑制共模干扰,提高电路的抗干扰能力。同时,在PCB设计时,要合理规划电源和地线布局,将MCU的数字地和模拟地分开,并通过单点接地的方式连接到220V零线的接地端,减少不同类型电路之间的干扰。 - **设备兼容性和可靠性方面**     - **设备标注与说明**:如果设备需要将MCUGND连接到220V零线,必须在设备的外壳或说明书等显著位置进行明确标注和说明,提醒用户注意相关安全事项和特殊的接线要求,避免用户在不知情的情况下进行错误操作。     - **稳定性测试**:在设备研发和生产过程中,要进行充分的稳定性测试,包括长时间运行测试、高低温测试、电磁兼容性测试等,以验证在MCUGND连接到220V零线的情况下,设备能够稳定、可靠地工作,不会出现死机、数据丢失或其他异常现象。  需要再次强调的是,将MCUGND直接接220V零线不是常规做法,可能会带来安全隐患和技术难题。在实际应用中,应优先考虑使用隔离电源或其他安全可靠的供电方式为MCU供电,以确保系统的安全和稳定运行。如果对电路设计和电气安全没有足够的专业知识和经验,建议咨询专业的电气工程师或相关技术人员,以获得更准确和可靠的建议。
回复

使用道具 举报

ID:1137639 发表于 2025-4-17 21:04 | 显示全部楼层
以下为实现该功能的思路、电路原理及控制程序:

### 思路分析
1. **按键检测**:对三个非自锁按键K1、K2、K3的状态进行实时检测。
2. **状态控制**:
    - 按下K1:开启循环显示数字0 - 12的功能,每个数字显示0.5秒。
    - 按下K2:暂停数字的显示。
    - 按下K3:将显示的数字清零。
3. **显示控制**:依据当前的状态,控制七段数码管或者LCD1602显示对应的数字。

### 电路原理
#### 七段数码管显示电路
- **数码管**:采用共阴极或者共阳极的七段数码管。
- **驱动电路**:借助三极管或者专用的数码管驱动芯片(如74HC595)来驱动数码管。
- **按键电路**:把三个按键K1、K2、K3分别连接到单片机的三个GPIO引脚,并且通过上拉或者下拉电阻来保证按键状态的稳定。

#### LCD1602显示电路
- **LCD1602模块**:将其连接到单片机的GPIO引脚,包含数据引脚和控制引脚(如RS、RW、E)。
- **按键电路**:和七段数码管的按键电路一样。

### 控制程序(以Arduino为例,使用LCD1602显示)

   


### 代码解释
1. **库的引入**:引入`LiquidCrystal`库以控制LCD1602显示。
2. **变量定义**:对LCD引脚、按键引脚、状态变量以及时间间隔进行定义。
3. **`setup`函数**:对LCD和按键引脚进行初始化。
4. **`loop`函数**:实时检测按键状态,在运行且未暂停的状态下,每0.5秒更新一次显示。
5. **`checkButtons`函数**:检测三个按键的状态,并且根据按键状态更新相应的状态变量。
6. **`updateDisplay`函数**:清空LCD显示,显示当前数字,然后将数字加1并对13取模,实现循环显示。
  1. #include <LiquidCrystal.h>

  2. // 定义LCD引脚
  3. LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

  4. // 定义按键引脚
  5. const int K1 = 6;
  6. const int K2 = 7;
  7. const int K3 = 8;

  8. // 定义状态变量
  9. bool isRunning = false;
  10. bool isPaused = false;
  11. int currentNumber = 0;

  12. // 定义时间间隔
  13. const unsigned long interval = 500;
  14. unsigned long previousMillis = 0;

  15. void setup() {
  16.   // 初始化LCD
  17.   lcd.begin(16, 2);
  18.   lcd.print("Press K1 to start");

  19.   // 初始化按键引脚为输入模式
  20.   pinMode(K1, INPUT_PULLUP);
  21.   pinMode(K2, INPUT_PULLUP);
  22.   pinMode(K3, INPUT_PULLUP);
  23. }

  24. void loop() {
  25.   // 检测按键状态
  26.   checkButtons();

  27.   if (isRunning && !isPaused) {
  28.     unsigned long currentMillis = millis();
  29.     if (currentMillis - previousMillis >= interval) {
  30.       previousMillis = currentMillis;
  31.       // 更新显示数字
  32.       updateDisplay();
  33.     }
  34.   }
  35. }

  36. void checkButtons() {
  37.   if (digitalRead(K1) == LOW) {
  38.     delay(20); // 消抖
  39.     if (digitalRead(K1) == LOW) {
  40.       isRunning = true;
  41.       isPaused = false;
  42.       while (digitalRead(K1) == LOW); // 等待按键释放
  43.     }
  44.   }

  45.   if (digitalRead(K2) == LOW) {
  46.     delay(20); // 消抖
  47.     if (digitalRead(K2) == LOW) {
  48.       isPaused = !isPaused;
  49.       while (digitalRead(K2) == LOW); // 等待按键释放
  50.     }
  51.   }

  52.   if (digitalRead(K3) == LOW) {
  53.     delay(20); // 消抖
  54.     if (digitalRead(K3) == LOW) {
  55.       isRunning = false;
  56.       isPaused = false;
  57.       currentNumber = 0;
  58.       updateDisplay();
  59.       while (digitalRead(K3) == LOW); // 等待按键释放
  60.     }
  61.   }
  62. }

  63. void updateDisplay() {
  64.   lcd.clear();
  65.   lcd.print(currentNumber);
  66.   currentNumber = (currentNumber + 1) % 13;
  67. }
  68.    
复制代码

你可以依据实际需求对代码进行修改和优化。
回复

使用道具 举报

ID:1137639 发表于 2025-4-17 21:04 | 显示全部楼层
一般情况下,不建议将MCUGND(单片机地)直接接220V的零线,因为这可能会带来安全风险和干扰问题。如果出于特殊原因必须要接,以下是一些需要注意的事项:
- **电气隔离**:为了确保安全,必须使用隔离变压器将220V交流电转换为低压交流电,然后再将其零线与MCUGND连接。这样可以避免220V高压直接进入单片机电路,防止触电和损坏设备。
- **共模干扰**:连接MCUGND和220V零线可能会引入共模干扰,影响单片机系统的稳定性和可靠性。可以采取滤波措施,如在电源输入端添加共模电感、电容等元件,以抑制共模干扰信号。
- **电势差问题**:即使使用隔离变压器,也需要注意MCUGND和220V零线之间可能存在的电势差。如果电势差过大,可能会导致电流通过地线流动,产生电磁干扰,甚至损坏设备。可以使用电压表测量两者之间的电势差,并采取相应的措施进行调整,如增加滤波电容、调整接地方式等。
- **接地电阻**:确保接地电阻符合相关标准和要求,一般要求接地电阻不大于4欧姆。如果接地电阻过大,可能会导致接地电流无法及时流回大地,从而产生安全隐患。
- **布线设计**:在进行布线时,应将电源线和信号线分开布置,避免相互干扰。同时,应尽量缩短MCUGND和220V零线之间的连接距离,减少电磁干扰的影响。
- **安全保护**:在电路中应设置过流保护、过压保护等安全保护措施,以防止因电路故障而导致的安全事故。例如,可以在电源输入端添加保险丝、压敏电阻等元件。

在将MCUGND接220V零线之前,需要充分了解相关的电气知识和安全规范,并进行充分的测试和验证,以确保系统的安全可靠运行。如果不确定如何操作,建议咨询专业的电气工程师或相关技术人员。
回复

使用道具 举报

ID:879348 发表于 2025-4-18 08:24 | 显示全部楼层
不要直接负极接地,我记得外壳接地并不是线路板的负极,而是通过电容耦合到负极
回复

使用道具 举报

ID:899981 发表于 2025-4-18 08:30 | 显示全部楼层
hcfat51h 发表于 2025-4-17 11:29
要注意不要直接接到电脑上调试

好的,谢谢。
回复

使用道具 举报

ID:899981 发表于 2025-4-18 08:30 | 显示全部楼层
xiaobendan001 发表于 2025-4-17 12:31
就算3个头的插头,都不能保证零线火线的对错,如果是2个头的,就更不能保证了。是不是可以做个指示灯,插错 ...

可以可以,照做。
回复

使用道具 举报

ID:899981 发表于 2025-4-18 08:31 | 显示全部楼层
devcang 发表于 2025-4-17 12:57
不是插错、插错,而是地线和单片机的GND  未必是0v的电势差。

我看别人直接接到火线上,问了说就这样,大批量生产的,很稳定的。
回复

使用道具 举报

ID:899981 发表于 2025-4-18 08:31 | 显示全部楼层
xiaobendan001 发表于 2025-4-17 14:30
接一块儿不就是0V了嘛
单片机用变压器供电,或者用倍压式阻容降压那种电路也可以。

对,有的直接接火线,就是类似电表那种。
回复

使用道具 举报

ID:899981 发表于 2025-4-18 08:32 | 显示全部楼层
Tonghao666 发表于 2025-4-17 15:21
光耦隔离上一下吧
有一定概率会出现高压浪涌的

别人出货很多了,要隔离地方太多了,成本高。
回复

使用道具 举报

ID:899981 发表于 2025-4-18 08:32 | 显示全部楼层
zhuls 发表于 2025-4-17 16:11
热板,慎重!
最好能接个220V的隔离变压器,再调试。
不然的话,请楼主多保重。。

一个成品才100多,别人大批量出货了。
回复

使用道具 举报

ID:899981 发表于 2025-4-18 08:33 | 显示全部楼层
wufa1986 发表于 2025-4-18 08:24
不要直接负极接地,我记得外壳接地并不是线路板的负极,而是通过电容耦合到负极

有热地的。
回复

使用道具 举报

ID:899981 发表于 2025-4-18 08:34 | 显示全部楼层
622323wjl 发表于 2025-4-17 21:04
一般情况下,不建议将MCUGND(单片机地)直接接220V的零线,因为这可能会带来安全风险和干扰问题。如果出于 ...

AI回答的吧。
回复

使用道具 举报

ID:899981 发表于 2025-4-18 08:35 | 显示全部楼层
wufa1986 发表于 2025-4-18 08:24
不要直接负极接地,我记得外壳接地并不是线路板的负极,而是通过电容耦合到负极

有的直接接火线,不过对外就不行了,内部好像可以。
回复

使用道具 举报

ID:592807 发表于 2025-4-18 12:05 | 显示全部楼层

以前很多那种芯片直接AC220V转DC24V的芯片他们就是直接零线接GND的,其实风险很大的,但是便宜简单。零线接GND那你火线就一定要隔离,另外火线要接个保险管之类的保护元件,调试时要注意。
回复

使用道具 举报

ID:1137639 发表于 2025-4-18 20:53 | 显示全部楼层
一般情况下,不建议直接将 MCU 的 GND(接地端)接 220V 的零线,这种做法存在较大安全风险和技术问题。如果因特殊情况确实需要连接,以下是一些需要注意的事项:
电气安全方面
隔离措施:必须使用隔离变压器将 220V 市电与 MCU 电路隔离开来。因为直接连接时,一旦零线出现故障(如断路)或电源插座接线错误,220V 的火线电压可能会通过零线传导到 MCU 电路,使原本不应带电的 MCU 及其周边电路外壳等带电,引发触电危险。使用隔离变压器后,即便零线出现问题,隔离变压器次级输出的电压也不会与大地形成回路,可避免触电。
漏电保护:确保电路中安装有合适的漏电保护装置。当有漏电情况发生时,漏电保护装置能够迅速切断电源,降低触电风险和电气火灾等安全事故的发生概率。
电路稳定性方面
电压波动问题:220V 市电的零线虽然在正常情况下电位接近地电位,但实际上可能会存在一定的电压波动和干扰。这些波动和干扰可能会影响 MCU 的正常工作,例如导致 MCU 复位、数据错误或程序运行异常等。可以在 MCU 的电源输入端增加滤波电路,如使用电容、电感等元件组成的 LC 滤波器或 π 型滤波器,来滤除零线引入的高频干扰信号,稳定 MCU 的供电电压。
共模干扰:连接零线可能会引入共模干扰,即干扰信号在零线和 MCU 的 GND 之间形成回路,影响 MCU 的正常运行。为减少共模干扰,可以采用光电隔离、磁隔离等技术将 MCU 的数字地和模拟地等进行隔离,或者使用共模扼流圈来抑制共模干扰电流。
布线与安装方面
线路绝缘:连接 MCU GND 和 220V 零线的线路必须具有良好的绝缘性能,防止出现短路和漏电现象。绝缘层应能承受 220V 的电压,并且要避免线路受到机械损伤、高温、潮湿等因素的影响,以保证绝缘性能的可靠性。
安装位置:将相关电路安装在安全的位置,避免人员直接接触到可能带电的部分。同时,要考虑到电路的散热问题,防止因散热不良导致元件损坏或性能下降。如果使用阻容降压电路给 MCU 供电,由于这种电路是非隔离的,更要注意安装位置,防止触电。
总之,将 MCU GND 接 220V 零线是一种具有风险的做法,需要充分考虑安全和电路性能等多方面的因素。在大多数情况下,建议使用专门的电源模块或适配器为 MCU 供电,以确保系统的安全可靠运行。如果对相关电路设计和安全问题不确定,最好咨询专业的电气工程师或相关技术人员。
回复

使用道具 举报

ID:899981 发表于 2025-4-19 08:54 | 显示全部楼层
黄youhui 发表于 2025-4-18 12:05
以前很多那种芯片直接AC220V转DC24V的芯片他们就是直接零线接GND的,其实风险很大的,但是便宜简单。零线 ...

请教一下火线隔离怎么做法?网上也没查到。
回复

使用道具 举报

ID:899981 发表于 2025-4-19 08:55 | 显示全部楼层
622323wjl 发表于 2025-4-18 20:53
一般情况下,不建议直接将 MCU 的 GND(接地端)接 220V 的零线,这种做法存在较大安全风险和技术问题。如 ...

听说很多风扇都是这样的电路,我这个产品才卖100多,大 家都是这样的做法,都没隔离。
回复

使用道具 举报

ID:69038 发表于 2025-4-19 10:22 | 显示全部楼层
ZHAOBAO511 发表于 2025-4-18 08:32
一个成品才100多,别人大批量出货了。

人家出货是因为外壳已做了绝缘隔离。
220零线接MCUGND的成品大把,
但你有没有想过,它们是如何调试出来的吗?
人家整条调试生产线都有隔离的,就是怕发生触电整事故的。。。
没有别的意思,只是友情提醒。。
你要再犟,你就是对的。
回复

使用道具 举报

ID:230500 发表于 2025-4-19 11:12 | 显示全部楼层
可能我没理解清楚。  看什么地方使用, 非接触式使用,就直接阻容降压给单片机用就可以了; 不用分零火线。
回复

使用道具 举报

ID:1034262 发表于 2025-4-19 15:44 | 显示全部楼层
MCU的GND直接接220V的火线或零线均可,但是你的MCU电源一定要做好,能抗浪涌、抗冲击电压、电压嵌位,否则,会烧MCU的。
回复

使用道具 举报

ID:592807 发表于 2025-4-19 16:48 | 显示全部楼层
ZHAOBAO511 发表于 2025-4-19 08:54
请教一下火线隔离怎么做法?网上也没查到。

压敏电阻,保险丝,NRT电阻,共模电感,这些。我之前啥也没加,然后一不小心一个螺丝掉进去了短路了,整个电路板炸了,所有PCB铜线被炸脱落,加了以后就只炸保险丝。还有就是火线和零线(GND)之间至少要3.5mm以上进行隔离,做不到就开槽挖空,还有火线和其他线最好也开槽挖空进行隔离。
回复

使用道具 举报

ID:879809 发表于 2025-4-19 17:12 | 显示全部楼层
调试的时候要注意,脱离了调试器就没什么要注意的了。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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