Универсальный Ардуино пробник

xfvlad
Offline
Зарегистрирован: 06.02.2021

Лучше подыскать другое сопротивление, иначе упадет точность измерения на низких напряжениях.

svm
Offline
Зарегистрирован: 06.11.2016

xfvlad пишет:

Лучше подыскать другое сопротивление, иначе упадет точность измерения на низких напряжениях.

Для пробника это не существенно

При резисторе 900 Ом Максимальное измеряемое напряжение будет 25В и точность 24 мВ, а

при резисторе 1,2 КОм   20В и 19мВ соответственно. Это сотые доли вольта, их лучше не отображать. Ограничиться десятыми. Тогда никакой разницы не заметно. Проще скорректировать скетч, чем искать и менять резистор.

fly245
fly245 аватар
Offline
Зарегистрирован: 25.08.2013

Заменил значение  resistorValue на 20900.Но ничего не поменялось,может дело в платке про мини? 

svm
Offline
Зарегистрирован: 06.11.2016

fly245 пишет:

Заменил значение  resistorValue на 20900.Но ничего не поменялось,может дело в платке про мини? 

Это изменение повлияет только на измерение емкостей. Для напряжения нужно менять коэффициент в процедуре вольтметра, 13 строка в 367 посту. Самый последний коэффициент.

Немного теории:
rez= (float)adc_buff/16368*12.335; //1.1*11.214 - реальный коэфф делителя
это кусок кода из ранних версий. Резисторы делителя 47 и 4,7 КОм
Сначала грубо считаем коэфф делителя   (47+4,7)/4,7=11     С учетом опорного напряжения 11*1,1=12,1
Затем измеряем напряжение пробником и хорошим вольтметром. если есть разница, корректируем. В реальности вместо 12,1 получилось 12,335. Из за неточности резисторов и опорного напряжения.
fly245
fly245 аватар
Offline
Зарегистрирован: 25.08.2013

Емкость вообще значение не показывает.Светиться на экране <0,4mF  когда подключаю кондер

svm
Offline
Зарегистрирован: 06.11.2016

fly245 пишет:

Емкость вообще значение не показывает.Светиться на экране <0,4mF  когда подключаю кондер

С емкостью что-то не то. Может в скетче косяк какой. Посмотрим что у остальных. А с напряжением и вашими делителями коэффициент должен быть около 25,5

fly245
fly245 аватар
Offline
Зарегистрирован: 25.08.2013

Самое близкое показание вольтметра добился только таким коэффициентом rez = (float)adc_buff / 16368.0 * 22.75;

По замеру емкости вот эти строки меня в сомнение вводят 

} else if (ri == 6) {
    if (rez < 0.4)oled.print("<0.4");
    else {
      oled.print(rez, 1);
    }
    oled.print(" mF       ");    // Вывод емкости

 

svm
Offline
Зарегистрирован: 06.11.2016

fly245 пишет:

Самое близкое показание вольтметра добился только таким коэффициентом rez = (float)adc_buff / 16368.0 * 22.75;

По замеру емкости вот эти строки меня в сомнение вводят 

} else if (ri == 6) {
    if (rez < 0.4)oled.print("<0.4");
    else {
      oled.print(rez, 1);
    }
    oled.print(" mF       ");    // Вывод емкости

 

Я в своих скетчах такого не нашел. Уберите эту проверку и посмотрите чт будет. А что за скетч? Откуда?

fly245
fly245 аватар
Offline
Зарегистрирован: 25.08.2013

Скетч я использую xfvlad  с этого поста http://arduino.ru/forum/proekty/universalnyi-arduino-probnik?page=7#comment-621033

svm
Offline
Зарегистрирован: 06.11.2016

fly245 пишет:

Скетч я использую xfvlad  с этого поста http://arduino.ru/forum/proekty/universalnyi-arduino-probnik?page=7#comment-621033

Он в этой теме стал часто бывать. Я думаю скажет почему так. У меня этого нет, и вроде все работает. В вариантах где пробник встроен в БП и где вывод на Андроид есть еще один предел измерений, для меньших значений емкости. В маленький пробник встроить не удалось, в нем неудачно вклеил разъем. Суперклей попал куда не надо и разобрать пробник не удастся.

Electrobit
Offline
Зарегистрирован: 19.09.2021

Отличная работа!

Подкидываю идею. ) Сделать ещё измерение/вычисление скважности или коэффициента заполнения.

xfvlad
Offline
Зарегистрирован: 06.02.2021

svm пишет:

fly245 пишет:

Самое близкое показание вольтметра добился только таким коэффициентом rez = (float)adc_buff / 16368.0 * 22.75;

По замеру емкости вот эти строки меня в сомнение вводят 

} else if (ri == 6) {
    if (rez < 0.4)oled.print("<0.4");
    else {
      oled.print(rez, 1);
    }
    oled.print(" mF       ");    // Вывод емкости

 

Я в своих скетчах такого не нашел. Уберите эту проверку и посмотрите чт будет. А что за скетч? Откуда?

Это я для себя сделал чтобы отсеять показания емкостей ниже 0,4 мкФ. Ниже показания очень прыгают. Можете убрать и посмотреть на измерения.

le8a
Offline
Зарегистрирован: 04.07.2019

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

http://https://aliexpress.ru/item/1005002134436650

le8a
Offline
Зарегистрирован: 04.07.2019

какой то косяк со ссылкой извините! я имел ввиду мультиметр ручку Anneng 3008 цена 940р.

xfvlad
Offline
Зарегистрирован: 06.02.2021

Ссылка рабочая https://aliexpress.ru/item/1005002134436650.html

Там же есть купон на 2$

le8a
Offline
Зарегистрирован: 04.07.2019

Вообще то если всё покупать у китайцев, то и саморазвитию придёт конец....

Xumuk
Xumuk аватар
Offline
Зарегистрирован: 03.03.2016

а где у китайского прибора форму сигнала показывает?

le8a
Offline
Зарегистрирован: 04.07.2019

Если внимательно присмотреться, то форму сигнала можно обнаружить сбоку на наклейке :) :) :)

Xumuk
Xumuk аватар
Offline
Зарегистрирован: 03.03.2016

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

le8a
Offline
Зарегистрирован: 04.07.2019

Доброго времени! Приобрел я ради эксперимента мультик-ручку правда не Anneng а фирмы Noyafa, у него тоже цветной экран но цифры белые и читаются лучше. Лазил и в электросетях и в ИБП теликов, pfc-400v на кондере в автоматическом режиме отображает , только реле внутри щёлкает, то ли делители переключает,прозвонка в автомате немного тормозит, если переключить в режим прозвонки и диодов то срабатывает моментально,частоту показывает верно.В общем Х.З. попользуюсь там видно будет.если волшебный дым не выпустит так пусть живет.

konog
Offline
Зарегистрирован: 17.12.2015

Еще бы не плохо отдельный светодиод с индикацией CAN шины

Electrobit
Offline
Зарегистрирован: 19.09.2021

Наверно, неплохо бы. )

Но замечу, что "светодиод" CAN шины, это CAN модуль на базе MCP2515.  

konog
Offline
Зарегистрирован: 17.12.2015

В современных машинах везде используется CAN и поэтому это очень нужная инфа. К примеру в поиске низкого и высокого уровня

Electrobit
Offline
Зарегистрирован: 19.09.2021

Согласен. Но  "пробник" CAN-шины, это серьезный диагностический прибор https://www.microchip.com/en-us/development-tool/apgdt002

Самому такой сделать нереально. Поэтому если вы зарабатываете автомобильной диагностикой, то только покупать готовый. Можно купить Pandora ALT-205 например.

konog
Offline
Зарегистрирован: 17.12.2015

CAN H это напряжение 2,5-3,5 В (Обычно 2,7-3,3В)

CAN L это напряжение 1,5-2,5 В (Обычно 1,7-2,3В)

le8a
Offline
Зарегистрирован: 04.07.2019

На радиокоте ,на форуме,в разделе цифровая техника есть тема :автопробник на аттини 13 ,вот он видит эти уровни кан шины,пробник простенький на светодиодах но мне показался функциональным

Electrobit
Offline
Зарегистрирован: 19.09.2021

Это всё так. Но это если вам нужно просто посмотреть активность на шине. Тогда да, достаточно двух  компараторов с указанными  порогами и двух светодиодов. 

Electrobit
Offline
Зарегистрирован: 19.09.2021

Такие пробники функциональны ровно настолько, насколько они это позволяют. Активность на шине вы таким пробником увидите, но не более того. Допустим вы считали сканером ошибку U0100. Посмотрели активность на участке между ECM и ВСМ. Допустим, что активность на can-шине есть. А дальше что? 

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

serhiy58
Offline
Зарегистрирован: 19.06.2019

Прибоорчик получился довольно таки востребованный(128х32). Я его поганял на макетке, подправил показания вольтметра, с омметром пока борюсь,- подвирает на малых сопротивлениях. Хотелось бы перед отправкой его в корпус от фломастера выддавить из него по-максимуму.

Хорошая идея внедрить пультоскоп, как это делает Andry Smart, - чисто для визуализации происходящего, ведь место пока еще есть... 

svm, а можно вариант скетча с имплементированным вторым вариантом (установки делителя для подачи опорного напряжения на компаратор) из т. #265. Я не силен в программировании. Насколько я понял, то в этом случае диапазон измерения емкости расширится в меньшую сторону. Спасибо.

svm
Offline
Зарегистрирован: 06.11.2016

serhiy58 пишет:

svm, а можно вариант скетча с имплементированным вторым вариантом (установки делителя для подачи опорного напряжения на компаратор) из т. #265. Я не силен в программировании. Насколько я понял, то в этом случае диапазон измерения емкости расширится в меньшую сторону. Спасибо.

Этот вариант скетча в #262. Отличия только в выводе на индикатор.

serhiy58
Offline
Зарегистрирован: 19.06.2019

svm пишет:

Этот вариант скетча в #262. Отличия только в выводе на индикатор.

Спасибо! Я догадывался, но там предстоит определенная препанация скетча, я боюсь начудить...

svm
Offline
Зарегистрирован: 06.11.2016

serhiy58 пишет:

Спасибо! Я догадывался, но там предстоит определенная препанация скетча, я боюсь начудить...

Сгореть, ничего не сгорит, а опыт появится.

serhiy58
Offline
Зарегистрирован: 19.06.2019

svm поправьте меня, пожалуйста, если я несу бред. Планирую перенести измерение малых емкостей на главный щуп. Насколько я понял зарядный резистор для больших емкостей - 4,7к, а для малых 9,1к. Планирую для заряда малых использовать R1(10k), подав на D5 единицу, а для больших R1+ R8 подав единицу на D5 и D6, а все что не участвует - в высокий импеданс.  Или я что-то путаю?

Моя первая итерация с кодом пока неудачная, не могу разобраться с настройками прерываний и компараторов...

svm
Offline
Зарегистрирован: 06.11.2016

Посмотрите http://arduino.ru/forum/obshchii/multimetr-arduinoandroid  , там то-же самое, но с одним щупом и выводом на телефон. А алгоритмы измерений такие же. Занимался давно и многое выскочило из мозгов. А снова разбираться лень.

serhiy58
Offline
Зарегистрирован: 19.06.2019

Спасибо! Подскажите, пожалуйста, что нужно измменить в скетче для перенастройки аналоговых портов с целью освобождения А4,А5 для дисплея в схеме , на которую Вы посылаетесь. Я хочу попробовать этот вариант но  выводить все на дисплей 128х32.

Для схемы:

я накидал скетч, правда с измерением малых емкостей пока не все в порядке, а так вроде бы все на макетке работает.


 // Входом частотомера является цифровой пин 5
 #include <Wire.h>
 #include "SSD1306Ascii.h"
 #include "SSD1306AsciiWire.h"
 #define I2C_ADDRESS 0x3C
 //#define DEBUG // Раскомментировать,если нужна отладочная информация в монитор
 SSD1306AsciiWire oled;
 //******************** Большие емкости **************************************
#define resistorValue  4700.0F   // Зарядный резистор для измерения big емкости
const unsigned long resistance = 10000;   //Сопротивление зарядной цепи (10 KOm)slow
unsigned long elapsedTime;
volatile boolean triggered;
volatile boolean active;
float microFarads;                
float nanoFarads;
volatile unsigned long startTime;
volatile unsigned long duration;
//**************************************************************************** 
 volatile unsigned int int_tic=0; 
 volatile unsigned long tic; 
 long adc_buff,tau_svet,t_svet;
 float u_del,u_izm, rez;
 byte ri,rr,rs,prob,svet;// режим измерения
//***************************************************************

#define Btn 10               // кнопка режимов

// Обработчик прерывания аналогового компаратора
ISR (ANALOG_COMP_vect)
  {
  unsigned long now = micros ();
  if (active)
    {
    duration = now - startTime;
    triggered = true;
    digitalWrite (8, LOW); // Снимаем напряжение заряда
    }
  }



//==========================================================================
void setup()
{
 Serial.begin(9600);
  #ifdef  DEBUG 
 Serial.begin(9600);
 #endif
 Wire.begin();
 Wire.setClock(400000L);
  oled.begin(&Adafruit128x32, I2C_ADDRESS);
  
  oled.setFont(font5x7);
  oled.clear();
  oled.set2X();
  delay(100);
  tone(9,500,100);                   
  oled.println("  PROBNIK");
  pinMode(6, OUTPUT);
  
  pinMode(Btn, INPUT);          // кнопка режимов
  //digitalWrite(Btn,1);          // включить подтягивающий резистор
  delay(1000);
//TCCR1A=0; TIMSK1 = 1<<TOIE1; //прерывание по переполнению
//}
//ISR (TIMER1_OVF_vect){ int_tic++;


  //                       Настраиваем компаратор
  ADCSRB = 0;                        
  ACSR =  _BV (ACI)                   //флаг прерывания.  Устанавливается по событию,сбрасывается после ухода на обработчик либо программно, записью в него 1.
        | _BV (ACIE)                  //бит разрешения прерывания от компаратора.
        | _BV (ACIS0) | _BV (ACIS1); 





}

//============================================================================================================
void loop(){

rs=0;  
svet=0;
prob=1;
start:
pinMode(2, INPUT);// 2 пин высокий импеданс
pinMode(3, INPUT);// 3 пин высокий импеданс
pinMode(4, INPUT);// 4 пин высокий импеданс
pinMode(5, INPUT);// 5 пин высокий импеданс
pinMode(8, INPUT);// 6 пин высокий импеданс
//*******************************************************************
svet:// фиксация длительности вкючения кнопки подсветки
if (digitalRead(Btn)==0 && svet==0){t_svet=millis();svet=1;goto svet;}
if (digitalRead(Btn)==0 && svet==1)goto svet;
if (digitalRead(Btn)==1  && svet==1){tau_svet=millis()-t_svet;
if (tau_svet<400){rr++;prob=0;rs=0;} //короткое нажатие выбор режима
if (tau_svet>800){tone(9,500,100);rr=0;prob=1;}      //очень длинное  нажатие возврат к пробнику
if (tau_svet>450){tone(9,500,100);rr=0;}               //длинное  нажатие
svet=0;t_svet=0;}
//************** измерение выборочных величин ************************

if (rr==0) goto probn;
if (rr==1){show_menu();voltmeter();}
if (rr==2){show_menu();ommeter();}
if (rr==3){show_menu();C_meter_NF();}
if (rr==4){show_menu();C_meter();}
if (rr==5){show_menu();f_meter();ri=0;}
if (rr>5){show_menu(); goto probn;}
vdspl();
if (prob==0)goto start;


probn:;//******************** РЕЖИМ ПРОБНИКА ****************************
  
//****************************  ЧАСТОТОМЕР ******************************************
test_F();     //  Тест наличия импульсов с F>5 Гц.
if (rez>1) {  // Если есть импульсы измеряем частоту
f_meter();
goto ind;
}
//**************************** Вольтметр ******************************************
voltmeter();
if (adc_buff > 150) goto ind;   //если есть напряжения выводим - иначе измеряем сопротивление
//**************************** ОММЕТР ********************************************
//rezist:
ommeter();
//*************************** ИНДИКАЦИЯ ************************************
ind:;
vdspl();// Вывод на дисплей 
 #ifdef  DEBUG 
 info(); 
 #endif
goto start;
}
// ************* Конец лупа ***********************

//------show_menu------------------------------------------------------------------------------------------
void show_menu(){
if (rs==0){
tone(9,500,100);                   
oled.clear();
if (rr>5){oled.println("  PROBNIK");rr=0;}
if (rr==1)oled.println("  Voltmetr");
if (rr==2)oled.println("  Ommeter");
if (rr==3){oled.println(" C_meter_nF");
           oled.print  ("0.001-150mF");}
if (rr==4){oled.println("  C_meter");
           oled.print  ("0.1-500 mF");}
if (rr==5)oled.println("  F_meter");
delay(600);
rs=rr;}
}

//******vdspl********************************************************************
// вывод на  SSD1306
void vdspl()
{ 
if (rez> 7999999 || rez<0){         //ХЗ что на входе
//oled.clear();
oled.setCursor(1,0);
oled.println(" Incorrect ");
oled.print(" data  R/");
if (rr==1) oled.print("U");
if (rr==2) oled.print("R");
if (rr==3) oled.print("c");
if (rr==4) oled.print("C");
if (rr==5) oled.print("F");
if (rr==0) oled.print("P");
goto vdsp;
}  
oled.setCursor(1,0);
if (rez==0)goto vdsp;
if (ri==5 && rez >=0 && rez < 1){;   //Щупы 3акорочены или сопроивление < 1 Om
tone(9,3000,200);                     // для пассивного спикера на 9 пине
oled.clear();
oled.println("  SHORT     ");
delay(100);
goto vdsp;
}
if (ri==0){ 
oled.print (long(rez));
oled.println("              ");
oled.print("HZ          ");
goto vdsp;
}
if (rs==5)goto vdsp;
if (ri==1){;                        // Вывод напряжения
oled.print(rez,2);
oled.println("           ");
oled.print("VOLTS   ");
goto vdsp;
}
if (ri==6){;                        // Вывод емкости
oled.print(rez,2);
oled.println("           ");
oled.print  ("MicroFarad");
goto vdsp;
}

if (ri==2 ||ri==3) rez=rez/1000;    // Вывод сопртивления
oled.print(rez,1);
oled.println("         ");
if (ri==2 ||ri==3) oled.println(" KOhm    ");  
else oled.println(" Ohm     ");                    
vdsp:; 
}


// измерение напряжения питания
long readVcc() {
  ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
  delay(2); // Wait for Vref to settle
  ADCSRA |= _BV(ADSC); // Convert
  while (bit_is_set(ADCSRA,ADSC));
  uint8_t low = ADCL; // сначала нужно прочесть ADCL - это запирает ADCH
  uint8_t high = ADCH; // разлочить оба
  float result = (high<<8) | low;
  //result = (1.03357 * 1023.0*1000) / result;
  result =1057342.11/ result;
  //result =1267342.11/ result;
  return result;
}

//******info******* отладочная информация *****************
void info(){
Serial.println("-------<>-------");
Serial.println("");
Serial.print("REJIM - ");
Serial.println(ri);
Serial.print("UCC   = ");
Serial.print((float)readVcc());
Serial.println(" V");
Serial.print("U_del - ");
Serial.println(u_del);
Serial.print("U_izm - ");
Serial.println(u_izm);
Serial.print("REZULT- ");
Serial.println((float)rez);
Serial.println("");
Serial.println("-------<>-------");
delay(1500);
}

//-------voltmeter---------------------------------------------------------------------------
void voltmeter(){// *************** ВОЛЬТМЕТР *****************
   ri=1; 
 analogReference(INTERNAL);  // включаем внутренний ИОН 1.1 В
pinMode(2, INPUT); 
pinMode(3, INPUT); 
pinMode(4, OUTPUT);         // выводим на 4 пин 0
digitalWrite(4,0);          // устанавливая его в 0(включаем нижний резистор делителя)
  delay(2);
adc_buff=0;
for (int n=0; n<=255; n++ ) {
adc_buff+= analogRead(A1); }
adc_buff >>=4; // 16368 полная шкала 14bit
//rez= (float)adc_buff/16368.0*5.29;// - реальный коэфф делителя
rez= (float)adc_buff/16368.0*5.75;
}

//********ommeter********************************************************************
void ommeter(){// *************** ОММЕТР *****************
     
//R=20 kOm  
ri=2;
pinMode(2, INPUT);         // 2 пин высокий импеданс
pinMode(3, INPUT);         // 3 пин высокий импеданс
pinMode(8, INPUT); 
pinMode(4, OUTPUT);        // 4 пин выход

digitalWrite(4,1);         // переводим его в 1 подключаем измерительный резистор 20 kOm
analogReference(DEFAULT);// подключаем опорное 5 В  
delay(2);

// измеряем полное напряжение на делителе под нагрузкой
//**************************************************************
adc_buff=0;
for (int n=0; n<=255; n++ ) {
adc_buff+= analogRead(A1); }
adc_buff >>=4;
u_del= (float)adc_buff;

// измеряем напряжение на измеряемом резисторе
//**************************************************************
adc_buff=0;
for (int n=0; n<=255; n++ ) {
adc_buff+= analogRead(A3); }
adc_buff >>=4;
u_izm= (float)adc_buff;
rez= float(u_izm*20000)/float(u_del-u_izm);// для 20 kOm
if (u_izm>4000){;//Если значение достоверно - вывод на индикацию
goto vyv;
}

//#############################  4,7 kOm  ######################################
ri=3;
pinMode(4, INPUT);         // 4 пин высокий импеданс
pinMode(3, OUTPUT);        // 3 пин выход
digitalWrite(3,1);         // переводим его в 1 подключаем измерительный резистор 4.7 kOm
analogReference(DEFAULT);// подключаем опорное 5 В  
delay(2);

// измеряем полное напряжение на делителе под нагрузкой
//**************************************************************
adc_buff=0;
for (int n=0; n<=255; n++ ) {
adc_buff+= analogRead(A2); }
adc_buff >>=4;
u_del= (float)adc_buff;

// измеряем напряжение на измеряемом резисторе
//**************************************************************
adc_buff=0;
for (int n=0; n<=255; n++ ) {
adc_buff+= analogRead(A1); }
adc_buff >>=4;
u_izm= (float)adc_buff;
rez= float(u_izm*4700)/float(u_del-u_izm);// для 4,7 kOm
if (u_izm>4000){;
goto vyv;
}

 //#############################  500 Om  ######################################
 
  analogReference(DEFAULT);// подключаем опорное 5 В
  ri=4;
pinMode(3, INPUT);         // 3 пин высокий импеданс
pinMode(2, OUTPUT);        // 2 пин выход
digitalWrite(2,1);         // переводим его в 1 подключаем измерительный резистор 500 Ом 
  delay(2);
// измеряем полное напряжение на делителе под нагрузкой
//**************************************************************
adc_buff=0;
for (int n=0; n<=255; n++ ) {
adc_buff+= analogRead(A3); }
adc_buff >>=4; 
u_del= (float)adc_buff;

// измеряем напряжение на измеряемом резисторе
//**************************************************************
// сначала при опорном 5 В
adc_buff=0;
for (int n=0; n<=255; n++ ) {
adc_buff+= analogRead(A1); }
adc_buff >>=4;
 u_izm= (float)adc_buff;
rez= float(u_izm*470)/float(u_del-u_izm);// для 500 om
if (u_izm >4000){
goto vyv;
}
//Если  точность не удовлетворяет переходим на опорное 1,1 В
// измеряем полное напряжение на делителе под нагрузкой при опорном 5 В
//**************************************************************
ri=5;
adc_buff=0;
for (int n=0; n<=255; n++ ) {
adc_buff+= analogRead(A3); }
adc_buff >>=4;
u_del= (float)adc_buff/16368*(float)readVcc();

// измеряем напряжение на измеряемом резисторе
analogReference(INTERNAL);// подключаем опорное 1.1 В
delay(2);
adc_buff=0;
for (int n=0; n<=255; n++ ) {
adc_buff+= analogRead(A1); }
adc_buff >>=4; 
u_izm= (float)adc_buff/16368*1100;
(rez)= float(u_izm*470)/float(u_del-u_izm);
vyv:;
}

//------init_fm----------------------------------------------------------------------------
void init_fm(){// ********* конфигурация входов частотомера *******
ri=0;
pinMode(4, OUTPUT);        // выводим на 4 пин 0
digitalWrite(4,0);         // загрубляем вход (борьба с наводками)
//pinMode(4, INPUT);       // если нужна макс. чувствительность
pinMode (5,INPUT);         // вход сигнала T1 (для atmega168/328)
}

//------f_meter--------------------------------------------------------------------------------------
void f_meter(){//*******************ЧАСТОТОМЕР********************
ri=0;
if (analogRead(A0)>100){rr=0;prob=1;goto vf;}// ПРОВЕРКА КНОПКИ
init_fm();  
int_tic=0; TCNT1 = 0;
TCCR1B = (1<<CS10)|(1<<CS11)|(1<<CS12);//тактировани от входа Т1
delay(1000);// Время измерения
TCCR1B=0;
tic= ((uint32_t)int_tic<<16) | TCNT1; //сложить что натикало
rez=tic;
vf:;
}

//------test_F-----------------------------------------------------------------------------------------------
void test_F(){// ******* Тест наличия импульсов с F>5 Гц.********
init_fm();
ri=0;
int_tic=0; TCNT1 = 0;
TCCR1B = (1<<CS10)|(1<<CS11)|(1<<CS12);//тактировани от входа Т1
delay(50);// Тестовый замер (срабатывает> 5 Гц  устойчиво)
TCCR1B=0;
tic= ((uint32_t)int_tic<<16) | TCNT1; //сложить что натикало
rez=tic;
}


//********C_meter********** Измерение емкости 0,1-500 Мкф ********************************************
// Взято из <a href="http://digitrode.ru/computing-devices/mcu_cpu/816-izmeritel-emkosti-na-arduino-svoimi-rukami.html" rel="nofollow">http://digitrode.ru/computing-devices/mcu_cpu/816-izmeritel-emkosti-na-arduino-svoimi-rukami.html</a>
void C_meter(){
  ri=6;
  pinMode(2, INPUT);
  pinMode(3, INPUT);
  pinMode(4, INPUT);
  pinMode(8, INPUT);
  pinMode(6, INPUT);  
  pinMode(5, OUTPUT);
  digitalWrite(5, HIGH);              //Включаем заряд конденсатора
  startTime = millis();               //Засекаем время
  while(analogRead(A2) < 648){}       //Ждем пока конденсатор не зарядится до 63,2% или 1,58 от  полной зарядки
  elapsedTime= millis() - startTime;  //Фиксируем время заряда
  if (elapsedTime<2)elapsedTime=0;    // Борьба с шумами
  microFarads = ((float)elapsedTime / resistorValue) * 1000;  
 rez=microFarads;
 if (elapsedTime<=1)rez=0; 
  digitalWrite(5, LOW);               //Снимаем напряжение           
  pinMode(2, OUTPUT);                 //Разряжаем кондюк         
  digitalWrite(2, LOW);               //Закорачивая его на землю
  
  Serial.println(rez);
  delay(100);
  while(analogRead(A2) > 0){}         // Пока не разрядится         
  pinMode(2, INPUT);                  // Отключаем разряд 
} 

//------------------------------------------------------------------------------------------------
//*******C_meter_NF*********** Измерение емкости 0,001-150 Мкф ****************************
// Взято из <a href="http://digitrode.ru/computing-devices/mcu_cpu/816-izmeritel-emkosti-na-arduino-svoimi-rukami.html" rel="nofollow">http://digitrode.ru/computing-devices/mcu_cpu/816-izmeritel-emkosti-na-arduino-svoimi-rukami.html</a>
void C_meter_NF()
{
  ri=6;
  pinMode(2, INPUT);
  pinMode(3, INPUT);
  pinMode(4, INPUT);  
  pinMode(5, INPUT); 
pinMode(A1, INPUT);
pinMode(A2, INPUT);
pinMode(A3, INPUT);
   
  pinMode(8, OUTPUT);
  digitalWrite(8, LOW);
  if (!active)
    {
    active = true;
    triggered = false;
    digitalWrite (8, HIGH);                    // Включаем напряжение заряда

    startTime = micros ();  
    }
  if (active && triggered)
    {
    active = false;
    //rez= (duration * 1000/ resistance);      //Готовим результат для вывода
    rez= (duration/ resistance);                //Готовим результат для вывода
    triggered = false;
    Serial.println((float)rez);
    delay (1000);
 }}

 

svm
Offline
Зарегистрирован: 06.11.2016

 

Спасибо! Подскажите, пожалуйста, что нужно измменить в скетче для перенастройки аналоговых портов с целью освобождения А4,А5 для дисплея в схеме , на которую Вы посылаетесь. Я хочу попробовать этот вариант но  выводить все на дисплей 128х32.

 

Наверное, только номера аналоговых входов. В данном случае они все равноправны. А выбор их больше для удобства монтажа. Только менять внимательно. Скетч менялся несколько раз и простая авто замена может не прокатить. 

glw
Offline
Зарегистрирован: 21.01.2019

Идеальный корпус для данного пробника. Не помню, где покупал. Называется "мультиинструмент уровень фонарик". Если использовать голую мегу, всё должно вместиться.

xfvlad
Offline
Зарегистрирован: 06.02.2021

Жалко этот прибор. Лучше найти списанный текстовый маркер.

volzin
Offline
Зарегистрирован: 07.06.2019

Маркер из соседней темы вполне всё умещает.

xfvlad
Offline
Зарегистрирован: 06.02.2021

volzin пишет:
Маркер из соседней темы вполне всё умещает.

Можно ссылку на соседнюю тему. Что-то не нашел

volzin
Offline
Зарегистрирован: 07.06.2019

Так на этой странице выше есть ссылка. Контролька с выводом на смартфон

serhiy58
Offline
Зарегистрирован: 19.06.2019

volzin пишет:
Маркер из соседней темы вполне всё умещает.

Вполне согласен, правда батарейка влезла только 100мАч

xfvlad
Offline
Зарегистрирован: 06.02.2021

serhiy58 пишет:

volzin пишет:
Маркер из соседней темы вполне всё умещает.

Вполне согласен, правда батарейка влезла только 100мАч

Это чисто осцилограф?

volzin
Offline
Зарегистрирован: 07.06.2019

У меня влез туда ещё контроллер зарядки. Прада пришлось удлинить конструкцию сзади за счёт защитного колпачка.

serhiy58
Offline
Зарегистрирован: 19.06.2019

volzin пишет:
У меня влез туда ещё контроллер зарядки. Прада пришлось удлинить конструкцию сзади за счёт защитного колпачка.

Контроллер зарядки там есть, првавда USB разъем не с торца, а сверху(если на фото)... 

 

 

serhiy58
Offline
Зарегистрирован: 19.06.2019

xfvlad пишет:

Это чисто осцилограф?

Да нет, это пробник, просто у него шестым пунктом меню осцилограф... :)

volzin
Offline
Зарегистрирован: 07.06.2019

У меня 4 пункта. Контролька, генератор, оссцыл и выкл.

Xumuk
Xumuk аватар
Offline
Зарегистрирован: 03.03.2016

у вас обычный осцилограф или медленный?

serhiy58
Offline
Зарегистрирован: 19.06.2019

Xumuk пишет:

у вас обычный осцилограф или медленный?

Обычный  с авторазверткой и автоопрным... я поотключал все настройки чтобы управлять пробником одной кнопкой, другая - подсветка.

Xumuk
Xumuk аватар
Offline
Зарегистрирован: 03.03.2016

https://aliexpress.ru/item/4000699838567.html?_ga=2.250800902.1649984527...

я заказал себе вот таких джойстиков, должно компактно получиться и 5 кнопок