娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

制作一個0-20mA的信號發生器,可以給很多儀器儀表做校準或測試

發布者:心連心意最新更新時間:2024-06-20 來源: elecfans關鍵字:信號發生器  校準  測試 手機看文章 掃描二維碼
隨時隨地手機看文章

概述

一般儀器儀表的信號電流都為4-20mA,指最小電流為4mA,最大電流為20mA。傳輸信號時候,要考慮到導線上也有電阻,如果用電壓傳輸則會在導線的產生一定的壓降,那接收端的信號就會產生一定的誤差,所以使用電流信號作為變送器的標準傳輸。為什么選擇4-20mA而不是0-20mA呢?4ma而不是0ma是用來檢測線路開路的,如果0是最小,那么開路故障就檢測不到了。為了解決上述問題和避開相關噪聲的影響,我們用電流來傳輸信號,因為電流對噪聲并不敏感。4~20mA的電流環便是用4mA表示零信號,用20mA表示信號的滿刻度,而低于4mA高于20mA的信號用于各種故障的報警。


很多控制器接受來自各種檢測儀表的0~20mA或4~20mA電流,制作一個0-20mA的的信號發生器,可以給很多儀器儀表做校準或測試。

2. 總體方案設計

2.1. 設計目標

單片機控制4路PWM,輸出的PWM信號控制輸出電壓在0-3.0V之間,經過電流電壓轉電流電路變成電流信號,輸出電流在0-20mA之間。按鍵調節輸出電流,oled實時顯示4路電流值。

2.2. 設計思路

芯片選擇STM32F030C8T6,帶4路PWM輸出,性價比高,同時支持rt-thread操作系統,這里我們選用2.1的版本。OLED選用中景園電子0-96寸OLED。

2.2.1.硬件電路原理

圖1是一個電壓轉電流的典型電路。單片機輸出PWM,控制Vi電壓電平在0-3V之間,RL流過的電流為0-20ma。

圖1 電壓轉電流電路

圖2 OLED顯示電路

由于MCU內部可配置上拉電阻,所以可以直接將按鍵接到MCU上。

圖3 按鍵電路

2.2.2.軟件設計流圖

2.2.3.關鍵代碼

按鍵部分代碼。

/* key thread entry */

staticvoid key_thread_entry(void*parameter)

{

KEY_e i;

uint8_t key_state1[KEY_NUM];

uint8_t key_state2[KEY_NUM];

uint8_t key_counter[KEY_NUM];

rt_base_t level;

memset(key_counter, 0, sizeof(key_counter));

while(1)

{

for (i=KEY1; i{

key_state1[i] = rt_hw_key(i);

}

rt_thread_delay(RT_TICK_PER_SECOND / 20);

for (i=KEY1; i{

key_state2[i] = rt_hw_key(i);

}

for (i=KEY1; i{

if (key_state1[i] == key_state2[i] &&

key_state1[i] == 0)

{

level =rt_hw_interrupt_disable();

if (key_counter[i] == 0)

{

switch(i)

{

case KEY2:

if (pwm_channel< 3)

{

pwm_channel++;

}

break;

case KEY1:

if (pwm_channel> 0)

pwm_channel--;

break;

case KEY3:

if(pwm_value[pwm_channel] < 20000)

pwm_value[pwm_channel]++;

break;

case KEY4:

if(pwm_value[pwm_channel] > 0)

pwm_value[pwm_channel]--;

break;

case KEY5:

if(pwm_value[pwm_channel] < 16000)

pwm_value[pwm_channel] += 4000;

else

pwm_value[pwm_channel] = 20000;

break;

case KEY6:

if(pwm_value[pwm_channel] >= 4000)

pwm_value[pwm_channel] -= 4000;

else

pwm_value[pwm_channel] = 0;

break;

}

rt_kprintf('key %dclicked ', i);

}

if (key_counter[i] >= 5)

{

switch(i)

{

case KEY2:

if (pwm_channel< 3)

{

pwm_channel++;

}

break;

case KEY1:

if (pwm_channel> 0)

pwm_channel--;

break;

case KEY3:

if(pwm_value[pwm_channel] < 20000)

pwm_value[pwm_channel]++;

break;

case KEY4:

if(pwm_value[pwm_channel] > 0)

pwm_value[pwm_channel]--;

break;

case KEY5:

if(pwm_value[pwm_channel] < 16000)

pwm_value[pwm_channel]+= 4000;

else

pwm_value[pwm_channel] = 20000;

break;

case KEY6:

if(pwm_value[pwm_channel] >= 4000)

pwm_value[pwm_channel] -= 4000;

else

pwm_value[pwm_channel] = 0;

break;

}

rt_kprintf('key%d pressed ', i);

}

if (key_counter[i] < 5)

{

key_counter[i]++;

}

rt_hw_interrupt_enable(level);

}

else

{

key_counter[i] = 0;

}

}

rt_thread_delay(RT_TICK_PER_SECOND / 100);

}

}

oled顯示部分代碼。

/* oled thread entry */

staticvoid oled_thread_entry(void*parameter)

{

uint8_t i;

rt_base_tlevel;

char str_pwm[64];

OLED_Init();

OLED_Clear();

PWM_TIM1(999, 1); //48MHZ/(999+1)/(1+1) = 24KHZ

while(1)

{

//OLED_ShowString(0, 3,'1.3' OLED TEST');

if ((memcmp(pwm_value_temp, pwm_value, sizeof(pwm_value)) != 0) ||

(pwm_channel_temp != pwm_channel))

{

level = rt_hw_interrupt_disable();

memcpy((char *)pwm_value_temp, (char *)pwm_value, sizeof(pwm_value));

pwm_channel_temp = pwm_channel;

rt_hw_interrupt_enable(level);

for (i=0; i<4; i++)

{

if (pwm_channel == i)

{

snprintf(str_pwm, 64,'* %2d.%03d ma', pwm_value[i]/1000, pwm_value[i]%1000);

}

else

{

snprintf(str_pwm, 64,' %2d.%03d ma',pwm_value[i]/1000, pwm_value[i]%1000);

}

OLED_ShowString(0, i*2,(uint8_t *)str_pwm);

}

TIM_SetCompare1(TIM1, 0.915 *(pwm_value_temp[3] * 999) / 20000);

TIM_SetCompare2(TIM1, 0.915 *(pwm_value_temp[2] * 999) / 20000);

TIM_SetCompare3(TIM1, 0.915 *(pwm_value_temp[1] * 999) / 20000);

TIM_SetCompare4(TIM1, 0.915 *(pwm_value_temp[0] * 999) / 20000);

rt_thread_delay(RT_TICK_PER_SECOND / 10);

}

else

{

//OLED_ShowString(63,6,'CODE:');

rt_thread_delay(RT_TICK_PER_SECOND / 10);

}

}

}

2.2.4.RTT使用情況

按鍵的初始化函數可以不用再main函數中添加,而是在key.c中調用下面的函數就可以了INITDEVICEEXPORT(rthwkey_init),代碼看起來干凈整潔。通過scons來裁剪配置系統,不需要人為刪減代碼,非常好用。Finsh組件,方便調試,方便自定義添加串口命令。代碼類linux編程風格。提供POSIX 標準接口,上層代碼移植方便。


關鍵字:信號發生器  校準  測試 引用地址:制作一個0-20mA的信號發生器,可以給很多儀器儀表做校準或測試

上一篇:RCC時鐘控制系統組成及時鐘原程序分析
下一篇:一文知道串口通信的幀同步問題

推薦閱讀最新更新時間:2025-06-07 23:35

耐電壓測試儀該如何正確校準電流
  耐電壓測試儀該如何正確校準電流   1、將數字電流表與耐電壓測試儀連接好;   2、當耐電壓測試儀處在復位模式,電壓調節鈕逆時針旋到底,漏電流選擇開關放在2mA檔 (2mA為校準漏電流基準檔);   3、選擇合適的負載電阻;   4、將負載電阻串聯到數字萬用表和測試回路中;   5、按下啟動鈕使耐電壓測試儀處在測試狀態,緩慢調整輸出電壓約500V,看數字表電流顯示在1mA 處,然后調整電位器 W8,使 儀器 電流表讀數為1mA;   6、在校準基準電流1mA處正確無誤時,調節報警電流(1mA),可調節電位器W7使之報警;   7、檢查0.5mA、2mA、5mA、10mA、20mA各點的報警值應在±5%范圍內為合格;
[測試測量]
VNA使用方法:矢量網絡分析儀校準測試方法
是不是每次測量一個新的項目前都必須做校準?   這個是不一定需要的,盡量將每次校準的state存入VNA,名字最好為校準狀態,例如頻率范圍,輸入激勵功率等。如果有新的測試項目,但是它的測試條件和已有狀態相似,且load state后,檢查校準狀態良好,就可用使用以前的校準狀態,而不需要重新校準。   將校準state保存并調用的好處在于:Calibration Kit也是有使用壽命的,多次的校準,會是的校準件多次和校準電纜接觸,可能污染校準件,使得校準件特性發生改變,影響下一次校準。   盡量養成如下習慣:將網絡分析儀的port不用的時候加上防塵套;對測試電纜進行標號,使得VNA每個port盡可能固定連接某個電纜;對測試電纜不用
[模擬電子]
管窺校準溝通之道, 有效溝通是成功校準的基礎
泰克深知,校準服務提供商與客戶溝通的準確性和一致性對于校準過程的成功至關重要。 我最近有幸與 A2LA 的 Stephanie Morin 在一場網絡研討會中聚焦校準領域,探討了一些重點話題,具體如下。我們旨在解讀常見的行業術語,找出溝通障礙,并向您展示如何通過有關各方的密切合作來消除這些障礙。 使用相同的校準語言 Stephanie 和我首先討論了校準過程中所有人使用相同語言,并理解關鍵行業特定術語的重要性。對“NIST Traceable”或“ISO/IEC 17025”等術語的誤解可能導致校準過程后期出現各種問題。包括第三方審計不合格,或給維持可追溯性帶來挑戰。 NIST 可追溯的校準和經認可的校準
[測試測量]
管窺<font color='red'>校準</font>溝通之道, 有效溝通是成功<font color='red'>校準</font>的基礎
首款自校準可編程光子芯片面世
澳大利亞科學家領導的一個國際團隊研制出首款自校準光子芯片,其能“變身”數據高速公路上的橋梁,改變當前光學芯片之間的連接狀況,提升數據傳輸的速度,有望促進人工智能和自動駕駛汽車等領域的發展。最新研究發表于《自然·光子學》雜志。 光子電路能夠操縱和引導信息傳輸的光通道,也可提供搜索圖案等計算能力,而模式搜索是醫療診斷、自動駕駛車輛、互聯網安全等許多應用的基礎。芯片的快速可靠重編程能加快搜索速度,但要做到這一點,非常困難且極其昂貴,最新的自校準芯片則克服了這一難題。 這項研究的一個關鍵挑戰是將所有光學功能集成到一個可“插入”現有基礎設施的設備上。研究團隊提出的解決方案是:在芯片制造后對其進行校準,也就是使用集成參考路徑而非外
[半導體設計/制造]
首款自<font color='red'>校準</font>可編程光子芯片面世
超詳細的泰克示波器SPC自校準講解來了!新手必看!
第一步 :卸下示波器的所有探頭、轉換器以及信號連接。 第二步:打開示波器,熱機一刻鐘左右。通常溫差會影響示波器自校。 第三步:選擇主界面菜單進入Utilities,打開二級菜單。 第四步:進入第三步的二級菜單點擊“Instrument Calibration”或者類似名字的按鈕。 第五步:等待,SPC校準通過之后會顯示“Pass”。查看示波器狀態,選擇運行Run SPC,等待約一刻鐘完成。 經過若干時間等待,如果出現如下畫面: 恭喜你,通過了。到此為止,可以基本上判定該示波器是正常的。連續點按兩次Menu Off鍵,即可看到下圖通過的情況: 否則,儀器就存在故障,需要維修了。 溫馨提示: 經常做做SPC
[測試測量]
超詳細的泰克示波器SPC自<font color='red'>校準</font>講解來了!新手必看!
蘋果iOS 14.5重新校準電池健康 用戶紛紛表示容量更大
在此前發布的 iOS 14.5 Beta6 測試版中,蘋果為 iPhone 11、iPhone 11 Pro 和 iPhone 11 Pro Max 上的電池健康報告系統引入了重新校準過程,解決了一些用戶電池健康狀況顯示不準確的問題。   蘋果當時僅表示,這一過程可能需要幾周時間才能完成,現在有大量用戶反饋,校準后的 iPhone 電池最大容量有所提高。   例如 9to5Mac 作者 Benjamin Mayo 就表示,他的 iPhone 11 Pro 的最大電池容量從之前的 86% 提高到了 90%。   目前 iPhone 11 系列用戶可以在電池健康功能中查看具體參數。如果您看到以下信息,表明您的 iPhone 電池
[手機便攜]
如何選擇校準供應商和校準方法
當涉及到設備校準服務時,您一般都會有集中選擇,讓我們分解兩個最常見的選擇,以便更好地了解校準是什么以及何時需要校準。 正確的校準極大地幫助了開發人員的測試測量環節。作為校準供應商,泰克提供有關儀器性能和狀態的信息,并提供證書作為每件校準設備的服務證據。校準證書是儀器校準的正式記錄文件,可追溯至美國國家標準技術研究院(NIST)。校準證書本身的準確性和完整性反映了校準機構的有效性和可信度。 兩種最常見的校準級別是標準校準和認可校準。 首先對這兩個問題進行快速定義: 標準校準(ANSI/NCSL Z540.1) 此服務提供帶有校準日期和校準到期日期的校準證書。提供了可追溯性聲明。不符合試驗規范(超出公差)的測量參數
[測試測量]
安捷倫推出模塊化平臺全新多天線校準參考方案
安捷倫模塊化平臺全新多天線校準參考解決方案降低制造成本、提高測試系統靈活性 2014年 7 月 2 日,北京――安捷倫科技公司(NYSE: A)日前宣布推出多天線校準參考解決方案。該方案可用于校準和表征集成和制造階段的大型多通道相控陣列天線系統。這是模塊化系列的第二個參考解決方案,是安捷倫科技于今年早些時候推出的新概念,它由重要的基礎測試系統單元組成,包括硬件、軟件和測量專業知識。 參考解決方案提升了每秒內可測量的天線數,提供了多條并行測量的相位相干通道,并且優化了實時數字下變頻(DDC)的數據吞吐量。該系統還可快速集成至多通道天線校準測試環境中,從而采用近場窄帶陣列測試對接收機通道進行校準。 完整的相控陣天
[測試測量]
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 溆浦县| 凭祥市| 新营市| 昭通市| 徐汇区| 丹寨县| 新邵县| 聂荣县| 娄烦县| 遂昌县| 西城区| 闽清县| 彰化县| 澄迈县| 乌拉特后旗| 油尖旺区| 平利县| 无棣县| 凤庆县| 闽侯县| 太康县| 乐昌市| 环江| 上饶县| 故城县| 汝州市| 浦县| 和政县| 乌鲁木齐市| 玉山县| 石棉县| 双柏县| 焦作市| 邛崃市| 通江县| 秭归县| 道真| 临颍县| 勃利县| 麟游县| 蒙城县|