色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于PIC微控制器構建一種低成本的高低壓保護電路

科技觀察員 ? 來源:circuitdigest ? 作者:薩達姆 ? 2023-01-25 15:50 ? 次閱讀

我們經常看到家中電力供應的電壓波動,這可能會導致我們家用交流電器出現故障。今天,我們正在構建一種低成本的高低壓保護電路,該電路將在高電壓或低電壓的情況下切斷電器的電源。它還將在 16x2 LCD 上顯示警告消息。在本項目中,我們使用PIC微控制器讀取輸入電壓并將其與參考電壓進行比較,并采取相應的措施。

我們在PCB上制作了這個電路,并在PCB上增加了一個額外的電路用于相同的目的,但這次使用的是運算放大器LM358(不帶微控制器)。出于演示目的,我們選擇低電壓限制為150v,高電壓限制為200v。在這個項目中,我們沒有使用任何繼電器進行切斷,我們只是使用LCD演示了它,請查看本文末尾的視頻。但是用戶可以將繼電器連接到該電路,并將其與PIC的GPIO連接。

所需組件:

  1. PIC微控制器PIC18F2520
  2. 電路板(從立創EDA訂購)
  3. 集成電路 LM358
  4. 3 針端子連接器(可選)
  5. 16x2 液晶顯示器
  6. BC547 晶體管
  7. 1k 電阻器
  8. 2k2 電阻
  9. 30K電阻貼片
  10. 10k 貼片
  11. 電容器 - 0.1uf, 10uF, 1000uF
  12. 28 針 IC 基座
  13. 公/母盜賊
  14. 7805 穩壓器 - 7805, 7812
  15. 皮基特2 程序員
  16. 發光二極管
  17. 齊納二極管 - 5.1V、7.5V、9.2V
  18. 變壓器 12-0-12
  19. 12MHz 晶體
  20. 33pF 電容
  21. 電壓調節器(風扇調速器)

采用PIC微控制器的高低壓檢測器 PCB

工作說明:

在這個高低壓切斷電路中,我們使用**PIC微控制器**在變壓器,橋式整流器和分壓器電路的幫助下讀取交流電壓,并在16x2 LCD上顯示。然后,我們將交流電壓與預定義的限值進行比較,并相應地在LCD上顯示警報消息。就像如果電壓低于150v,那么我們顯示“低電壓”,如果電壓高于200v,那么我們在LCD上顯示“高壓”文本。我們可以在項目結束時給出的 PIC 代碼中更改這些限制。在這里,我們使用風扇調節器來增加和減少輸入電壓,以便在視頻中進行演示。

采用PIC微控制器的高低壓檢測器框圖

在該電路中,我們還添加了 一個簡單的欠壓和過壓保護電路 ,而無需使用任何微控制器。在這個簡單的電路中,我們使用LM358比較器來比較輸入和基準電壓。因此,我們在此項目中有三個選項:

  1. 借助變壓器,橋式整流器,分壓器電路和PIC微控制器測量和比較交流電壓。
  2. 借助變壓器、整流器和比較器 LM358(無微控制器)使用 LM358 檢測過壓和欠壓
  3. 使用比較器 LM358 檢測欠壓和過壓,并將其輸出饋送到 PIC 微控制器,以便通過代碼采取行動。

在這里,我們演示了該項目的第一個選項。其中,我們將交流輸入電壓降壓,然后使用橋式整流器將其轉換為直流,然后再次將該直流電壓映射到5v,最后將該電壓饋送到PIC微控制器進行比較和顯示。

在PIC微控制器中,我們已經讀取了這個映射的直流電壓,并根據該映射值,我們借助給定的公式計算了輸入的交流電壓:

volt= ((adcValue*240)/1023)

其中 adcValue 是 PIC 控制器 ADC 引腳上的等效直流輸入電壓值,伏特是施加的交流電壓。這里我們采用240v作為最大輸入電壓。

或者,我們可以使用給定的方法來映射等效的直流輸入值。

volt = map(adcVlaue, 530, 895, 100, 240)

其中ADC值是PIC控制器ADC引腳上的等效直流輸入電壓值,530是最小直流電壓等效值,895是最大直流電壓等效值。100v是最小映射電壓,240v是最大映射電壓。

PIC ADC 引腳上的 10mV 直流輸入等于 2.046 ADC 等效值。因此,這里我們選擇了 530 作為最小值,PIC 的 ADC 引腳上的電壓將為:

(((530/2.046)*10)/1000) Volt

2.6V,將映射最小值為100VAC

(最大限制的計算相同)。

檢查地圖功能最后在PIC程序代碼中給出。

采用 LM358 PIC 微控制器的高低壓保護

這個項目的工作很容易。在這個項目中,我們使用了交流電壓風扇調節器來演示它。我們在變壓器的輸入端安裝了風扇調節器。然后通過增加或減少其電阻,我們獲得了所需的電壓輸出。

在代碼中,我們有固定的最大和最小電壓值,用于高壓和低電壓檢測。我們將200v固定為過壓限制,150v為下限電壓限制。現在,在電路上電后,我們可以看到LCD上的交流輸入電壓。當輸入電壓增加時,我們可以看到LCD上的電壓變化,如果電壓超過電壓限制,則LCD將通過“高壓警報”提醒我們,如果電壓低于電壓限制,則LCD將通過顯示“低電壓警報”消息來提醒我們。這樣它也可以用作 電子斷路器

我們可以進一步添加一個繼電器,將任何交流電器連接到低壓或高壓的自動切斷。我們只需要添加一行代碼即可關閉設備,在顯示代碼的 LCD 警報消息下方。查看此處以將繼電器與交流電器一起使用

電路說明:

高低壓保護電路中,我們使用了LM358運算放大器,該運算放大器具有連接到PIC微控制器的2個和3個數字引腳的兩個輸出。分壓器用于分壓,并將其輸出連接到PIC微控制器的第4個數字引腳。液晶屏以 4 位模式連接到 PIC 的端口。RS 和 EN 直接連接在 B0 和 B1 上,LCD 的數據引腳 D4、D5、D6 和 D7 分別連接在 B2、B3、B4 和 B5 上。在本項目中,我們使用了兩個穩壓器:7805用于微控制器電源,7812用于LM358電路。12v-0-12v降壓變壓器也用于降壓交流電壓。其余組件如下圖所示。

采用PIC微控制器電路的高低壓保護

編程說明:

這個項目的編程部分很容易。在此代碼中,我們只需要使用來自分壓器電路的映射0-5v電壓來計算交流電壓,然后將其與預定義的值進行比較。您可以在此項目之后檢查完整的 PIC 代碼。

首先,在代碼中,我們包含一個標頭并配置了PIC微控制器配置位。如果您不熟悉 PIC 編碼,請在此處學習 PIC 微控制器及其配置位

然后我們使用了一些功能來驅動LCD,比如void lcdbegin()用于初始化LCD,void lcdcmd(char ch)用于向LCD發送命令,void lcdwrite(char ch)用于將數據發送到LCD, *void lcdprint(char str 用于將字符串發送到LCD。 檢查以下代碼中的所有函數。

下面給定的函數用于映射值:

long map(long x, long in_min, long in_max, long out_min, long out_max)
{
  return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}

給定 int analogRead(int ch) 函數用于初始化和讀取 ADC:

int analogRead(int ch)
{
    int adcData=0;
    if(ch == 0)
    ADCON0 = 0x03;       // adc channel 0
    else if(ch == 1)
    ADCON0 = 0x0b;       //select adc channel 1
    else if(ch == 2)    
    ADCON0 = 0x0b;        //select adc channel 2    
    ADCON1 = 0b00001100;     // select analog i/p     0,1 and 2 channel of ADC
    ADCON2 = 0b10001010;    //eqisation time holding cap time
    while(GODONE==1);       // start conversion adc value
    adcData = (ADRESL)+(ADRESH<<8);     //Store 10-bit output 
    ADON=0;            // adc off
    return adcData;
}

給定的線路用于獲取ADC樣本并計算它們的平均值,然后計算電壓:

while(1)
{
    long adcValue=0;
    int volt=0;
    for(int i=0;i<100;i++)   // taking samples
    {   
        adcValue+=analogRead(2);
        delay(1);
    }
    adcValue/=100;

    #if method == 1
    volt= (((float)adcValue*240.0)/1023.0);
    #else
    volt = map(adcValue, 530, 895, 100, 240);
    #endif
    sprintf(result,"%d",volt);

最后給定函數用于執行結果操作:

if(volt > 200)
    {
        lcdcmd(1);
        lcdprint("High Voltage");
        lcdcmd(192);
        lcdprint("  Alert  ");
        delay(1000);
    }
    
    else if(volt < 150)
    {
        lcdcmd(1);
        lcdprint("Low Voltage");
        lcdcmd(192);
        lcdprint("  Alert  ");
        delay(1000);
    }
這樣我們就可以輕松地為我們的家構建低壓高壓保護電路。此外,您只需**添加一個繼電器即可將任何交流電器連接到**它,以保護它免受電壓波動的影響。只需將繼電器與PIC MCU的任何通用引腳連接,并編寫代碼以使該引腳高低以及LCD警報消息代碼。

#include //xc8 is compiler

#include

#include

// CONFIG1H

#pragma config OSC = HS // Oscillator Selection bits (HS oscillator)

#pragma config FCMEN = OFF // Fail-Safe Clock Monitor Enable bit (Fail-Safe Clock Monitor disabled)

#pragma config IESO = OFF // Internal/External Oscillator Switchover bit (Oscillator Switchover mode disabled)

// CONFIG2L

#pragma config PWRT = ON // Power-up Timer Enable bit (PWRT disabled)

#pragma config BOREN = SBORDIS // Brown-out Reset Enable bits (Brown-out Reset enabled in hardware only (SBOREN is disabled))

#pragma config BORV = 3 // Brown Out Reset Voltage bits (Minimum setting)

// CONFIG2H

#pragma config WDT = OFF // Watchdog Timer Enable bit (WDT disabled (control is placed on the SWDTEN bit))

#pragma config WDTPS = 32768 // Watchdog Timer Postscale Select bits (1:32768)

// CONFIG3H

#pragma config CCP2MX = PORTC // CCP2 MUX bit (CCP2 input/output is multiplexed with RB1)

#pragma config PBADEN = OFF // PORTB A/D Enable bit (PORTB<4:0> pins are configured as digital I/O on Reset)

#pragma config LPT1OSC = OFF // Low-Power Timer1 Oscillator Enable bit (Timer1 configured for higher power operation)

#pragma config MCLRE = ON // MCLR Pin Enable bit (MCLR pin enabled; RE3 input pin disabled)

// CONFIG4L

#pragma config STVREN = ON // Stack Full/Underflow Reset Enable bit (Stack full/underflow will cause Reset)

#pragma config LVP = OFF // Single-Supply ICSP Enable bit (Single-Supply ICSP disabled)

#pragma config XINST = OFF // Extended Instruction Set Enable bit (Instruction set extension and Indexed Addressing mode disabled (Legacy mode))

// CONFIG5L

#pragma config CP0 = OFF // Code Protection bit (Block 0 (000800-001FFFh) not code-protected)

#pragma config CP1 = OFF // Code Protection bit (Block 1 (002000-003FFFh) not code-protected)

#pragma config CP2 = OFF // Code Protection bit (Block 2 (004000-005FFFh) not code-protected)

#pragma config CP3 = OFF // Code Protection bit (Block 3 (006000-007FFFh) not code-protected)

// CONFIG5H

#pragma config CPB = OFF // Boot Block Code Protection bit (Boot block (000000-0007FFh) not code-protected)

#pragma config CPD = OFF // Data EEPROM Code Protection bit (Data EEPROM not code-protected)

// CONFIG6L

#pragma config WRT0 = OFF // Write Protection bit (Block 0 (000800-001FFFh) not write-protected)

#pragma config WRT1 = OFF // Write Protection bit (Block 1 (002000-003FFFh) not write-protected)

#pragma config WRT2 = OFF // Write Protection bit (Block 2 (004000-005FFFh) not write-protected)

#pragma config WRT3 = OFF // Write Protection bit (Block 3 (006000-007FFFh) not write-protected)

// CONFIG6H

#pragma config WRTC = OFF // Configuration Register Write Protection bit (Configuration registers (300000-3000FFh) not write-protected)

#pragma config WRTB = OFF // Boot Block Write Protection bit (Boot block (000000-0007FFh) not write-protected)

#pragma config WRTD = OFF // Data EEPROM Write Protection bit (Data EEPROM not write-protected)

// CONFIG7L

#pragma config EBTR0 = OFF // Table Read Protection bit (Block 0 (000800-001FFFh) not protected from table reads executed in other blocks)

#pragma config EBTR1 = OFF // Table Read Protection bit (Block 1 (002000-003FFFh) not protected from table reads executed in other blocks)

#pragma config EBTR2 = OFF // Table Read Protection bit (Block 2 (004000-005FFFh) not protected from table reads executed in other blocks)

#pragma config EBTR3 = OFF // Table Read Protection bit (Block 3 (006000-007FFFh) not protected from table reads executed in other blocks)

// CONFIG7H

#pragma config EBTRB = OFF // Boot Block Table Read Protection bit (Boot block (000000-0007FFh) not protected from table reads executed in other blocks)

#define rs RB0

#define en RB1

char result[10];

#define lcdport PORTB

#define method 0

void delay(unsigned int Delay)

{

int i,j;

for(i=0;ifor(j=0;j<1000;j++);

}

void lcdcmd(char ch)

{

lcdport= (ch>>2)& 0x3C;

rs=0;

en=1;

delay(1);

en=0;

lcdport= (ch<<2) & 0x3c;

rs=0;

en=1;

delay(1);

en=0;

}

void lcdwrite(char ch)

{

lcdport=(ch>>2) & 0x3c;

rs=1;

en=1;

delay(1);

en=0;

lcdport=(ch<<2) & 0x3c;

rs=1;

en=1;

delay(1);

en=0;

}

void lcdprint(char *str)

{

while(*str)

{

    lcdwrite(*str);

    str++;

}

}

void lcdbegin()

{

lcdcmd(0x02);

lcdcmd(0x28);

lcdcmd(0x0e);

lcdcmd(0x06);

lcdcmd(0x01);

}

int analogRead(int ch)

{

int adcData=0;

if(ch == 0)

ADCON0 = 0x03;       // adc channel 0

else if(ch == 1)

ADCON0 = 0x0b;       //select adc channel 1

else if(ch == 2)    

ADCON0 = 0x0b;        //select adc channel 2    

ADCON1 = 0b00001100;     // select analog i/p     0,1 and 2 channel of ADC

ADCON2 = 0b10001010;    //eqisation time holding cap time

while(GODONE==1);       // start conversion adc value

adcData = (ADRESL)+(ADRESH<<8);     //Store 10-bit output 

ADON=0;            // adc off

return adcData;

}

long map(long x, long in_min, long in_max, long out_min, long out_max)

{

return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;

}

void main()

{

//ADCON1 = 0b0001111; //all port is digital

TRISB=0x00;

TRISC=0x00;

TRISA=0xff;

lcdbegin();

lcdprint("HIGH/LOW Volt");

lcdcmd(192);

lcdprint("Detector by PIC");

delay(1000);

lcdcmd(1);

lcdprint("CircuitDigest");

lcdcmd(192);

lcdprint("Welcomes You");

delay(1000);

while(1)

{

long adcValue=0;

int volt=0;

for(int i=0;i<100;i++)   // taking samples

{   

    adcValue+=analogRead(2);

    delay(1);

}

adcValue/=100;


#if method == 1

volt= (((float)adcValue*240.0)/1023.0);

#else

volt = map(adcValue, 530, 895, 100, 240);

#endif

sprintf(result,"%d",volt);



lcdcmd(0x80);

lcdprint("H>200V  L<150V");

lcdcmd(0xc0);

lcdprint("Voltage:");

lcdprint(result);

lcdprint(" V   ");

delay(1000);

if(volt > 200)

{

    lcdcmd(1);

    lcdprint("High Voltage");

    lcdcmd(192);

    lcdprint("  Alert  ");

    delay(1000);

}



else if(volt < 150)

{

    lcdcmd(1);

    lcdprint("Low Voltage");

    lcdcmd(192);

    lcdprint("  Alert  ");

    delay(1000);

}

}

}


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 保護電路
    +關注

    關注

    46

    文章

    888

    瀏覽量

    101636
  • PIC微控制器
    +關注

    關注

    0

    文章

    17

    瀏覽量

    7392
  • 高低壓
    +關注

    關注

    2

    文章

    4

    瀏覽量

    5796
收藏 人收藏

    評論

    相關推薦

    高低壓為什么不能共地

    高低壓般為什么不能共地,若共地會如何,我們接下來建立個模型來分析: 上圖是不共地情況下,左邊高壓的正負端集聚正負電荷,根據電子學基礎理論庫倫定律,對低壓的正負兩端的作用如上圖,可
    發表于 10-26 09:32

    如何去實現一種基于PIC32MX3的低功耗低成本藍牙音箱電路設計?

    如何把音頻和數據控制組合在一起?如何去是實現一種基于PIC32MX3的低功耗低成本藍牙音箱電路設計?
    發表于 07-08 07:39

    一種適合高低壓變換的軟開關雙向DC-DC變換

    本文介紹了一種適合于高低壓變換的軟開關雙向 DC-DC 變換。提出端穩壓和端穩流的控制策略
    發表于 10-19 12:00 ?31次下載

    高低壓配電知識問答

    高低壓配電知識問答 1.電是什么?
    發表于 07-07 10:39 ?42次下載

    USB閃存盤與PIC微控制器的簡單方案及設計電路

    本文介紹利用低成本PIC微控制器通過USB2.0全速橋接器芯片連接USB閃存盤之設計方法,其著眼于PIC微控制器及VNC1L智能型USB H
    發表于 12-12 17:12 ?1055次閱讀
    USB閃存盤與<b class='flag-5'>PIC</b><b class='flag-5'>微控制器</b>的簡單方案及設計<b class='flag-5'>電路</b>圖

    高低壓保護延時電路

    高低壓保護延時電路
    發表于 05-20 14:00 ?1658次閱讀
    <b class='flag-5'>高低壓</b><b class='flag-5'>保護</b>延時<b class='flag-5'>電路</b>圖

    一種適合高低壓變換的軟開關雙向

    一種適合高低壓變換的軟開關雙向 ,個人收集整理了很久的資料,大家根據自己情況,有選擇性的下載吧~
    發表于 10-28 10:23 ?19次下載

    文看懂高低壓配電柜和配電箱的安全技術要求

    控制箱,開關箱,里面就是通過將些開關、斷路、熔斷、按鈕、指示燈、儀表、電線之類保護器件組裝成
    發表于 04-09 16:49 ?1.3w次閱讀

    高低壓繼電器的工作原理 高低壓繼電器的作用

      高低壓繼電器是指一種繼電器,它能夠同時檢測高壓和低壓信號,并作出相應的動作。通常情況下,它包括高壓部分和低壓部分,因此又叫“高低壓兩用繼
    發表于 03-28 18:08 ?5631次閱讀

    高低壓繼電器的特點 高低壓繼電器的檢測方法

      高低壓繼電器是指一種繼電器,它能夠同時檢測高壓和低壓信號,并作出相應的動作。高低壓繼電器是一種重要的電氣
    發表于 03-28 18:15 ?1492次閱讀

    高低壓繼電器的動作及如何調整低壓

      高低壓繼電器的動作是由其內部的輸入信號觸發產生的。例如,當高壓部分檢測到高壓信號超出設定值時,會向控制電路發送信號,繼電器會響應該信號,進行相關動作。低壓部分同理,在接收到低壓信號
    發表于 03-29 14:00 ?2088次閱讀

    高低壓繼電器的結構組成和如何調節電壓

      高低壓繼電器是電氣設備中的一種控制元件,常常用于監測和控制高低壓電路中的信號。高低壓繼電器通
    發表于 03-29 14:25 ?2212次閱讀

    高低壓繼電器的應用范圍和使用方法

      高低壓繼電器般用于電力系統、電氣設備、制造業等領域,功用是用于控制保護、監測電路的開關和設備,通常用于高壓和
    發表于 03-29 16:59 ?2049次閱讀

    高低壓繼電器的安裝事項和維護保養方法

      高低壓繼電器是一種用于調節高低電壓問題的電器組件,主要用于調節家庭、工業和商業領域中的電力設備、電器和照明設備。高低壓繼電器的安裝需要注意以下幾個方面:
    發表于 03-29 17:15 ?967次閱讀

    簡單的高低壓斷路電路分享

    如今,電氣和電子設備的保護是主要關注點。些電子設備對電壓非常敏感,即它只有在提供足夠的電壓時才能起作用。由于高壓和低壓供應,些電器甚至被摧毀。為了解決此類問題,我們發布了
    的頭像 發表于 02-25 15:31 ?1393次閱讀
    簡單的<b class='flag-5'>高低壓</b>斷路<b class='flag-5'>電路</b>分享
    主站蜘蛛池模板: 亚洲欧洲日产国码中学| av天堂电影网在线观看| 国产午夜精品视频在线播放| 青青涩射射| 99热免费精品店| 浪货嗯啊趴下NP粗口黄暴| 亚洲欧美综合在线中文| 国产老肥熟xxxx| 无人区乱码1区2区3区网站 | 国产一区二区免费在线观看| 四虎国产精品免费观看视频| 成年无码av片| 色欲无码国产喷水AV精品| 北条麻妃夫の友人196| 秋霞鲁丝片Av无码| 成人动漫bt种子| 色爱区综合激情五月综合激情| 被高跟鞋调教丨vk| 色偷偷爱偷偷要| 国产免费啪嗒啪嗒视频看看| 午夜向日葵视频在线观看| 国产无线乱码一区二三区| 亚洲成年人在线观看| 极品色αv影院| 中文字幕va一区二区三区| 免费A级毛片无码无遮挡| 99久久99久久精品| 色mimi| 国产亚洲精品在线视频| 亚洲视频在线观看网站| 美女动态图真人后进式| 超级碰碰青草久热国产| 无码国产色欲XXXX视频| 久久精品国产欧美| chinese耄耋70老太性| 婷婷亚洲AV色香蕉蜜桃| 久草在线福利视频在线播放| 97色色极品av影院| 午夜福利体检| 女子扒开腿让男生桶爽| 国产精品永久免费视频|