Измерение сопротивлений от 10 до 30 Ом
- Войдите на сайт для отправки комментариев
Вс, 31/05/2015 - 20:49
Здравствуйте. Я новичок, прошу сильно не ругать :). Требуется измерять сопротивление изделий в диапазоне от 10 до 30 Ом.Обычный делитель тут не подойдёт, так как два полуплеча по 30 Ом дадут практически КЗ. Помогите пожалуйста с аппаратной частью. Программная трудностей не вызывает. Спасибо всем откликнувшимся!)
Тестером можно. Не подойдёт? :)
Тут весь вопрос в том, чтобы уйти от тестера. Набросал небольшой скетч с записью на SD card в формате excel. Хочу исключить человеческий фактор.
Уважаемые форумчане! Гуру, прошу Вас, выручайте! Реально ли ардуиной измерять диапазон сопротивлений от 10 до 30 Ом?
Спасибо
slon0177, конечно реально. Вот пример http://habrahabr.ru/post/252321/.
http://arduino.ru/forum/proekty/tester-radiodetalei-na-arduino
Низкие Омы можно конечно и так измерять. Сделав делитель напряжения.
490 Ом / 10 Ом= 100 милливольт на вход АЦП
Но погрешность измерения будет просто ужасной.
Вот если сделать источник тока допустим на 100-300 миллиамперов, падение будет 1-3 Вольтa на 10-ти Омах,
что вполне реально из свободно продающихся у моих друзей из поднебесной StepDown с регулировкой тока ограничения,
то можно и доли Омов мерять.
Dimax, Trembo, Datak...спасибо. Сегодня снова ломал голову... Кроме делителя ничего в голову не приходит... Собрал, два резюка по 50 Ом. Вместо одного розетка для измерений. Тестером откалибровал пределы... Управляется сигналами с цифровых пинов.... Индикация на светодиодах для наглядности... Как соберу все цивильно, постараюсь выложить... Ещё раз спасибо, уважаемые!
Я не зря вам про источник тока рассказывал.
http://www.ebay.com/itm/New-LM2596-LED-Driver-DC-DC-Step-down-Adjustable...
Выставьте на выходе Вольт этак 5..... Подав на вход что попалось под руку.
Замкните выход - выставьте ток какой надо- чтобы падение напряжения на резисторе привести к удобному виду.
Можете ещё порог светодиода настроить.
В целом, как ни крути, сопротивление определяют одним и тем же способом: пропускают через резистор какой-то ток, и измеряют напряжение на нём.
Для нормальной точности, измеряемое напряжение должно быть не слишком маленьким - значительно больше разрешающей способности АЦП.
При низких сопротивлениях придётся или значительно увеличить ток, или просто дополнительно усилить напряжение с резистора.
Увеличение тока, кстати, не так уж безобидно. Не забывайте хотя бы примерно прикинуть значение мощности, рассеиваемой резистором.
Я бы, конечно, лучше слепил какой-нибудь усилитель на ОУ. Но готовой схемы у меня нет, а придумать - мозгов не хватит. :) Так что - гугл в помощь. Ищите что-нибудь вроде "преобразователь сопротивления в напряжение на ОУ" или "ПСН на ОУ".
Удачи!
Datak, однако же немецкие разработчики транзистортестера добились очень высоких показателей измерений чисто программным путём, без ОУ и прецизионных источников тока. Сам года 2 назад собирал этот транзистортестер, у него действительно разрешение 0,01 ома. И реально может измерить сопротивление от 0,01 ома. Измеряет очень точно. "Но как, Холмс?" :)
Да, вот именно, как? :)
dimax, даже не спорю. Я же вопрос детально не изучал - просто написал, что думал.
-----
Не, а на самом деле, что там измеряется-то? Схему посмотрел, ничего не понял. Описание по-немецки не осилю, чем там прошивка занимается - могу только догадываться. Просто статистическое усреднение нескольких измерений, что ли?
В целом, как ни крути, сопротивление определяют одним и тем же способом: пропускают через резистор какой-то ток, и измеряют напряжение на нём.
При низких сопротивлениях придётся или значительно увеличить ток, или просто дополнительно усилить напряжение с резистора.
Совершенно верно. Другого не придумаеш. Это физика , математикЭ-кибернЭтикЭ.
Вот быстренько накидал.
Присутствует один маленький нюанс - вместе с входным сигналом усиливается напряжение смещения нуля да ещё и с его температурным дрейфом. ОУ надо получше выбирать.
Datak, я тоже не большой специалист в этом вопросе. Полное описание там есть на русском, только там не описан принцип измерения. В крутых приборах всё измеряется на переменном токе. Но судя по отсутствию в схеме ёмкостей и индуктивностей этот способ не используется. Стало быть всё ж таки остаются традиционные и импульсные методики. Видимо эти резисторы на входе подкоммутируются, создают образцовый ток. Поскольку резисторы точные, то при калибровке вычисляется точный ток при КЗ на входе. Потом подставляя измеряемый резистор сравнивается ток с образцовым и из разницы вычисляется сопртивление. И АЦП наверняка не без помощи хорошего оверсэмплинга всё измеряет. Конечно всё равно берёт сомнение как весь этот относительный примитивизм может вытянуть разрешение 0,01 ома.. )
Присутствует один маленький нюанс - вместе с входным сигналом усиливается напряжение смещения нуля да ещё и с его температурным дрейфом. ОУ надо получше выбирать.
я писал: Вот быстренько накидал.
ОУ вообще не предложен никакой, даже выводов нет.
Q: Подскажите транзистор?
A: КТ315
Q: Подскажите ОУ?
A: LM358
Всем Доброго Здоровья!)
Как обещал - выкладываю что сотворил... Заранее прошу прощения у многоуважаемых ГУРУ за примитивностькода.
принцип работы устройства: требуется измерять электропроводимость перчаток.
Существует стенд, на который одевается пара перчаток. далее пара перчаток продвигается на карусели под измерительный модуль, опускается верхняя пластина с контактами на пальцы перчаток и ладонь, и происходит измерение посредством делителя напряжения калиброванного на 27 Ом. В цепи измерений предусмотрены два образцовых сопротивления на 27 и 33 Ом, которые тестируют систему при каждом измерении. Индикация - на светодиодах. если обе перчатки в норме - горит зеленый. Кроме того, через ком порт можно наблюдать в реальном времени какая из точек измерений проблемная...
И еще. Есть фото испытаний, данные в порту и самой платы... НО НЕ МОГУ ЗАГРУЗИТЬ...ТУПЛЮ! ПОМОГИТЕ))
#define FIRST_PIN 9 //первый палец #define SECOND_PIN 10//второй палец #define THIRD_PIN 11//третий палец #define FOURTH_PIN 12//четвертый палец #define LAST_PIN 13//пятый палец #define TEST_27 7//тестовый резистор номиналом менее 30 Ом #define TEST_33 5 // тестовый резистор номиналом более 30 Ом #define BUTTON_PIN 3// кнопка включения устройства #define RED_PIN 2 // красный светодиод подключается к пину 8 #define GREEN_PIN 4 // зеленый светодиод подключается к пину 7 #define KEY_R 6// для правой перчатки #define KEY_L 8//для левой перчатки float v; //для измерений int s = 1;// счетчик прошедших испытание int t = 1;//счетчик бракованных boolean buttonWasUp = true; // была ли кнопка нажата? void setup() { //digitalWrite(GREEN_PIN, HIGH); Serial.begin(57600); pinMode(RED_PIN, OUTPUT); // настраиваем RED_PIN как выход pinMode(GREEN_PIN, OUTPUT); // настраиваем GREEN_PIN как выход pinMode(BUTTON_PIN, INPUT_PULLUP); for(int pin= FIRST_PIN; pin<= LAST_PIN; pin++ ) pinMode(pin, OUTPUT); pinMode(TEST_27, OUTPUT); pinMode(TEST_33, OUTPUT); pinMode(KEY_R, OUTPUT); pinMode(KEY_L, OUTPUT); Serial.print("GLOVE:\tTEST33\tTEST27\tFIRST\tSECOND\tTHIRD\tFOURTH\tLAST\tTEST RESULTS"); } void loop() { boolean buttonIsUp = digitalRead(BUTTON_PIN); if(buttonWasUp && !buttonIsUp) { delay(10); buttonIsUp = digitalRead(BUTTON_PIN); if(!buttonIsUp) { digitalWrite(TEST_27, HIGH);// контрольное измерение переменного калиброванного сопротивления ДОПУСТИМОГО значения delay(500); // пауза для стабилизации показаний float v27 = analogRead(A0)*5.05/1024.0;//измеряем напряжение на тестовом резисторе 27 Ом Serial.println("\x20");// печатаем пробел Serial.print("RIGHT"); Serial.print("\t"); Serial.print(v27, 2);// печатаем напряжение ТЕСТ 27 digitalWrite(TEST_27, LOW);// отключаем контрольное сопротивление 27 Ом digitalWrite(TEST_33, HIGH);// контрольное измерение переменного калиброванного сопротивления ЗАПРЕДЕЛЬНОГО значения delay(500); // пауза для стабилизации показаний float v33 = analogRead(A0)*5.05/1024.0; Serial.print("\t"); Serial.print(v33, 2);// печатаем напряжение ТЕСТ 33 digitalWrite(TEST_33, LOW);// отключаем контрольное сопротивление 33 Ом // начинаем измерительный цикл. Для каждого из ключей digitalWrite(KEY_R, HIGH); //начинаем измерения на правой перчатке delay(50); digitalWrite(FIRST_PIN, HIGH);// первый палец float v1 = analogRead(A0)*5.05/1024.0;// измеряем напряжение для первого пальца delay(100); Serial.print("\t"); Serial.print(v1, 2);// печатаем измеренное напряжение на первом пальце digitalWrite(FIRST_PIN, LOW);// отключаем ключ delay(100); digitalWrite(SECOND_PIN, HIGH);// второй палец float v2 = analogRead(A0)*5.05/1024.0;// измеряем напряжение для второго пальца delay(100);// 0,5 сек Serial.print("\t"); Serial.print(v2, 2);// печатаем измеренное напряжение на втором пальце digitalWrite(SECOND_PIN, LOW);// отключаем ключ delay(100); digitalWrite(THIRD_PIN, HIGH);// третий палец float v3 = analogRead(A0)*5.05/1024.0;// измеряем напряжение для третьего пальца delay(100);// 0,5 сек Serial.print("\t"); Serial.print(v3, 2);// печатаем измеренное напряжение на третьем пальце digitalWrite(THIRD_PIN, LOW);// отключаем ключ delay(100); digitalWrite(FOURTH_PIN, HIGH);// четвертый палец float v4 = analogRead(A0)*5.05/1024.0;// измеряем напряжение для четвертого пальца delay(100);// 0,5 сек Serial.print("\t"); Serial.print(v4, 2);// печатаем измеренное напряжение на четвертом пальце digitalWrite(FOURTH_PIN, LOW);// отключаем ключ delay(100); digitalWrite(LAST_PIN, HIGH);// пятый палец float v5 = analogRead(A0)*5.05/1024.0;// измеряем напряжение для пятого пальца delay(100);// 0,5 сек Serial.print("\t"); Serial.print(v5, 2);// печатаем измеренное напряжение на пятом пальце digitalWrite(LAST_PIN, LOW);// отключаем ключ digitalWrite(KEY_R, LOW); // измерения на правой перчатке окончены delay(50); if((v1 < 5.0 && v1 > 2.0)||(v2 < 5.0 && v2 > 2.0)||(v3 < 5.0 && v3 > 2.0)||(v4 < 5.0 && v4 > 2.0)||(v5 < 5.0 && v5 > 2.0) ) { // если одно из измерений больше 30 Ом и все выводы подключены.... Serial.print("\t"); Serial.println (" TROUBLE RIGHT! "); // перчатка не прошла испытания! Serial.print("\t\t\t\t\t"); Serial.print(t); t++; } if(v1 < 1.9 && v2 < 1.9 && v3 < 1.9 && v4 < 1.9 && v5 < 1.9 ) //если сопротивление по всем выводам ниже 30 Ом... { Serial.print("\t"); Serial.println("SUCCESSFULLY RIGHT"); // тест пройден /* Serial.print("\t\t"); Serial.print(s); s++; digitalWrite(GREEN_PIN, HIGH); // мигаем зеленым светом с частотой 0,1 сек. delay(3500);// 0,5 сек digitalWrite(GREEN_PIN, LOW);*/ } if(v1 >= 5.04 && v2 >= 5.04 && v3 >= 5.04 && v4 >= 5.04 && v5 >= 5.04 )// если все выводы отключены ... { Serial.print("\t"); Serial.println (" NO CONNECTED RIGHT "); // ничего не подключено digitalWrite(RED_PIN, HIGH); delay(5000); digitalWrite(RED_PIN, LOW); } if(v1 >= 5.04 && v2 < 1.9 && v3 < 1.9 && v4 < 1.9 && v5 < 1.9)//если первый палец не подключен, а остальные прошли испытание... { Serial.print("\t"); Serial.println("BAD CONNECT AT RIGHT FIRST!");//на первом пальце нет контакта } if(v1 < 1.9 && v2 >= 5.04 && v3 < 1.9 && v4 < 1.9 && v5 < 1.9)//второй палец не подключен... { Serial.print("\t"); Serial.println("BAD CONNECT AT RIGHT SECOND!");//на втором пальце нет контакта } if(v1 < 1.9 && v2 < 1.9 && v3 >= 5.04 && v4 < 1.9 && v5 < 1.9) // третий палец не подключен... { Serial.print("\t"); Serial.println("BAD CONNECT AT RIGHT THIRD!");// на третьем пальце нет контакта } if(v1 < 1.9 && v2 < 1.9 && v3 < 1.9 && v4 >=5.04 && v5 < 1.9) // четвертый палец не подключен... { Serial.print("\t"); Serial.println("BAD CONNECT AT RIGHT FOURTH!"); // на четвертом пальце нет контакта } if(v1 < 1.9 && v2 < 1.9 && v3 < 1.9 && v4 < 1.9 && v5 >= 5.04) // пятый палец не подключен... { Serial.print("\t"); Serial.println("BAD CONNECT AT RIGHT FIFTH!"); // на четвертом пальце нет контакта } Serial.print("LEFT"); Serial.print("\t"); Serial.print(v27, 2);// печатаем напряжение ТЕСТ 27 Serial.print("\t"); Serial.print(v33, 2);// печатаем напряжение ТЕСТ 33 digitalWrite(KEY_L, HIGH); //начинаем измерения на левой перчатке digitalWrite(FIRST_PIN, HIGH);// первый палец float v6 = analogRead(A0)*5.05/1024.0;// измеряем напряжение для первого пальца delay(100); Serial.print("\t"); Serial.print(v6, 2);// печатаем измеренное напряжение на первом пальце digitalWrite(FIRST_PIN, LOW);// отключаем ключ delay(100); digitalWrite(SECOND_PIN, HIGH);// второй палец float v7 = analogRead(A0)*5.05/1024.0;// измеряем напряжение для второго пальца delay(100);// 0,5 сек Serial.print("\t"); Serial.print(v7, 2);// печатаем измеренное напряжение на втором пальце digitalWrite(SECOND_PIN, LOW);// отключаем ключ delay(100); digitalWrite(THIRD_PIN, HIGH);// третий палец float v8 = analogRead(A0)*5.05/1024.0;// измеряем напряжение для третьего пальца delay(100);// 0,5 сек Serial.print("\t"); Serial.print(v8, 2);// печатаем измеренное напряжение на третьем пальце digitalWrite(THIRD_PIN, LOW);// отключаем ключ delay(100); digitalWrite(FOURTH_PIN, HIGH);// четвертый палец float v9 = analogRead(A0)*5.05/1024.0;// измеряем напряжение для четвертого пальца delay(100);// 0,5 сек Serial.print("\t"); Serial.print(v9, 2);// печатаем измеренное напряжение на четвертом пальце digitalWrite(FOURTH_PIN, LOW);// отключаем ключ delay(100); digitalWrite(LAST_PIN, HIGH);// пятый палец float v10 = analogRead(A0)*5.05/1024.0;// измеряем напряжение для пятого пальца delay(100);// 0,5 сек Serial.print("\t"); Serial.print(v10, 2);// печатаем измеренное напряжение на пятом пальце digitalWrite(LAST_PIN, LOW);// отключаем ключ digitalWrite(KEY_L, LOW); // измерения на левой перчатке окончены if((v6 < 5.0 && v6 > 2.0)||(v7 < 5.0 && v7 > 2.0)||(v8 < 5.0 && v8 > 2.0)||(v9 < 5.0 && v9 > 2.0)||(v10 < 5.0 && v10 > 2.0) ) { // если одно из измерений больше 30 Ом и все выводы подключены.... Serial.print("\t"); Serial.print (" TROUBLE LEFT! "); // перчатка не прошла испытания! Serial.print("\t\t\t\t\t"); Serial.print(t); t++; digitalWrite(RED_PIN, HIGH); delay(500); digitalWrite(RED_PIN, LOW); delay(500); digitalWrite(RED_PIN, HIGH); delay(500); digitalWrite(RED_PIN, LOW); delay(500); digitalWrite(RED_PIN, HIGH); delay(500); digitalWrite(RED_PIN, LOW); delay(500); } if(v6 >= 5.04 && v7 >= 5.04 && v8 >= 5.04 && v9 >= 5.04 && v10 >= 5.04 )// если все выводы отключены ... { Serial.print("\t"); Serial.print (" NO CONNECTED LEFT! "); // ничего не подключено digitalWrite(RED_PIN, HIGH); delay(5000); digitalWrite(RED_PIN, LOW); } if( v6 < 1.9 && v7 < 1.9 && v8 < 1.9 && v9 < 1.9 && v10 < 1.9) //если сопротивление по всем выводам ниже 30 Ом... { Serial.print("\t"); Serial.print("SUCCESSFULLY LEFT"); // тест пройден Serial.print("\t\t"); Serial.print(s); /* s++; digitalWrite(GREEN_PIN, HIGH); // мигаем зеленым светом с частотой 0,1 сек. delay(3500);// 0,5 сек digitalWrite(GREEN_PIN, LOW);*/ } if(v1 < 1.9 && v2 < 1.9 && v3 < 1.9 && v4 < 1.9 && v5 < 1.9 && v6 < 1.9 && v7 < 1.9 && v8 < 1.9 && v9 < 1.9 && v10 < 1.9) { digitalWrite(GREEN_PIN, HIGH); // мигаем зеленым светом с частотой 0,1 сек. delay(3500);// 0,5 сек digitalWrite(GREEN_PIN, LOW); } if(v6 >= 5.04 && v7 < 1.9 && v8 < 1.9 && v9 < 1.9 && v10 < 1.9)//если первый палец не подключен, а остальные прошли испытание... { Serial.print("\t"); Serial.print("BAD CONNECT AT LEFT FIRST!");//на первом пальце нет контакта } if(v1 < 1.9 && v2 >= 5.04 && v3 < 1.9 && v4 < 1.9 && v5 < 1.9)//второй палец не подключен... { Serial.print("\t"); Serial.print("BAD CONNECT AT LEFT SECOND!");//на втором пальце нет контакта } if(v1 < 1.9 && v2 < 1.9 && v3 >= 5.04 && v4 < 1.9 && v5 < 1.9) // третий палец не подключен... { Serial.print("\t"); Serial.print("BAD CONNECT AT LEFT THIRD!");// на третьем пальце нет контакта } if(v1 < 1.9 && v2 < 1.9 && v3 < 1.9 && v4 >=5.04 && v5 < 1.9) // четвертый палец не подключен... { Serial.print("\t"); Serial.print("BAD CONNECT AT LEFT FOURTH!"); // на четвертом пальце нет контакта } if(v1 < 1.9 && v2 < 1.9 && v3 < 1.9 && v4 < 1.9 && v5 >= 5.04) // пятый палец не подключен... { Serial.print("\t"); Serial.print("BAD CONNECT AT LEFT FIFTH!"); // на четвертом пальце нет контакта } } } buttonWasUp = buttonIsUp; }