![]() |
發布時間: 2021-9-26 17:34
正文摘要:上個帖子,說因為3.6V升壓12V,然后在降5V給單片機供電,也用做ADC參考電壓,這樣升降壓電源波動很大,造成ADC數值很不穩定。壇友都說15W系列單片機有內部參考電壓,我是小白回頭看了手 ... |
188610329 發表于 2021-9-27 18:28 剛試了下,燒錄器5V直接供電單片機和LCD1602,斷開12V升壓SX1308的5V供電。ADC數值非常穩定,一點不跳動。但一接SX1308的供電(沒有如何負載),ADC馬上不穩定。SX1308開關頻率是固定1.2M,看來需要重新布局PCB降低干擾,或更換頻率低的升壓IC |
yinnan128 發表于 2021-9-28 10:19 1.19V是STC8G內部參考電壓值 1.27V是STC15W內部參考電壓值 |
Y_G_G 發表于 2021-9-28 01:14 1.19V這個電壓是怎么來的呢? |
yinnan128 發表于 2021-9-27 17:29 對的 第一校準之后,把當前的內部參考電壓寫入EEPROM之后,以后,不管VCC是多少,都可以通過內部參考電壓來測量VCC,精度就和8G系列是一樣的了 不推薦,太麻煩了 但如果你是一定要這么做,那最好是增加一個校準程序和按鍵或者串口通訊之類的,方便一次性完成和批量生產 |
188610329 發表于 2021-9-27 18:28 不知道你想說什么 15系列和8系列在內部參考電壓的使用上是有本質區別的 通過內部參考電壓測量VCC不需要進行兩次的ADC,只要進行一次內部參考的ADC就可以知道當前的VCC是多少了,當你得到內部參考電壓的數字量之后,再和1.19V進行運算,就可以知道當前的VCC是多少了 |
Y_G_G 發表于 2021-9-27 15:01 8 系列內部 參考電壓,現對 15系列的確每個批次 +- 要少, 但是,沒有什么實際意義,最終你要確切的電壓,還是必須要每一片讀一下出廠的測試數據,或者,你自己測量給出校正值。 但是,在依靠內部電壓為參考,去測量外部電壓時,還是要重新測量內部電壓,來知道當前的VCC電壓值,還要保證,測量內部電壓,算出VCC電壓,到利用這個算出來的VCC電壓,測量外部電壓這個過程,VCC不產生變化,這才是沒有Vref 引腳的單片機的硬傷。 其實,保證了,VCC的穩定之后,8系列也好,15系列也好,ADC這塊,本質上沒有什么區別,無非,一個要每一臺讀出基準電壓的具體數值直接用1.25V誤差有點大,,一個計算不測量,直接用1.19V最多業就是 千分之五的誤差。業就這個區別而已。 |
yinnan128 發表于 2021-9-27 17:29 沒用的, 比如,你VCC 5V 的時候,測到內部基準電壓是 0x40, 代表 1.25V, 你VCC 4V時 再測內部電壓,就要 0x6A 了, 所以,你只能,每次去測內部電壓, 并且保證, 測內部電壓時,和外部電壓時,你的VCC 不發生變化。 |
Y_G_G 發表于 2021-9-27 15:01 VCC首次用精準穩定的5V,測試出內部參考電壓并保存到EEPROM,次后如果VCC不穩定,用首次讀到的內部參考電壓和外部ADC對比,是不是就不受VCC影響呢 |
Y_G_G 發表于 2021-9-26 21:18 謝謝,找到說明了 |
188610329 發表于 2021-9-26 20:17 非常感謝你的回答。我用4位半萬能表測12V經7805降壓的5V,電壓顯示是穩定沒有波動,看來是電源紋波影響ADC的穩定,這個需要示波器才能判斷了。 下面是數據手冊給的讀取內部參考電壓列程,讀取到內部參考電壓后,怎么反推出鋰電池VCC電壓呢。還有你說的省IO口,是不是ADC第9通道首次讀取到內部參考電壓后,就可以設置為普通IO復用嗎。 第一步:通過ADC的第9通道測試Bandgap電壓的ADC測量值 ADC_RES=0; PIASF=0x00; II不設置PIASF,即可從ADC的第9通道讀取內部Bandgap電壓的ADC測量值 ADC_CONTR =ADC_POWER|ADC_SPEEDLL; Delay(2); ADC_CONTR=ADC_POWER|ADC_SPEEDLL10|ADC_START; _nop_0; _nop_0; _nop_0); _nop_O; while (I(ADC_CONTR&ADC_FLAG); ADC_CONTR &=~ADC_FLAG; ADCbg =ADC_RES; /I清除結果寄存器 /IADC上電并延時 /1等待4個NOP //等待ADC轉換完成 /1清除ADC標志 II第二步:通過ADC的第2通道測試外部輸入電壓的ADC測量值 ADC_RES= 0; PIASF=0x02; /1清除結果寄存器 1/設置P1.1口為模擬通道 |
188610329 發表于 2021-9-26 20:17 8A系列,8G系列,8H系列這三個的內部參考電壓是穩定而且是相對固定的,可以用來作為參考電壓來測量VCC的電壓 唯獨15W系列不行,雖然它內部參考電壓也是穩定的,但每一片之間并不是固定的1.27V,最大誤差可以達到0.2V,所以,直接用鋰電池供電,然后就測量VCC電壓是不行的 至少是要先進行一次校正,在15W數據手冊中,不止一次的強調要在VCC很精準的情況先測量內部參考電壓,然后保存到EEPROM中,而8A系列,8G系列,8H系列是沒有這個說明的 我之前就是用15W來DIY幾個小手電的,也是想通過內部參考電壓來測量電池電壓的,但是,5個單片機之間的誤差最大的就是0.2V,改用8G系列就可以直接測量了 |
它有一個通道電壓,但是每個差別比較大,需要在燒錄程序的時候設置獲得這個值保存在特定地址,然后根據這個值反推其他通道電壓 |
讓采樣傳感器(如分壓電阻)使用的電源,與AD的參考電源,是同一個電源。也是一種方式。 |
數據手冊898頁有說明 這個單片機我以前做LED手電的時候用過,就是想通過內部參考電壓來進行低電壓指示和自動關機,但內部參考電壓每片都有可能不一樣的,所以,經常出現低電壓指示不一樣的情況, 誤差最大可以達到0.2V 所以,每片要使用這個內部參考電壓之前都要進行測量才能正確的使用,很麻煩,后來才改用STC8G系列的 |
剛才,手機打字不方便,就簡單得回了一下。 上一篇你提問時,已經和你說過,STC15系列也好,8系列也好,只要沒有帶Vref 引腳的,接不接外部參考電壓,沒什么區別,反之,對VCC的穩定(是穩定,不是精確)要求是非常高的。上次沒有展開說,就這次和你捋一下原因。 有Vref 引腳,測量ADC的時候,滿值(1023,有的是4095)是以外部參考電壓Vref引腳的電壓作為標準,所以,無論你VCC如何波動,只要你的外部參考電壓,足夠穩定,你測量到的ADC結果,就是穩定的。 而沒有Vref引腳,無論你是通過內部參考電壓,做參考,還是外部ADC引腳接一個參考電壓,在每次測量的時候,ADC滿值的1023,都是針對當前的VCC電壓而言的,那么,你說當你VCC在4.9V~5.1V波動的情況下,你每次測量的ADC值,是不是都會上下浮動? 即便你用內部的參考電壓,或者外部接一個參考電壓。當你需要測量外部電壓的時候,都需要測量兩次,一次是用VCC測量參考電壓,一次是用VCC測量你需要知道電壓的被測電壓。問題的關鍵是,你需要確保這兩次測量的時候,VCC是沒有變化的。做不到這點,你的參考電壓哪怕再精準,被測電壓哪怕再穩定,最后得出的結果也是頻繁跳躍的。 經過我15W401AS系列 15W4k系列,8A系列,8G系列,8H系列的各系列驗證,當電池供電的情況下,通過ADC測量內部基準電壓的時候,返回值是極其穩定的,數值幾乎是恒定不動的(個人以為,測量ADC,數值穩定,精準重要的多,數值有偏差可以后期修正,不穩定是最麻煩的),比測量TL431(接在AD口)得到值要穩定的多(低2位~低3位會跳動)。當然,前面已經說了,Vref引腳另論。 所以,我才會建議你,單片機直接鋰電池供電,你測量內部基準電壓就能知道鋰電池電壓,省事,還省IO口。最后,15W是寬電壓,電池完全不需要降壓到3.3V,你上篇帖子說要降壓到3.3V是沒有任何意義的。 |
什么都不用接,內部參考電壓在內部,大約是1250nv,具體大小可以看isp檢測信息,每片不同。只要p1as=0,就是測的內部電壓,基于vcc為1023的,內部電壓,所以你測出512說明vcc是2.5v測出256,說明vcc是5v,所以,vcc接鋰電,你就直接得到了鋰電電壓。s |