Страница 4 из 5
Re: Измерение тока с помощью AVR
Добавлено: Пт окт 05, 2012 16:04:35
wellcom
а если использовать диф вход АЦП, то как его лучше подключить к имеющейся схеме/выходу ОУ?....плз рис
Re: Измерение тока с помощью AVR
Добавлено: Пт окт 05, 2012 16:14:55
ibiza11
а зачем вам выход ОУ подключать на дифференциальный вход?
если для повышения точности, то имейте в виду, что при использовании АЦП в режиме диффвходов ожидаемая разрядность еще меньше!
Re: Измерение тока с помощью AVR
Добавлено: Пт окт 05, 2012 16:25:21
wellcom
и все же, как лучше поступить......
есть резистор на 0,001 Ом, ОУ с 20 кратным усилением, атмега 32. Все уже запаяно в плату. Мерять ток нужно до 40 А и напряжение до 6 В, при Vref внутр 2,56В используя 10 битное разрешение используя однопорярные входы. Спасибо.
Re: Измерение тока с помощью AVR
Добавлено: Пт окт 05, 2012 16:26:38
ibiza11
самое главное не написали: с какой точностью нужно измерять?
Re: Измерение тока с помощью AVR
Добавлено: Пт окт 05, 2012 16:29:21
wellcom
напряжение как можно точнее а ток хотя бы +/-0,2-0,3А
Re: Измерение тока с помощью AVR
Добавлено: Пт окт 05, 2012 16:45:59
ibiza11
Давайте посчитаем:
(ИДЕАЛЬНЫЕ УСЛОВИЯ)
примем разрядность АЦП = 10; (2^10 = 1024)
тогда шаг дискретизации = 2,56В/1024 = 0,0025 В
учитывая ОУ, шаг дискретизации = 0,0025В/20 = 125мкВ (на стороне шунта)
шаг дискретизации измеряемого тока = 125мкВ/0,001 Ом = 0,125 А
Это означает, что мы можем получить показания с погрешностью +/- 0,125А
это САМЫЙ ИДЕАЛЬНЫЙ СЛУЧАЙ.
Теперь реальность:
1) Шунт + провода до шунта явно больше 0,001 Ом
Даже, если верить Ваши измерениям (2,1 А соответствовало падению напряжения 2,4 мВ), то сопротивление шунта равно = 2,4/2,1 = 1,143 мОм = 0,001143 Ом , а это уже 14% (!!!) вдумайтесь
2)АЦП меги без программных ухищрений даст от силы 9 разрядов при идеальном электромагнитном фоне + отсутствии помех по питанию.
В реальных условиях это уже 8 разрядов. отсюда шаг дискретизации увеличивается в 4 раза.
Исходя из Вашего описания схемы можно предположить, что лучшем случае точность ЕДИНИЧНОГО измерения тока будет не выше, чем +/-0,5А
wellcom писал(а):При токе в 2,1 А (меряю тестером), на резисторе падение 2,4мВ и соответственно после ОУ на входе АЦП = 48мВ.
Вы это измерили мультиметром или предположили исходя из коэффициента усиления?
wellcom писал(а):При чтении общего регистра ADCW (содержит ADCH и ADCL бит ADLAR =0) получаю непонятный мне результат, а именно 0х04h
Вот это крайне не похоже на то, что должно получаться.
ищите ошибку либо в программе (считывание данных) либо в цепях измерений (вход ОУ, вход АЦП)
Re: Измерение тока с помощью AVR
Добавлено: Пт окт 05, 2012 20:21:20
_Alex
А, какой ОУ используется для измерения тока?.
Двухполярное питании ИУ или ОУ? иначе как на выходе, получить 0 В. Так, же важен параметр смещения напряжения, у некоторых ОУ может быть и 4мв, и тогда 4мв Х 20 = 80мВ смещения, причем может гулять, а нужно мерять микровольты.
Re: Измерение тока с помощью AVR
Добавлено: Пт окт 05, 2012 23:38:17
eufs
YS писал(а):
eufs писал(а):ДХ взял от ДПР привода диска CDROM
Скорее всего, он был цифровой. А то и вообще не простой ДХ, а совмещенный с переключателем обмоток.
Такое впечатление, что вы сидиромы никогда не разбирали... Сам элемент холла не может быть цифровым. В старых приводах использовались BLDC двигатели с ДПР на элементах Холла в SOT23-4 (SOT143-4) прямо в двигателе. Их токовые диагонали соеденены последовательно, а выходные - в микросхему драйвера двигателя шпинделя. Подобные схемы были в приводах барабанов видеоголовок и ведущих валов в видиках.
Re: Измерение тока с помощью AVR
Добавлено: Пт окт 05, 2012 23:41:51
YS
Ваша правда, я не специалист в схемотехнике CD-ROM-ов. Просто я работал с отдельными датчиками Холла - цифровыми (переключатели, по факту - замена геркона) и аналоговыми (пропорциональный выход), вот и подумал...
Re: Измерение тока с помощью AVR
Добавлено: Пн окт 08, 2012 10:46:49
wellcom
ibiza11 писал(а):
wellcom писал(а):При токе в 2,1 А (меряю тестером), на резисторе падение 2,4мВ и соответственно после ОУ на входе АЦП = 48мВ.
Вы это измерили мультиметром или предположили исходя из коэффициента усиления?
wellcom писал(а):
При чтении общего регистра ADCW (содержит ADCH и ADCL бит ADLAR =0) получаю непонятный мне результат, а именно 0х04h
Вот это крайне не похоже на то, что должно получаться.
ищите ошибку либо в программе (считывание данных) либо в цепях измерений (вход ОУ, вход АЦП)
на входе АЦП Меряю мультиметром (достаточно точным), операционник прецизионный с однополярным питанием AD8211.
...по программе считывания данных, по идее, должно быть все нормально, так как еще одним и тем же куском кода меряю напряжение на другом канале АЦП. Вот кусок процедуры чтения
Спойлер
Код: Выделить всё
#define ADPS 0x07
#define MAX 100
#define true 1
#define false 0
....
ADMUX=(0x03<<6)|(ucnChannel&0x07); //подключаем к ADC нужный канал и устанавливаем источник опорного напряжения (внутр 2,56В)
ADCSRA=0x40|0x02; //первый раз стартуем преобразование на 64 (необходимо для инициализации)
ADCSRA= (1<<ADEN)|(1<<ADSC)|ADPS; //ON ADC|| ON однокр преобраз || частота ацп=clk/128
ucCounter=0;
while((ucCounter<MAX)&&(!bReady))
{
Ready=((ADCSRA&0x40)==0x0); //(ADSC==0 после окончания преобразования в bReady будет записана истина)
ucCounter++;
delay_us(10);
};
ADCSRA|= 0x10; //сбросили флаг прерывания ADIF
if(Ready) //если преобразование закончено
{
bResult=true; //указать что результат имеется
}
sprintf(Res,"\r\nADCW = %u",ADCW);UARSendStr(Res); //смотрим результат
delay_ms(100);
(*puiValue)=ADCW
Измерения делаю по 8 раз на каждом канале, и соответственно беру среднее значение.
Вот результаты измерений:
Спойлер
=================Ток без подключеной нагрузки (8 измерений суммирую и делю на 8 для получения среднего значения)
ADCW = 1
ADCW = 0
ADCW = 0
ADCW = 0
ADCW = 0
ADCW = 0
ADCW = 0
ADCW = 0
ADC Summ=:0x1h = 1
ADC Summ/8=:0
ADC Srednee=:0x0h = 0
ADC=0.000000 V
I=0.000000 A
==================Измерение Напряжения (результат с учетом делителя)
ADCW = 770
ADCW = 770
ADCW = 771
ADCW = 771
ADCW = 772
ADCW = 772
ADCW = 771
ADCW = 771
ADC Summ=:0x1818h = 6168
ADC Summ/8=:771
ADC Srednee=:0x303h = 771
U=:5.78 V -------------------------(измеренное мультиметром =5,77В)
==================Ток С подключеной нагрузкой (измерял мультиметром на входе АЦП = 46,6мВ и соответственно ток тоже мультеметром = 2,05А)
ADCW = 4
ADCW = 2
ADCW = 3
ADCW = 4
ADCW = 5
ADCW = 3
ADCW = 3
ADCW = 2
ADC Summ=:0x1Ah = 26
ADC Summ/8=:3 ------------------здесь результат должен быть в раене 18-19 что соответствовало бы 46-47 мВ
ADC Srednee=:0x3h = 3
ADC=0.007500 V
I=0.375000 A
Ну никак не могу понять почему при измерении напряжения все верно, а при измерении тока туфта....может канал АЦП бракованный? или есть какие то ньюансы чтения ADCW? или лучше самому читать регистры по отдельности ADCL, ADCH?
И самое интерестное что в протеусе код измерения как тока так и напряжения работает правильно -
Спойлер
На вход АЦП подаю 0,02В
ADCW = 10
ADCW = 10
ADCW = 10
ADCW = 10
ADCW = 10
ADCW = 10
ADCW = 10
ADCW = 10
ADC Summ=:0x50h = 80
ADC Summ/8=:10
ADC Srednee=:0xAh = 10
ADC=0.025000 V
I=1.250000 A
Re: Измерение тока с помощью AVR
Добавлено: Пн окт 08, 2012 12:28:18
ibiza11
wellcom писал(а):Измерение Напряжения (результат с учетом делителя)
как этот делитель учитывается в программе измерения напряжения???
я тут посчитал: при напряжении на входе делителя 5,77В, у Вас получается результат 771.
При опорном напряжении 2,56В и разрядности АЦП = 10 получается, что на самом деле на входе АЦП напряжение = 771/1024*2,56 = 1,9275 В
а это означает, что у Вас резистивный делитель делит напряжение на число = 5,77/1,9275 = 2,99
Если предположить, что в программе расчета тока тоже учитывается этот делитель, то получаются верные результаты.
И почему мы узнаем о делителе только сейчас? Программу измерения напряжения Вы сами писали?
Re: Измерение тока с помощью AVR
Добавлено: Пн окт 08, 2012 12:31:43
Gudd-Head
А я опять же нигде не увидел подстройку из-за разброса опорного напряжения, которое (напомню) может быть от 2.3 до 2.7 В. Насколько я понял, там только шунт и прецизионный 20-кратый усилитель.
Конечно, это ошибка не в разы, но всё же...
Re: Измерение тока с помощью AVR
Добавлено: Пн окт 08, 2012 13:02:50
wellcom
ibiza11 писал(а):wellcom писал(а):Измерение Напряжения (результат с учетом делителя)
Спойлер
как этот делитель учитывается в программе измерения напряжения???
я тут посчитал: при напряжении на входе делителя 5,77В, у Вас получается результат 771.
При опорном напряжении 2,56В и разрядности АЦП = 10 получается, что на самом деле на входе АЦП напряжение = 771/1024*2,56 = 1,9275 В
а это означает, что у Вас резистивный делитель делит напряжение на число = 5,77/1,9275 = 2,99
Если предположить, что в программе расчета тока тоже учитывается этот делитель, то получаются верные результаты.
И почему мы узнаем о делителе только сейчас? Программу измерения напряжения Вы сами писали?
ibiza11 Вашы расчеты верны, делитель на 3 стоит, но только по входу измерения напряжения. По входу измерения тока никаких делителей нету.
Вот как меряю:
Спойлер
Код: Выделить всё
if(ADC_GetSignal_Measure(4,&ui_tmp)) // 4 канал ацп, ток потребления
{
temp1=(0.0025*ui_tmp)/20; //делим на 20 т.к. операционник усиливает ровно в 20 раз
sprintf(Res,"\r\nADC Srednee=:0x%Xh = %u",ui_tmp,ui_tmp);UARSendStr(Res); //вывод для отладки
sprintf(Res,"\r\nADC=%f V\r\n",(ui_tmp*0.0025));UARSendStr(Res);
temp2 = temp1/0.001;
sprintf(Res,"I=%f A\r\n",temp2);UARSendStr(Res);
fl_I = temp2 ;
}
.................
if(ADC_GetSignal_Measure(3,&ui_tmp))// 3 канал ацп напряжение питание
{
temp1=(0.0025*ui_tmp)*DIVIDER_RATIO_V; //DIVIDER_RATIO_V=коеф. деления делителя =3
sprintf(Res,"\r\nADC Srednee=:0x%Xh = %u",ui_tmp,ui_tmp);UARSendStr(Res);
fl_U=temp1;
Gudd-Head писал(а):А я опять же нигде не увидел подстройку из-за разброса опорного напряжения, которое (напомню) может быть от 2.3 до 2.7 В. Насколько я понял, там только шунт и прецизионный 20-кратый усилитель.
Конечно, это ошибка не в разы, но всё же...
Подстройки никакой нету, пока и не требуется, измерял мультиметром = 2,53 В. По схеме - да, только шунт и прецизионник *20.
Re: Измерение тока с помощью AVR
Добавлено: Пн окт 08, 2012 13:15:45
ibiza11
а зачем вы делите результат на 400 (умножаете на 0.0025)? а зачем (в конце) умножаете на 1000? вообще не пойму логики...
какого типа переменные используются в программе? float?
Re: Измерение тока с помощью AVR
Добавлено: Пн окт 08, 2012 13:24:16
wellcom
ibiza11 писал(а):а зачем вы делите результат на 400 (умножаете на 0.0025)? а зачем (в конце) умножаете на 1000? вообще не пойму логики...
какого типа переменные используются в программе? float?
именно float. Мое понимание такое: в ADCW сохраняется 10 битный результат преобразования АЦП., т.е. количество квантов. 1 квант = 2,5мВ, отсюда что бы узнать напряжение на входе, я 0,0025В*ADCW (число квантов) и должен получить напряжение на входе АЦП. Так как оно усилено в 20 раз, я его и делю на 20, что бы узнать падение на резисторе и расчитать ток. Возможно все это можно как то по другому записать.....я просто в математике не силен.
Re: Измерение тока с помощью AVR
Добавлено: Пн окт 08, 2012 13:28:26
Gudd-Head
Если у вас резистор 0.001 Ом, то один квант после 20-ти кратного усилителя равен 0,125 А в вашей схеме.
Опять же, при условии что опорное равно 2,56 В. Буду занудой, но один шаг квантования АЦП может быть от 2,2 до 2,6 мВ из-за разброса опорного.
Re: Измерение тока с помощью AVR
Добавлено: Пн окт 08, 2012 13:37:47
wellcom
Gudd-Head писал(а):Если у вас резистор 0.001 Ом, то один квант после 20-ти кратного усилителя равен 0,125 А в вашей схеме.
Опять же, при условии что опорное равно 2,56 В. Буду занудой, но один шаг квантования АЦП может быть от 2,2 до 2,6 мВ из-за разброса опорного.
так и есть 0,125А, пробл в том что на входе 48мВ, а результат читаемый с ADCW = 3-4 (см. пост выше) а должно быть (48/2,5 = 19) в раене 18-19
если бы у меня опора была не 2,56, то и измерение напряжения было бы не верным.
Re: Измерение тока с помощью AVR
Добавлено: Пн окт 08, 2012 13:44:12
Gudd-Head
wellcom писал(а):результат читаемый с ADCW = 3-4, а должно быть (48/2,5 = 19) в районе 18-19
Значит, шумы.
1. Вы переключаете каналы АЦП с "напряжения" на "ток". Так? Сколько времени проходит между переключением и измерением?
2. Вы используете “ADC Noise Canceler”?
3. Ну и никто не знает как это всё реализовано у вас на плате — аналоговое/цифровое питание, земля, фильтруется ли дополнительно опорное напряжение...
Re: Измерение тока с помощью AVR
Добавлено: Пн окт 08, 2012 14:12:19
wellcom
да, похоже что меряет шумы, но должен же мерять 48мВ....
1. вначале ток, потом не менее чем через 100мс напряжение
2. да
3. питание фильтруется (коденсатор), про остальное пока ничего не могу сказать....
Re: Измерение тока с помощью AVR
Добавлено: Пн окт 08, 2012 14:27:55
clawham
по опыту могу сказать что первые 100 отсчетов АЦП меги 8-й - полная ересть нелинейность и туфта! даже если это просто 1 килоомный переменник линейный и кондер на 50 микрофарад!!! потому многие и советуют сделать "поднятие" нуля чтоб не мерять околонулевые значения!!!вот только поднятие это тож должно быть очень стабильным и всё бы ничего если б просто делителем с опоры брать но у меги8-й встроенная опора очень слабая и никаких делителей не допускает....нужно вводить внешнюю опору!