Измерение амплитуды импульса

DeGlucker
Offline
Зарегистрирован: 23.07.2014

Длительнлсть импульса - 5 мксек.
Через 1 мксек после переднего фронта включаю канал в ADMUX,
затем устанавливаю ADSC в ADCSRA, дожидаюсь сброса ADSC, читаю ADCL, ADCH.
Результат = 0. Измерение постоянного напряжения на том же канале проходит нормально.
Упоминания о длительности удержания сигнаа на входе в даташите на ATmega328P
обнаружить не удалось.
Помогите разобраться.
Спасибо.

dimax
dimax аватар
Онлайн
Зарегистрирован: 25.12.2013

DeGlucker, такие вопросы нужно скетчем сопровождать.

DeGlucker
Offline
Зарегистрирован: 23.07.2014

В setup:

  ADCSRA = _BV(ADEN) | 7;        // prescaler = 128

В прерывании:

  delay_x(4);                // 1 usec
  ADMUX  = _BV(REFS1) | _BV(REFS0);    // 1.1V, A0
  bitSet(ADCSRA,ADSC);
  bitSet(flags,FLGADC);

В loop:

  if (bit_is_set(flags,FLGADC) && bit_is_clear(ADCSRA,ADSC)) {
    ADresult = (ADCL | ADCH<<8);
    bitClear(flags,FLGADC);
    pulse(4);                // тестовый сигнал
  }

Интервал от импульса до тестового сигнала - 130 мксек, т.е. ADC отрабатывает нормально.
повторяю: если подать на A0 постоянное напряжение, то все Ок.
 

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Сильно подозреваю, что импульс в 5мксек слишком короткий. Насколько помню там скорость нормарована в 15к, а у вас куда как больше - 200к.

Можно загрубить АЦП убрав 2 старших разряда, тогда оно может измерять до 1Мгц .. в даташите было упоминание про это.

dimax
dimax аватар
Онлайн
Зарегистрирован: 25.12.2013

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

DeGlucker
Offline
Зарегистрирован: 23.07.2014

Нашел в даташите:

The actual sample-and-hold takes place 1.5 ADC clock cycles after the start of a normal conversion...

т.е. длительность импульса должна быть не иенее 12 мксек при T = 1/16*128 = 8 мксек

Извините за беспокойство.

wdrakula
wdrakula аватар
Онлайн
Зарегистрирован: 15.03.2016

Для 5 мкс придется городить схему, Для АЦП не годится. Нижняя граница времени преобразования 65 мкс, допустим Вы разгоните в два раза и отрежете два младших бита - выйдет 29-30 мкс. Никаких защелок на входе нет, следовательно Вам нужно делать защелку - самостоятельно:

Вы заряжаете импульсом конденсатор через диод, чтобы после того, как импульс пропал, конденсатор не разряжался в сторону источника сигнала. А разряжаете Вы конденсатор через повторитель напряжения, по Вашей любимой схеме (можно на одном ОУ), лишь бы входное сопротивление было побольше, в выхода повторителя напряжения Вы снимаете сигнал на ардуинку. Далее нужно разрядить кондер: тут два варианта - либо отдельной ногой контроллера, если есть свободная, либо расчитать разряжающий резистор, так чтобы хватило времени на АЦП, и потом сделать задержку в программе для полного разряда, до следующего измерения, но это менее надежно.

wdrakula
wdrakula аватар
Онлайн
Зарегистрирован: 15.03.2016

Добавлю картинку, чтобы понятнее было:

слева источник импульсов, справа - пин АЦП ардуинки, сверху - диджитал нога ардуины для разрядки кондера, выводом на нее "0".

Кондер - керамика, ОУ - мой любимый LM358, очень уж он мне ценой нравится ;), он до 1-2 МГц, Вам хватит.

Простите, забыл со схемы убрать вольтметр, это я ее в тесте гонял, на него не смотрите.

Logik
Offline
Зарегистрирован: 05.08.2014

Про падение на диоде не забудьте, ставить шотке лучше. Повторитель на ОУ не обязателен перед АЦП. У него входное 1МОм. А вот на входе перед диодом может и нужен, неизвестно что там за источник импульса. В принципе ловить 5мс и без этого не безнадежно, с потеей точности разумеется. Сразу код надо проверить на более длинном импульсе, скорей дело в баге.

wdrakula
wdrakula аватар
Онлайн
Зарегистрирован: 15.03.2016

Логик! На вход тоже можно. В корпусе 358 как раз два ОУ. Вообще чудесная защелка импульсов получилась. Компактная и дешевая. Может есть способ сохранить ее на форуме как полезную. Вы не знаете как? DIP корпус за 12 руб +2 диода, конденсатор и резистор. RC у меня 1 микросекунда. Можно меньше сделать, если повторитель на входе будет.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Да, частота оцифровки влияет на её скорость и точность. Как понимаю, последние разряды цифроутся позже, и если вы поднимите скорость оцифровки вдвое, то теряете старший разряд, но сокращаете время.. то есть 250кгц = 9 бит и 6мксек, 500кгц = 8 бит. и 3мксек. :)

DeGlucker
Offline
Зарегистрирован: 23.07.2014

Поставил prescale = 32. За 5 мксек успевает, биты не обрезались, выдает то 997, то 998, то 995 (сигнал с шумами )

Пиковый детектор в другом канале уже есть, там импульс 0.1 мксек, растягивается тоже до 5

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

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Надо даташит глянуть, давно уже в ADC не лазил ..

Logik
Offline
Зарегистрирован: 05.08.2014

wdrakula пишет:
Логик! На вход тоже можно. В корпусе 358 как раз два ОУ. Вообще чудесная защелка импульсов получилась. Компактная и дешевая. Может есть способ сохранить ее на форуме как полезную. Вы не знаете как? DIP корпус за 12 руб +2 диода, конденсатор и резистор. RC у меня 1 микросекунда. Можно меньше сделать, если повторитель на входе будет.

Так можна даже три )) Вопрос про нужно. По входу-нужно источник сигнала знать, а на АЦП не обязательно. ПС. ОУ хороший. Но то не значить, что его везде совать.

 

Lachin
Offline
Зарегистрирован: 02.10.2016

Ребята а можно ли при помощи этой схемы делать измерения 220в в сети через АЦП?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Выходит можно! Только кода по применению нет, интересно только точность в три единицы сохранится?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

dimax пишет:

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

ну это то понятно... схему бы стробирования в студию

Lachin
Offline
Зарегистрирован: 02.10.2016

DeGlucker поделитесь пожалуйста схемой очень нужно.

DeGlucker
Offline
Зарегистрирован: 23.07.2014

Схема пикового детектора приведена в #11, только между конденсатором и A0 добавлен повторитель на LF353.

Инициализация АЦП:

ADMUX  = _BV(REFS1) | _BV(REFS0);        // int 1.1V, ADC0
ADCSRA = _BV(ADEN) | adcrate;
 

Процедура измерения:

1. Ставим HOLD в 0

2. Запускаем АЦП (bitSet(ADCSRA,ADSC);)

3. После прохождения импульса ставим HOLD в 1 (разряжаем С)

4. Дожидаемся окончания оцифровки (bit_is_clear(ADCSRA,ADSC)), считываем регистры ADCL, ADCH

 

Lachin
Offline
Зарегистрирован: 02.10.2016

DeGlucker пишет:

Схема пикового детектора приведена в #11, только между конденсатором и A0 добавлен повторитель на LF353.

Инициализация АЦП:

ADMUX  = _BV(REFS1) | _BV(REFS0);        // int 1.1V, ADC0
ADCSRA = _BV(ADEN) | adcrate;
 

Процедура измерения:

1. Ставим HOLD в 0

2. Запускаем АЦП (bitSet(ADCSRA,ADSC);)

3. После прохождения импульса ставим HOLD в 1 (разряжаем С)

4. Дожидаемся окончания оцифровки (bit_is_clear(ADCSRA,ADSC)), считываем регистры ADCL, ADCH

 

 

Спасибо,скажите а на что можно заменить AD8041?  а то боюсь не найду у нас такой .

Svod616
Offline
Зарегистрирован: 03.05.2017

пишу сейчас нечто подобное пока добился следующих результатов: нога ацп опрашивается с частотой порядка 4 Кгц, из её показаний высчитывается квадрат,  так-же замеряется время между пиками напряжения и пресчитывается в частоту, в диапазоне 100-380В точность вроде-бы порядка 0.1% точнее выяснить не могу ибо нет  ни осцилла ни латра, из минусов - слепая зона в отрицательной волне. схемотехника построена на простом делителе напряжения  из 6-ти резисторов и одного кондёра( резистор большего номинала собран из 4-х) если будет нужно нарисую схемку

double urms = 0;//выводит среднеквадратическое значение
double utemp = 0;//исползуется для рассчётов
int umoment = 0;//моменталное напряжение
int N = 0;//счётчик  тиков прерывания
int flag = 0;//флаг готовности результатов
bool flagF = false;//флаг прохода через 0 (используется при замере частоты)
int freq  = 0;//вывод частоты
int chastota = 0;//счётчик для измерения частоты

void setup() {
  Serial.begin(9600);//инициаллизируем порт
  TCCR2A =  (1<<WGM21);//режим прервания по совпадению
  TCCR2B = 4;//делитель = 64
  OCR2A = 60;//лимит таймера для вызова прерывания
  TIMSK2 = (1<<OCIE2A);//разрешаем прерывания

}

void loop() {//основной цикл
    if (flag){//если флаг готовности = 1
    flag = 0;// инициализируем флаг
    Serial.print("Напряжение = ");
    Serial.print(urms);
    Serial.println("V");
    Serial.print("Время: ");
    Serial.println( millis()/1000);
    Serial.print("Частота: ");
    Serial.print(freq);
    Serial.println(" Hz");
    Serial.println("-");//выводим наши значения а так-же время в секундах
  }
}

ISR(TIMER2_COMPA_vect) {//вектор прерывания, собственно код выполняемый при прерывании
    umoment = analogRead(0);//читаем данные с ноги А0
    if(flagF == false){//если флаг прохождения через ноль не поднят
      if (umoment == 0){//текущее напряжение - 0 значит дальше идёт отрицательная волна
        chastota ++;//инкрементируем счётчик частоты
        flagF = true;//поднимаем флаг прохождения до следующей положительной волны
                       }
    }
    
    if(umoment > 0){ //если ловим болше ноля то обрабатываем, иначе - уходим
    flagF = false;//т.к. у нас болше ноля - сбрасываем флаг прохождения через ноль
    utemp = utemp + pow((double)(umoment),2)/2046;//рассчитываем сумму квадратов напряжения
    N++;//инкрементируем счётчик
    if (N == 2046){//если счётчик натикал на 1 секунду
      urms = sqrt(utemp)*3.56;//рассчитываем среднеквадратическое напряжение
      freq = chastota;//выводим частоту
      N = 0;//инициализируем пременные
      utemp = 0;
      flag = 1;
      chastota = 0;
    }
}
}

совсем забыл, код писался под нано 3.0 на нём и проверялся

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Svod616 пишет:

пишу сейчас нечто подобное пока добился следующих результатов: нога ацп опрашивается с частотой порядка 4 Кгц, из её показаний высчитывается квадрат,  так-же замеряется время между пиками напряжения и пресчитывается в частоту, в диапазоне 100-380В точность вроде-бы порядка 0.1% точнее выяснить не могу ибо нет  ни осцилла ни латра, из минусов - слепая зона в отрицательной волне. схемотехника построена на простом делителе напряжения  из 6-ти резисторов и одного кондёра( резистор большего номинала собран из 4-х) если будет нужно нарисую схемку

double urms = 0;//выводит среднеквадратическое значение
double utemp = 0;//исползуется для рассчётов
int umoment = 0;//моменталное напряжение
int N = 0;//счётчик  тиков прерывания
int flag = 0;//флаг готовности результатов
bool flagF = false;//флаг прохода через 0 (используется при замере частоты)
int freq  = 0;//вывод частоты
int chastota = 0;//счётчик для измерения частоты

void setup() {
  Serial.begin(9600);//инициаллизируем порт
  TCCR2A =  (1<<WGM21);//режим прервания по совпадению
  TCCR2B = 4;//делитель = 64
  OCR2A = 60;//лимит таймера для вызова прерывания
  TIMSK2 = (1<<OCIE2A);//разрешаем прерывания

}

void loop() {//основной цикл
    if (flag){//если флаг готовности = 1
    flag = 0;// инициализируем флаг
    Serial.print("Напряжение = ");
    Serial.print(urms);
    Serial.println("V");
    Serial.print("Время: ");
    Serial.println( millis()/1000);
    Serial.print("Частота: ");
    Serial.print(freq);
    Serial.println(" Hz");
    Serial.println("-");//выводим наши значения а так-же время в секундах
  }
}

ISR(TIMER2_COMPA_vect) {//вектор прерывания, собственно код выполняемый при прерывании
    umoment = analogRead(0);//читаем данные с ноги А0
    if(flagF == false){//если флаг прохождения через ноль не поднят
      if (umoment == 0){//текущее напряжение - 0 значит дальше идёт отрицательная волна
        chastota ++;//инкрементируем счётчик частоты
        flagF = true;//поднимаем флаг прохождения до следующей положительной волны
                       }
    }
    
    if(umoment > 0){ //если ловим болше ноля то обрабатываем, иначе - уходим
    flagF = false;//т.к. у нас болше ноля - сбрасываем флаг прохождения через ноль
    utemp = utemp + pow((double)(umoment),2)/2046;//рассчитываем сумму квадратов напряжения
    N++;//инкрементируем счётчик
    if (N == 2046){//если счётчик натикал на 1 секунду
      urms = sqrt(utemp)*3.56;//рассчитываем среднеквадратическое напряжение
      freq = chastota;//выводим частоту
      N = 0;//инициализируем пременные
      utemp = 0;
      flag = 1;
      chastota = 0;
    }
}
}

совсем забыл, код писался под нано 3.0 на нём и проверялся

 

Схема бы не помешала

Logik
Offline
Зарегистрирован: 05.08.2014

Svod616 пишет:

пишу сейчас нечто подобное пока добился следующих результатов: нога ацп опрашивается с частотой порядка 4 Кгц, из её показаний высчитывается квадрат,  так-же замеряется время между пиками напряжения и пресчитывается в частоту, в диапазоне 100-380В точность вроде-бы порядка 0.1% точнее выяснить не могу ибо нет  ни осцилла ни латра, из минусов - слепая зона в отрицательной волне. схемотехника построена на простом делителе напряжения  из 6-ти резисторов и одного кондёра( резистор большего номинала собран из 4-х) если будет нужно нарисую схемку

А вот это правильно! Путь истиного джедая не в усложнении схем, а в понимании сущностей;) 

Если еще немного призадуматся, то измерять непрерывно нет нужды. Достаточно после пика отмерить паузу типа 99% от периода входного сигнала полученого на предыдущем измерении. В течении этого времени всеравно ниче интересного не будет, ну спадает синусоида, уходит в минус, потом растет возвращается в плюс. Оно нам нада АЦП гонять впустую?! И только перед самим ожидаемым пиком начинаем мерить максимально часто чтоб поймать пик максимально точно.

 В общем приходим к идее следящей системы, которая поддерживает свой период равным периоду измеряемого сигнал по замерам фазы. И замеры фазы можна делать не в пике а при проходе через 0 при наростании, например. Как удобней вобщем. Бонус - очень низкая загрузка проца.

Svod616
Offline
Зарегистрирован: 03.05.2017

 

кстати может кто-то по моему вопросу что-то скажет? нужно для этой-же железки

http://arduino.ru/forum/programmirovanie/pobitnaya-rabota-s-kom-portom

Logik
Offline
Зарегистрирован: 05.08.2014

А в чем вопрос то? В той теме банальнейшее использование сириала намечается. Почитайте про uart типа для вступления и понимания, и http://arduino.ru/Reference/Serial для применения, особенно по ссылкам в конце на методы класса.

Svod616
Offline
Зарегистрирован: 03.05.2017

может конечно и банальное, стоит учесть что я чайник начавший это всё изучать 8 дней назад, про уарт читал, да и класс сериал тоже курил, но понять как мне превратить переменную в интеджере вот в эту конструкцию из бит в упор не понимаю, проблема в том что исходников прошивки остального железа у меня нет, так что мне-бы хоть примерный образец кода

Logik
Offline
Зарегистрирован: 05.08.2014

Та какой там может быть пример ))) сформировать 4 байта какие надо и выпихнуть в сириал. Это слишком просто.

ПС. На схеме номинал С1 надо на 2 порядка уменьшить, а то постоянная времени пошти секунда выходит, для 50Гц многовато, хотя если только период нужен, то не принципиально.

Svod616
Offline
Зарегистрирован: 03.05.2017

схема собрана была из подножного корма, так КАК их сформировать-то? может это и прописная истина но всё-же? ибо ещё пол часа и гугл меня забанит как окончательно беспросветного идиота

Logik
Offline
Зарегистрирован: 05.08.2014

Так откуда ж уважаемые форумчане могут знать как вам их формировать? У вас они названы например Байт1 и крестики внутри. Вам наверно видней как эти байты формировать, где брать даннные и чему они равны. И какой алгоритм для crc нужен. Мы ж тут безсильны! Только можем подсказать что отправлять их через методы Serial.

Svod616
Offline
Зарегистрирован: 03.05.2017

ок, расписываю, тот самый случай когда спрашивающий сам не понимает что он спрашивает, имеем:
1) значение int полученное с ацп

2) значение "статус канала" булева переменная

3)СRC8 описана в программе-приёмнике вот так:

Private Function DoCRC8(S As String) As Byte
  'возвращает контрольную сумму CRC8
  Dim j As Byte
  Dim k As Byte, x As Byte
  Dim CRC8 As Byte
  Dim M As Long
  CRC8 = 0
  For M = 1 To Len(S)
    x = Asc(Mid(S, M, 1))
    For k = 0 To 7
      j = 1 And (x Xor CRC8)
      CRC8 = Fix(CRC8 / 2) And &HFF
      x = Fix(x / 2) And &HFF
      If j <> 0 Then
        CRC8 = CRC8 Xor &H8C
      End If

    Next k
  Next M
  DoCRC8 = CRC8
End Function

нужно сформировать 4 байта в которых:
1) все старшие биты установлены в 0

2)в битах с первого по пятнадцатый  (по схеме) находится значение с ацп

3) в битах 16-19 значение булевой переменной

4) в 20-ом бите старший бит CRC8

5) четвёртый байт содержит остаток бит CRC8

 

если кто-то таки сможет помочь могу отблагодарить парой нано 3.0 или голых 8535 16au

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Svod616, Вы сами себе противоречите: первый пункт противоречит остальным.

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

На всякий члучай: биты принято нумеровать с 0. Не знаю, учитывали ли Вы это обстоятельство в "биты с первого по пятнадцатый" и других местах. 

И лучше составить табличу, в которой однозначно бы было записано, в какие биты что помещается. Без использования неоднозначностей типа "остаток бит".

Ну и для хранения булевой переменной достаточно 1 бита.

Svod616
Offline
Зарегистрирован: 03.05.2017

беда в том что не мною этот протокол был написан, не мной и документация делалась, по итогу таки понял как это всё преобразовывается из одной формы в другую, но нелзя было ссылку на битовые функции дать? я видимо совершенный идиот так-как на их описание наткнулся часу на 5-ом активного гуглежа

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

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

Но начните все-таки с составления таблички. Когда она будет сделана все остальное уже элементарно. А если составить ее не удастся (коль скоро протокол писан не Вами и где взять его описание, Вы не знаете), то все остальное - бесполезно.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

wdrakula пишет:

Добавлю картинку, чтобы понятнее было:

слева источник импульсов, справа - пин АЦП ардуинки, сверху - диджитал нога ардуины для разрядки кондера, выводом на нее "0".

Кондер - керамика, ОУ - мой любимый LM358, очень уж он мне ценой нравится ;), он до 1-2 МГц, Вам хватит.

Простите, забыл со схемы убрать вольтметр, это я ее в тесте гонял, на него не смотрите.

без операционника с кодом, что ниже какая-то хрень получается, пульсации выше 200 млливольт, а теоретически быть не должно

void read_VMAX1(){
  digitalWrite(RsPin, ReleON); 
  delay(1);
  digitalWrite(RsPin, ReleOFF);         // Разрядили конденсатор защёлки 
  delay(10);                            // Заряжаем конденсатор до пикового напряжения
  sensorValue = analogRead(sensorPin);  // Измеряем 
 }

Неужели ни у кого мыслей нет, почему лезут пульсации 100 герц с таким большим уровнем, диоды щоттки, разряд за счёт ёмкости диода должен быть минимальным, доли милливольта, а здесь все 200
Да, а тесте проверить наверное надо не просто диод рисовать, а его эквивалентную схему, с учётом ёмкости обратно смещённого диода?

SLKH
Offline
Зарегистрирован: 17.08.2015

ua6em пишет:

wdrakula пишет:

Добавлю картинку, чтобы понятнее было:

слева источник импульсов, справа - пин АЦП ардуинки, сверху - диджитал нога ардуины для разрядки кондера, выводом на нее "0".

Кондер - керамика, ОУ - мой любимый LM358, очень уж он мне ценой нравится ;), он до 1-2 МГц, Вам хватит.

Простите, забыл со схемы убрать вольтметр, это я ее в тесте гонял, на него не смотрите.

 

без операционника с кодом, что ниже какая-то хрень получается, пульсации выше 200 млливольт, а теоретически быть не должно

 

 }

Неужели ни у кого мыслей нет, почему лезут пульсации 100 герц с таким большим уровнем, диоды щоттки, разряд за счёт ёмкости диода должен быть минимальным, доли милливольта, а здесь все 200
Да, а тесте проверить наверное надо не просто диод рисовать, а его эквивалентную схему, с учётом ёмкости обратно смещённого диода?

Мысль № 1: впервые появившимся на форуме школьникам обычно рекомендуют дать схему, а не её вольный пересказ.

Мысль № 2: для частоты 100 гц емкость 22 pf - то же самое, что и ноль. Если на входе есть пульсации, они никуда не денутся.

Мысль № 3: если уж емкость диода учитывать, стоило бы и про осциллогаф вспомнить. Но все 3 емкости в сумме (конденсатор, диод и щуп) всё равно никакого влияния на пульсации 100 герц не окажут. 

 

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Верно, для случая, когда есть нагрузка, а если её нет? (мегаомы)
Я и пытаюсь понять, что нагружает, чтобы появились пульсации
PS конденсаторы ставились разных номиналов вплоть до 100Н

SLKH
Offline
Зарегистрирован: 17.08.2015

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

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

SLKH пишет:

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

Это из параллельной ветки -

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

в принципе проблема мне кажется понятна, ток утечки первого диода, надо попробовать 1SS380, Шоттки не пойдут от слова совсем или переход коллектор-база в качестве диода из старых транзисторов что-то подобрать

SLKH
Offline
Зарегистрирован: 17.08.2015

ua6em пишет:

SLKH пишет:

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

Это из параллельной ветки -

 

Ни одна из этих схем не даст на входе МК картинку, как на осциллограмме в #33.

И кусок светча - тоже с осциллограммой не совпадает. 

 

SLKH
Offline
Зарегистрирован: 17.08.2015

ua6em пишет:

в принципе проблема мне кажется понятна, ток утечки первого диода, надо попробовать 1SS380, Шоттки не пойдут от слова совсем или переход коллектор-база в качестве диода из старых транзисторов что-то подобрать

фону 100 герц эти токи пофигу.

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Именно вот эта схема и даёт такую картинку, R1 - 2 килоома

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Эта схема, в сочетании со скетчем из №33 не может дать осцилограмму в том же №33. Причина банальна: 1мсек - разряд + 10мсек на заряд + сколько-то мксек (и не мало!) на каждый оператор Wiring, а их несколько + время замера .. никак не могут дать картинку с таким разрешением сигнала... или лыжи или лыжник, но что-то не то - явно. :)

Кстати, там на картинко указано "частота развертки - 20мсек", и "частота" (справа) - 5(пять) герц .. как понимаю, этих самых пульсаций .. какие "100герц" наводки? Скорее всего, это "биения" между замеряемой пульсацией с частотой 100герц и временем цикла измерительного скетча.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Arhat109-2 пишет:

Эта схема, в сочетании со скетчем из №33 не может дать осцилограмму в том же №33. Причина банальна: 1мсек - разряд + 10мсек на заряд + сколько-то мксек (и не мало!) на каждый оператор Wiring, а их несколько + время замера .. никак не могут дать картинку с таким разрешением сигнала... или лыжи или лыжник, но что-то не то - явно. :)

Кстати, там на картинко указано "частота развертки - 20мсек", и "частота" (справа) - 5(пять) герц .. как понимаю, этих самых пульсаций .. какие "100герц" наводки? Скорее всего, это "биения" между замеряемой пульсацией с частотой 100герц и временем цикла измерительного скетча.

теперь бы еще всё это перевести на мне понятный )))
так что делать, в цикле увеличить число?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

а если снять диод с D10 то картинко еще интересней, выходит пульсации сбрасывались в +5

wdrakula
wdrakula аватар
Онлайн
Зарегистрирован: 15.03.2016

Ты меня сюда позвал, так изложи трабл. Я завтра подумаю.

Про ОУ на выходе - Логик был прав еще тогда, год назад,  нахрен ОУ не нужен. 100 Гц - это наводки от блока питания. Какие еще есть вопросы? Просто 9 мая вечером я не все точно понимаю.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

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

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

wdrakula пишет:

Ты меня сюда позвал, так изложи трабл. Я завтра подумаю.

Про ОУ на выходе - Логик был прав еще тогда, год назад,  нахрен ОУ не нужен. 100 Гц - это наводки от блока питания. Какие еще есть вопросы? Просто 9 мая вечером я не все точно понимаю.

Схема - пост 41, осциллограмма на А0 пост выше, если вернуть диод на место - пульсации порядка 800 милливольт, в чём засада, да, выпрямителя питающего МК на этой обмотке нет, питается от отдельного стабилизатора
 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Arhat109-2 пишет:

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

Скетч снимает напряжение с защёлки, в которой должно фиксироваться пиковое значение напряжения

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

А нафига, когда у Вас там рядом торчит сглаживающий кондер? Он и зарядится до вашего "пикового" (усредненно). Вы же своей защелкой И скетчем точно также интегрируете эти "пиковые" значения. Ни панимаю, на кой фиг нужен такой гемморой (разве что схема от иного устройства и назначения).

wdrakula
wdrakula аватар
Онлайн
Зарегистрирован: 15.03.2016

Какой стоит конденсатор? Какие марки диодов? не забыли ли Вы разряжающую ногу задрать в Хай?