Įtampos matavimo adapteris

Užduotis: sukonstruoti galvaniškai izoliuotą matuoklį, matuojantį 0-1000V diapazono įtampą, su 0,1V paklaida. Tikslumas gaunasi 10000 padalų. 16 bitų keitiklis turės 2^16=65536 padalų. Srovės matavimo riba turėtų siekti 50A.

Primesta schema:

Panaudosime srovės matavimo elementą:

T60404-N4644-X400

4644-X400_en-240845 paimtą iš inverterių schemotechnikos, galintis matuoti iki 31A (pagal techninnes specifikacijas palaiko OverCurrent iki 92A). Mažiausia matavimo srovė yra 3A. Gal pavyks išmatuoti ir mažesnę srovę. Matysim po operacinių stiprintuvų koregavimo grįžtamu ryšiu.

operaciniai stiprintuvai dirba neinvertuojančio stiprintuvo režimu:

NeinvertOpStipr

 

įtampos stiprinimo koeficientas skaičiuojamas pagal formulę

Uis=Uin*(R1+R2)/R1

Trys srovės ir trys įtampos matavimo taškai pajungti prie Atmel procesoriaus analoginių įėjimų. Atmel procesoriaus ADC 10 bitų matavimo ribos 0…5V ir čia sutelpa 1024 matavimų. Matavimo paklaida gausis 0,1% arba -+10V (jeii matuosime minusinę įtampą tai 0,2% arba 20V ?!). Problema perslinkti operacinio stiprintuvo išėjimo įtampą nuo -2.5V..+2.5V iki 0-5V. Čia bus reikalingas techninis sprendimas.

Pabandysime primesti maitinimo bloką šiai schemai. Procesoriui reikės +5V įtampos, na o štai operaciniams stiprintuvams reikėtų +15V ir -15V įtampos. Įsivaizduokime, kad turime +12 V akumuliatorių, kaip maitinimo bloką,  iš kurio formuosime reikiamas įtampas. +5V pagaminsime per 7805 stabilizavimo elementą, o minusinei įtampai jau reikia keitiklio. Nesinori velti čia impulsinio maitinimo bloko, tačiau to neišvengsime, nes dar bus reikalinga akumuliatoriaus krovimo schema.

 

Programos adaptavimas iš Android į Raspbery, 2 dalis

Įdomu. Kiek maksimaliai įrašų įrašytų Raspbery į MySQL’ą?

1000 įrašų įrašė per 14 sekundžių.

Taigi tęsiame:

Klaida kompiliuojant test.c failą:

#gcc-o test.o test.c -L /usr/local/mysql/lib 'mysql_config-cflags-libs'

klaida: mysql_config-cflags-libs: command not found

įdiegiame modulį:  apt-get install php5-mysql

Klaida ta pati. Gal būt kompiliavimo eilutėje klaida? Pakoreguojame kopiliavimo raktą sekančiai (pagal google rastą dmoore patarimą: http://forums.codeblocks.org/index.php?topic=9236.0)

#gcc-o test.o test.c -L /usr/local/mysql/lib 'mysql_config --cflags --libs'

tekstinio failo ištrauka:

sprintf(qstr2, „%i”, exit1);//į qstr2 string tipo kintamąjį įrašo exit1 int tipo reikšmę
qstr3[0]=’\0′;//nulina string tipo kintamojo reikšmę
strcpy(qstr3, qstr1);//prie qstr3 kintamojo prideda qstr1 kintamąjį
strcat(qstr3, qstr2);
strcat(qstr3, „,1,1,1,1,1)”);
//printf(„%s”,qstr3);//išveda qstr3 kintamojo reikšmę į ekraną
//printf(„\n”);//išveda naują eilutę į ektaną
res = mysql_perform_query(conn, qstr3);//įvykdo qstr3 string kintamąjame esančią eilutę mysql serveryje
mysql_free_result(res);//atlaisvina res buferį  – mysql serverio rezultatą

Kaip ir veikia. Išsiaiškinkim, kiek įrašų galėsime įrašyti į 1GB SDcard kortelę.

Paleidžiam programą su 100000 exit1 kintamojo reikšme:startavo 14:31, baigė 14:54 laisvos vietos SD kortelėje yra 3,6GBbackup failas užima 6MB, įrašų skaičius 100000. Jei MySQL engine tipas yra InoDB, tai vieta jau turi būti rezervuota. Reikia ieškoti, kiek yra laisvos vietos MySQL serveryje.

Taigi, darom pertrauką, dabar konstruosime įtampos matavimo adapterį.