реклама на сайте
подробности

 
 
7 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Преобразователь из 5V в 12V на ATtiny461, работает, но нет стабилизации
ivainc1789
сообщение Oct 4 2007, 20:39
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 175
Регистрация: 5-01-05
Пользователь №: 1 807



Собрал испытательный стенд по нижеприведенной схеме:

Прикрепленное изображение




Выходное напряжение не стабилизируется при изменении тока нагрузки, хотя нормально регулируется вручную при разомкнутой петле обратной связи. Привожу листинг программы микроконтроллера. По осциллографу видно, что с увеличением тока нагрузки время откр сост ключа увеличивается, но амплитуда импульсов все же уменьшается. При этом дроссель в насыщение не входит (измерялось на резисторе 1 Ом): форма тока линейно нарастающая, без "скривлений". Подозреваю логическую ошибку в программе. Подскажите, что не так:

Код
__C_task void main (void) {
  // инициализация таймера 1
  Tmr1Stop;
  CLRBIT(PRR,PRTIM1);   // включить модуль таймера 1
  SETBIT(PLLCSR,LSM);   // PLL = 32MHz    
  SETBIT(PLLCSR,PLLE);Delay(200*us);do{}while(!CHKBIT(PLLCSR,PLOCK));// запуск PLL    
  SETBIT(PLLCSR,PCKE);  // разрешить тактирование таймера от PLL
  TCCR1A = BIN(00110011);
  TCCR1B = BIN(01000000);do{}while(CHKBIT(TCCR1B,PSR1));// сброс прескалера  
  TCCR1C = BIN(00110000);
  TCCR1D = BIN(00000000);
  TCCR1E = BIN(00000000);
  DT1 = 0x00;
  Reg10write(TCNT1reg,0x000);
  Reg10write(OCR1Areg,0x3FF);
  Reg10write(OCR1Breg,0x3FF);
  Reg10write(OCR1Creg,0x3FF);
  Reg10write(OCR1Dreg,0x3FF);  
  SETBITS(TIFR,BIT(OCF1A)+BIT(OCF1B)+BIT(OCF1D));
  SETBITS(TIMSK,BIT(OCIE1A)+BIT(OCIE1B)+BIT(TOIE1));  
  Tmr1Start;
Work:
  // инициализация ADC
  ADMUX = BIN(10011001);
  ADCSRA = BIN(10010110);
  ADCSRB = BIN(00000000);
  ADC = 0;
  SETBIT(DIDR0,AREFD);
  SETBITS(DIDR1,BIT(ADC8D)+BIT(ADC9D));
  // запуск преобразования
  SETBIT(ADCSRA,ADSC);do{}while(CHKBIT(ADCSRA,ADSC));ADCdata = ADC;
  // запись результата
  if(ADCdata < ADCmin) ADCdata = ADCmin;// мин. время Тoff ключа(обычно 20%)
  PreIntState = __save_interrupt();
  __disable_interrupt();
  AS4value = ADCdata;
  __restore_interrupt(PreIntState);  
  
  goto Work;
}

// Timer/Counter1 Compare Match B
#pragma vector = TIM1_COMPB_vect
__interrupt void TIM1_COMPB(void) {
  unsigned int AStmp = AS4value;
  TC1H = ((AStmp >> 8) & 0x0003);
  OCR1B = (AStmp & 0x00FF);// загрузка величины сравнения для след. цикла
}


Краткое описание к программе. В основной имеем непрерывное измерение с делителя, усиление сигнала ошибки происходит с Кус = 20 внутр инструмент усилителем. Далее цифровой код используется как величина сравнения для таймера 1, работающего в режиме FastPWM. Итак, увеличение напряж на выходе => увеличение кода ADC => увелич. величины сравнения => уменьшение времени откр сост транзистра, что и требуется для PWM. Может, просто Кус = 20 недостаточно для регулирования?
Go to the top of the page
 
+Quote Post
rezident
сообщение Oct 4 2007, 21:33
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Что значит
Цитата(ivainc1789)
Выходное напряжение не стабилизируется при изменении тока нагрузки

Напряжение падает или увеличивается или наблюдается колебательный процесс?
Вы переходную характеристику вашего стабилизаторы снимали? Может у него фазовая задержка в цепи ООС слишком большая?
Go to the top of the page
 
+Quote Post
ivainc1789
сообщение Oct 4 2007, 22:09
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 175
Регистрация: 5-01-05
Пользователь №: 1 807



Цитата(rezident @ Oct 5 2007, 01:33) *
Что значит
Напряжение падает или увеличивается или наблюдается колебательный процесс?
Вы переходную характеристику вашего стабилизаторы снимали? Может у него фазовая задержка в цепи ООС слишком большая?


Напряжение однозначно падает при увеличении тока нагрузки несмотря на увеличение времени накопления. Прилагаю две осциллограммы: на левой при нагрузочном резисторе R1=500 Ом, а на правой при R1=300 Ом. Цены делений: 2вольта/дел по вертикали, 10мкс по горизонтали. По данным осц видно, что таймер инициализирован верно. Частота преобразователя 31.250 кГц (32мкс).

Поясните, как правильно снять переходную характеристику в данной схеме?

Прикрепленное изображение
Go to the top of the page
 
+Quote Post
Muxa
сообщение Oct 4 2007, 22:46
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 159
Регистрация: 8-10-04
Из: Москва
Пользователь №: 818



на первый взгляд меня смущает, что вы снимаете напряжение с резистора R31. (видимо используется диф. режим АЦП). тогда коэффициент передачи в этой цепи явно очень мал и легко может быть 0.05 или меньше. поэтому мне кажется, что общий коэффициент передачи в цепи сигнала ошибки экстремально мал. я бы для измерения сигнала ошибки использовал бы один вход АЦП и установил бы максимально доступное усиление (32 кажется)... хотя и 32 оч. мало... ведь от коэффициента усиления с разомкнутой ОС как раз и зависит ошибка регулирования в режиме замкнутой обратной связи. как бы не потребовался внешний усилитель...
Go to the top of the page
 
+Quote Post
rezident
сообщение Oct 4 2007, 23:09
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(ivainc1789 @ Oct 5 2007, 04:09) *
Напряжение однозначно падает при увеличении тока нагрузки несмотря на увеличение времени накопления.

Тогда пожалуй я соглашусь с Muxa, коэффициент усиления ошибки рассогласования мал.
Цитата(ivainc1789 @ Oct 5 2007, 04:09) *
Прилагаю две осциллограммы: на левой при нагрузочном резисторе R1=500 Ом, а на правой при R1=300 Ом. Цены делений: 2вольта/дел по вертикали, 10мкс по горизонтали. По данным осц видно, что таймер инициализирован верно. Частота преобразователя 31250 кГц (32мкс).

Ээээ... а что по ним можно понять-то? Что длительность импульса ШИМ изменяется при изменении нагрузки?
Цитата(ivainc1789 @ Oct 5 2007, 04:09) *
Поясните, как правильно снять переходную характеристику в данной схеме?

Дык а как вы снимали характеристику при разомкнутой цепи ООС? Переходная характеристика это отклик БП на ступенчатое изменение сопротивления нагрузки. Переключайте нагрузку (подключайте к одной нагрузке другую) с небольшой частотой каким-нибудь полевиком и синхронно наблюдайте как ведет себя выходное напряжение при этом (форму импульса отклика).
Go to the top of the page
 
+Quote Post
Rst7
сообщение Oct 5 2007, 05:31
Сообщение #6


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Конечно, тут мал коэффициент усиления. Есть 2 варианта.
Первый - поставить TL431, на управляющий вывод поставить делитель с выхода, анод в землю, катод через резистор скажем 1кОм в +5. И на катоде измерять напряжение при помощи АЦП (без усиления, с Uопороное=Vcc) и результат с АЦП использовать следующим образом:
int i=ADC;
i-=512;
if (i<0) i=0;
if (i>200) i=200;
OCR1B=i;

Причем, хватит 8-разрядного шима.

Вариант второй. Достаточно компаратора, на один вход опорное напряжение (например 1/2 VCC, кстати и просто VCC сойдет), на другой - напряжение с делителя. Проверка выполняется на прерывании от переполнения таймера шима (например). Проверка следующая - если напряжение на делителе больше опорного, то OCR1B--, иначе OCR1B++. Конечно, с проверками выхода за диапазон.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
ivainc1789
сообщение Oct 5 2007, 06:19
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 175
Регистрация: 5-01-05
Пользователь №: 1 807



Цитата(Rst7 @ Oct 5 2007, 09:31) *
Конечно, тут мал коэффициент усиления. Есть 2 варианта.
Первый - поставить TL431, на управляющий вывод поставить делитель с выхода, анод в землю, катод через резистор скажем 1кОм в +5. И на катоде измерять напряжение при помощи АЦП (без усиления, с Uопороное=Vcc) и результат с АЦП использовать следующим образом:
int i=ADC;
i-=512;
if (i<0) i=0;
if (i>200) i=200;
OCR1B=i;

Причем, хватит 8-разрядного шима.

Вариант второй. Достаточно компаратора, на один вход опорное напряжение (например 1/2 VCC, кстати и просто VCC сойдет), на другой - напряжение с делителя. Проверка выполняется на прерывании от переполнения таймера шима (например). Проверка следующая - если напряжение на делителе больше опорного, то OCR1B--, иначе OCR1B++. Конечно, с проверками выхода за диапазон.


Rst7, большое спасибо. Попробую оба варианта. Про компаратор тоже думал как про запасной вариант. Вот бы еще уметь произвести РАСЧЕТ для коэфф усиления в цепи ООС. Может есть какой-нить документ на эту тему?
Go to the top of the page
 
+Quote Post
jackBU
сообщение Oct 5 2007, 06:19
Сообщение #8


Частый гость
**

Группа: Свой
Сообщений: 140
Регистрация: 24-10-05
Пользователь №: 10 028



А как у Вас формируется опорное напряжение и собственно ошибка? Мне кажется что Вы просто усиливаете выходной сигнал с делителя.
Go to the top of the page
 
+Quote Post
ivainc1789
сообщение Oct 5 2007, 06:47
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 175
Регистрация: 5-01-05
Пользователь №: 1 807



Цитата(jackBU @ Oct 5 2007, 10:19) *
А как у Вас формируется опорное напряжение и собственно ошибка? Мне кажется что Вы просто усиливаете выходной сигнал с делителя.


ADC работает от внутренней опоры 1.1 вольт. Усиливаем напряжение делителя с коэфф 20 внутренним усилителем, оцифровываем и полученный цифровой код загружаем в OC1B.

Таймер 1 десятиразрядный, работает от внутреннего PLL 32МГц. Соответственно частота переполнений 31.250 кГц. Выход MCU OC1B сконфигурирован так, что в момент сравнения устанавливается в 1, а при переполнении таймера автоматом сбрасывается в 0. Так получаем импульсы на затвор ключа и реализуем обратную зависимость времени накопления от напряжения делителя (вых. напряжения).
Go to the top of the page
 
+Quote Post
jackBU
сообщение Oct 5 2007, 07:02
Сообщение #10


Частый гость
**

Группа: Свой
Сообщений: 140
Регистрация: 24-10-05
Пользователь №: 10 028



В таком режиме стабилизации никогда не будет. В качестве управляющего сигнала нужно использовать отклонение (или разность) выходного сигнала и эталонного (опорного). Эта разность или ошибка затем усиливается плюс реализуется какой-нибудь закон управления (из типовых - П, ПИ, ПИД).
Go to the top of the page
 
+Quote Post
Rst7
сообщение Oct 5 2007, 07:22
Сообщение #11


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата(jackBU @ Oct 5 2007, 10:02) *
В таком режиме стабилизации никогда не будет. В качестве управляющего сигнала нужно использовать отклонение (или разность) выходного сигнала и эталонного (опорного). Эта разность или ошибка затем усиливается плюс реализуется какой-нибудь закон управления (из типовых - П, ПИ, ПИД).


Тут не прямо как на картинке из учебника разность получается. Но получается. С одной стороны - это сигнал с делителя (правда вся задуманная хитрость не сработала, делитель то получился 39ком/100ом - в 400 раз, а усиление всего 20.) с другой стороны - опорное напряжение АЦП. Только вот усиление слабенькое. И в конкретно этой схеме его не поднять.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
jackBU
сообщение Oct 5 2007, 08:09
Сообщение #12


Частый гость
**

Группа: Свой
Сообщений: 140
Регистрация: 24-10-05
Пользователь №: 10 028



А где тут опорное 1.1 В? По настройке ADC8 - "+", ADC9 - "-" оба подсоединены к выходному делителю.
Go to the top of the page
 
+Quote Post
ivainc1789
сообщение Oct 5 2007, 08:35
Сообщение #13


Профессионал
*****

Группа: Свой
Сообщений: 1 175
Регистрация: 5-01-05
Пользователь №: 1 807



Цитата(jackBU @ Oct 5 2007, 12:09) *
А где тут опорное 1.1 В? По настройке ADC8 - "+", ADC9 - "-" оба подсоединены к выходному делителю.


Опорное для ADC выбрано как 1.1 вольт (см. настройки регистров). Измерение происходит в униполярном режиме (бит 7 в ADCSRB равен нулю). Сам двувходовый режим выбран мультиплексором.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Oct 5 2007, 08:50
Сообщение #14


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата(jackBU @ Oct 5 2007, 11:09) *
А где тут опорное 1.1 В? По настройке ADC8 - "+", ADC9 - "-" оба подсоединены к выходному делителю.


Ну хотя да. Чтобы не разводить полемику, проще согласиться smile.gif В принципе данная схема с таким ПО неработоспособна как регулятор. Методы переделки я чуть выше изложил.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
jackBU
сообщение Oct 5 2007, 08:59
Сообщение #15


Частый гость
**

Группа: Свой
Сообщений: 140
Регистрация: 24-10-05
Пользователь №: 10 028



Цитата(ivainc1789 @ Oct 5 2007, 12:35) *
Опорное для ADC выбрано как 1.1 вольт (см. настройки регистров). Измерение происходит в униполярном режиме (бит 7 в ADCSRB равен нулю). Сам двувходовый режим выбран мультиплексором.


Это понятно. Я имел ввиду, что ADCres=20*(ADC8-ADC9)=k*Uout, и здесь нет как-будто разности с опорным напряжением.
Go to the top of the page
 
+Quote Post

7 страниц V   1 2 3 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 03:01
Рейтинг@Mail.ru


Страница сгенерированна за 0.01856 секунд с 7
ELECTRONIX ©2004-2016