找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4234|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

迷你氣壓溫濕度表制作

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:71235 發(fā)表于 2014-12-27 22:08 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
先看成品圖
  
    掌心大小,這是我目前做的有完備功能的、最小的DIY了。
    再看功能:1、可以顯示實(shí)時(shí)氣壓、溫度、濕度,可以選擇顯示或者3項(xiàng)輪流顯示;2、自帶鋰電,具有電池保護(hù)、充電控制電路;

    一、淵源:
    做這個(gè)DIY起源于一年前的一個(gè)設(shè)想:那就是做一個(gè)無線的氣象站,采用成熟的傳感器芯片,有一個(gè)室外采集終端和室內(nèi)采集、顯示終端,通過無線連接,后期又補(bǔ)充了網(wǎng)絡(luò)推送數(shù)據(jù)和GSM數(shù)據(jù)查詢功能,并已經(jīng)選好了具體的芯片型號(hào),只差下決心去做了,只是發(fā)現(xiàn)工程對(duì)自己來說還是有點(diǎn)浩大了,要做兩套不同的程序、要兩套程序統(tǒng)調(diào)、要考慮外殼的設(shè)計(jì)安裝,還有室外終端的供電問題,無線信號(hào)強(qiáng)度問題,這又涉及到無線模塊選擇的問題,最終設(shè)想暫時(shí)中止,這一停就是一年多時(shí)間。

    二、啟動(dòng):
    動(dòng)力來自于多方面:1、拜淘寶所賜,發(fā)現(xiàn)淘寶上有一種4位段式液晶顯示器,個(gè)頭很小,價(jià)格比此前長(zhǎng)沙太陽人的模塊便宜,也是三線式接口;2、單位里有不少?zèng)]人要的迷你磁帶盒,透明度很高,很適合做小東西的外殼;3、空閑得很,閑著也是閑著。

    三、電路設(shè)想:顯示用4位的HTB8832A段式液晶顯示器,氣壓采集用博世的BMP0805,溫濕度用盛世瑞恩的SHT10,精度是濕度4.5%,溫度0.5度,鋰電用600mah的,加一塊保護(hù)板和充電管理板,主控芯片用ATTINY24,2K容量,因?yàn)锽MP0805最高工作電壓是3.6v,而鋰電充滿電后是4.2v,為了安全決定采用3.3v的供電電壓,本來如果沒這個(gè)限制的話,整個(gè)系統(tǒng)都可以不用穩(wěn)壓了,直接用電池。

    四、模塊測(cè)試:
    共有四個(gè)模塊要測(cè)試:1、LCD 顯示模塊;2;SHT10溫濕度模塊;3、BMP0805氣壓模塊;4、充電管理模塊。

    (一)、LCD模塊:采用的是HT1621驅(qū)動(dòng)芯片,以前用的是長(zhǎng)沙太陽人的模塊,兩線或者三線,段碼要么是正碼要么反碼,跟LED數(shù)碼管相差不大,剛開始測(cè)試時(shí)也是按照普通數(shù)碼管編制的段碼表,發(fā)現(xiàn)顯示的數(shù)字無論如何都不對(duì),而店主提供的數(shù)據(jù)表也看得一頭霧水,研究了半天的HT1621數(shù)據(jù)手冊(cè),基本搞清了原來,卻和現(xiàn)實(shí)的顯示效果對(duì)不上號(hào),最后采用一個(gè)筆畫一個(gè)筆畫顯示,這才搞定了段碼表,但是還是發(fā)現(xiàn)了一個(gè)問題,就是供電電壓是5v,而不是店主說的3.3v,模塊上也沒有調(diào)整元件,這樣電路的供電要修改了,修改成了:主控、氣壓、溫濕度模塊仍舊用3.3v,LCD另外加一5v個(gè)升壓模塊,因?yàn)槭菃蜗虻耐ㄓ崳圆槐乜紤]電平轉(zhuǎn)換的問題;臨時(shí)又測(cè)試了模塊的電流,不加升壓是500ua左右,加了升壓是1.8ma,離我的想法有差距了,我計(jì)劃中的整機(jī)耗電電流應(yīng)該稍小于1ma,做到真正的低耗電電池設(shè)備;艘粋(gè)晚上搞定。

    (二)、BMP0805模塊:先上網(wǎng)找例程,找來找去,找到了一個(gè)arduino的演示程序,正好手頭有arduino板,可以測(cè)試一下模塊是否損壞。arduino程序編譯后是6K左右,這也難怪了,例程里有大量的浮點(diǎn)運(yùn)算,只是當(dāng)初我是認(rèn)為只要從模塊中把數(shù)據(jù)讀出來就可以的,沒想到還需要大量的校正運(yùn)算,看來attiny24的2k容量有點(diǎn)危險(xiǎn)了。沒有相應(yīng)的avr的c源程序怎么辦呢,那就直接移植arduino吧,基本不用改什么東西的,只是跟attiny接口上遇到了很大的問題,模塊跟avr用的是I2C接口,究竟是用avr內(nèi)置接口還是用模擬i2c接口呢,考慮到自己做單面板的布線比較困難,決定采用模擬I2c,這樣可以根據(jù)布線要求,選擇合適的端口,而不局限于固定的端口,套用了以前做收音機(jī)搞的一段I2c例程,調(diào)試起來真的很困難,總是無法知道程序錯(cuò)在i2c接口還是運(yùn)算程序,最后再才接到arduino,讀出正確的校正參數(shù),然后比對(duì)avr上的讀數(shù),確定是I2C的問題,當(dāng)1002的氣壓值出現(xiàn)在顯示器上的時(shí)候,心情無疑是很激動(dòng)的。BMP0805測(cè)試程序編譯后已經(jīng)差不多是2k了,這樣使用attiny24的計(jì)劃泡湯了,接下來改用m16開發(fā)板繼續(xù)測(cè)試SHT10。

    (三)、SHT10模塊:SHT10采用的是兩線的接口,但是并不兼容I2C,這樣也不用在是否使用主控接口上糾結(jié)了。網(wǎng)上例程很多,有自己寫的,但大部分改寫自官方的例程,有51的也有avr的,但是真要用的話就沒這么簡(jiǎn)單了,實(shí)際上當(dāng)貌似正確的數(shù)據(jù)出現(xiàn)在顯示器上的時(shí)候,還是發(fā)現(xiàn)有問題,別人的演示視頻里濕度數(shù)據(jù)會(huì)跳動(dòng),而我的似乎總在那么幾個(gè)數(shù)字上變動(dòng),而且變動(dòng)得相當(dāng)緩慢,別的濕度表早就動(dòng)了10%了,我這里還是紋絲不動(dòng),但是哈口氣它還是能動(dòng)的,說明還是從模塊里讀出了些什么,那么究竟是模塊本身問題還是接口的時(shí)序問題呢,單憑簡(jiǎn)陋的手段似乎不太容易了。于是想到以前在淘寶上看到的一種便宜的邏輯分析儀,可以用它分析時(shí)序,花了180大元買了一個(gè),大概熟悉了用法后,實(shí)測(cè)模塊時(shí)序,果然從波形上發(fā)現(xiàn)讀取的數(shù)據(jù)的LSB字節(jié)全是FF,而MSB是正常的,這絕對(duì)是時(shí)序問題了,對(duì)比官方例程,發(fā)現(xiàn)每次通訊結(jié)束后都必須拉高一下DATA,否則后續(xù)字節(jié)就會(huì)讀取失敗,看來這180元花得真值。

    (四)、充電模塊:很簡(jiǎn)單,計(jì)算充電電流,在計(jì)算充電時(shí)間,再看充滿是否自停,就可以知道好壞了。

    五、整合:
    最終要用的主控選定是Mega8L,最低電壓2.7v,容量8k,裝我的程序足夠,體積小巧,只有小指甲蓋大小,只是是QFN封裝,不過其他幾塊模塊也都要求用貼片焊接,再加上上次做過的電池電壓顯示器用的也是貼片,而且磁帶盒剩余空間只夠選用貼片了。設(shè)計(jì)電路板有點(diǎn)麻煩,因?yàn)闆]有現(xiàn)成的SHT10和BMP0805的封裝,所以要自己畫,然后再根據(jù)安裝要求調(diào)整元件的位置,整來整去又去掉用MINIUSB充電的念頭,最后板子做好后,發(fā)現(xiàn)漏掉了3.3v穩(wěn)壓芯片的位置,頭疼!


     接下來是焊接調(diào)試,出現(xiàn)異常情況,發(fā)現(xiàn)端口調(diào)試小程序不能點(diǎn)亮端口,或者只有1.6v的輸出電壓,要命的很,怎么修改程序都不行,最后半夜12點(diǎn)起床,冒著破壞PCB的危險(xiǎn),搞掉了M8L,換上了一個(gè)新的,剛開始測(cè)試時(shí)正常,甚至都能顯示正確的數(shù)據(jù),只是把功能切換程序加上去的時(shí)候,又出現(xiàn)了跟上次一模一樣的毛病,真的抓狂了,是5V升壓板破壞了M8L的端口了么,不像啊,程序能正常LOADED的,也能運(yùn)行,I2C所在接口也能輸出3.3V電平,而且在M8的開發(fā)板上都是這樣用的,只是無法點(diǎn)亮LCD,因?yàn)殡娖绞窃谔土,PCB已經(jīng)經(jīng)不起第二次折騰了,要么就是重做一塊,要么就此放棄本次DIY,不過這一冷藏,可能就是一年半載的時(shí)間。最后掙扎了一下,在LCD所在端口強(qiáng)制確定了數(shù)據(jù)方向?yàn)檩敵,沒想到成了!原來一直以為上電后默認(rèn)是輸出的,所以沒有另外加DDR命令。
    最后是總裝:理想總是美好的,到總裝的時(shí)候才知道,要把一堆東西裝進(jìn)一個(gè)不能變的外殼有多困難,最后去掉了用連接器連接電池的做法,改用插針連接,剪短了SIP插針和按鈕的高度,縮短了電池和充電板的電線,磨掉了一點(diǎn)LCD上的黑膏,總算能把所有東西都塞進(jìn)去了~~~。

    最后成品的數(shù)據(jù)準(zhǔn)確度由我的卡西歐登山表和一個(gè)溫濕度表開共同確定。氣壓的準(zhǔn)確性卡西歐可以保證,應(yīng)該BMP0805剛測(cè)試好的時(shí)候就發(fā)現(xiàn)兩者的數(shù)據(jù)非常接近,也就是卡西歐測(cè)試數(shù)據(jù)應(yīng)該是可信的,溫度顯示讀取的也是BMP0805,既然氣壓比較準(zhǔn)確,那么溫度也是可信的,盡管SHT10也能提供溫度數(shù)據(jù),濕度就很難說了,要這么貴的模塊靠一個(gè)幾十塊的便宜的家用溫濕度計(jì)來校正,真有點(diǎn)悲哀了,不過不管了,反正人家說了濕度本來就是個(gè)比較負(fù)責(zé)的參數(shù),精度差點(diǎn)也沒什么。再測(cè)一下整機(jī)的耗電,大約3ma,離理想有點(diǎn)遠(yuǎn),好在可以充電,不用太在意。

    耗時(shí)15天,費(fèi)銀90許,The Ending~~


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:194061 發(fā)表于 2017-4-27 07:48 | 只看該作者
兄弟能不能把那個(gè)HT1621的段位表給我一份?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表