找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1723|回復: 4
收起左側

請教問題,用STC8A8K64DA單片機做了個多路模擬量采集,但是

[復制鏈接]
ID:1006638 發(fā)表于 2023-7-6 15:03 | 顯示全部樓層 |閱讀模式
請教問題,用STC8A8K64DA做了個多路模擬量采集,想輸出添加6個繼電器,根據(jù)輸入信號內容不同想讓每個通道可以指定選擇某個繼電器做為其超限的報警輸出。要求選擇了同一個繼電器的所有變量有一個超限就報警,都不超限關閉報警,不知意思表達清楚了沒報警選擇這部分沒思路。
回復

使用道具 舉報

ID:213173 發(fā)表于 2023-7-6 16:32 | 顯示全部樓層
        if(a>x || b>y || c>z)
        {
                Give_an_alarm=1;
        }
        else Give_an_alarm=0;
回復

使用道具 舉報

ID:94031 發(fā)表于 2023-7-6 16:34 | 顯示全部樓層
如果多路模擬量采集,量程變換完成,只需把各路報警要求與當前測量作比較,完成繼電器驅動。
回復

使用道具 舉報

ID:155507 發(fā)表于 2023-7-6 19:19 | 顯示全部樓層
你的問題是如何使用STC8A8K64DA單片機進行多路模擬量采集,并根據(jù)輸入信號的內容選擇特定的繼電器進行超限報警輸出。你希望當選擇了同一個繼電器的所有變量中有一個超限時觸發(fā)報警,如果都不超限則關閉報警。如果我理解得正確的話,下面是一種可能的解決方案:

1.首先,你需要配置STC8A8K64DA的多路模擬量采集功能。使用芯片的模擬輸入引腳和ADC模塊來連接并采集模擬信號。你需要確保正確設置ADC的參考電壓和采樣率,以獲得準確的模擬量讀數(shù)。

2.接下來,你需要連接6個繼電器到合適的輸出引腳上。這些引腳將用于控制繼電器的開關狀態(tài)。

3.在代碼中,你需要設置適當?shù)拈撝祦矶x什么情況下被認為是超限。當一個通道的模擬量讀數(shù)超過設定的閾值時,你可以將相應的繼電器引腳拉高以觸發(fā)報警。如果所有通道的讀數(shù)都低于閾值,則關閉報警。

4.為了實現(xiàn)這個邏輯,你可以使用條件語句(如if語句)來檢查每個通道的模擬量讀數(shù)是否超過閾值。如果超過閾值,則將相應的繼電器引腳設置為高電平。如果沒有超過閾值,則將該繼電器引腳設置為低電平。

以下是一個簡單的偽代碼示例,用于說明這個思路:


// 定義閾值
const int threshold = 1000;

// 采集并處理多路模擬量輸入
while (1) {
    for (int channel = 0; channel < numChannels; channel++) {
        // 讀取通道channel的模擬量值
        int analogValue = readAnalogValue(channel);

        // 檢查是否超過閾值
        if (analogValue > threshold) {
            // 設置對應繼電器引腳為高電平(觸發(fā)報警)
            setRelayOutput(channel, HIGH);
        } else {
            // 設置對應繼電器引腳為低電平(關閉報警)
            setRelayOutput(channel, LOW);
        }
    }
}
在上面的示例中,你需要根據(jù)你的硬件連接和具體需求進行適當?shù)男薷。此外,你還需要實現(xiàn)讀取模擬量輸入和設置繼電器輸出的相關函數(shù)。

請注意,這只是一個基本的示例代碼,你可能需要根據(jù)你的具體應用場景進行更多的功能和錯誤處理。希望這個解決方案對你有所幫助,如果你有任何進一步的問題,請隨時提問。

回復

使用道具 舉報

ID:1006638 發(fā)表于 2023-7-7 09:23 | 顯示全部樓層
如果1234通道都選擇了6號繼電器,那么1通道超限繼電器吸合,2通道不超限繼電器斷開,3通道超限繼電器又吸合,4通道不超限繼電器又斷開,這不就震蕩了嗎
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表