Проблема с ШИМ

Обсуждаем контроллеры компании Atmel.
Ответить
yron
Открыл глаза
Сообщения: 79
Зарегистрирован: Пт июн 15, 2012 13:11:36

Проблема с ШИМ

Сообщение yron »

На Атмеге8 создаю щим с помощью прерываний таймера2. С помощью АЦП меняю переменную.
Использую два прерывания , одно по переполнению , другое по совпадению.
В прерывании по переполнению задаю высокий уровень на нужных выходах, а в прерывании по совпадению обнуляю.
Меняя число по совпадению изменяется скважность сигнала на выходе.
Но есть одна большая проблема , при уменьшении скважности менее 10-15% (то есть переменник в ноль) сигнал на выходе начинает выдавать импульсы со скважностью менее 10-15% но в то же время и импульсы с 80-90% скважностью. На осциллографе это выглядит так
http://uploads.ru/ZyFg9.jpg
Вот предел ниже которого это происходит
http://uploads.ru/viRLY.jpg
А вот максимум когда переменник на +
http://uploads.ru/6ZX8p.jpg
А вот код
Спойлер

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

#include <mega8.h>

#include <delay.h>
#define ADC_VREF_TYPE 0x60
char ADC;
int read=0;
char PW0=0;
char PW1=0;
char PW2=0;

interrupt [TIM2_OVF] void timer2_ovf_isr(void)
{
  
PORTD|=(PW0<<3)|(PW1<<4)|(PW2<<5);
 
read++;
}


interrupt [TIM2_COMP] void timer2_comp_isr(void)
{

PORTD&=0xFF&((0<<3)|(0<<4)|(0<<5));

}










void main(void)
{

PORTB=0x00;
DDRB=0x07;


PORTC=0x30;
DDRC=0x00;


PORTD=0xC0;
DDRD=0x38;


TCCR0=0x00;
TCNT0=0x00;


TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

ASSR=0x00;
TCCR2=0x01;
TCNT2=0x00;
OCR2=0x80;


MCUCR=0x00;

TIMSK=0xC0;

UCSRB=0x00;

ACSR=0x80;
SFIOR=0x00;

ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x83;

SPCR=0x00;

TWCR=0x00;

#asm("sei")

while (1)
      { 
      
    
      
      PW0=(~PIND.6)&PIND.7;
      PORTB.0=PIND.6&(~PIND.7); 
      PW1=PINC.4&(~PIND.7); 
      PORTB.1=(~PINC.4)&PIND.7; 
      PW2=(~PINC.4)&PIND.6; 
      PORTB.2=PINC.4&(~PIND.6);  
      if(read==0){
      ADMUX=0x00 | (ADC_VREF_TYPE & 0xff);} //первый 
      if(read==3121){
      ADCSRA|=0x40;} //через время 2 
      if(read==3125){
      ADC=ADCH;//(ADCH>>1);
    
      OCR2=ADC;
      read=0;}
      
      
          
      
      
      }   
      
}
Подскажите в чем проблема
Реклама
Аватара пользователя
Ivanoff-iv
Друг Кота
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Re: Проблема с ШИМ

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

скорее всего не успевает отработать прерывание.
попробуй режим fast-pwm, ноги конечно, будут жёстко привязаны, но, зато регулировать можно будет практически на все 100%
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Реклама
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15561
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Проблема с ШИМ

Сообщение BOB51 »

Ежли желание на качественный выходной сигнал - надо использовать
аппаратное управления выходным сигналом (OC2).
:roll:
yron
Открыл глаза
Сообщения: 79
Зарегистрирован: Пт июн 15, 2012 13:11:36

Re: Проблема с ШИМ

Сообщение yron »

[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=3519719#p3519719"]скорее всего не успевает отработать прерывание.
попробуй режим fast-pwm, ноги конечно, будут жёстко привязаны, но, зато регулировать можно будет практически на все 100%[/uquote]
Мне нужно подавать ШИМ на 3 выхода и при этом с разной поочередностью
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Ivanoff-iv
Друг Кота
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Re: Проблема с ШИМ

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

по тз в 1 посте этого не видно...
какие частоты?
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Реклама
yron
Открыл глаза
Сообщения: 79
Зарегистрирован: Пт июн 15, 2012 13:11:36

Re: Проблема с ШИМ

Сообщение yron »

[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=3519795#p3519795"]по тз в 1 посте этого не видно...
какие частоты?[/uquote]

частота шим 31кгц
Реклама
Аватара пользователя
Ivanoff-iv
Друг Кота
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Re: Проблема с ШИМ

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

тогда надо ускорять прерывания.
желательно использовать регистры и отключить дополнительные действия (задвигание в стек и доставание из него временных регистров), проще всего это сделать на ассемблере или в алгоритм билдере
если подождешь выходных - вернусь домой, помогу.

Добавлено after 2 minutes 33 seconds:
но даже в этом случае 0 и 100% не получится, но будет значитешьно ближе

Добавлено after 3 minutes 53 seconds:
можно ещё навесить 3 элемента или-не и управлять ими свободными ногами, но это будет лучше работать если выхьды переключаются относительно редко.
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15561
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Проблема с ШИМ

Сообщение BOB51 »

Как вариант BAM...
Правда непрерывная плавность регулировки там несколько хуже (на глаз).
:roll:
yron
Открыл глаза
Сообщения: 79
Зарегистрирован: Пт июн 15, 2012 13:11:36

Re: Проблема с ШИМ

Сообщение yron »

[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=3520075#p3520075"]тогда надо ускорять прерывания.
желательно использовать регистры и отключить дополнительные действия (задвигание в стек и доставание из него временных регистров), проще всего это сделать на ассемблере или в алгоритм билдере
если подождешь выходных - вернусь домой, помогу.

Добавлено after 2 minutes 33 seconds:
но даже в этом случае 0 и 100% не получится, но будет значитешьно ближе

Добавлено after 3 minutes 53 seconds:
можно ещё навесить 3 элемента или-не и управлять ими свободными ногами, но это будет лучше работать если выхьды переключаются относительно редко.[/uquote]
Асемблер вобще не понимаю , сразу учил С++
Наверное пойду на то чтобы вывести ШИМ через логику на выходы. Аппаратный шим лучше. Но я надеялся что через прерывания будет норм и сделал плату уже, буду делать другую.
Переключение выходов может достигать частоты 14кгц
Аватара пользователя
Ivanoff-iv
Друг Кота
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Re: Проблема с ШИМ

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

если ассемблер не знаешь — попробуй алгоритм билдер (я на нем и планировал написать).
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Аватара пользователя
Ivanoff-iv
Друг Кота
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Re: Проблема с ШИМ

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

попробуй так.
скопировал твой алгоритм с небольшими правками
если разбираться не хочешь - можешь только прошивку померять.

Добавлено after 1 hour 16 minutes 47 seconds:
я убавил до приемлемой частоту АЦП, сделал проверку результата по готовности, а не по времени, остальное оставил
хотя мне не понятно, зачем надо чегото ждать, если вход ацп не изменяется.
Вложения
шим.rar
(6.78 КБ) 252 скачивания
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
yron
Открыл глаза
Сообщения: 79
Зарегистрирован: Пт июн 15, 2012 13:11:36

Re: Проблема с ШИМ

Сообщение yron »

[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=3521039#p3521039"]попробуй так.
скопировал твой алгоритм с небольшими правками
если разбираться не хочешь - можешь только прошивку померять.

Добавлено after 1 hour 16 minutes 47 seconds:
я убавил до приемлемой частоту АЦП, сделал проверку результата по готовности, а не по времени, остальное оставил
хотя мне не понятно, зачем надо чегото ждать, если вход ацп не изменяется.[/uquote]
Я очень хочу разобраться.
Это ты делал в ассемблере или код создан Алгоритм билдером ?
Аватара пользователя
Ivanoff-iv
Друг Кота
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Re: Проблема с ШИМ

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

это проект в алгоритм билдере

Добавлено after 1 minute 40 seconds:
оно заработало?

Добавлено after 2 hours 48 minutes 54 seconds:
просто кодевижен, а судя, например, по работе с портами это именно он, как и все ЯВУ среды показцвает далеко не всё.
в этом есть большой плюс при создании больших проектов и некоторый минус (кстати преодолимый, при хорошем знании среды) при создании быстрых...
Я очень рекомендую для познания принципов и нюансов работы с кортроллером поработать если не в АСМе, то хотябы с АБ.
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
yron
Открыл глаза
Сообщения: 79
Зарегистрирован: Пт июн 15, 2012 13:11:36

Re: Проблема с ШИМ

Сообщение yron »

[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=3521158#p3521158"]это проект в алгоритм билдере

Добавлено after 1 minute 40 seconds:
оно заработало?[/uquote]
1. Пока нет возможности проверить, через пару дней буду дома проверю.
2. Где скачать Алгоритм билдер ? Все ссылки которые я нашел не рабочие.
3. Ты не занимался управлением бесколлекторными двигателями ?
Аватара пользователя
Ivanoff-iv
Друг Кота
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Re: Проблема с ШИМ

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

вот отсюда вроде чтото живое скачивается (скачать скачал, но ставить не стал: зачем мне два :)) ) если не пойдет, напиши - свой на яндекс диск выкину, расшарю.
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Аватара пользователя
Ivanoff-iv
Друг Кота
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Re: Проблема с ШИМ

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

про безколлекторники: теорию знаю, но на практике нужды не было.
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
yron
Открыл глаза
Сообщения: 79
Зарегистрирован: Пт июн 15, 2012 13:11:36

Re: Проблема с ШИМ

Сообщение yron »

[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=3521879#p3521879"]про безколлекторники: теорию знаю, но на практике нужды не было.[/uquote]
Вот в этом проблема , в теории все работает прекрасно а в железе худо бедно
Аватара пользователя
Ivanoff-iv
Друг Кота
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Re: Проблема с ШИМ

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

понятно... это контроллер блдс, аналоговый вход — внешнее управление тягой, 3 дискрета - выходы с холлов... /понятно
—————
код придется поправить - добавить крайние положения (0 и 100%) принудительно
а проблема в чем (кроме того, что 0 и 100% пока не достигнуты)?
да ещё входа реверса нет...
да ещё при больших оборотах фазы переключения съезжать могут...
короче, такой подход к построению кода неправильный, объясню: у тебя выход переключается только по фронту ШИМа, сам фронт ни к чему не привязан, частоты переключения доходят до половины частоты ШИМ... а если сигнал открытия придет в конце периода импульса фазы? то у тебя ключ фазы будет открыт ещё до половины того времени, когда должна быть открыта следующая фаза...
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Ответить

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