AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
09.09.2014, 21:45
|
|
Прописка
Регистрация: 23.07.2007
Сообщений: 209
Сказал спасибо: 109
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Задержка импульса
Так сейчас прерывание сработало и получил на выходе импульс. Сейчас разберусь немного с внешними прерываниями, самое интересное, что регистров для внешних прерываний нет в Отладчике, сейчас ставлю посвежей версию, может там оно есть
|
|
|
|
09.09.2014, 23:39
|
|
Прописка
Регистрация: 23.07.2007
Сообщений: 209
Сказал спасибо: 109
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Задержка импульса
Сегодня уже зависаю, слишком уж много информации потребил
Тут такой нюанс, а каким же образом мы вычислим задержку если мы с первого же импульса делаем подсчет счетчика и его же и сбрасываем, нужно делать 2 импульса что бы подсчитать полный оборот двигателя.
Сейчас пришла вот такая мысль, у нас в таймере есть 2 регистра 1А и 1Б в 1А у нас сравниваемое значение а вот в 1Б можно хранить данные счетчика после каждого оборота и складывать их с oborot = (TCNT1L|((int)TCNT1H‹‹8 )); что то в этом духе
oborot = (TCNT1L|((int)TCNT1H‹‹8 ));
OCR1BH=(char)(oborot››8 );
OCR1BL=(char)oborot;
TCNT1L=TCNT1H=0x00;
и уже при 2-м импульсе прибавлять oborot + OCR1B и вычислять реальную оборот маховика
что то я за сегодня уже устал, совсем голова не варит ![Озадачен](images/smilies/icon_confused.gif)
Думаю завтра буду включаться.
Форумчане не молчите, ведь 2 головы хорошо а 10-ть и более, лучше, давайте плиз помогайте ![Идея!](images/smilies/icon_idea.gif)
Всем заранее спасибо
|
|
|
|
10.09.2014, 05:30
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,907
Сказал спасибо: 2,543
Сказали Спасибо 11,818 раз(а) в 5,924 сообщении(ях)
|
Re: Задержка импульса
Сообщение от SAHA_T
|
Форумчане не молчите, ведь 2 головы хорошо а 10-ть и более, лучше, давайте плиз помогайте
|
Ну да, Крылов описал, как помогали слону картину рисовать и что из этого вышло.
Сообщение от SAHA_T
|
Сейчас пришла вот такая мысль, у нас в таймере есть 2 регистра 1А и 1Б в 1А у нас сравниваемое значение а вот в 1Б можно хранить данные счетчика после каждого оборота
|
Кто мешает хранить прошлый оборот в переменной?
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
10.09.2014, 12:20
|
|
Прописка
Регистрация: 23.07.2007
Сообщений: 209
Сказал спасибо: 109
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Задержка импульса
*Ну да, Крылов описал, как помогали слону картину рисовать и что из этого вышло.*
akegor, интересно, ваши Сообщений: 6,445, все были написаны именно таким образом ? ведь в данной теме, начиная с самой первой страницы вы ничего толком и не сказали. Нет написали про делители - спасибо. Не понимаю таких людей, которые все время умничают а ничего не делают. Я вижу вы умный человек, но толку с вас в данной теме, вы только пытаетесь опустить или подковырнуть. Что вам мешает помогать, ведь на форум люди обращаются не для того что бы их пинали, как многие это делают, а за помощью. А вот для того что бы показать свой ум и талант, люди создают сайт или страницы и там выкладывают свои проекты, мысли, разработки и т.д.
Не в обиду
чуть позже займусь программой
|
|
|
|
10.09.2014, 12:36
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,907
Сказал спасибо: 2,543
Сказали Спасибо 11,818 раз(а) в 5,924 сообщении(ях)
|
Re: Задержка импульса
Сообщение от SAHA_T
|
Я вижу вы умный человек, но толку с вас в данной теме, вы только пытаетесь опустить или подковырнуть.
|
Постарайтесь не комплексовать. Если меня читать без комплексов, там найдется гораздо больше полезного, чем находит уязвленное комплексом самолюбие. Не без того, что не предлагаю жеваное проглатывать, предлагаю думать и анализировать. Окончательное решение за автором. Это закон.
ПС. SAHA_T, извините, сам комплекснул...
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
Последний раз редактировалось akegor; 10.09.2014 в 13:45.
|
|
|
|
10.09.2014, 14:07
|
|
Прописка
Регистрация: 23.07.2007
Сообщений: 209
Сказал спасибо: 109
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Задержка импульса
снова перечитывал и действительно может получиться, в одном прерывании (EXT_INT0) будут рассчитываться обороты и вычисляться задержка, а второе TIM1_COMPA просто будет сидеть и ждать, когда же значение таймера будет равно значению регистра.
И получается что при первом начальном цикле, прерывание по сравнению сработает первее и начальная задержка выполнится, а уже в дальнейшем значение регистра будет изменено(в зависимости от оборотов). Думаю должно сработать. Сейчас нужно сообразить какое количество значений будет в таблице, думаю делать шаг по 100 оборотов получится 105 значений.
|
|
|
|
10.09.2014, 15:22
|
|
Заблокирован
Регистрация: 21.01.2014
Сообщений: 589
Сказал спасибо: 7
Сказали Спасибо 267 раз(а) в 206 сообщении(ях)
|
Re: Задержка импульса
Сообщение от SAHA_T
|
какое количество значений будет в таблице, думаю делать шаг по 100 оборотов
|
По 100 не годится: будет слишком большая ошибка установки УОЗ.
В самом первом посте Вы сказали, что датчик стоит на 40град. раньше ВМТ. То есть для искрообразования, например, точно в ВМТ, система после импульса датчика должна выполнить задержку на 40градусов. Для 600об/мин задержка получается 11111мкс (кстати, не 40%, а 40градусов от 360 градусов = 11.111%). Хорошо.
Далее, если шаг по оборотам 100, то такая же задержка 11111мкс будет использована и для 699об/мин. Но на таких оборотах эта задержка даст угол 46.5 градусов.
То есть на низких оборотах при увеличении скорости вращения, Ваш УОЗ будет уползать в более позднее зажигание на 6 с лишним градусов внутри каждого шага 100: в начале шага точно, в конце уехало, потом снова точно в начале следующего, потом уехало и т.д.
То есть надо шаг мельчить.
Потом, круглые числа 600об/мин, 700об/мин, 800об/мин ... хороши только для человека. Для микропроцессора десятичная система - хуже горькой редьки. Потом ещё и деление нужно. Вот это выражение
F=(1/N)*60*1000000 оборотов в минуту
которое содержит деление 32-битных чисел, ATtiny2313 будет вычислять очень долго, есть шанс ваще не успеть просчитать во время задержки, типа, посчитали, а ВМТ уже проехали.
Поэтому предлагаю плюнуть на частоту оборотов и пользовать только длительность оборотов. Считать длительность оборотов с шагом 256мкс.
Откройте Микрософт Офис Excel, в первой колонке пронумеруйте клетки сверху-вниз от n=1 до 400, в соседней колонке n*256, а в третьей колонке 60000000/(n*256). Получится таблица. Колонка 1 = Номер элемента, Колонка 2 - длительность оборота, Колонка 3 - частота вращения. Увидите, что для оборотов от 600 до 10000 нужно 368 строк. Сохраните таблицу в файл, это будет будущая заготовка для таблицы углов в программе для тиньки.
Вот, в таблице видно, шаг по оборотам непостоянный: на малых оборотах шаг всего 2об/мин, на высоких оборотах шаг вырастает до 400 об/мин. При таком распределении оборотов по таблице ошибка по установке УОЗ: на 600об/мин ошибка =0.1 градус, на 1000об/мин =0.2 градуса, на 3000об/мин = 0.5 градуса, на 6000об/мин = 1.0 градуса, и 1.5градуса на 9000на об/мин.
Так что можно обойтись таблицей в 370 элемента по 2 байта, всего 740 байтов флеши. Должно влезть.
PS. Надеюсь, Excel пользоваться умеете и не придётся набивать 400 строк вручную - всё делается автоматом.
|
|
|
Сказали "Спасибо" Yurkin2014
|
|
|
11.09.2014, 00:00
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Задержка импульса
Сообщение от SAHA_T
|
Следовательно что бы измерить оборот двигателя нужно ждать 2 импульса датчика
|
Зачем?
Если предыдущего импульса не было, значит текущий - первый (сбои хардовые или софтовые пока не рассматриваем, примем, что их нет ![Прикольно](images/smilies/icon_wink3.gif) )
Ну так и давайте импульс на максимальную задержку (минимальные обороты).
|
|
|
Сказали "Спасибо" omercury
|
|
|
11.09.2014, 00:03
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Задержка импульса
|
|
|
Сказали "Спасибо" omercury
|
|
|
11.09.2014, 00:32
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Задержка импульса
Сообщение от SAHA_T
|
Так сейчас прерывание сработало и получил на выходе импульс. Сейчас разберусь немного с внешними прерываниями, самое интересное, что регистров для внешних прерываний нет в Отладчике, сейчас ставлю посвежей версию, может там оно есть
|
Как так?
Вот они все.
|
|
|
Сказали "Спасибо" omercury
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 02:39.
|
|