| Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
Проблема с питанием ATmega168 + 5кВт ДПТ
24.04.2012, 23:00
|
#11
|
|
Гражданин KAZUS.RUN
Регистрация: 14.11.2008
Сообщений: 701
Сказал спасибо: 298
Сказали Спасибо 283 раз(а) в 193 сообщении(ях)
|
Re: Проблема с питанием ATmega168 + 5кВт ДПТ
Сообщение от r0st
|
|
Похоже на то, что контроллер сбрасывается от помех.
|
Ну, так это можно отловить програмно. А помеха есть всегда или только при подключенной нагрузке?
|
|
|
|
24.04.2012, 23:19
|
#12
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,457
Сказал спасибо: 3,225
Сказали Спасибо 3,510 раз(а) в 2,391 сообщении(ях)
|
Re: Проблема с питанием ATmega168 + 5кВт ДПТ
1. По поводу супервизора (Sinthez) - он есть в самой mega168.
2. По поводу программы - без комментариев ничего не понятно, особенно с названиями переменных на немецком. И программа, вроде, не целиком. Не понимаю, например, откуда данные для регулирования берутся. В таком случае - лучше-бы не исходник, а алгоритм.
3. А вот откуда может браться перезапуск программы - вроде понятно. В обработчике компаратора устанавливается "err" и программа стартует снова c "begin:".
|
|
|
|
24.04.2012, 23:21
|
#13
|
|
Временная регистрация
Регистрация: 24.11.2011
Адрес: Magdeburg
Сообщений: 81
Сказал спасибо: 10
Сказали Спасибо 16 раз(а) в 16 сообщении(ях)
|
Re: Проблема с питанием ATmega168 + 5кВт ДПТ
Сообщение от kittec
|
|
А помеха есть всегда или только при подключенной нагрузке?
|
Только когда преобразователь под нагрузкой. Если напряжение отключено, то проблем нет никаких.
Электромагнитные воздействия довольно сильные, поскольку если поднести щуп осциллографа на расстояние около 5см к коробке, но ничего не касаться, на экране появляется ШИМ с амплитудой около двух вольт.
|
|
|
|
24.04.2012, 23:38
|
#14
|
|
Гражданин KAZUS.RUN
Регистрация: 17.08.2008
Сообщений: 770
Сказал спасибо: 52
Сказали Спасибо 450 раз(а) в 202 сообщении(ях)
|
Re: Проблема с питанием ATmega168 + 5кВт ДПТ
Нужно написать тестовую программу вывода любого счетчика в USART. Преобразователь под нагрузкой. Половина вопросов отпадет.
По поводу логики работы вообще не понятно. Например
|
Код:
|
while(err);
goto begin; |
Сообщение от ForcePoint
|
|
устанавливается "err" и программа стартует снова c "begin:".
|
Правильно заметили
Повторить обработку и все.
Последний раз редактировалось XoDoK11; 24.04.2012 в 23:41.
|
|
|
|
24.04.2012, 23:46
|
#15
|
|
Временная регистрация
Регистрация: 24.11.2011
Адрес: Magdeburg
Сообщений: 81
Сказал спасибо: 10
Сказали Спасибо 16 раз(а) в 16 сообщении(ях)
|
Re: Проблема с питанием ATmega168 + 5кВт ДПТ
Сообщение от ForcePoint
|
|
А вот откуда может браться перезапуск программы - вроде понятно. В обработчике компаратора устанавливается "err" и программа стартует снова c "begin:".
|
err устанавливается в единицу только при срабатывании аналогового компаратора, но он отключен (ISR(ANALOG_COMP_vect) закомментирован). Сам по себе контроллер к работе вернуться не может. Для этого необходимо подать специальную команду через терминал, чтобы сбросить err, или нажать на ресет.
Сообщение от ForcePoint
|
|
По поводу программы - без комментариев ничего не понятно, особенно с названиями переменных на немецком. И программа, вроде, не целиком. Не понимаю, например, откуда данные для регулирования берутся. В таком случае - лучше-бы не исходник, а алгоритм.
|
Сейчас попробую описать.
чтобы получить частоту 20 кГц, таймер1 считает до 124, но шим не должен быть заполнен на все 100, поэтому в главном цикле стоит ограничение:
if ( pwm ‹ 117) PWM_Set_Timer1('A',pwm);
else PWM_Set_Timer1('A',117);
Так как ток через двигатель имеет пилообразную форму, а при переключениях возникают помехи, то чтобы избежать ошибок из-за этого необходимо измерять средний ток в середине импульса, если он ›=50% или же во время отключения, если pwm‹50%. Для отсчета точки измерения и служит таймер0, который запускается раз в каждое определенное число импульсов, отсчитываемое при помощи прерывания по переполнению таймера ШИМ: ISR(TIMER1_OVF_vect). А число тактов, которое он должен отсчитать задается:
if (pwm › 62) OCR0A = pwm/2+110+adcDelay;
else OCR0A = pwm/2+172+adcDelay;
где pwm - ширина ШИМ, вычисляемая на основе измеренного значения sollwert с ADC, adcDelay - переменная для ручной регулировки смещения через командный терминал.
if (test ›= 1){...} служит для целей замера реакции тока движка на скачок задающего сигнала (30%) и передачи данных раз в 1мс через RS232, управление потенциометром при этом блокируется.
в прерывании таймера стоит сигнальное вкл-выкл для выхода С4:
Set('C',4);
...
Clear('C',4);
Таким образом я вижу, что в моменты, когда контроллер не реагирует на потенциометр, прерывание таймера0 не срабатывает. В этом сейчас и состоит проблема.
|
|
|
|
25.04.2012, 00:20
|
#16
|
|
Гражданин KAZUS.RUN
Регистрация: 17.08.2008
Сообщений: 770
Сказал спасибо: 52
Сказали Спасибо 450 раз(а) в 202 сообщении(ях)
|
Re: Проблема с питанием ATmega168 + 5кВт ДПТ
Понятно,
|
Цитата:
|
Сообщение от r0st
Похоже на то, что контроллер сбрасывается от помех.
|
уже забыли. Теперь
Сообщение от r0st
|
|
Таким образом я вижу, что в моменты, когда контроллер не реагирует на потенциометр, прерывание таймера0 не срабатывает. В этом сейчас и состоит проблема.
|
Алгоритм надо продумывать.
Последний раз редактировалось XoDoK11; 25.04.2012 в 00:29.
|
|
|
|
25.04.2012, 00:29
|
#17
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,457
Сказал спасибо: 3,225
Сказали Спасибо 3,510 раз(а) в 2,391 сообщении(ях)
|
Re: Проблема с питанием ATmega168 + 5кВт ДПТ
Сообщение от r0st
|
... чтобы получить частоту 20 кГц, таймер1 считает до 124. ...
Для отсчета точки измерения и служит таймер0, который запускается раз в каждое определенное число импульсов, ...
|
1. А по-подробнее, чем занимается " PWM_Init_Timer1('A',8,FAST_PWM,124);"?
2. Я-бы сделал 10 битный Fast PWM без предделения частоты генератора (наплевав на небольшое отступление от 20 кГц) и вычисление момента запуска АЦП по каналу сравнения Б (что-то вроде OCR1B = PWM››1). Потому, что
Сообщение от r0st
|
... где pwm - ширина ШИМ, вычисляемая на основе измеренного значения sollwert с ADC, ...
Таким образом я вижу, что в моменты, когда контроллер не реагирует на потенциометр, прерывание таймера0 не срабатывает. В этом сейчас и состоит проблема.
|
Это жёсткий моветон совать и запуск преобразования АЦП и ожидание его результата в прерывание таймера0. АЦП можно поставить автозапуском как раз по вышеупомянутому сравнению в таймере 1.
Кстати, во фрагменте
Сообщение от r0st
|
|
Код:
|
ADC_Channel(SINGLE, 0, 0);
ADC_Start(SINGLE);
ADC_Finished();
sollwert = ADC_Get_Value(); |
|
съехало форматирование. По-этому я и не понял откуда-же данные.
|
|
|
|
25.04.2012, 03:01
|
#18
|
|
Временная регистрация
Регистрация: 24.11.2011
Адрес: Magdeburg
Сообщений: 81
Сказал спасибо: 10
Сказали Спасибо 16 раз(а) в 16 сообщении(ях)
|
Re: Проблема с питанием ATmega168 + 5кВт ДПТ
Сообщение от ForcePoint
|
|
А по-подробнее, чем занимается "PWM_Init_Timer1('A',8,FAST_PWM,124)"
|
PWM_Init_Timer1(char channel, int prescaler, char modus, char max)
PWM_Init_Timer1(выбор канала выхода, делитель, режим, установка ограничения счета (ICR1))
Сообщение от ForcePoint
|
|
Это жёсткий моветон совать и запуск преобразования АЦП и ожидание его результата в прерывание таймера0.
|
Если не ожидать там его результата, а получать его в основном цикле, то, насколько я понимаю при срабатывании прерывания и переключении канала АЦП для замера тока, значение с потенциометра в итоге может быть не снято?
Преобразование то ведь занимает достаточно много времени.
Последний раз редактировалось r0st; 25.04.2012 в 03:05.
|
|
|
|
25.04.2012, 10:56
|
#19
|
|
Вид на жительство
Регистрация: 09.10.2010
Сообщений: 397
Сказал спасибо: 51
Сказали Спасибо 91 раз(а) в 73 сообщении(ях)
|
Re: Проблема с питанием ATmega168 + 5кВт ДПТ
Сообщение от r0st
|
|
осциллографа на расстояние около 5см к коробке
|
Тогда это скорее конструктивная проблема, а не программная. И надо думать как укоротить провода, правильно развести платы и заэкранировать.
|
|
|
|
25.04.2012, 11:46
|
#20
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 28.02.2010
Сообщений: 2,294
Сказал спасибо: 52
Сказали Спасибо 460 раз(а) в 391 сообщении(ях)
|
Re: Проблема с питанием ATmega168 + 5кВт ДПТ
Сообщение от ForcePoint
|
|
1. По поводу супервизора (Sinthez) - он есть в самой mega168./.
|
Для начала- не мешало-бы разобраться, как топикстартер использует BOD.И вообще,использует-ли... Конфигурацию Fuse-ов смотреть нужно.(У 168 три уровня 1.8V,2.7V,4.3V)...(понизить BODLEVEL,поиграться).Если там всё нормально,наоборот выключить внутренний Brown-out Detector , и использовать "грубый" Reset, электролит под 10 мкФ+100кОм, и смотреть,есть изменения ,или нет.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 13:46.
|
|