Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

помощ за DS1820
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=1229
Страница 1 от 2

Автор:  alexander_hadjieff [ Сря Ное 09, 2005 12:31 am ]
Заглавие:  помощ за DS1820

Трябва ми програма за АСЕМБЛЕР за този термометър. Но т.к. фабрично е настроен да показва през 0,5 градуса искам да показва с по-голяма точност - до 0,01 градус или в най-добрия случай 0,001. По-надолу прилагам програмата, която извежда на екрана температурата, но с точност до 0,5 градуса. Тази програма трябва да се разшири. Предварително благодаря!!!

start:
call res1820
mov a, #occh
call w1820
mov a, #044h
call w1820
call t1s
call res1820
mov a, #0cch
call w1820
mov a, #obch
call w1820
call r1820
mov 60h, #0
clr c
rrc a
jnc k1
mov 60h, #5
k1: mov b, #10
div ab
mov 61h, b
mov 62h, a
mov a, 62h
orl a, #30h
call cout
mov a, 61h
orl a, #30h
call cout
mov a, #'.'
call cout
mov a, 60h
orl a, #30h
call cout
call newline
jmp start

Автор:  VSU [ Сря Ное 09, 2005 12:44 am ]
Заглавие: 

DS1820 не позволява такава точност (дори в 12 бита режим)има писано по тая тема във форума поразрови се малко търси други датчици за такава точност

Автор:  ToHu [ Сря Ное 09, 2005 1:53 am ]
Заглавие: 

За тази точност Pt100/1000 или нещо на принципа на кварцовите термометри .... с термодвойка също е възможно, но там има и други специфики, не че с pt100 няма да има де :)

Автор:  alexander_hadjieff [ Сря Ное 09, 2005 11:34 am ]
Заглавие: 

VSU написа:
DS1820 не позволява такава точност (дори в 12 бита режим)има писано по тая тема във форума поразрови се малко търси други датчици за такава точност


Знам. че не позволява такава точност, но моя преподавател изисква да се няправи програмата без значение от точността. Това е само за трениране на писането на програми. А аз по-принцип не съм учил програмиране. Или това, което съм учил не е достатъчно. Просто ми трябва само програма, която да направи разряд след десетичната запетая до стотни или хилядни. Много ще съм благодарен на някой, ако напише някаква такава програма.

Автор:  ToHu [ Сря Ное 09, 2005 12:00 pm ]
Заглавие: 

Хм .. как да прави разряд след десеттичната запетая, сензора ти дава 12 битово число , и каквото и да го правиш то си е 12 битово, единствения вариант е от там нататък да го измисляш, един случаен генератор и си правиш нужните числа, друг начин няма.

chart[record_number][k-1]=0.0625*(256*recive_data[k*2]+recive_data[k*2-1]);

ето това е сметката в РС-то която правя за температурата, като данните ми са 16 битови .. не знам защо съм го правил така това преобразуване ...:), за сконите говоря ....т.е. виждаш едно умножение с 0.0625 .. не знам как я виждаш тая точност т 0.01 градуса, от 0-120 какъвто е обхвата ти трявбат дота повече битове от 10 ....това са си 12000 отчета, 14 бита, не знам каква програма си преставяш.

п.с. нищо не ти пречи вместо 0.0625 да пишеш 0.062547589475 :)

Автор:  bateAz [ Сря Ное 09, 2005 8:06 pm ]
Заглавие: 

Мериш 50 пъти и вземаш средно аритметично. Ще имаш РЕЗОЛЮЦИЯ 10 миликелвина.

Автор:  ToHu [ Сря Ное 09, 2005 8:29 pm ]
Заглавие: 

ами ..... резолюция ....... почти като интерполацията при скенерите .. ама там поне има малко математика :)

Автор:  bateAz [ Сря Ное 09, 2005 10:34 pm ]
Заглавие: 

ToHu написа:
ами ..... резолюция ....... почти като интерполацията при скенерите .. ама там поне има малко математика :)


А ти какво очакваш? С ръжен да хванеш SOT-23 ли ?

Автор:  ToHu [ Сря Ное 09, 2005 10:52 pm ]
Заглавие: 

Исках да кажа че с тоя термометър вс еая как ще го направиш, дали ще сложиш измислени цифрицки на константата или ще осредняваш n отчета ....:)

Автор:  bateAz [ Сря Ное 09, 2005 10:57 pm ]
Заглавие: 

На практика почти е така.

Автор:  [ Чет Ное 10, 2005 12:38 am ]
Заглавие: 

Ако имаш 10-битово АЦП и направиш 2 на N-та измервания с него, вземеш средноаритметичното от тези измервания, ще разшириш обхвата на АЦП-то до N-битово. Логиката е проста: реалната стойност е да речем X[V], първия път мериш X1[V], втория X2[V], средноаритметичното е много по-близко до реалната стойност отколкото ако вземеш поотделно X1[V] или X2[V]. На подобен принцип работят Sigma Delta АЦП-тата, на които можеш да разширяваш и свиваш разредността по твое желание и които са много точни, но са за бавни процеси.
Според мен, ако направиш и сумираш стойността на 2 на N-та измервания с DS1820 в една резултатна клетка, след което махнеш част от младшите битове, които ще се клатят като пиян човек на хоро, можеш спокойно да направиш измерването от 12-битово на да речем 16-битово. Например, имам LM335Z, вързан към 10-битово АЦП на PIC18F2520, правя 1024 измервания, става 20 битово АЦП, но от изследване на резултата разбрах, че на младшите 6-бита не мога да разчитам, тъй че ги махам. Получава се 14-битово АЦП, при което измерената стойност е много стабилна, а теглото на 1 бит при даденото Vref = 3.98V е
242.9 uV и ми дава основание да изписвам измерената стойност с 1 десета от градуса ( 242.9uV делено на 10mV на градус при LM335Z дава 0.024 градуса разделителна способност ) . При съпоставка на така направен термометър със сензор Pt1000 в термокамера, се оказа че грешката ми е 1 десета от градуса в обхвата от 30 до 100 градуса.

Автор:  Bezmozachen [ Чет Ное 10, 2005 11:07 am ]
Заглавие: 

Така е, аз ползвам 12 битово АЦП, за измерване на температура в обхват 0-1200 градуса, за една стойност извършвам 2048 измервания и вземам старшите 16 бита за изчисление на точната стойност в градуси. Това ми позволява да работя с точност 1/16 от градуса при регулиране, което е напълно достатъчно. Разбирасе е добре да има и малко филтриране при измерванията.

Автор:  bateAz [ Чет Ное 10, 2005 11:16 am ]
Заглавие: 

Пирев, това е вярно, ама ако имаш да се бориш само срещу бял шум. Когато грешките ти се дължат на : нелинейност на конвертора, отместване, температурни грешки в референса и/или конвертора, грешки във 'signal conditionig' и др. такива - просто не става.

Автор:  ToHu [ Чет Ное 10, 2005 11:21 am ]
Заглавие: 

Абе разширяване на бхвата май не се прави просто с много измервания, с това верно имаш точност, но разширение ......доколкото си спомням, дано не греша, в дебелите книги едно врее тоя вариант го имаше, ама там менят и опорното, и така получават разширение на обхвата. многото измервания могат да намалят влиянието на немонотонноста на ADC ама не виждам как може да получиш по точно, да речем да мръднеш с 1 бит общо, въпрки че и това ми се вижда много. Матемтически не си го обеснявам имаш х+х+х+х+х .... /n което е усредняване, не виждам как такова усредняване може да даде резултат с по голяма рарядност от х. Може да елиминира флуктоации в Х но според мен до тук ....

Автор:  Bezmozachen [ Чет Ное 10, 2005 11:37 am ]
Заглавие: 

Въпроса с разширяването е доста сложен, според мен много зависи дали ще се получи от това какво има преди АЦП-то. Но от практиката знам че може да се получи.

Страница 1 от 2 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/