Цифровой измеритель...
 
Уведомления
Очистить все

Цифровой измеритель ёмкости elm-chan`а

154 Посты
25 Пользователи
0 Likes
178.9 Тыс. Просмотры
akl
 akl
(@akl)
Estimable Member
Присоединился: 15 лет назад
Сообщения: 144
 

Измерить значение неизвестной величины, значит сравнить ее с эталоном или его частью. Естественнее, что эта часть будет степенью числа 10. Видимо, поэтому выбраны калибровочные емкости 10Е-9 и 10Е-7.


ОтветитьЦитата
maxim
(@maxim)
Eminent Member
Присоединился: 15 лет назад
Сообщения: 38
 

Соглашусь. Но что то меня смущает эта часть...

ldi AL, 125 ;Start Timer2 (500ms)
mov _Stm2, AL ;/
rcall measure ;Measure at low range
brcc PC+3 ;If time out, retry at high range
cbi PORTB, 3 ;
rcall measure ;/
rcall adjust_zero ;Refresh display
rcall adjust_gain ;
rcall disp_val ;/
sbi PORTB, 3 ;Set low range

rjmp main


ОтветитьЦитата
maxim
(@maxim)
Eminent Member
Присоединился: 15 лет назад
Сообщения: 38
 

И где в програме используются занесенные в ЕЕРRОМ данные калибровки...


ОтветитьЦитата
maxim
(@maxim)
Eminent Member
Присоединился: 15 лет назад
Сообщения: 38
 

И что имеется в виду, когда отображается отрицательный результат?


ОтветитьЦитата
akl
 akl
(@akl)
Estimable Member
Присоединился: 15 лет назад
Сообщения: 144
 

Здравствуйте. В приведенном Вами фрагменте программы нет обращения к EEPROM, т.к. данные калибровки по диапазонам заносятся из EEPROM в RAM при старте программы. Для примера, на скане приведен результат выполнения такой пересылки.

Касательно индикации отрицательного результата ничего сказать не могу. Извините.
Единственное, что можно предположить так это нелогичный порядок действий.
Если, допустим, к прибору подключен конденсатор и прибор был обнулен. Затем конденсатор был отключен и, естественно, будет отрицательный результат.


ОтветитьЦитата
fox
 fox
(@fox)
Active Member
Присоединился: 15 лет назад
Сообщения: 12
 

Может быть тормажу, но есть индикатор LSD052bsr-10 на схеме, к аноду идет от rn2205 контак, получаеться на этом индикаторе,яс объединаю оставшиеся ноги а именно 8 3 6 и пускаю на него сигнал от rn2205, верно? если нет попрате.


ОтветитьЦитата
akl
 akl
(@akl)
Estimable Member
Присоединился: 15 лет назад
Сообщения: 144
 

Здравствуйте. Согласно этому DS (стр.3) нужно 3,8 лапы каждого индикатора соединить с соответствующим транзистором. Одноименные катоды всех индикаторов соединяются вместе.
http://www.image.micros.com.pl/_dane_techniczne_auto/ows.52zagd.pdf


ОтветитьЦитата
fox
 fox
(@fox)
Active Member
Присоединился: 15 лет назад
Сообщения: 12
 

Здравствуйте. Согласно этому DS (стр.3) нужно 3,8 лапы каждого индикатора соединить с соответствующим транзистором. Одноименные катоды всех индикаторов соединяются вместе.
http://www.image.micros.com.pl/_dane_techniczne_auto/ows.52zagd.pdf

Ок спасибо, невнимательно даташит читал.


ОтветитьЦитата
maxim
(@maxim)
Eminent Member
Присоединился: 15 лет назад
Сообщения: 38
 

мой вам совет - используйте счетверенные индикаторы (например, RL-F5620). разводка проще и проблем потом меньше


ОтветитьЦитата
maxim
(@maxim)
Eminent Member
Присоединился: 15 лет назад
Сообщения: 38
 

Еще один вопросик (если кому не трудно) по поводу калибровки, если можно поподробнее.
И еще, 1000 и 10000 - это что?

cal_high:
cbi PORTB, 3 ;Measure capacitance for reference high
rcall measure ;
sbi PORTB, 3 ;/
ldiw C, 0 ;X:D:C = 1000*65536; (100nF reference cap)
ldiw D, 1000;
ldiw X, 0 ;/
ldiw Z, Comp2

rjmp cal_comp

cal_low:
rcall measure ;Measure capacitance for reference low
rcall adjust_zero ;/
ldiw C, 0 ;X:D:C = 10000*65536; (1nF reference cap)
ldiw D, 10000 ;
ldiw X, 0 ;/
ldiw Z, Comp1

maxim
Беру паузу для ответа, в течение которой потрудитесь объяснить, что это такое в комментариях
http://file..../list.html :twisted:
Неужели, чтобы выложить файл размером меньше 3 кбайт, обязательно нужно послать туда, где сначала нужно насмотреться на девку со свечой в Органе. akl


ОтветитьЦитата
Radioded
(@sergey)
Estimable Member Admin
Присоединился: 5 лет назад
Сообщения: 184
Topic starter  

Выложил прошивку для ATtiny2313 на сайте, добавил ссылку внизу статьи. Дублирую во вложении:


ОтветитьЦитата
maxim
(@maxim)
Eminent Member
Присоединился: 15 лет назад
Сообщения: 38
 

Еще один вопросик (если кому не трудно) по поводу калибровки, если можно поподробнее.
И еще, 1000 и 10000 - это что?

cal_high:
cbi PORTB, 3 ;Measure capacitance for reference high
rcall measure ;
sbi PORTB, 3 ;/
ldiw C, 0 ;X:D:C = 1000*65536; (100nF reference cap)
ldiw D, 1000;
ldiw X, 0 ;/
ldiw Z, Comp2

rjmp cal_comp

cal_low:
rcall measure ;Measure capacitance for reference low
rcall adjust_zero ;/
ldiw C, 0 ;X:D:C = 10000*65536; (1nF reference cap)
ldiw D, 10000 ;
ldiw X, 0 ;/
ldiw Z, Comp1

maxim
Беру паузу для ответа, в течение которой потрудитесь объяснить, что это такое в комментариях
http://file..../list.html :twisted:
Неужели, чтобы выложить файл размером меньше 3 кбайт, обязательно нужно послать туда, где сначала нужно насмотреться на девку со свечой в Органе. akl

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


ОтветитьЦитата
akl
 akl
(@akl)
Estimable Member
Присоединился: 15 лет назад
Сообщения: 144
 

"прошу прощения"
Забыто.

По вопросу. Можно заметить, что выбранные автором постоянные времени различаются в 10 раз.
Числа 10'000 для младшего диапазона и 1'000 появляются потому, что автор наивно подагает - калибровочные емкости имеют именно такие емкости. В этом как раз и состоит основной недостаток программы. Если при калибровке подключить конденсатор с заранее измеренной емкостью и забить в программу его значение, то можно этот недостаток устранить.
Пример:
Со=1.076*10Е-9( точно известная емкость конденсатора, по которому производится калибровка младшего диапазона )
Проведу расчет еще раз с учетом моих ошибок
Fclk=10МГц
Ro=3.3МОм
Co=1.076*10E-9

n(0.17)= 10Е7[Fo]*0.186[ln(1-0.17)]*3.3*10E6[Ro]*1.076*10E-9[Co]=6'616
n(0.5) = 10Е7[Fo]*0.693[ln(1-0.5)]*3.3*10E6[Ro]*1.076*10E-9[Co]=24'612
n(0.5)-n(0.17)=17'996
10'760*65'536/17'996=39'184
Я бы именно это число записал в EEPROM, как коэффициент преобразования, но автор чего-то тут намудрил.
Теперь, какой результат получился бы при измерении емкости ровно 1*10Е-9
n(0.17)= 6'148
n(0.5) =22'873
n(0.5)-n(0.17)=16'725
Сх=39'184*16'725/65536=9'999
Но автор легких путей не ищет, а затевает какое-то умножение на 33. Непонятно.
Для второго диапазона получение калибровочного значения выполняется аналогично.


ОтветитьЦитата
maxim
(@maxim)
Eminent Member
Присоединился: 15 лет назад
Сообщения: 38
 

Соглашусь. Но тогда зачем умножать при калибровке а потом делить при измерении на 65536? Это, я так понимаю, количество тиков, после которых сбрасывается счетчик. Тойсть мы при измерении запоминаем количество сбросов щетчика?


ОтветитьЦитата
akl
 akl
(@akl)
Estimable Member
Присоединился: 15 лет назад
Сообщения: 144
 

Умножение на 65536 при калибровке - простой и очень эффективный прием ухода от дробных чисел.
Особенно на ассемблере. Получить значение 10'760/17'996=0,59791 гораздо тяжелее, чем занести
10'760-> старшее слово множимого
0000 -> младшее слово множимого и, в результате, получить целочисленный коэффициент с 5-ю верными знаками. После измерения полученное значение nx умножается на калибровочный коэффициент и для получения значения результата берется старшее слово, а младшее слово или отбрасывается (в данном случае) или используется для округления.


ОтветитьЦитата
Страница 3 / 11