Чт июл 05, 2012 13:49:04
Чт июл 05, 2012 14:52:02
Чт июл 05, 2012 19:51:00
Чт июл 05, 2012 21:39:40
Пт июл 06, 2012 05:54:07
orinoko писал(а): Нужно усилить сигнал с датчика или использовать резисторный мост, или второе с первым. Усиление должно быть таким, чтобы напряжение изменялось от примерно 10 до 90% полной шкалы АЦП (обычно это напряжение ИОН*).
Пт июл 06, 2012 08:48:25
Biggy писал(а):Доброго времени суток =)
Появилась задача прикрутить данный ТС к аврке, схему вроде набросал
но сразу возник ряд вопросов. Нижний резистор, каков должен быть его номинал и его точность, если требуемый мне диапазон в 50 градусов и точность измерения +-1 градус хватит.
Питание, заводимое на ТС, используют ли для этой цели общее питание с МК от стабилизатора типа 7805 или требуется отдельный прецизионный источник.
Может быть уже есть готовые проект с кодом и схемами, буду признателен за любую помощь.
P.S. Плз, не надо писать про использование DS18(B/S)20 или замену ТС на него.
...
...
...
ldi r16, 0b00100111 ; VCC as VREF, ADC left, вход ADC7 (PA7)
out ADMUX, r16
ldi r16, 0b11000011 ; Enable ADС, Prescale = 1/8
out ADCSR, r16
adc_cnv_DT:
sbic ADCSR, 6
rjmp adc_cnv_DT
in r16, ADCL ; читаем код АЦП
in r17, ADCH ;
ldi ZL, low(ADC_TEMP_3900) ; Характеристика датчика
ldi ZH, high(ADC_TEMP_3900);
add ZH, ZH
add ZL, ZL
brcc ZH_no_inc
inc ZH
ZH_no_inc:
ldi r24, 170+20 ; Ищем диапазон характеристики датчика
low_ADC:
subi r24, 10
lpm r20,Z+
lpm r21,Z+
cp r21, r17
brlo low_ADC
brne hig_ADC
cp r20, r16
brlo low_ADC ; r17:r16 измеренное значение ADC
hig_ADC:
sbiw ZL, 4
lpm r18,Z+ ; наименьшая точка диапазона ADCmin
lpm r19,Z+ ;
;
sub r21,r19
sub r20,r18
brcc r21_nopDT
dec r21 ; ширина диапазона ADC
r21_nopDT:
sub r17,r19
sub r16,r18
brcc r17_nopDT
dec r17 ; смещение точки
r17_nopDT: ; измеренного значения в диапазоне ADC
ldi r22, 10
mul r24, r22 ; температура наим. точки диапазона ADC
ldi r23, 50 ;
ldi r24, $ff ;
div_r2120:
inc r24 ;
sub r20, r23 ;
brcc div_r2120 ;
subi r21, 1 ;
brcc div_r2120 ;
add r20, r23 ;
lsr r23
sub r20, r23
brcs no_corect
inc r24 ;
no_corect:
add r17, r17 ;
add r16, r16
brcc r17_nopDT1
inc r17
r17_nopDT1:
ldi r20, $ff ;
div_r1716:
inc r20 ;
sub r16, r24 ;
brcc div_r1716 ;
subi r17, 1 ;
brcc div_r1716 ;
add r16, r24 ;
lsr r24
sub r16, r24
brcs no_corect1
inc r20 ;
no_corect1:
sub r0, r20 ;
brcc r1_nopDT ;
dec r1 ;
r1_nopDT:
mov r16, r0
mov r17, r1
subi r16, $f4 ;
brcc r17_nopDT2 ;
dec r17 ;
r17_nopDT2:
subi r17, $01 ; На выходе r17:r16 температура в hex, шкала 0.1*C
...
...
...
ADC_TEMP_3900: ; Material Constant = 3900
.dw $0544,$0640
.dw $0802,$0ac0,$0e4a,$1360,$1a40,$2440,$31c0,$4440
.dw $5c40,$7900,$9880,$b700,$d0c0,$e3c0,$efc0,$f6c8
.dw $4f80 ; АЦП при t=25*C
Пт июл 06, 2012 11:39:30
Biggy писал(а):orinoko писал(а): Нужно усилить сигнал с датчика или использовать резисторный мост, или второе с первым. Усиление должно быть таким, чтобы напряжение изменялось от примерно 10 до 90% полной шкалы АЦП (обычно это напряжение ИОН*).
А можно с этого места поподробней, плз.
Пт июл 06, 2012 13:03:51
Пт июл 06, 2012 13:14:06
Пт июл 06, 2012 13:43:12
Пт июл 06, 2012 18:36:52
Пт июл 06, 2012 18:52:07
Сб июл 07, 2012 07:23:23
Сб июл 07, 2012 08:24:10
Вс июл 08, 2012 19:34:12
Вс июл 08, 2012 20:53:53
Пн июл 09, 2012 07:15:59
orinoko писал(а): А если вкратце, то при заданном диапазоне температур незначительное изменение сопротивления, как следствие, маленький диапазон напряжений на входе АЦП. Надеюсь, мысль сами закончите
Пн июл 09, 2012 08:54:49
Пн июл 09, 2012 11:56:55
orinoko писал(а):Делитель R1R3 формирует как-бы виртуальный "ноль" для ОУ, вот поэтому и 2,5В при нулевом смещении..
orinoko писал(а):И вы забыли резистор (R4') между +ОУ и средней точкой правой пары резисторов..
Пн июл 09, 2012 12:14:35