Все прочитали, вроде даже поняли, взяли паяльник - а нифига не получается? Скорее сюда! Поможем. Чем можем...
Ответить

Re: Как отрицательный полупериод синусоиды сделать положител

Сб апр 20, 2024 13:45:42

Так да, работает t = (abs(t)). Но ещё лучше работает реальный двухполупериудный измерительный выпрямитель на ОУ. Сегодня собрал схему и протестировал.
Проколы на "пиле" - это переполнение.

Переполнение чего ?

Re: Как отрицательный полупериод синусоиды сделать положител

Сб апр 20, 2024 19:14:37

Переполнение чего ?

Амплитуда пилы близка к 256. Полагаю, что АЦП работает только в 8 битах с правым выравниванием. Это в ардуинах бывает... :)

Re: Как отрицательный полупериод синусоиды сделать положител

Вс апр 21, 2024 23:09:16

Ещё можно помножить на -1 :)

"Обработано фильтрами" - значит сигнал переменный? Какой диапазон частот? Переменку можно и через конденсатор подать на резистивный делитель.

"От 20 мВ до 3В" - надо по амплитуде считать или по количеству импульсов? Если просто по количеству, то усилитель-ограничитель спасёт гиганта мысли (сделает импульсы прямоугольными).

Если не хватает скорости оригинальной ардуинки, то китайский аналог LGT8F328P заметно шустрее.

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

Переменная называется 3bIPK ? (английская раскладка)

Спойлер// Назначаем вывод PWM
#define pwm_pin 9

int 3bIPK = 127;

void setup() {

// настраиваем таймер1 (для пинов 9 и 10)
TCCR1A = 0b00000001; // 8bit
TCCR1B = 0b00001001; // x1 fast pwm - 62.5 кГц
}

void loop() {

//
// получаем значение 3bIPK с АЦП ...
// обрабатываем
//

// нормируем значение 3bIPK от 0 до 255
3bIPK = constrain(3bIPK, 0, 255);

// выводим шим
analogWrite(pwm_pin, 3bIPK);

}


К 9-му выводу подключаем резистор 5,6 кОм и конденсатор 0,15 мкФ на землю.
Ответить