Подскажите как преобразовать сигнал шим генерируемый источником, частотой 100 Гц в шим ~30 кГц, с инвертирующим пропорциональным изменением % заполнения т.е. на входе 10% заполнения - на выходе 90%, на вход 40% на выходе 60%, на входе 70% на выходе 30% и т.д. Хочу попробовать реализовать это на базе attiny13, но в инете есть куча примеров по генерации шима, но не могу найти как обрабатывается шим на входе в МК
На входной шим RC-фильтр, с него на АЦП контроллера, ну а потом по результату АЦП уже ШИМить на выход. Собственно, 100 Гц ШИМ, как мне кажется, с приемлемой точностью можно измерить и по прерываниям Pin Change Interrupt...
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
но не могу найти как обрабатывается шим на входе в МК
Поищите примеры использования возможности аппаратного захвата значения таймера (timer input capture) для измерения коэффициента заполнения входного сигнала.
_________________ Разница между теорией и практикой на практике гораздо больше, чем в теории.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Заголовок сообщения: Re: Преобразователь Шим в Шим
Добавлено: Пн окт 23, 2017 12:35:53
Модератор
Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57 Сообщений: 4510 Откуда: Планета Земля
Рейтинг сообщения:0 Медали: 1
И опять ни слова о требованиях. Одно только поверхностное объяснение хотелки, в двух словах. Где максимальное отклонение входной частоты от 100 Гц ? Где необходимая точность и разрешение измерения скважности ? Где максимальное время реакции на изменение этой скважности ? Где всё, Карл ???
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Меня интересовало направление копания, без конкретизации схемных решений. Частота подразумевается стабильная, получаемая с другого МК, время реакции изменения выходного сигнала относительно входного не имеет принципиального значения, пусть будет +5 секунд край, разрешение так же не сильно важно, пусть будет нарастать % заполнения десятками от 0 до 100 на частоте 30 кГц
Можно так. Частота работы 4,8 МГц. Настроить Т0 на Fast PWM 7, OCR0A=160-1, разрешить прерывание от OCR0A, по которому наращивать счетчик длительности ШИМ частоты 100Гц. Дискрет отсчета 33,(3)мкс, т.е. каждые 3 отсчета будут давать длительность 100мкс или 1% PWM 100Гц. По таблице значение счетчика преобразовать в значения PWM 30кГц и загнать его в OCR0B.
либо ATTINY2313 использовать, вроде бы у этого МК есть, необходимый для этого вывод ICP
с достаточной для ваших нужд (судя по описанию) точностью измерять ШИМ можно и 13-й тинькой просто обрабатывая прерывание PCINT и считая таймером время
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Делал эмулятор егр на Тиньке-13. Для измерения скважности использовал счетчик между двумя прерываниями (верх — низ, или наоборот), фронт определял по логическому состоянию пина сразу после прерывания. Дальше считаем % и по нему генерим наш ШИМ. Ничего особо сложного, еще 30% свободного флеша в Тиньке осталось.
Хоть и спустя долгий период опишу что получилось... может кому пригодится В итоге всё сделал через вывод ICP на МК ATTINY2313
В этом режиме, по изменению логического уровня на ножке ICP (по фронту или по спаду), делается копия данных из регистра счетчика TCNT в регистр ICR1. А затем вызывается прерывание (TIMER1_CAPT_vect), если произошел "захват", по установленному условию (фронт/спад), в прерывании подпрограммой обрабатываются значения счетчика. Зная значения счетчика между двумя фронтами, можно высчитать частоту сигнала, и затем зная значение счетчика между двумя фронтами и между фронтом и спадом можно высчитать % заполнения. В подпрограмме прерывания, можно перенастраивать "режим захвата", с фронта на спад, тем самым манипулировать значением того что пытаемся получить, частоту или заполнение (два фронта или фронт и спад соответственно).
Код:
// Настройка режима счетчика TCCR1B /* Bit 7 – ICNC1: Input Capture Noise Canceler. Установка этого бита в лог. 1 активирует входной подавитель шума, при этом будет фильтроваться входной сигнал Input Capture Pin (ICP1). Функция фильтрации требует 4 последовательных одинаковых значений, поступивших на вывод ICP1, чтобы было зарегистрировано изменение уровня сигнала. Таким образом, захват входных импульсов (Input Capture) будет задержан на 4 такта генератора микроконтроллера, когда возможность фильтрации разрешена. --- Bit 6 – ICES1: Input Capture Edge Select. Этот бит выбирает тип среза (фронт или спад) на входе ICP1, который вызовет событие захвата импульса. Когда в ICES1 записан лог. 0, то спад (отрицательный срез) вызовет срабатывание триггера, и когда в ICES1 записан лог. 1, срабатывание триггера вызовет уже фронт (положительный срез) сигнала. --- Bit 4:3 - WGM13 : WGM12: Выбор режима timer1. These bits are used for mode selection like Normal mode, PWM mode, CTC mode, etc. here we will select normal mode, so set these bits to zero.
Когда срабатывает триггер захвата события по входу в соответствии с установкой ICES1, значение счетчика (TCNT1, регистры TCNT1H и TCNT1L) копируется в регистр захвата Input Capture Register (ICR1). Событие также вызовет установку флага Input Capture Flag (ICF1), и это может использоваться для срабатывания прерывания Input Capture Interrupt, если оно разрешено. --- Bit 2:0 – CS12:10: Clock Select. Эти 3 бита задают источник тактового сигнала для счетчика. =============== CS12 CS11 CS10 Описание =============== 0 0 0 Источник тактов не задан (таймер/счетчик остановлен). 0 0 1 clkI/O (без делителя частоты) 0 1 0 clkI/O / 8 (с выхода делителя) 0 1 1 clkI/O / 64 (с выхода делителя) 1 0 0 clkI/O / 256 (с выхода делителя) 1 0 1 clkI/O / 1024 (с выхода делителя) 1 1 0 Внешний тактовый сигнал, поданный на вход T1. Тактирование происходит по срезу (спаду) уровня сигнала. 1 1 1 Внешний тактовый сигнал, поданный на вход T1. Тактирование происходит по фронту (нарастанию) уровня сигнала. */
Код:
// Настраиваем счетчик на фронт (бит 6 счетчика TCCR1B в 1), режим Normal (Table 46. Waveform Generation Mode Bit Description из даташита на 2313) TCCR1A = 0b00000000; TCCR1B = 0b01000100;
затем при срабатывании захвата сигнала на ICP, срабатывает прерывание, в котором уже делается, что нужно:
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 22
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения