- Вложения
-
- протеус.png
- (104.33 КБ) 995 скачиваний
-
- Сигнал на портах 0,1,2,3.jpg
- (131.13 КБ) 503 скачивания
-
- Cигнал на портах 4.5.jpg
- (200.9 КБ) 453 скачивания
-
- разводка платы.jpg
- (70.84 КБ) 509 скачиваний
СИФУ на amega328
- Сообщения: 147
- Зарегистрирован: Вс мар 09, 2014 09:13:00
Хай гайс)) Пытаюсь сделать СИФУ управления трехфазным мостом Ларионова. Для этого смоделировал схему в протеусе. В протеусе все работает. На PORTС с 0-5 биты формируются импульсы управления. И как видно из осциллограммы протеуса (я вывел на осцил 0й, 4й, 5й порт) успешно. А вот на практике с 0 по 3й порт формируются правильно, а вот в четвертом и пятом присутствует лишние импульс, ну это ладно-видимо угол сдвига съехал относительно детектора. Но вот почему амплитуда упала в два раза это вообще непонятно. Помогите плиииз разобраться.
- Реклама
пока думаю над схемой, расскажу о своем опыте постройки такой штуки. Я не давал как по книжке два импульса, я вывел из порта постоянный пульсирующий сигнал, завел его на драйвера ir2104, а оттуда через пару полевичков на импульсный трансик. И на каждый драйвер подавал сигнал SD. В итоге все работало - я не парился с двумя импульсами и просто по нужной фазе подавал сигнал SD. Работало.
Добавлено after 3 minutes 50 seconds:
Пока ничего не понятно. Покажите-ка программку.
Добавлено after 3 minutes 50 seconds:
Пока ничего не понятно. Покажите-ка программку.
- Вложения
-
- Безымянный.png
- (101.86 КБ) 796 скачиваний
- Сообщения: 147
- Зарегистрирован: Вс мар 09, 2014 09:13:00
Я делаю трехфазный тиристорный выпрямитель Ларионова. Суть которого в том, чтобы подавать на соответствующую пару тиристоров импульсы управления, сдвигая которые можно регулировать выходное напряжение во всем диапазоне 0-540В.
Может с прикрепленной схемой и исходником станет понятнее.
Может с прикрепленной схемой и исходником станет понятнее.
- Вложения
-
- СИФУ.png
- (96.15 КБ) 905 скачиваний
-
- Исходник.png
- (80.83 КБ) 693 скачивания
Отключите (отрежьте) порт от остальной схемы и гляньте амплитуду.DenChik87 писал(а): Но вот почему амплитуда упала в два раза это вообще непонятно.
А где схема управления тиристорами?DenChik87 писал(а):Но вот почему амплитуда упала в два раза это вообще непонятно
Большой опыт, порой, не даёт находить/видеть нам простые и очевидные решения. 
Всегда с уважением, Александр.
Всегда с уважением, Александр.
- Реклама
ну если 2,5В на самом выводе микрухи, то думаю порт не здоров. я бы взял новый МК, запаял его без выходных транзисторов, или что у вас там - чтобы просто в воздухе висели выхода, залить прошивку и смотреть.
- Сообщения: 147
- Зарегистрирован: Вс мар 09, 2014 09:13:00
[uquote="Ярослав555",url="/forum/viewtopic.php?p=3396541#p3396541"]ну если 2,5В на самом выводе микрухи, то думаю порт не здоров. я бы взял новый МК, запаял его без выходных транзисторов, или что у вас там - чтобы просто в воздухе висели выхода, залить прошивку и смотреть.[/uquote]
[uquote="Z_h_e",url="/forum/viewtopic.php?p=3396541#p3396541"]Отключите (отрежьте) порт от остальной схемы и гляньте амплитуду..[/uquote]
Порт здоров. ОтрезАл от остальной схемы. Делал и на другой atmega328 и даже на atmega8 код перевел. Результат такой же, все как на тех фотах осциллограммы выше. А может такое быть, что при маленькой длительности импульса какой-нибудь баг с портом происходит?
[uquote="korob",url="/forum/viewtopic.php?p=3396541#p3396541"]А где схема управления тиристорами?
Каким образом вы их открываете, опторазвязка или трансформаторы?[/uquote]
Опторазвязка будет на ТО325-12.5, как-то так:
[uquote="Z_h_e",url="/forum/viewtopic.php?p=3396541#p3396541"]Отключите (отрежьте) порт от остальной схемы и гляньте амплитуду..[/uquote]
Порт здоров. ОтрезАл от остальной схемы. Делал и на другой atmega328 и даже на atmega8 код перевел. Результат такой же, все как на тех фотах осциллограммы выше. А может такое быть, что при маленькой длительности импульса какой-нибудь баг с портом происходит?
[uquote="korob",url="/forum/viewtopic.php?p=3396541#p3396541"]А где схема управления тиристорами?
Опторазвязка будет на ТО325-12.5, как-то так:
- Вложения
-
- опторазыязка.jpg
- (185.01 КБ) 681 скачивание
Закоментить кусок который пишет в порт С, в главном цикле сделать PORTC=0xFF, задержка около 100мС, PORTC=0, задержка около 100мС и так по кругу. Чтобы только этот код писал в порт. Об картинке отчитаться.
Кстати, вот мой СИФУ и программа.
Кстати, вот мой СИФУ и программа.
Спойлер
Код: Выделить всё
#include <ioavr.h>
#include <inavr.h>
#include <math.h>
unsigned int timer_phase_A0,timer_phase_B0,timer_phase_C0;
unsigned int timer_phase_A1,timer_phase_B1,timer_phase_C1;
char PORTD_buffer, PINA_buffer;
unsigned int phase_A,phase_B,phase_C;
char flag_A0=0,flag_B0=0,flag_C0=0;
unsigned int angle_alpha;
#pragma vector=TIMER1_COMPA_vect
__interrupt void TIMER1_comp(void){
TCNT1=0;
if((PINB&1)==1){
phase_B=65535;}
else{phase_B=0;}
if((PINB&2)==2){
phase_A=65535;}
else{phase_A=0;}
if((PINB&4)==4){
phase_C=65535;}
else{phase_C=0;}
timer_phase_A0&=phase_A;
timer_phase_A1&=(~phase_A);
timer_phase_B0&=phase_B;
timer_phase_B1&=(~phase_B);
timer_phase_C0&=phase_C;
timer_phase_C1&=(~phase_C);
if((timer_phase_A0<1000)&&(timer_phase_B0<1000)&&(timer_phase_C0<1000)){
timer_phase_A0++;
timer_phase_B0++;
timer_phase_C0++;
timer_phase_A1++;
timer_phase_B1++;
timer_phase_C1++;}
}
void main(void)
{
TCCR1A=0;
TCCR1B|=(1<<CS11);//x8
OCR1A=100;
TIMSK|=(1<<OCIE1A);
TCCR2|=(1<<WGM21);
TCCR2|=(1<<COM20);
TCCR2|=(1<<CS20);
OCR2=40;
ADMUX|=(1<<REFS0);
ADCSRA|=(1<<ADEN);
ADCSRA|=(1<<ADPS0);
ADCSRA|=(1<<ADPS1);
ADCSRA|=(1<<ADPS2);
ADCSRA|=(1<<ADSC);
SREG|=128;
DDRD=0xff;
DDRC=0xff;
unsigned int blinker=0;
while(1){
//if((PINA&8)==8){
PORTD_buffer=0;
if((timer_phase_A0<1000)&&(timer_phase_B0<1000)&&(timer_phase_C0<1000)){
if(timer_phase_A0>angle_alpha){
PORTD_buffer|=2&phase_A;}
if(timer_phase_A1>angle_alpha){
PORTD_buffer|=4&(~phase_A);}
if(timer_phase_B0>angle_alpha){
PORTD_buffer|=8&phase_B;}
if(timer_phase_B1>angle_alpha){
PORTD_buffer|=16&(~phase_B);}
if(timer_phase_C0>angle_alpha){
PORTD_buffer|=32&phase_C;}
if(timer_phase_C1>angle_alpha){
PORTD_buffer|=64&(~phase_C);}
PORTC&=~(8+4);
blinker=0;
}
PORTD=PORTD_buffer;
if((ADCSRA&16)==16){
angle_alpha=(ADC/10);
if(angle_alpha>100){angle_alpha=100;}
angle_alpha=100-angle_alpha;
ADCSRA&=~16;
ADCSRA|=(1<<ADSC);
}
PINA_buffer=PINA;
if(blinker<20000){
PORTC|=2*(PINA_buffer&4);
PORTC|=4&~(PINA_buffer&4);}
else{PORTC&=~(8+4);}
if(blinker>40000){
blinker=0;}
blinker++;
if((PINA_buffer&4)==4){
ADMUX|=(1<<MUX0);}
else{ADMUX&=~(1<<MUX0);}
//}
//else{
//PORTD=0;
//PORTC=0;}
}//while(1)
}//main
- Вложения
-
- Безымянный.png
- (197.71 КБ) 823 скачивания
- Сообщения: 147
- Зарегистрирован: Вс мар 09, 2014 09:13:00
Сделал немного иначе в прерывании закомментировал строчку которая выводила в порт значения из массива. Вместо нее PortC=0xff. Таким образом через каждые 3,3 мс в PortC превращается в высокий уровень на 100 мкс. И ооо чудо ни какой просадки до 2.5в не стало. На всех ножках одна картина. Но что это значит? Памяти не хватает запомнить массив,или что? Я так понял вы уже догадались?
Спойлер
Код: Выделить всё
ISR (TIMER1_COMPA_vect){
OCR1AH=0x34;
OCR1AL=0x08;
static char i=0;
PORTC=0xff; //это напимал
//PORTC=mode[j][i]; - это закоментировал
_delay_us(100);
PORTC=0;
i++;
if (i==6){
i=0;
TCCR1B=0;
}
}
- Вложения
-
- теперь так.jpg
- (166.67 КБ) 803 скачивания
[uquote="DenChik87",url="/forum/viewtopic.php?p=3396900#p3396900"]Но что это значит?[/uquote]
Эх метрология... Какие чудные деньки были в универе
. Осциллограф у Вас тормоз. А 4 первых сигнала нормальные, потому что они длиннее по времени - где-то косяк в алгоритме и 4-5 короче остальных. Попробуйте сейчас время сигнала понемногу урезать до тех пор пока он не начнет проседать по уровню на экране осцила.
Эх метрология... Какие чудные деньки были в универе
- Сообщения: 147
- Зарегистрирован: Вс мар 09, 2014 09:13:00
[uquote="Ярослав555",url="/forum/viewtopic.php?p=3396972#p3396972"]4 первых сигнала нормальные, потому что они длиннее по времени - где-то косяк в алгоритме и 4-5 короче остальных. Попробуйте сейчас время сигнала понемногу урезать до тех пор пока он не начнет проседать по уровню на экране осцила.[/uquote]
Время сигнала менял до 10мкс, с ножки контроллера напряжение не проседают на "первых 4х портах", а проседает только на "последних двух". Еще делал наоборот, увеличил время до 1000мкс. Эффект такой же на "первых 4х портах" амплитуда 5в, а на "последних двух" 2.5. При том ширина импульсов на всех портах соответствует заданной.
Время сигнала менял до 10мкс, с ножки контроллера напряжение не проседают на "первых 4х портах", а проседает только на "последних двух". Еще делал наоборот, увеличил время до 1000мкс. Эффект такой же на "первых 4х портах" амплитуда 5в, а на "последних двух" 2.5. При том ширина импульсов на всех портах соответствует заданной.
- Сообщения: 147
- Зарегистрирован: Вс мар 09, 2014 09:13:00
[uquote="Ярослав555",url="/forum/viewtopic.php?p=3397853#p3397853"]Если не трудно, сбросьте проект - я в протеусе поганяю.[/uquote]
Вот проект в протеусе, исходник в аврстудео. В протеусе все симулмруется исключительно
Вот проект в протеусе, исходник в аврстудео. В протеусе все симулмруется исключительно
- Вложения
-
- Proteus.rar
- (61.46 КБ) 245 скачиваний
-
- AVR_Studio.rar
- (185.83 КБ) 213 скачиваний
В протеусе все четко. "Лишний импульс" в протеусе у меня присутствует - осцил синхронизируется то по первому, то по второму фронту (я убрал синхронизацию по сети). Оттого и три рисует, а реально их два. У Вас в протеусе синхра однозначна - по сети, а реальный осцил сам ловит синхру. Остался вопрос об 2,5В. Что могу обещать, так это что в пятницу доберусь до своей "лаборатории" и попробую запустить на макетке 8ю мегу
Добавлено after 3 minutes 31 second:
А можно тестером прозвонить между собой 4-5 пины? Закоротки нет?
Добавлено after 12 minutes 44 seconds:
Ваша картина? Собственно если FF выводить на ВЕСЬ порт то будет работать
Добавлено after 3 minutes 31 second:
А можно тестером прозвонить между собой 4-5 пины? Закоротки нет?
Добавлено after 12 minutes 44 seconds:
Ваша картина? Собственно если FF выводить на ВЕСЬ порт то будет работать
- Вложения
-
- закоротка2.png
- (102.11 КБ) 599 скачиваний
-
- закоротка1.png
- (79.67 КБ) 426 скачиваний
- Сообщения: 147
- Зарегистрирован: Вс мар 09, 2014 09:13:00
Я не знаю откуда у вас взялся этот лишний импульс? Может вы частоту поменяли?
Вы оказались абсолютно правы, последние два порта были закорочены. Не протравил
Глазу было незаметно. Огромный респектос, что выдержали натиск моих вопросов
Как только убрал коротыш все заработало и во всех режимах. На всех портах картина по два импульса. Лишнего нигде нет. Еше конечно придется переделать детектор нуля. Ведь при таком детекторе непонятно где прямая, а где обратная полуволна. Для этого удобнее использовать ОУ, например 358n. Чтобы при прямой синусоиде был к примеру высокий меандр, а при обратной низкий. Собственно программа под него и писалась изначально.
Огромное кошачье мрррряяя!!! спасибо что сдвинули меня с мертвой точки. Ееее!!!
Вы оказались абсолютно правы, последние два порта были закорочены. Не протравил
Огромное кошачье мрррряяя!!! спасибо что сдвинули меня с мертвой точки. Ееее!!!
[uquote="DenChik87",url="/forum/viewtopic.php?p=3398289#p3398289"]Я не знаю откуда у вас взялся этот лишний импульс? Может вы частоту поменяли?[/uquote]
Да нет, я увидел как протеус синхронизируется то по первому, то по второму импульсу - получается картинка как-бы трех импульсов. Вспомнил что Вы что-то говорили про лишние импульсы, и сделал предположение.
Потом я на английском в гугл вбил 2,5В на порту атмеги и на аврфрикс нашел похожую тему, где один из пользователей предположил закоротку. Вот я и спросил. Потом смоделировал - оказалось похоже.
И это передайте мои извинения Вашему С1-107
Да нет, я увидел как протеус синхронизируется то по первому, то по второму импульсу - получается картинка как-бы трех импульсов. Вспомнил что Вы что-то говорили про лишние импульсы, и сделал предположение.
Потом я на английском в гугл вбил 2,5В на порту атмеги и на аврфрикс нашел похожую тему, где один из пользователей предположил закоротку. Вот я и спросил. Потом смоделировал - оказалось похоже.
И это передайте мои извинения Вашему С1-107



