обманка для компа
- Войдите на сайт для отправки комментариев
Пт, 28/10/2016 - 20:48
нужна программа для обманки автокомпа:
имеем входной сигнал: ШИМ частота 300 Гц
на выходе нужен ШИМ с 50% скважностью
зависимость такая: при уменьшении скважности, меняется частота на выходе, скважность не меняется.
примерная зависимость: при скважности 69,7% - частота 58,82Гц
66,7%-60,24Гц
57,6%-73,53Гц
30,7%-116,28Гц
30,3% -119,05Гц
На чем делать? На ардуинах? Пишите ydom@mail.ru . Вам и на самой маленькой ардуине, мини , пойдет. Код могу написать на arduino ide, могу на честном С, без ардуиновских костылей и тормозов. А тут, скорее всего, именно такой и понадобится- разница между шириной импульсов со скважностью 30.7 и 30.3 % всего лишь 13 мкс, тут только честным С.
А нечестный С не справится, ага...
Может и справится, но это будет аналог супа из топора, - даже не точность, а просто кратность micros() 4 uS. Если для тс важна разница даже в 13 мкс, то надо это учесть.
На этих частотах нет необходимости в чем-то сложнее "блинка".
Длительность входного импульма измеряется pulseln(), выходной сигнал генерится tone().
pulseln() даст точность до 0.2% , tone() на этих частотах даст большую точность, чем нужно автокомпу (это явно обороты двигателя).
Функцию пересчета нужно апроксимировать из выданных 5 точек, или выпытать у ТС с паяльником и утюгом ;).
В цикле измеряем с усреднением скважность, допустим делаем 25 измерений, пересчитываем частоту и вызывем tone(). Получтся примерно раз в 100 мс изменяем частоту для "обмана" автокомпа.
ТС, это то, что надо? С кодировкой сами справитесь? На всяких случай добавил пару строк к примеру для pulseln().
позновательно, только пытать утюгом не надо, это всё что выдала машина когда стояла, на ходу будет плавнее регулировка и точек больше, так это надо на ходу всё записывать.
так что нужно из этих точек апроксимировать.
не понятны строки 21,22
21 и 22 это вариант стандартного усреднения.
так может мне сразу pulseIn считывать и его в частоту апроксимировать?
все равно, чтобы сигнал на выходе был не сильно дерганым, нужно менять его не часто. Примерно 10 раз в секунду - нормально. Контроллеру нечем заняться. Пусть он все это время усредняет измеренное значение длины импульса. Среднее - всегда лучше одного измерения. Мало ли, что помешало?
Таким образом убиваешь двух зайцев. И измерения точнее и время потратил.
Инициализацию "duration=100;" перенеси в ее объявление. Так лучше будет. Следующее измерение будет начинать усредние от значения предыдущего.
у меня процесор так то ещё по двум терморезисторам температуру усредняет и шим для этого мотора создает
По "хорошему" нужно, действительно, писать без библиотек.
1.Иметь полную картину того, что должен делать контроллер.
2. Учитывать, что контроллер стоит 120 р. и Возможно удобнее иметь их несколько, для разных задач.
3. Длительность импульса измерять четко, по прерыванию, Удобнее делать это на INT ноге, чем на PCINT- выйдет точнее. Или, даже, измерять таймером.
4. Генерировать меандр на таймере, функция tone() примерно так и делает, но с кучей лишнего. Если задать режим генерации самому, то можно делать это точнее и без срыва фазы в переходных режимах.
------
То есть, писать, в этом случае, нужно, как выражается один местный деятель, "на честном С". И это совсем другое программирование и ценник там будет от 10 рублей. Есть желание? - олвейс велкам! Нет - используйте то, что написано выше. Зато бесплатно.
буду пробовать, если срывов не будет оставлю так.
мыло можно для написания на"С+"
мой ник на жмейле.
строка 22 - усреднение? странная формула. сохраняли бы уж тогда последние 4 значения в масив и считали бы действительно среднее значение.
о дорогой друг! расскажи же мне про срение, про арифметические, геометрические , скользящие и пропорциональные. Я обещаю внимать молча, с открытым ртом и конспектировать все твои слова, и даже физиологические отправления, как-то почесывания и покашливания....
--------------------------
здесь было непечатно. удалено самоцензурой...
о дорогой друг! расскажи же мне про срение, про арифметические, геометрические , скользящие и пропорциональные. Я обещаю внимать молча, с открытым ртом и конспектировать все твои слова, и даже физиологические отправления, как-то почесывания и покашливания....
--------------------------
здесь было непечатно. удалено самоцензурой...
Зачем вы юродствуете ? У вас 9 периодная экспоненциально взвешенная скользящая средняя, и всего-то.
Главное умными слвоами это все назвать и сделать задумчивый вид.