Так да, работает t = (abs(t)). Но ещё лучше работает реальный двухполупериудный измерительный выпрямитель на ОУ. Сегодня собрал схему и протестировал.
[uquote="КРАМ",url="/forum/viewtopic.php?p=4570741#p4570741"]Проколы на "пиле" - это переполнение.[/uquote]
Переполнение чего ?
Как отрицательный полупериод синусоиды сделать положительным
- Реклама
- КРАМ
- Друг Кота
- Сообщения: 25300
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Как отрицательный полупериод синусоиды сделать положител
[uquote="Михаил_",url="/forum/viewtopic.php?p=4570903#p4570903"]Переполнение чего ?[/uquote]
Амплитуда пилы близка к 256. Полагаю, что АЦП работает только в 8 битах с правым выравниванием. Это в ардуинах бывает...
Амплитуда пилы близка к 256. Полагаю, что АЦП работает только в 8 битах с правым выравниванием. Это в ардуинах бывает...
Re: Как отрицательный полупериод синусоиды сделать положител
Ещё можно помножить на -1 
"Обработано фильтрами" - значит сигнал переменный? Какой диапазон частот? Переменку можно и через конденсатор подать на резистивный делитель.
"От 20 мВ до 3В" - надо по амплитуде считать или по количеству импульсов? Если просто по количеству, то усилитель-ограничитель спасёт гиганта мысли (сделает импульсы прямоугольными).
Если не хватает скорости оригинальной ардуинки, то китайский аналог LGT8F328P заметно шустрее.
Выводить можно и не в монитор порта, а через шим на один из шимных выводов и после RC-фильтра смотреть осциллографом (сначала увеличить частоту шим).
Переменная называется 3bIPK ? (английская раскладка)
#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 мкФ на землю.
"Обработано фильтрами" - значит сигнал переменный? Какой диапазон частот? Переменку можно и через конденсатор подать на резистивный делитель.
"От 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);
}
(Аль Котоне, кот ещё тот, Cattus Sapiens)Усы и хвост - мои документы.
Кот - авторитет! Скажет "Мяу!" - не поспоришь. (скажи мне "мяу" и я скажу кто ты)
