Дефективная пропорция, урезанная с одной стороны

Здесь принимаются все самые невообразимые вопросы... Главное - не стесняйтесь. Поверьте, у нас поначалу вопросы были еще глупее :)
Ответить
yor
Мудрый кот
Сообщения: 1721
Зарегистрирован: Сб янв 19, 2008 23:57:27

Сообщение yor »

Здра! Математический вопрос.
Дано: шкала с известными значениями, шкала с неизвестными значениями, на которой надо вычислить значение, пропорциональное первой, но она не от ноля. То есть в зависимости от Vmid вычислить Tx.
Подскажите пож-ста, как найти Tx, учитывая, что шкала не от ноля? Если бы от ноля, то пропорции я ещё помню:
Tx/Vx=Tmax/Vmax. А тут в голову ничего не лезет, попытки тупо вычитать/делить не привели к успеху.

Код: Выделить всё

Vmax
-
-Vmid
-
Vmin=0
-------------
Tmax
-
-Tx
-
Tmin≠0
Реклама
Друг Кота
Аватара пользователя
Сообщения: 25586
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

Если шкалы линейные, то одна пересчитывается в другую по простой формуле:
Fnew(x)= K*f(x)+C
где K - коэффициент наклона графика функции, а С - смещение (может быть отрицательным) графика функции (оффсет)
Проще всего совместить графики в Эксель.
Реклама
yor
Мудрый кот
Сообщения: 1721
Зарегистрирован: Сб янв 19, 2008 23:57:27

Сообщение yor »

Даже не знаю, линейные ли они. Первая V будем считать линейная, напряжение от 0 до 5В, оцифровывается и в зависимости от Vmid надо вычислить период, который по абсолютным значениям вроде нелинеен сам по себе (100--70--50--30--10мсек). Как тут прикрутить график функции?
Это всё опять же на PIC
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

100--70--50--30--10 если такие значения, то просто две функции: одна работает на участке 100...70, другая на 70...10. Будут ли они обе линейные (тогда изменяется только K), или только вторая - Вам решать.
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
yor
Мудрый кот
Сообщения: 1721
Зарегистрирован: Сб янв 19, 2008 23:57:27

Сообщение yor »

Не понял, какие такие значения? Значения от 100 до 10, через единицу. Или, если точнее, от FFFF thru 85C. Зачем две функции? Подскажите хоть одну))
Реклама
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

КРАМ подсказал её. Я понял так: есть точки 100--70--50--30--10 (ось у), им соответствует напряжение 0...5 (ось х). Получается, в самом простом варианте график из двух прямых: 100--70 и 70--50--30--10. Получаем тогда одну функцию y = K*x + C, но с двумя значениями коэффициента K, в зависимости от х

Добавлено after 7 minutes 11 seconds:
на всяк случай: диапазон управления иногда интереснее как 0,5...4,5 В. Тогда крайние значения 0 и 5 легко оцениваются как аварийные.
Контактная информация:
Реклама
yor
Мудрый кот
Сообщения: 1721
Зарегистрирован: Сб янв 19, 2008 23:57:27

Сообщение yor »

Кажется, понял, что вы имеете в виду. Оно? Так-то подходяще. Ладно, буду рожать формулу, которую можно вычислить на PIC. То есть пытаться притянуть за уши Крамовскую)) Так а пропорция тут никак не подойдёт?
Изображение

Диапазон пусть будет 0-5, это же вход, никакой аварии, АЦП цифрует и вычисляется, а пошире пригодится. Да и ещё опять же формула усложнится.
Друг Кота
Аватара пользователя
Сообщения: 26868
Зарегистрирован: Пн фев 09, 2009 22:19:49
Откуда: Когда-то был прекрасный город для людей

Сообщение Муркиз »

Вообще-то это стандартная задача корреляционно-регресионного анализа, но описание задачи настолько невнятное, что что с чем связано и что там в исходных данных, связать невозможно...
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

ну, из того, что написано, примерно так:

Код: Выделить всё

if (x > 3,75) // если напряжение больше 3,75 В
  y =  24*x - 20;  //100...70
else
  y =  16*x + 10; // 70...10
подозреваю, что можно проще, но уже башка не варит
Контактная информация:
yor
Мудрый кот
Сообщения: 1721
Зарегистрирован: Сб янв 19, 2008 23:57:27

Сообщение yor »

Я и слов-то таких не знаю, если только по отдельности))
Martian, чего Вы прицепились к разрыву, или надлому, в точке 70? Это прямая.
Можно по способу трапеций, вычисление длины линий, параллельных основаниям трапеции. Но там много умножений/делений. X=(A*B+C*D):E по этому типу.
Проще никак?

А задача такая: я даже удивлён, что не находится в инете проекта двухканального противофазного генератора. На TL494/KA7500 с большими скважностями на малых частотах не работает, ещё кто-то продаёт на PIC, но это не наш путь. Решил сам сделать. Регулируемый переменником. Для этого АЦП считывает величину от 0 до 5В, и пропорционально надо вычислить значение периода, который не может быть нулевым и даже слишком малым, чтобы частота не была слишком высокой.

А с объяснениями у меня да, проблема. Особенно с письменными))
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

офигенная прямая. Межу 100 и 70 разница 30, а между 70 и 50 - 20. Это прямая? Зачем тогда дезинформируете?
Контактная информация:
yor
Мудрый кот
Сообщения: 1721
Зарегистрирован: Сб янв 19, 2008 23:57:27

Сообщение yor »

Это промежуточные значения, на всей длине 100-10. Просто как пример привёл.
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

Зачем приводить промежуточные значения в диапазоне 100...10? чтобы показать что?

[uquote="yor",url="/forum/viewtopic.php?p=4612479#p4612479"]надо вычислить период, который по абсолютным значениям вроде нелинеен сам по себе (100--70--50--30--10мсек).[/uquote]
Вы уж определитесь... то вроде нелинейная, то линейная.
Контактная информация:
yor
Мудрый кот
Сообщения: 1721
Зарегистрирован: Сб янв 19, 2008 23:57:27

Сообщение yor »

По недомыслию, каюсь.
Поставщик валерьянки для Кота
Сообщения: 1948
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария

Сообщение veso74 »

Переназначает число из одного диапазона в другой.
По аналогии с Ардуиновская функция map() использую для нескольких типах МК (C, C++) выражения:

Код: Выделить всё

int32_t map(int32_t x, int32_t in_min, int32_t in_max, int32_t out_min, int32_t out_max) {
  return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
Значения могут варьироваться от одного к другому, в т.ч. 0 и - и +.

int32_t x = 0xF1;
int32_t y = map(x, 0, 0xFF, 0x085C, 0xFFFF);
---
резултат: y = 0xF266.
Контактная информация:
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

но если отказаться от универсальности, то будет скромно 18 * х + 10, и что хорошо - без деления. можно даже привести к x<<4 + x<<1 + 10
Контактная информация:
yor
Мудрый кот
Сообщения: 1721
Зарегистрирован: Сб янв 19, 2008 23:57:27

Сообщение yor »

Я бы попросил без С!
Поставщик валерьянки для Кота
Сообщения: 1948
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария

Сообщение veso74 »

Ничего не упомянули о C. Перепишите выражение по своему усмотрению.
Использую даже при низкоресурсных PIC как 10F322 и 12F675.
Контактная информация:
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

да и что тут от Си?
Между прочем, достаточно много алгоритмов описывается псевдо-Си записью, не смотря на то, что целевой язык может быть иным. Потому что удобно. Даже блок-схема удобней ассемблера и может рассматриваться гораздо большим количеством людей, а не горсткой, знающих определенный процессор.
Контактная информация:
yor
Мудрый кот
Сообщения: 1721
Зарегистрирован: Сб янв 19, 2008 23:57:27

Сообщение yor »

Подсказали пропорцию:

Код: Выделить всё

(Tx-Tmin)/Vx = (Tmax-Tmin)/Vmax
которая экономичнее метода трапеций на одну операцию вычитания и умножения.
Ответить

Вернуться в «Теория»