Формирование PWM сигнала на выходе, относительно входного PWM сигнала.

ii_alex
Offline
Зарегистрирован: 28.12.2015
Здравствуйте!
 
Необходимо решить следующую задачу.
 
Имеется входной PWM сигнал с параметрами: Меандр, амплитуда 5v, частота 8.14 кГц ( частота не изменяется ), с изменяемой скважностью.
Диапазон изменения скважности от 46,58 % до 99,50 %. и от 99,50 % до 46,58 %. Шаг изменения 0,1 - 0,3 %.  
 
Этот входной сигнал подается в Arduino Nanо. 
 
Требуется на выходе ардуино nano, сформировать точно такой же сигнал, как и на входе, с максимальным повторением по скважности. В идеале хочется получить частоту 8.14 кГц, но частота может быть любой от 7 до 9 кГц.  
Т.е на входе изменилась скважность на 0.1% соответственно на выходе, тоже изменилась скважность на 0,1%.
Также , требуется определять значение скважности с минимально возможным промежутком времени, и как только оно превысит 70% 
отправить, это значение в порт Arduino ( Тут точность 0,1 - 0,3 % не требуется, достаточно зафиксировать превышение 70 %)
 
К сожалению на знаю, сколько может стоить решение такой задачи. Так скажем сразу, готов предложить 1000 р. Но предложения по оплате, можно обсудить.  
 
 
 
DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

да, примерно, стока и стОит.  Если с Ондроеда управлять не надо

fridgetester
fridgetester аватар
Offline
Зарегистрирован: 09.02.2019

предлагаю свои услуги. 2тр, fridgetester@mail.ru

ЗЫ: И это, а зачем повторять сигнал? Что нельзя входной сигнал дальше пустить?

Если повторение не нужно, то стоимость будет 1тр.

b707
Offline
Зарегистрирован: 26.05.2017

ii_alex, a запараллелить вход и выход не проще?
Кстати, какое рарешение сигнала ШИМ? 8 бит, 9, 10?
Просто шим 8 КГц даже с разрешением 8 бит - это уже 2 МГц, померить это точно на ардуино может и не получится

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

b707, для точности 0.1% меньше 10 разрядов быть не может.

SAB
Offline
Зарегистрирован: 27.12.2016

Действительно через контроллер не надо пропускать сигнал, если нет необходимости с ним что то делать. Делается просто измеритель скважности сигнала и далее в порт. Здесь и о разрядности не стоит говорить, милис все и так скажет.

SAB
Offline
Зарегистрирован: 27.12.2016

Ошибочка, пропустил точность, конечно  микрос.

ii_alex
Offline
Зарегистрирован: 28.12.2015
Так скажем  сигнал " можно не повторять пересчитыванием ", если есть возможность транслировать сигнал на одном порту, в другой порт ардуино, с 99,9 % повторением , еще и лучше. 
 
Запаралелить нельзя, поскольку при выполнении условия, в данный сигнал нужно вносить изменения. 
 
Я начинающий ардуинщик, обработку событий, генерацию необходимого мне сигнала на выходе, после выполнения условия я напишу.
 
А вот с повторением входного сигнала у меня сложности. 
 
Алгоритм примерно следующий:
 
Головное устройство, формирует PWM сигнал, этот сигнал управляет двигателем. Сигнал формируется микроконтроллером ATMega16 на 13 ноге. ( Насколько я понимаю у данного микроконтроллера 8 бит шим на данном выводе) параметры сигнала в посте выше. 
 
До выполнения условия ( нажатие кнопки ) нужно входной сигнал от головного устройства передавать на выход Arduino без изменений . Входной сигнал может меняться с дискретностью изменения скважности 0,1-0,3%. Время изменения скважности может быть как 0,5 сек, так и 60 минут, скважность может вообще не изменятся длительное время. Изменение скважности на 0,1 % уже меняет обороты двигателя. 
 
После выполнения условия ( нажатие кнопки ) нужно отслеживать сигнал, на входе ардуино и смотреть его наличие и скважность ( точность после нажатия кнопки в 0,1-0,3% не нужна, но если можно добится такой, точности это отлично ). После выполнения условия, сигнал от головного устройства начнет изменятся ( скважность будет менятся 1% в секунду с дискретностью 0,1-0,3% ) , пока не достигнет 99,5%. Затем сигнал на входе ардуино пропадет. Вот в этом режиме и нужно вносить изменения в выходной сигнал. Т.е пока имеется сигнал на входе и его скважность не превышает 70% никаких изменений вносить не нужно, сигнал выхода должен соответствовать сигналу входа. Как только скважность превысит 70%, требуется сформировать на выходе постоянный сигнал 7 - 9 кГц и скважностью 70% не зависимо от того, какой сигнал на входе и отправить значение скважности в порт ардуино. Как только сигнал на входе пропал. На выходе соответственно тоже ничего не должно быть. 
 
Вот собственно весь алгоритм работы. 
 
Если у кого-то есть предложение по реализации, готов рассмотреть.  
Но основное интересует скетч для повторения сигнала на выходе в зависимости от входного сигнала.
 
b707 
 
Я вот тоже засомневался можно ли реализовать такую точность средствами ардуино.
ii_alex
Offline
Зарегистрирован: 28.12.2015

По градациям точности. Всего изменяемых значений 194. Я таблицу изменения составил. 

Просто скважность меняется по разному. Например в начале диапазона от 46.58 % до 50 % меняется с шагом 0,4%.  От 50% до 60 % меняется с шагом 0,2% . От 60 % до 94% с шагом 0,1 - 0,4 % . От 94 до 99 % с шагом 1-2 %.

Ну вот так китаезы сигнал PWM формируют. 

Так, что разрядность 8 бит. 

Kakmyc
Offline
Зарегистрирован: 15.01.2018

Напишу за 2кр
kakmycmail@gmail.com

b707
Offline
Зарегистрирован: 26.05.2017

ii_alex пишет:

Просто скважность меняется по разному. Например в начале диапазона от 46.58 % до 50 % меняется с шагом 0,4%.  От 50% до 60 % меняется с шагом 0,2% . От 60 % до 94% с шагом 0,1 - 0,4 % . От 94 до 99 % с шагом 1-2 %.

Ну вот так китаезы сигнал PWM формируют. 

Так, что разрядность 8 бит. 

ii_alex. китаезы тут не причем, это цифровая техника. Если разрядность ШИМ 8 бит - никаких 0.1% ни в одном диапазоне не может быть по определению, шаг скважности будет 1/256 * 100% - примерно 0.4% во всем диапазоне.

Так что ваше заявлениее "скважность меняется по разному" - вызывает огромное сомнение. Я думаю. вы просто неправильно определили данные. Как и чем вы измеряли скважность ШИМ?

 

Что касается задачи = зачем нужно сначала формировать сигнал атмегой16, а потом преобразовывать ардуиной? - почему бы сразу не завести кнопку на атмегу16 и не генерить сигнал по условию прямо там?

ii_alex
Offline
Зарегистрирован: 28.12.2015
Согласен может действительно измеряю не так или у приборов большая погрешность. 
 
Измеряю тем, что у меня доступно - цифровым осциллографом, на выходе PWM Atmega16. Видно форму сигнала, скважность он сам и измеряет. Сигнал четкий, стабильный. Осциллограф умеет измерять до 0.01%. Прежде чем смотреть на устройстве, подавал на вход осциллографа сигнал с поверенного генератора с регулируемой частотой и скважностью. Все точно, на экране осциллографа, все соответствует сигналу генератора. Во всяком случае 0,1 десятая отслеживается очень точно.  
 
Может не верно конечно измеряю, но, что доступно.
 
С теорией конечно не поспоришь. Что намерял, то намерял. 
 
Из 194 изменяемых значений,  всего диапазона,  в основном изменения 0.2% но так же есть 0,1 - 0,3 - 0,4  1 - 2 %.  Несколько раз перемерял. Хотя может это погрешность моих неверных измерений. 
 
Это готовое, полностью рабочее устройство, в котором используется ATMega16, хочется изменить режим его работы, считать прошивку нельзя, ибо проц закрыт для чтения. Требуется изменить режим его работы в определенный момент времени.
Ну дует он слишком сильно, потоком воздуха в 200 литров в процессе охлаждения термоэлемента. И в рабочий режим после этого возвращается 12 секунд, если поток воздуха необходим например 30 литров. Чуть зазевался и полетели детали не припаянные. Да и шумит как самолет, когда охлаждается. Лучше пусть охлаждается дольше с меньшим потоком, литров в 120, но без шума. Как отразится на выживаемости термоэлемента - не знаю, вот и поэкспериментирую , но пусть не шумит ! 
 
Ну вот все карты раскрыл. :)
b707
Offline
Зарегистрирован: 26.05.2017

ii_alex пишите ded@cur-ex.ru, обсудим, есть что предложить