Полномостовой ШИМ с рекуперативным торможением. Продолжение.

Итак, в результате предыдущего обсуждения внес небольшие изменения в схему и начал читать даташит на Мегу16.
Подправленная схема
В результате беглого прочтения раздела про таймеры появились вопросы.

Необходимо получить следующую последовательность на входах моста.
Последовательность
Или ее модификация:
Модификация последовательности
Здесь при нулевом заполнении ШИМ должно получиться то, что отмечено грязно-розовым, а при увеличении заполнения должно двигаться к зеленому. При 100% канал 1 всегда единица, канал 2 всегда 0.
При реверсе каналы меняются местами.
Просмотрев даташит, с ходу не увидел аппаратной возможности такого формирования. Может кто сталкивался с такой задачей, киньте ссылкой. Хотя, по-моему, режим phase&freq correct pwm чем-то похож…

Посмотрел сейчас внимательно на картинку последовательности: вторая половина периода получается точно как первая, только оба канала инвертированы. Может быть сделать fastPWM, а по сигналу TOP инвертировать оба канала изменением одного бита? И вообще возможно ли такое, или второй канал всегда инверсия первого? Есть знатоки таймеров?

Чушь написал.
Вторая половина периода второго канала является инверсией первой половины периода первого канала.

Еще. В модифицированной версии (картинка 2) канал 2 является зеркальной инверсией канала 1. Похоже, все-таки phase&freq correct pwm нам поможет. Теперь с настройкой регистров осталось разобраться.

Ну вот и результаты. Немного извратно, но получилось. Использовал 9-бит Phase correct PWM, при этом заполнение меняется в 8-битном диапазоне.
#include <avr/io.h>
#include <util/delay.h>

unsigned char c; //желаемое заполнение

void PWM_set(unsigned char PWM_data)
{   
    OCR1A=0xFF-PWM_data;
    OCR1B=0xFF+PWM_data;
};

int main(void)
{
   	// Input/Output Ports initialization
	PORTD=0x00;
	DDRD=0b00110000;

	// Timer/Counter 0 initialization
	// Clock source: System Clock/8
	// Clock value: 10 000 kHz
	// Mode: Phase correct PWM top=1FFh
	// OC0A output: Inverted PWM
	// OC0B output: Inverted PWM
	TCCR1A=0b10100010;
	TCCR1B=0b10;
	TCNT1=0x00;
	OCR1A=0x00;
	OCR1B=0x0;

	// Timer/Counter 0 Interrupt(s) initialization
	TIMSK=0x00;

	// Analog Comparator initialization
	// Analog Comparator: Off
	ACSR=0x80;
	//AC=0x00;

	c=0x00;

	while(1)
    {
        //TODO:: Please write your application code
	    c++;
            _delay_ms(100);    //это только чтобы успеть увидеть что-нибудь
	    PWM_set(C);
 
    }
}

Всем спасибо за поддержку.
Вложение — проект в Протеусе.
Файлы в топике: PWM.zip

Комментарии (16)

RSS свернуть / развернуть
А окажется ли достаточно этих транзисторов для перетекания энергии в источник питания? Я имею ввиду проводимость транзисторов.
0
Или же для рекуперации необходимо другой мост ставить?
0
Если не лень, посмотрите предыдущее обсуждение
А здесь картинка
С железом уже все ясно, сейчас вопрос с программированием, получится ли ШИМ аппаратный или программный
0
Я может все не правильно понимаю, но мне кажется на картинке только торможение.
0
Да. Это к вопросу рекуперации. Разгон на этой картинке.
0
любой силовой полевик совмещен с не менее силовым ДИОДОМ!
вот только откуда рекуперации взяться-то? мотру надо в два раза больше напруги чтоб нагрузку тянуть и ровно в два раз аМЕНЬШЕ напруги он отдаст под нагрузкой как генератор… тоесть надо ШИМом вытягивать напругу с мотора выпрямленную на каком-то кандере до уровня источника питания… ну или мотор имеет силовую обмотку возбуждения и генераторную… хотя это брел ведь рабочие обмотки должны различаться а не возбуждение :)
0
ровно в два раз а
Откуда такая точность?
0
cj,cndtyyj в гараже стоит электромопед с бесколекторником на 24 вольта 120 ампер и возбуждением постоянными магнитами… и контроллер собственно раздельный управления ключами(а-ля электронный коллектор) ну а дальше мега8 меряет ток и бустит :)
обмотками много не набустиш ибо магнитное поле накапливаемое сердечником(в моем случае статорный зуб) сразу же взаимодействует с внешним полем возбуждения создавая ТОРМОЗ… получается не рекуперация а простой тормоз… из иголок я даж ионистор на один фарад до 12 вольт заряжаю ценой тормоза с 40-ка до 10 км/ч с горки :)
ГОРАЗДО эффективнее использовать Н мост как управляемый выпрямитель(ему кстати всёравно в какую сторону напруга течет — главное +12 на затвор подать) и с бывшего входного(теперь стаёт выходным) обычным инверт-бустом(кпд выше) качаю уже в аккум лифепо4 ограничиваясь только 50 амперами по току фазы(при «газе» ограничиваю ток фазы до 100 ампер)… получается более плавный тормоз, ниже частоты ШИМа, нагляднее(можно клещами на ходу видеть ток рекуперации) а главное торможение идеально равномерное ибо стабилизируя ток — стабилизируем усилие торможения :)

вот такие вот мои соображения и опыт… не спорю что якорь колекторника нехилая индуктивность но она имеет разомкнутый воздушный участок и там пробегает магнит… помоему не идеальные условия для БУСтовой индуктивности… да и какая там индуктивность? насыщается влёт…
0
Не уверен пока, еще мотор не получили, но прошлая моя подобная поделка была с последовательным возбуждением. Только моторчик был 400 Вт и над рекуперацией я не думал.
А для ионистора 12В не много? они ж вроде до 5,5В всего.
0
да, для постоянных магнитов, наверное, лучше просто инвертить.
0
ионистор может стартер провернуть… балда 2 килограмма… автомобильный… уже его нет… взял погонять спецом для рекуперативного торможения…
0
Да, наличие такой штуки — хорошо. Видел статьи о использовании таких для сохранения энергии даже при полностью заряженном аккумуляторе. Правда, это требует большого запаса по рабочему напряжению ключей.
0
у этой штуки просто фантастические значения внутреннего сопротивления… реально ниже миллиомма… да я и не владел этой фиговиной… просто дали поганять… всётаки довольно серьёзное подспорье по ёмкости и сопротивлению… на нём всего 20 секунд крутился моторчик на 60 амперах… жаряжал его только через лампочку… очень эффектно к АКБ его сразу конектить подсевшего…
0
У открытого полевика сопротивление умноженное на ток нагрузки существенно меньше прямого падения напряжения на диоде, так что диод отдыхает. Что касается напряжений, то из индуктивности обмоток и ключей формируется boost конвертор, которым напряжение дотягивается до нужного уровня.
0
Обновил статью
+1
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.