| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Въпрос за термометър (PIC) http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=3728 |
Страница 1 от 2 |
| Автор: | Иво [ Чет Фев 15, 2007 12:48 pm ] | |||||||||
| Заглавие: | Въпрос за термометър (PIC) | |||||||||
Здравейте, ползвам PIC16F870 и LM335. Ето я програмата:
Формулата temp=(read_adc()*0.48828)-273.15 я видях от един форум, обаче не е много точна. Лошото е, че температурата се извежда през 0.5C, а при по високи стойности на променливата пак се мени през 0.5, но не на кръгла стойност (примерно 48.1, 48.6, 49,1...). Как може да се направи да работи с точност 0.1C ? Благодаря предварително ! |
||||||||||
| Автор: | valioman [ Чет Фев 15, 2007 4:50 pm ] |
| Заглавие: | Re: Въпрос за термометър (PIC) |
ЗАщо делиш измерената стойнос на 2 т.е(read_adc()*0.488...) си е почти делене на две . Точността ти идва от датчика т.е. моя въпрос е . Как се именя напрежението от него в зависимост от температурата опитно... и пробвай да зададеш опорно напрежение на пика Vref и мери в по тесни граници. Така ще получиш по голяма точност мисля.... |
|
| Автор: | Иво [ Чет Фев 15, 2007 8:30 pm ] |
| Заглавие: | |
Здрасти, може би темата е а раздел Академия, оправих се |
|
| Автор: | Иво [ Чет Фев 15, 2007 8:51 pm ] |
| Заглавие: | |
Дааа... Обаче се оказва, че не е така. Сега при промяна на околната температура с 5 градуса/C, показанията се променят с 0.1.... |
|
| Автор: | ¶ [ Чет Фев 15, 2007 10:19 pm ] |
| Заглавие: | |
Пробвай с едно (float) пред read_adc() |
|
| Автор: | Иво [ Чет Фев 15, 2007 11:27 pm ] | |||||||||
| Заглавие: | ||||||||||
Здрасти, сложих (float), но нищо не се промени. Отново мери през 0.5 C.
|
||||||||||
| Автор: | ¶ [ Пет Фев 16, 2007 12:55 am ] |
| Заглавие: | |
Ако използваш 5V за опорно напрежение, при 10-битово АЦП, се получава разделителна способност от 4,88mV. При положение, че LM335 генерира на изхода си 10mV/C, то на 0,5C ще е 5mV, или приблизително колкото ти е разделителната способност на АЦП-то. Има 2 начина да увеличиш разделителната способност: софтуерен и хардуерен. Софтуерния е да направиш множество измервания, примерно 1024, като сумираш резултата след всяко измерване в 32-битово цяло число. След 1024 измервания, на теория, ще имаш резултат като от 20 битово АЦП. На практика обаче не е така. Чрез софтуерно увеличаване на разредността на АЦП-то можеш да го направиш най-много до 13-14 битово. Но и това е достатъчно, защото при 14-битово АЦП и 5V опорно напрежение ще получиш за тегло на 1 бит 0,610mV, което е по-малко от 1/10 от напрежението, което генерира LM335 при промяна на температурата с 1C. Хардуерния начин е описан много подробно в "Designing With The LM335 Temperature Sensor", by Mark E. Nurczyk, списание "Circuit Cellar", мисля от Feb 1992. Виж си PM. |
|
| Автор: | SpeedyX [ Сря Фев 28, 2007 8:14 pm ] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Заглавие: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ако мериш няколко пъти (oversampling), ще е по-добре, и да не забравиш dead band...
и дефинициите :
значи рутина за измерването ще е:
и за по-добрo измерване, забавим АЦП-то
Ако правиш ето така, с 10 битов ацп, можеш да получиш 12,13 битовa информация.
Така, както ти написа програма, не може да стане това. трябва да използваш Vref пиновете, и търси за "Ratiometric Measurement" и ако искаш да напредваш повече, ще прочетеш за "auto range" |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Автор: | sthx [ Сря Фев 28, 2007 9:56 pm ] |
| Заглавие: | |
Toва статистическо увеличаване на рарешаващата способност на АЦП е хитринка, която се получава благодарение на шумовете на сигнала и на самото АЦП. Аз също съм ползват тази хватка, но практиката ми показва, че е ефективна само за увеличаване на разрешаващата способност с 1 разряд. Не ми се вярва от 10 битово АЦП да се получи 14 битово. |
|
| Автор: | ji4ka [ Сря Фев 28, 2007 10:55 pm ] | |||||||||
| Заглавие: | ||||||||||
Ами не може! Дори и да го изпишеш някак си на дисплея показанието просто няма да е вярно. Самия датчик не е разчетен за такава точност. А и да е разчетен ,съмнявам се ,че ще можеш да го калибрираш да показва реалната температура. Точност 0.5С си е максималната за тоя хардуер дето ползваш. |
||||||||||
| Автор: | sthx [ Сря Фев 28, 2007 11:18 pm ] |
| Заглавие: | |
Не ми се искаше да засягам въпроса с точността на измерване, но ще подкрепя жичката. Може и да се направи показанието да се изменя през 0.1 градуса, но това едва ли ще е вярно. Калибрирането на такъв термометър е сериозен проблем. Виж - за домашно ползване става. |
|
| Автор: | SpeedyX [ Чет Мар 01, 2007 12:16 am ] | |||||||||
| Заглавие: | ||||||||||
Enhancing ADC resolution by oversampling (Atmel) http://www.atmel.com/dyn/resources/prod ... oc8003.pdf |
||||||||||
| Автор: | sthx [ Чет Мар 01, 2007 10:47 pm ] |
| Заглавие: | |
Mнооого готина табличка. Просто на човек му удва на сърце да я допълни до 24 битово АЦП. И да се чуди що се правят все още АЦП-та като схеми и да смята отношението на цените на 1 пин на процесорчето и едно АЦП. Хартията и без това търпи всичко. Чел съм българска статия по проблема, но авторът и нямаше такъв оптимизъм. Ето още едно оптимистично решение на Analog Devices : http://mcu-bg.com/mcu_site/viewtopic.php?t=2790 Moята практика е следната. Ползвах 8 битово АЦП. Правех 256 измервания и делях на 128. Така получавах 9-битово АЦП, което не ми създаваше проблеми. Когато се опитах да го вдигна на 10-битово, започна да се наблюдава прескачане на стойности. Ако някой има практика с тоя род шмекерлъци, нека да сподели. |
|
| Автор: | ¶ [ Чет Мар 01, 2007 11:44 pm ] |
| Заглавие: | |
Точно LM335, захранен с токов генратор (0.5mA), измерване с 10-bit ADC на PIC18F2520, правя oversampling до 14-bit ADC и няма никакви прескачания в показанията, Vref=4.096V, без ОУ, през НЧФ RC филтър директно на входа на ADC-то, 1/10 от градуса резолюция на дисплея. Като си доближа ръката на около 3-4 см от сензора и показанието на дисплея веднага мръдва с 2-3 десети от градуса. Калибровка с метода на "мишницата" |
|
| Автор: | sthx [ Пет Мар 02, 2007 9:36 am ] |
| Заглавие: | |
Пирев, тебе съм те признал в много отношения. С това твое ново качество, би бил безценен инструмент в която и да е сериозна метрологична служба. Даже съм чувал от докторите, че аналният метод е по-точен от метода под мишницата и с него вероятно би хванал и стотна от градуса. Но това вероятно ще се докаже от компетентните специалисти след многобройни тестове. Пак от лекари съм чувал, че на по-обикновените хора температурата се мени циклично в денонощието и зависи от много фактори. По света се продават и други симулатори на температура и температурни датчици, но обикновено не достигат точностите, които си достигнал. http://www.fluke.nl/comx/show_product.a ... &pid=23623 http://www.fluke.nl/comx/show_product.a ... &pid=19351 http://www.shopping.com/xFS?KW=Fluke+724&CLT=SCH http://www.shopping.com/xFS?KW=Fluke+744&CLT=SCH Аз определено не вярвам на себе си , та камо ли да разчитам на телесната си температура и затова използвам стари бабешки методи за калибрация. Определено на полупроводников датчик не мога да разчитам за по-отговорни приложения, най-малкото поради по-големия ефект на стареене при полупроводниците. Предпочитам да използвам терморезистори от вида Pt100 и Pt1000. Тези, които се продават масово са с клас на точност +/-0.3 градуса при нула градуса по целзии. Явно е необходима калибровка, като всеки датчик си върви с термометъра. Калибровката я правя в 2 точки, защото за повече ме мързи , а да калибрирам само в една точка ми се струва несериозно. Относно разредността , която може да се получи от АЦП-то, чрез метода на осредняване на голямо количество резултати. Тука има един парадокс. Колкото са повече флуктуациите, толкова по-голяма разрешаваща способност можеш да докараш. Ако АЦП-то, опорният източник и източника на сигнала са ти идеални, то всички резултати ще са едни и същи и кокото измервания да правиш, няма да постигнеш по-голяма разрешаваща способност. Явно в моя случай шумките са били по-малко и е трябвало да вкарам някак си повече смущения, за да постигна по-добър резултат. |
|
| Страница 1 от 2 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|