Шим. Сдвиг фазы на 180 градусов на АТмега 2560

Обсуждаем контроллеры компании Atmel.
Ответить
Aice
Родился
Сообщения: 13
Зарегистрирован: Пн янв 19, 2015 11:50:25

Шим. Сдвиг фазы на 180 градусов на АТмега 2560

Сообщение Aice »

Добрый день всем. Возникла у меня срочная нужда в двухканальном шим контроллере со сдвигом фазы на 180 градусов, приобрёл для этого ардуину мега 2560, но как оказалось штатные средства не позволяют выполнить толком вообще ничего...
Максимум что получилось это одно канальный шим с частотой 490 Гц, при необходимых 32 кГц. Покурив Гугл нашел возможность повысить частоту, перевел шим в режим phase-correct PWM. Накидал вот такой код:

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

int _gtv1 = 50;
void setup()
{
TCCR0B = TCCR0B & 0b11111000 | 0x01;
TCCR0A = _BV(COM0A1) | _BV(COM0B1) | _BV(WGM00);
TCCR0B = _BV(CS00);
}
void loop()
{
analogWrite(13, _gtv1);
analogWrite(4, _gtv1);
}

И вот что получилось:
Изображение
А мне необходимо наподобие:
ИзображениеИзображение
Так как я вообще не программист для меня это тёмный лес :shock: и хз как это выполнить.
Читал что есть готовые решения на тиньке, и что весь код состоит из 10 строк.
Может кто ткнёт носом в готовый проект или подскажет пару волшебных строк)
Взять tl494 и т.д. за 40 рублей в ближайшем магазине не предлагайте)
Заранее Очень Приочень Благодарен всем откликнувшимся :beer:
Аватара пользователя
zero648
Вымогатель припоя
Сообщения: 650
Зарегистрирован: Пн июн 18, 2012 12:01:04
Откуда: Челябинская область, Копейск

Re: Шим. Сдвиг фазы на 180 градусов на АТмега 2560

Сообщение zero648 »

Тут лучше использовать два разных таймера, например 1й и 3й. Каналом А задавать частоту ШИМ режим PWM с потолком OCR1A и OCR3A, а каналом В задавать скважность.
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Шим. Сдвиг фазы на 180 градусов на АТмега 2560

Сообщение Engineer_Keen »

Aice писал(а):как оказалось штатные средства не позволяют выполнить толком вообще ничего...

Это какие средства?
Aice писал(а):Покурив Гугл нашел возможность повысить частоту, перевел шим в режим phase-correct PWM.

Мудрое решение, действительно
Aice писал(а):весь код состоит из 10 строк.

Чтобы получить такое:
СпойлерИзображениеИзображение

Нужно один из выходов ШИМ инвертировать, т.е. добавить например (жирным):
TCCR0A = _BV(COM0A1) | _BV(COM0B1) | _BV(WGM00) | _BV(COM0B0) ;
Только при загрузке значений ШИМ в регистр OCR0B записывать тоже инверсное значение (256-X)
Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)
Aice
Родился
Сообщения: 13
Зарегистрирован: Пн янв 19, 2015 11:50:25

Re: Шим. Сдвиг фазы на 180 градусов на АТмега 2560

Сообщение Aice »

Сделал как вы написали, большое спасибо
Изображение
Twit
Родился
Сообщения: 1
Зарегистрирован: Ср май 30, 2018 00:45:35

Re: Шим. Сдвиг фазы на 180 градусов на АТмега 2560

Сообщение Twit »

То же пытаюсь получить в одном из каналов ШИМ со здвигом фазы на 180.

Не совсем понимаю, куда записывать значения 255-Х и откуда брать этот Х
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 7,031 kHz
// Mode: Fast PWM top=0xFF
// OC0A output: Non-Inverted PWM
// OC0B output: Non-Inverted PWM
// Timer Period: 36,409 ms
// Output Pulse(s):
// OC0A Period: 36,409 ms Width: 0 us
// OC0B Period: 36,409 ms Width: 0 us
TCCR0A|=(1<<COM0A1) | (0<<COM0A0) | (1<<COM0B1) | (0<<COM0B0) | (1<<WGM01) | (1<<WGM00);
TCCR0B=(0<<WGM02) | (1<<CS02) | (0<<CS01) | (1<<CS00);
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;
Аватара пользователя
Starichok51
Модератор
Сообщения: 19046
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: Шим. Сдвиг фазы на 180 градусов на АТмега 2560

Сообщение Starichok51 »

задай
// OC0A output: Inverted PWM
// OC0B output: Inverted PWM
и будет тебе нужный переворот фазы на 180 градусов.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Аватара пользователя
Ivanoff-iv
Друг Кота
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Re: Шим. Сдвиг фазы на 180 градусов на АТмега 2560

Сообщение Ivanoff-iv »

вроде один выход должен быть инверсным, а второй не инверсным, и ту величину (Х), которую надо в ШИМ отправить в регистр неинверсного выхода пишешь как есть, а в регистр инверсного 255-Х.
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Ответить

Вернуться в «AVR»