標(biāo)題: 網(wǎng)上看的單片機電子秤程序,有幾點疑問請教各位大神 [打印本頁]

作者: zhth1979    時間: 2022-4-27 19:20
標(biāo)題: 網(wǎng)上看的單片機電子秤程序,有幾點疑問請教各位大神
這段就是電子秤的標(biāo)定程序,原理我是懂了,主要是保存兩個坐標(biāo)值到EEPROM,這段程序他是做到主程序里了,并加兩個獨立按鍵用于校準(zhǔn)但有兩個問題沒弄明白:問題1:這段程序我能不能獨立出來,放進24C02里, 要校準(zhǔn)時我外接24CO2校準(zhǔn)?  問題2:這兩個獨立按鍵能不能省掉,用開機鍵和去皮鍵共用?另外關(guān)于壓力傳感器的標(biāo)定程序網(wǎng)上資料很少,哪位大神對這方面有研究或有這方面的資料能分享一下嗎?在這里先謝謝了!

單片機源程序如下:
while(1)
        {
                if(Key_1)//去皮后的值保存到EEPROM里面,必須在5V環(huán)境下 校準(zhǔn)專用
                {
                        Key_1 = 0;
                        LED2 = 0;//燈亮
                        Main_Loop = 10;
                        while(Main_Loop--)
                                Tare = Read_18Bit_AD();//讀取出CS1237的數(shù)據(jù),5V情況下
                        Main_Loop = 10;
                        while(Main_Loop--)
                                BGA_EEPROM = Get_BGA();//在5V供電情況下,保存BGA參數(shù)
                        Wr_20_Long(0XD3B8,EEROM_20Long);//保存數(shù)據(jù)到EEPROM
                        LED2 = 1;//關(guān)燈
                }
               
                if(Key_2)//放上一個500g砝碼,用于校準(zhǔn)誤差,必須在5V供電環(huán)境下
                {
                        Key_2 = 0;
                        LED2 = 0;//燈亮
                        Main_Loop = 10;
                        while(Main_Loop--)
                                Weight_500g = Read_18Bit_AD();//讀取出500G的數(shù)據(jù)
                        Weight_Coe = Weight_500g -  Tare;//除去皮重的ADC數(shù)值
                        Weight_Coe = 500000 / Weight_Coe;//放大1000倍的斜率
                        Tare_Coe = Weight_Coe * Tare;//皮重的重量,放大1000倍之后的
                        Wr_20_Long(0XD3B8,EEROM_20Long);//保存數(shù)據(jù)到EEPROM
                        LED2 = 1;
                }


作者: Hephaestus    時間: 2022-4-27 19:50
按鍵當(dāng)然可以省,但是你要如何操作才能把去皮、開機和校準(zhǔn)功能都給實現(xiàn)呢?我感覺硬件去掉兩個鍵,軟件復(fù)雜度要增加10倍。
作者: zhth1979    時間: 2022-4-27 21:35
Hephaestus 發(fā)表于 2022-4-27 19:50
按鍵當(dāng)然可以省,但是你要如何操作才能把去皮、開機和校準(zhǔn)功能都給實現(xiàn)呢?我感覺硬件去掉兩個鍵,軟件復(fù)雜 ...

這個例程中的key1 和key2鍵就是標(biāo)定使用,其它時間不用!我想用開機和去皮鍵代替這兩個鍵標(biāo)定。
作者: yzwzfyz    時間: 2022-4-28 12:42
CPU讀到的是電壓值V,輸出的是重量W,就必須有一個V-W的表或公式。
程序只要根據(jù)讀的的V,經(jīng)公式計算或查表就可以得到對應(yīng)的W值。
通常用表比較方便。
你當(dāng)然可以將這個V-W轉(zhuǎn)換表放進24C02里,屆時你只要會從24C02取表查尋就可以了。
如果是公式,直接計算出結(jié)果就可以了。其它就不必了。
作者: lkc8210    時間: 2022-4-28 12:47
加長短按檢測就可以了~
作者: 鄭漢松    時間: 2022-4-28 17:42
用不同重量砝碼多次測量記錄AD值,用MATLAB算出曲線公式
作者: zhth1979    時間: 2022-4-29 09:22
yzwzfyz 發(fā)表于 2022-4-28 12:42
CPU讀到的是電壓值V,輸出的是重量W,就必須有一個V-W的表或公式。
程序只要根據(jù)讀的的V,經(jīng)公式計算或查 ...

可能我表達的不清楚,我現(xiàn)在是用公式y(tǒng)=kx+b計算的,這個傳感器是線性的,只要我用兩個按鍵按下,在這條斜線上取兩點求斜率就行了,上面例程是取兩點的數(shù)據(jù)保存在EEPROM里,主程序的功能我都寫好了,按鍵按下顯示按鍵的值,不按閃三秒就返回顯示實時壓力值。如果在不動或不影響主程序的情況下實現(xiàn)標(biāo)定,兩個方案:A.直接外接一個24c02加組合按鍵來實現(xiàn),并實時顯示標(biāo)定的兩個點的AD值。B.如例程一樣,直接把這個標(biāo)定程序放進main函數(shù)里,但這種方式我嘗試過,會出現(xiàn)兩個問題:1.不能顯示兩個點的AD值,顯示時會和主程序要顯示的內(nèi)容沖突(例程序是用兩個小燈指示解決)。2.組合鍵或單按鍵都不能把這兩點值保存到EEPROM(其它按鍵如加減可以把加減的數(shù)字保存到EEPROM)不是很明白!
作者: zhth1979    時間: 2022-4-29 09:24
鄭漢松 發(fā)表于 2022-4-28 17:42
用不同重量砝碼多次測量記錄AD值,用MATLAB算出曲線公式

可能我表達的不清楚,我現(xiàn)在是用公式y(tǒng)=kx+b計算的,這個傳感器是線性的,只要我用兩個按鍵按下,在這條斜線上取兩點求斜率就行了,上面例程是取兩點的數(shù)據(jù)保存在EEPROM里,主程序的功能我都寫好了,按鍵按下顯示按鍵的值,不按閃三秒就返回顯示實時壓力值。如果在不動或不影響主程序的情況下實現(xiàn)標(biāo)定,兩個方案:A.直接外接一個24c02加組合按鍵來實現(xiàn),并實時顯示標(biāo)定的兩個點的AD值。B.如例程一樣,直接把這個標(biāo)定程序放進main函數(shù)里,但這種方式我嘗試過,會出現(xiàn)兩個問題:1.不能顯示兩個點的AD值,顯示時會和主程序要顯示的內(nèi)容沖突(例程序是用兩個小燈指示解決)。2.組合鍵或單按鍵都不能把這兩點值保存到EEPROM(其它按鍵如加減可以把加減的數(shù)字保存到EEPROM)不是很明白!
作者: zhth1979    時間: 2022-4-29 09:27
Hephaestus 發(fā)表于 2022-4-27 19:50
按鍵當(dāng)然可以省,但是你要如何操作才能把去皮、開機和校準(zhǔn)功能都給實現(xiàn)呢?我感覺硬件去掉兩個鍵,軟件復(fù)雜 ...

是的,我現(xiàn)在打算不省這兩個按鍵或用組合鍵(如up+unit和down=unit)來取這兩點,不知道可行不?
作者: zhth1979    時間: 2022-4-29 09:32
lkc8210 發(fā)表于 2022-4-28 12:47
加長短按檢測就可以了~

一開始我也是這樣處理的,但這種會出現(xiàn)誤操作把斜率系數(shù)改變掉!還有就是我按上面的例程總是保存和顯示這兩個AD值,(按下按鍵1顯示0點的AD值并保存,按下按鍵2顯示500g的AD值并保存)




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1