29.10.2014, 17:59
|
|
Временная регистрация
Регистрация: 18.04.2011
Сообщений: 84
Сказал спасибо: 23
Сказали Спасибо 6 раз(а) в 4 сообщении(ях)
|
stm32f103+асинхронный двигатель
Добрый вечер!
Помогите понять где ошибаюсь. Управляю симистором. Схема подключения и опр. нуля. Управления фазовое "смотрю" ноль, включаю таймер на определенную задержку , по прерыванию таймера поднимаю ножку.
задержки
PHP код:
|
const uint16_t Power[100]= { 9635,8827,8522,8304,8127,7975,7841,7720,7608,7505, 7407,7315,7228,7144,7064, 6987,6912,6840,6769,6701,6634,6569,6505,6443,6382, 6321,6262,6204,6146,6090,6034, 5978,5923,5869,5816,5710,5657,5605,5553,5502,5451, 5400,5349,5299,5248,5198,5148, 5098,5048,4998,4948,4898,4848,4798,4747,4697,4646, 4596,4545,4494,4442,4391,4338, 4286,4233,4180,4126,4075,4017,3962,3906,3849,3792, 3733,3674,3614,3552,3490,3426, 3361,3294,3225,3155,3082,3007,2930,2850,2766,2678, 2586,2488,2384,2272,2150,2015, 1862,1683,1461,1147 };
|
время в мкс.
Сам код:
PHP код:
|
//_--------------------------------------------------- //_--------------------------------------------------- // Òàéìåð óïð. òèðèñòîðîì //_--------------------------------------------------- //_--------------------------------------------------- void TIM8_TRG_COM_TIM14_IRQHandler() { int i; TIM14-›SR&=~TIM_SR_UIF; TIM14-›CR1&=~TIM_CR1_CEN; GPIOC-›BSRR|=GPIO_BSRR_BS0; //delay_10us(10); //GPIOC-›BRR|=GPIO_BRR_BR0; TIM14-›SR=0; }
//_--------------------------------------------------- //_--------------------------------------------------- // Ïåððûâàíèå Zero //_--------------------------------------------------- //_--------------------------------------------------- void EXTI0_IRQHandler() { GPIOC-›BRR|=GPIO_BRR_BR0; TIM14-›CNT=0; TIM14-›ARR=Power[termz]; //time_set=0; TIM14-›CR1|=TIM_CR1_CEN; EXTI-›PR|=EXTI_PR_PR0; }
|
Настройка таймера и прерывания:
PHP код:
|
// Íàñòðîéêà òàéìåðà äëÿ óïðàâëåíèÿ âåíòèëÿòîðîì TIM14-›PSC=71; TIM14-›CR1|=(1UL‹‹2); TIM14-›DIER|=0x01; // interrupt enable TIM14-›EGR|=0x01; // Re-initializ
|
PHP код:
|
// Íàñòðîéêà ïðåðûâàíèé PB12- start, PB13- stop, PB14- åíêîäåð êíîïêà; // Âõîäû ïðåðûâàíèé in1 è in 2 îò òåðìîñòàòîâ // Âõîä ïðåðûâàíèÿ îïðåäåëåíèÿ íóëÿ ZERO EXTI-›FTSR|=EXTI_FTSR_TR14|EXTI_FTSR_TR13|EXTI_FTSR_TR12 |EXTI_FTSR_TR7|EXTI_FTSR_TR4|EXTI_FTSR_TR0; EXTI-›IMR|=EXTI_IMR_MR14|EXTI_IMR_MR13|EXTI_IMR_MR12|EXT I_IMR_MR7|EXTI_IMR_MR4|EXTI_IMR_MR0; AFIO-›EXTICR[3]|=AFIO_EXTICR4_EXTI14_PB|AFIO_EXTICR4_EXTI13_PB|AF IO_EXTICR4_EXTI12_PB; AFIO-›EXTICR[1]|=AFIO_EXTICR2_EXTI4_PA|AFIO_EXTICR2_EXTI7_PC; AFIO-›EXTICR[0]|=AFIO_EXTICR1_EXTI0_PE;
|
прерывание 0 срабатывание по заднему фронту.
Что получается:
При подачи сигнала длительностью 100мкс вентилятор крутится на одной и той же скорости не мах. гдето 20-30% (в коде закомментировано). При выключение пина в след. прерывание нуля вообще не крутится.
P.S. Значение задержки идет от 1% до 99%
Бьюсь над этим долго не могу понять причины.
|
|
|
|
29.10.2014, 19:58
|
|
Гражданин KAZUS.RU
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
|
Re: stm32f103+асинхронный двигатель
где настройка частот камня/таймеров ? предлагаешь догадаться ?
зачем тебе 6 (!!!) линий EXTI ?
и вроде по описанию TIM14 только вверх тикает = твои условия никогда не сработают.
PS могу ошибаться.
|
|
|
|
29.10.2014, 20:25
|
|
Временная регистрация
Регистрация: 18.04.2011
Сообщений: 84
Сказал спасибо: 23
Сказали Спасибо 6 раз(а) в 4 сообщении(ях)
|
Re: stm32f103+асинхронный двигатель
Частота камня 72МГц.
Делитель у таймера 72.
А считает правильно вверх. в ARR заносим наше значение и считаем.
А прерывания на 3 кнопки и 2 внешних входа.
Какое условие вы имеете ввиду?? Прерывание у таймера срабатывает по переполнению.
P.S. Настройка таймера присутствует в первом посте.
Последний раз редактировалось Uvavan; 29.10.2014 в 20:29.
|
|
|
|
29.10.2014, 20:34
|
|
Гражданин KAZUS.RU
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
|
Re: stm32f103+асинхронный двигатель
будем инфо по капле давить ? прескалеры AHB, APB, TIM ? прочее?
насчет никогда: сеть 50гц, событие ZERO-CROSS = 100 гц = 10мсек
у тебя даже если таймер тикает на 1 мгц (что маловероятно) - переполнение произойдет через 50 мсек
прикол чувствуешь?
Последний раз редактировалось Hives; 29.10.2014 в 20:39.
|
|
|
|
29.10.2014, 21:10
|
|
Временная регистрация
Регистрация: 18.04.2011
Сообщений: 84
Сказал спасибо: 23
Сказали Спасибо 6 раз(а) в 4 сообщении(ях)
|
Re: stm32f103+асинхронный двигатель
если не секрет откуда взялось 50 мс если у меня даже не указано сколько в АRR занесено??
А частота МК настраивается через стартап. А таймера указана с самого первого поста
|
|
|
|
29.10.2014, 21:13
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: stm32f103+асинхронный двигатель
А зачем здесь STM32?
|
|
|
|
29.10.2014, 21:18
|
|
Гражданин KAZUS.RU
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
|
Re: stm32f103+асинхронный двигатель
Uvavan
минимальный квант = 65536 - 9635 = 55901 мкс // Power[0]
максимальный квант = 65536 - 1147 = 64389 мкс // Power[99]
причем реально больше в разы, т.к. TIM14 max = 36 mhz (по datasheet)
PS и кто вас только считать учил...
кстати - только заметил еще косяк: CNT = 0 - счет всегда с 0
Последний раз редактировалось Hives; 29.10.2014 в 21:23.
|
|
|
|
29.10.2014, 21:20
|
|
Гражданин KAZUS.RU
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
|
Re: stm32f103+асинхронный двигатель
Easyrider83 да хоть какой дай... результат выше.
|
|
|
|
29.10.2014, 21:22
|
|
Временная регистрация
Регистрация: 18.04.2011
Сообщений: 84
Сказал спасибо: 23
Сказали Спасибо 6 раз(а) в 4 сообщении(ях)
|
Re: stm32f103+асинхронный двигатель
Он считает от 0 до указанного значения в регистре ARR.
И имейте хоть немного уважения к другим людям.
А насчет 36МГц сейчас посмотрю.
P.S. А смт потому что он не только вентилятором управляет.
|
|
|
|
29.10.2014, 21:39
|
|
Гражданин KAZUS.RU
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
|
Re: stm32f103+асинхронный двигатель
нда, уточнил - считает действительно не полный диапазон, а до ARR
извиняюсь, ошибочка вышла.
едем дальше: переменную termz ты чем крутишь? наружу какая нибудь связь есть?
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 01:09.
|
|