Главная arrow Форум  
21.04.2021 г.
Главная
Проекты
Статьи
Начинающим
Архив новостей
Ссылки
Контакты
Поиск
Файлы
Форум
Карта сайта
Авторизация





Забыли пароль?
Ещё не зарегистрированы? Регистрация
Поддержи наш сайт!
Через WebMoney

 R785211844650
 Z210696637574
 E368177590409

Форум ARV Research
Добро пожаловать, Гость
Пожалуйста Вход или Регистрация.
Забыли пароль?
В ответ на: Индикатор температуры тела (1 просматривает)
_GEN_GOTOBOTTOM Ответить

TOPIC: В ответ на: Индикатор температуры тела

#2803
pt200 (Пользователь)
Новичок
Постов: 7
graphgraph
Индикатор температуры тела 08.07.2009 14:45 Репутация: 0  
...Замечание о точности измерений. В программе реализовано измерение напряжения на VD1 с точностью лучше 0,1 мВ...
А как этого удалось добиться( АЦП 10 бит, опора 1.1 либо Vсс: т.е. минимальное разрешение порядка 1 мВ)?
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться.
#2808
ARV (Администратор)
Администратор
Постов: 2386
graph
В ответ на: Индикатор температуры тела 08.07.2009 18:48 Репутация: 175  
pt200 писал(а):
...Замечание о точности измерений. В программе реализовано измерение напряжения на VD1 с точностью лучше 0,1 мВ...
А как этого удалось добиться( АЦП 10 бит, опора 1.1 либо Vсс: т.е. минимальное разрешение порядка 1 мВ)?
ключевое слово ОВЕРСЕМПЛИНГ (oversampling)
Не стыдно не знать, стыдно не учиться
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться.
#2826
pt200 (Пользователь)
Новичок
Постов: 7
graphgraph
В ответ на: Индикатор температуры тела 09.07.2009 15:41 Репутация: 0  
Класс. Действительно работает.

-----------------------------------------------------------

Хотя нет поторопился.
Напряжение меряю на кондюке 1000 мкФ зашунтированным резистором 1 МОм.

Code:

  #include <iotiny13.h> #include <intrinsics.h> #define BIT0  0x01 #define BIT1  0x02 #define BIT2  0x04 #define BIT3  0x08 #define BIT4  0x10 #define BIT5  0x20 #define BIT6  0x40 #define BIT7  0x80 #define uint8 unsigned char #define int8 signed char #define uint16 unsigned short #define int16 signed short #define uint32 unsigned long #define Wait( q) { register uint8 z = q; do{ __no_operation();}while( --z);} #define Wait2( q) { register uint8 z = q; register uint8 x; do{ x = 250; do{ __no_operation();} while( --x);}while( --z);} //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// #define SPD  50 void send_byteuint8 q) {   uint8 w;      PORTB &= ~BIT4;   __delay_cyclesSPD 4);   for( 8ww--)   {     if( 0x01)     {       PORTB |= BIT4//Stop       __delay_cyclesSPD 10);     }     else     {       PORTB &= ~BIT4;       __delay_cyclesSPD 10);     }     >>= 1;   }   PORTB |= BIT4//Stop   __delay_cycles16 SPD);    } int main() {   register uint32 tmp;   register uint8 q; ////////////////////////////////////////////////////////////////////////////////   DDRB 0x00;   //All input   ///////////////////////////////////////////////////////////   ACSR BIT7//ACD: Analog Comparator Disable   ADMUX 1//Internal Voltage Reference | ---ADLAR: ADC Left Adjust Result | ADC2   ADCSRB 0x00//ADC Free Running mode   ADCSRA BIT7//ADEN: ADC Enable   ADCSRA |= BIT6 BIT5 BIT1;  //ADSC: ADC Start Conversion | ADATE: ADC Auto Trigger Enable | ADC Prescaler = 4   ///////////////////////////////////////////////////////////      DDRB  |= BIT4;   PORTB |= BIT4;   for( ;;)   {     tmp 0;     for( 255qq--)     {       while( !( ADCSRA BIT4)){}//Wait Convert end       ADCSRA |= BIT4;//Clear int flag       tmp += ADC;     }     tmp >>= 4;          send_bytetmp 10000 '0');     tmp %= 10000;     send_bytetmp 1000 '0');     tmp %= 1000;     send_bytetmp 100 '0');     tmp %= 100;     send_bytetmp 10 '0');     tmp %= 10;     send_bytetmp '0');     send_byte'\r');     send_byte'\n');   }   return 0; }



Code:

  .......... 14056 14056 14056 14054 14041 14040 14040 14040 14030 14025 14025 14025 14023 14010 14009 14009 14009 14004 13993 13993 13993 13992 13980 13977 13977 13977 13972 13961 13961 13961 13961 13949 13945 13945 13945 13940 13929 13929 13929 13929 ........ 11666 11666 11666 11663 11651 11650 11650 11650 11650 11649 11636 11634 11634 11634 11634 11634 11626 11618 11618 11618 11618 11618 11615 11603 11602 11602 11602 11602 11602 11591 11586 11586 11586 11586 11586 11581 11571 11570 .......... 10518 10518 10518 10518 10511 10503 10502 10502 10502 10502 10502 10498 10487 10486 10486 10486 10486 10486 10485 10473 10470 10470 10470 10470 10470 10470 10459 ........... 10104 10099 10089 10088 10088 10088 10088 10088 10086 10074 10072 10072 10072 10072 10072 10072 10064 10056 10056 10056 10056 10056 10056 10052 10041 10040 10040 10040 10040 10040 10038 10028 10024 10024 10024 10024 ................ 07172 07171 07171 07171 07171 07171 07171 07171 07171 07170 07159 07156 07155 07155 07155 07155 07155 07155 07155 07155 07150 07140 07140 07140 07140 07140 07140 07140 07140 07140 07140 07134 07125 07124




Чегото ненаблюдается линейности изменения.

Содержимое поста отредактировано: pt200, в: 09.07.2009 16:08
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться.
#2827
pt200 (Пользователь)
Новичок
Постов: 7
graphgraph
В ответ на: Индикатор температуры тела 09.07.2009 17:55 Репутация: 0  
ARV писал(а):
pt200 писал(а):
...Замечание о точности измерений. В программе реализовано измерение напряжения на VD1 с точностью лучше 0,1 мВ...
А как этого удалось добиться( АЦП 10 бит, опора 1.1 либо Vсс: т.е. минимальное разрешение порядка 1 мВ)?
ключевое слово ОВЕРСЕМПЛИНГ (oversampling)


Так что пока не могу понять как удалось добиться честных 14ти бит ???

------------------------------------------------------------

P.S. Я не злой, мне действительно интересно как с помощью программного кода увеличить точность измерения.

Содержимое поста отредактировано: pt200, в: 09.07.2009 18:53
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться.
#2830
ARV (Администратор)
Администратор
Постов: 2386
graph
В ответ на: Индикатор температуры тела 09.07.2009 19:35 Репутация: 175  
во-первых, у вас ошибки в программе: вы делаете не 256 семплов, а 255.
во-вторых, прочтите "теорию" - для качественного оверсемплинга необходимо, чтоыбв сигнале присутствовал "белый" шум с амплитудой 0,5 младшего бита.
в-третьих, если белого шума нет, можно разогнать АЦП на частоту 1МГц, однако в этом случае шуметь будет уже не 1, а 2 или даже 3 младших бита, поэтому придется делать оверсемплинг до 15 бит, а верить только 12-13 битам.
в-четвертых, очень хорошо помогает фильтр результатов оверсемблинга. даже простой типа "скользящее среднее".
Не стыдно не знать, стыдно не учиться
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться.
#2833
pt200 (Пользователь)
Новичок
Постов: 7
graphgraph
В ответ на: Индикатор температуры тела 09.07.2009 21:03 Репутация: 0  
ARV писал(а):
во-первых, у вас ошибки в программе: вы делаете не 256 семплов, а 255.
Виноват, исправлюсь
А это сильно принципиально в данном случае?


во-вторых, прочтите "теорию" - для качественного оверсемплинга необходимо, чтоыбв сигнале присутствовал "белый" шум с амплитудой 0,5 младшего бита.

Возможно, но в тини13 какой есть АЦП, такой есть.


в-третьих, если белого шума нет, можно разогнать АЦП на частоту 1МГц, однако в этом случае шуметь будет уже не 1, а 2 или даже 3 младших бита, поэтому придется делать оверсемплинг до 15 бит, а верить только 12-13 битам.

т.е. разгон с ухушение и так не ахти параметров поможет???
Делал 4096 выборки. Тоже самое.


в-четвертых, очень хорошо помогает фильтр результатов оверсемблинга. даже простой типа "скользящее среднее".

Возможно. ( хотя оно будет работать на 10 битах без ОВЕРСЭМПЛИНГА)
Это сколько же результата ждать придется

P.S. А Вы проверяли метод? т.е удалось реально( на железе, не на бумажках) достич разрешения более 0.1 мВ на ATtiny13???

Содержимое поста отредактировано: pt200, в: 09.07.2009 21:08
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться.
#2836
ARV (Администратор)
Администратор
Постов: 2386
graph
В ответ на: Индикатор температуры тела 09.07.2009 21:27 Репутация: 175  
реально в железе работает мой индикатор температуры.
температурный коэффициент диода - примерно 2мв/градус. когда я отлаживал на тини26 алгоритм (делал вывод на ЖКИ), у меня получалось в разных версиях алгоритма от 12-15 до 60-70 единиц АЦП на 3-4 градуса. по расчетам это соответствует 0,03 мВ на единицу АЦП. реально вольтметром я не проверял, т.к. такого вольтметра у меня просто нет. возможно, я немного преувеличил, и реально достигнутая точность около 0,1 мВ (может 0,2)...
реально мой индикатор фиксирует разницу температур в 0,1 градус (проверял медицинским термометром для жидкостей после калибровки), что так же соответствует в худшем случае 0.2 мВ. так что делайте выводы сами...

P.S. увеличение разрядности АЦП с 10 до 13 бит дает увеличение разрешения с 1мВ до 0,125 мВ - это как раз почти то, что я и сказал
Не стыдно не знать, стыдно не учиться
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться.
#2848
pt200 (Пользователь)
Новичок
Постов: 7
graphgraph
В ответ на: Индикатор температуры тела 10.07.2009 13:02 Репутация: 0  
Чегото не выходит каменный цветок то.
Идет все жуткими прыжками.
Грубо говоря res ~ ADC * к;
Да оно и немудрено АЦП впринципе не шумит

Code:

  00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00442 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00441 00442 00441 00441 00441 00441 00441 00441 00441 00442 00441 00441 00441 00441 00441 00441 00441 00442 00441 00441 00442 00441 00441 00441 00441 00442 00441 00441 00442 00441 00441 00441 00441 00441 00442 00441 00441 00441 00441 00441 00441 00441 00442 00441 00441 00442 00441 00441 00441 00441 00442 00441 00442 00442 00441 00441 00441 00441 00442 00442 00441 00442 00441 00441 00441 00441 00442 00442 00442 00442 00441 00441 00441 00441 00441 00442 00441 00442 00441 00441 00441 00441 00441 00442 00441 00442 00442 00441 00442 00441 00441 00442 00442 00442 00442 00441 00441 00441 00441 00442 00442 00442 00442 00441 00441 00442 00441 00442 00442 00442 00442 00441 00441 00442 00442 00442 00442 00442 00442 00442 00441 00442 00442 00442 00442 00442 00442 00442 00441 00442 00442 00441 00442 00442 00442 00442 00441 00442 00442 00441 00442 00442 00442 00442 00442 00441 00442 00441 00442 00442 00442 00442 00442 00441 00442 00442 00442 00442 00442 00442 00442 00441 00442 00442 00441 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00441 00442 00442 00441 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442 00442



ARV, намекните пожалуйста хоть немного куда копать.

--------------------------------------------------------------------------------------

Как я понимаю нада к входному сигналу подмешать шум. А как Вам это удалось в той схеме?

Содержимое поста отредактировано: pt200, в: 10.07.2009 14:13
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться.
#2849
ARV (Администратор)
Администратор
Постов: 2386
graph
В ответ на: Индикатор температуры тела 10.07.2009 14:52 Репутация: 175  
во-первых, не загромождайте форум огромными бессмысленными вставками - какой смысл в этом?
во-вторых, я уже вам отвечал: если заставить АЦП работать на частоте поболее номинальной, он начнет шуметь сам. это, конечно, не совсем корректно, но эффект дает.
Не стыдно не знать, стыдно не учиться
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться.
#2853
pt200 (Пользователь)
Новичок
Постов: 7
graphgraph
В ответ на: Индикатор температуры тела 10.07.2009 15:26 Репутация: 0  
ARV писал(а):
во-первых, не загромождайте форум огромными бессмысленными вставками - какой смысл в этом?
во-вторых, я уже вам отвечал: если заставить АЦП работать на частоте поболее номинальной, он начнет шуметь сам. это, конечно, не совсем корректно, но эффект дает.

Задрал частоту по самый некуда.
Нету шума про какой в книжках пишут.
Единственное чего добился это минимальный шаг от 1 до 5 единиц может быть.

Мелкашки:
ATtiny13-20PU
ATtiny13V-10PU

P.S. Видел упоминае еще про одного человека который из 12бит - 16 честных получал. Жуть короче. Видать руки у меня не оттудова растут.

P.S2. Вставки типа [_code_]_[_/_code_] имеют скроллбары и автоматом обычно ужимаются до небольшого размера чтобы не загромождать форум, а здесь скролбары есть, но чегото недоделано.
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться.
_GEN_GOTOTOP Ответить
© Copyright 2007 Best of Joomla, Работает на FireBoardполучить последние сообщения прямо на Ваш рабочий стол