Meranie napájacieho napatia na module bluepill (STM32f103)

Pozdravujem,
vyvíjam zariadenie s STM32f103 (bluepill), ktore je napajané akumulatormi (3 x NIMH v serii = 3.6 V), chcem merat a vyhodnocovat napatie na bateriach, je mozne nejako zmerat napajacie napatie mikrokontroléra (Vcc). Je mozne pouzit ADC0 a prepojit ho s Vcc ?

dakujem za kazdu odpoved.

Připojit to možné je, ale tak stejně napětí na baterkách nevyhodnotíš. Je potřeba nějaká pevná reference buď interní (Například AVR čipy umí interní referenci 2,56V nebo 1,1V - podle MCU) nebo externí (předpokládám, že STM má vstup pro externí referenci pro AD převodník). Reference musí (nebo aspoň by měla) mít nižší napětí, než je minimální možné (kdy to ještě funguje) napětí na baterkách, pokud chceš vyhodnocovat v celém funkčním rozsahu. Napětí z baterek pak přivedeš na AD vstup přes takový dělič, abys při maximálním napětí dostal na AD převodníku hodnotu těsně pod jeho maximem - pro 8 bitů (0-255) hodnotu třeba 252, pro 10 bitů (0-1023) třeba 1020 atd.

Diky za odpoved !

ano stm32f103 ma 1,2 V internu napatovu referenciu.
to to mi je uz jasne - dik.

Este mam dotaz, stm32f103 pisu ze ma rozsah napajacieho napatia 2.7 do 3.6 V, chcem pouzit
na napajanie 3 x nimh to je 3.6 V avsak kupil som baterie ale maju o nieco vyssie napatie ako 1.2 na clanok cca 1.27 V, teda neodpalim ten stm32f103 ? ak tam pripojim napajacie napatie 3.8 V ?

dakujem

radop2

No jestli má 1V2 referenci, tak to asi nezměří víc než 1V2 ne? Takže budeš muset upravit tvoje max. napětí 3V8 na 1V2. Použil bych odporový dělič tak, aby 3V8 vyšlo někde kolem 1V. Takže např. 10k a 3k8 odpory a při napětí 3,8V budeš mít na odporovém děliči 1,046V.

Je to ještě horší … plně nabité články mohou mít až 1,4V !

Dik za odpoved.

rozhodol som sa ze pouzijem Li-Fe (litium ferit) akumulator, da sa kupit celkom vyhodne a clanok ma 3.2V co mi uplne vyhovuje. (lebo 3.2V mozem napajat uProcesor a aj LoRa rf modul aj dalsie periferie)

Dik za inspiraciu

R

Zadal jsem do google dotaz ohledně té tvojí baterie:

The nominal voltage of one single LiFePO4 battery cell is 3.2V , and the charge voltage range is 3.50-3.65V.

Z toho mi vyplývá, že pro měření stejně budeš muset upravit jeho maximální výstupní napětí odporovým děličem. Takže si myslím, že bez nějaké stabilizace to bude na hraně. Protože krajní meze tyto mcu mají právě 3,6V.

resil jsem neco podobnyho napajeneho z baterek ale pozadavek byla co nejmensi spotreba coz odporovej delic rozhodne neni… nejaky napad do budoucna?
napeti musis stahnout pod napeti reference a nechat tam rezervu …

Co mít odporový dělič a ten si nějakým fetem spínat jenom po dobu měření?

Ahojte,

vdaka za reakcie.

Ano potrebujem co najmenej stiahnut prud na zariadeni napajaneho z baterie, odpojil som LED power a tak isto stabilik na BLUEPILLe. V STANDBY mode je takto spotreba okolo 24uA. (je v tom aj prud pre LoRa modul v stave SLEEP)
Ked pouzijem jednoduchy delic na meranie baterkoveho napatia tak je prud na minime lebo BLUEPILL sa uspi a raz za pol hodinu sa zobudi a zmera napatie ostatne veliciny, posle ich a znova zaspi.

STM32F103 ma internu napatovu referenciu. Viem toto napatie zmerat (cca 1.2V na ADC_CHANNEL_17) ale ako teraz zmeram napajacie napatie Vcc (alebo na pine VBat ?)

Dik

R

STM32F103 ma internu napatovu referenciu. Viem toto napatie zmerat (cca 1.2V na ADC_CHANNEL_17) ale ako teraz zmeram napajacie napatie Vcc (alebo na pine VBat ?)

Tak teď fakt nevím. Tak jestli umíš změřit napětí na adc_channel_17 tak obdobně změříš napětí na na jiném kanálu, kde máš připojené Vcc a VBat bude taky určitě jiný kanál.

Ale mně spíše přijde, že ty vůbec nevíš co se kde děje s tím adc. Co se kam připojí, pokud se to přijí přes odporový dělič, tak proč to šlo přes odporový dělič, atp.

Dik za odpoved.

chcem sa spytat:

1,
takze viem zmerat napatie na AD prevodniku vtedy ked nepouzivam internu napatovu referenciu.
na zistenie napatia pouzijem tento kusok programu:

  float V1;
  V1 = ((float)adc_value * 3.3)/(float)4095;

  v adc_value je hodnota nacitana cez funkciu HAL_ADC_GetValue(&hadc1);

  toto funguje.

2, teraz potrebujem zmerat Vdd , ktore je pripojene na AD prevodnik kanal 1. cez napatovy delic
(napr 200k a 50k) teda na AD kanal1 pripojim Vdd napatie delene 5.

 potom napatie V1;
 V1 = 5 x ((float)adc_value * 1.2)/(float)4095;
 pricom 1.2 V je napatie internej napatovej referencie.

Ale pred meranim tohoto V1 musim "dat vediet" procesoru aby
pouzival Vref ( internu napat. referenciu )

asi tak by to malo byt nie ?

diky

R