|
STM32F0 + датчик Холла SCM Sunfab |
|
|
|
Dec 1 2014, 16:57
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 1-12-14
Пользователь №: 83 922

|
Доброго времени суток всем! Товарищи, нужна ваша помощь. Буду краток. В универе проходил курс АВРок, настало время диплома. Диплом делаю на предприятии (и кураторы тоже от предприятия), в виду этого приходится на ходу осваивать STM32F0. Да и в универском курсе ни разу не сталкивался с датчиками. Пока имеется один вопрос, с остальным вроде разобрался. Он заключается в следующем: как мне подключать сей датчик скорости на эффекте Холла к СТМке? В программе MicroXplorer есть такой пунктик интересный — XORED Inputs Hall Sensor Interface (3 ноги под это дело заводится, 3 канала таймера). Что, все три ноги датчика на таймер МК подавать? Или лучше просто задействовать один канал таймера в режиме input capture? Если нужна дополнительная инфа — пишите, я укажу все, что знаю. Вот что написано в инсайдерском руководстве: Цитата 5.1.4.2.2. Интерфейс датчика Холла Каждый из таймеров, в т.ч. и расширенный, разработан с учетом простоты подключения к датчику Холла, предназначенного для измерения угловой частоты вращения электродвигателя. Первые три вывода захвата каждого таймера можно связать с каналом 1 через логический элемент "исключающее ИЛИ". В этом случае, по мере вращения двигателя и прохождения возле каждого датчика, в канале будет генерироваться событие захвата. Это приведет к копированию текущего состояния таймера в регистр захвата канала, а также к сбросу таймера. Таким образом, значение счетчика, которое окажется в регистре захвата, можно пересчитать в частоту вращения электродвигателя.
|
|
|
|
|
 |
Ответов
|
Dec 2 2014, 08:34
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
Ну тут достаточно применить смекалку:
у вас осталось 2 варианта
1. Определение мгновенной скорости, то есть измерение времени прошедшего между 2 зубцами 2. Подсчет числа зубцов прошедших мимо датчика за определенное время
Реализация этого может быть такие 1. Прерывание по импульсу от проходящего зубца. В прерывании вы считываете значение таймера, сбрасываете его и запускаете бежать вперед без остановок. Первый интервал после остановки будет определен криво, дальше все поедет как надо. 2. Завести таймер на определенный интервал, 1 секунда, например. Завести сигнал от датчика как клок другого таймера, каждый импульс таймер будет прибавлять по 1 в счетчик. Как пройдет секунда, по прерыванию можете считать сколько насчитал 2 таймер, и сбросить это число. Таким способом вас реже дергают в прерывание, и получается некая фильтрация по времени, но теряется оперативность.
Так же можно завести сигнал и обратный сигнал на 2 капча таймера, и определять разницу между фронтами. Можно по 1 капчу, если у проца есть такой режим таймера. Можно как вариант 2 заставить таймер тактируемый внешним сигналом считать до какого то числа и по прерыванию как он досчитал забирать время системного таймера, определяя сколько времени прошло за Н зубцов. Можно придумать еще вариантики.
А фрагменты не ищите, если понять задачу она реализуется за полдня, а если не понять то будет как в начале темы, заведете 2 сигнала на какие то ножки а потом выясниться что 1 сигнала нет, а ножки не совсем подходят потому что от датчика ждали другого.... Вообще на вопрос куда завести датчик Холла, я бы ответил на компаратор или АЦП, так что постановка и понимание задачи очень важно!
|
|
|
|
|
Dec 2 2014, 09:23
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 1-12-14
Пользователь №: 83 922

|
Цитата(Golikov A. @ Dec 2 2014, 10:34)  ... А к какому варианту посоветуете склониться лично мне, как начинающему? Естесственно, желательно "что полегче" Цитата(arthedza @ Dec 2 2014, 11:04)  А к какому варианту посоветуете склониться лично мне, как начинающему? Естесственно, желательно "что полегче" Просмотрел внимательно ТЗ, опрос датчика скорости должен производиться с периодичностью в 5мс
Сообщение отредактировал IgorKossak - Dec 2 2014, 19:41
Причина редактирования: избыточное цитирование
|
|
|
|
|
Dec 3 2014, 08:03
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Цитата(arthedza @ Dec 2 2014, 13:23)  Просмотрел внимательно ТЗ, опрос датчика скорости должен производиться с периодичностью в 5мс Странное ТЗ. В ТЗ не нужно писать _как_делать, а нужно описать _что_делать_. Формулировка в виде: - Диапазон измеряемых скоростей от 5 зуб/с до 300 зуб/с. - Время реакции на изменение скорости не более 1 с. (цифры разумеется должны быть из вашей задачи). сократит число вариантов решения и постов в этой теме)
|
|
|
|
|
Dec 3 2014, 10:34
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 1-12-14
Пользователь №: 83 922

|
Цитата(adnega @ Dec 3 2014, 10:03)  Странное ТЗ. В ТЗ не нужно писать _как_делать, а нужно описать _что_делать_.
Формулировка в виде: - Диапазон измеряемых скоростей от 5 зуб/с до 300 зуб/с. - Время реакции на изменение скорости не более 1 с. (цифры разумеется должны быть из вашей задачи).
сократит число вариантов решения и постов в этой теме) Частота вращения будет изменяться в диапазоне 0..5200с^-1. 1 оборот=30 зуб. Хотя для объекта управления (гидроклапан) указана частота шим 100гц (10мс) с точки зрения обеспечения устойчивости такт решения задачи производительности гидросистемы необходимо сделать в 5мс. Т.е каждые 5 мс нужно обрабатывать частоту вращения и считать фильтры. Частота выдачи упр. сигнала должна соответствовать частоте ШИМ-сигнала. формировать значение упр. сигнала можно и каждые 5 мс но ШИМ будет менять свою скважность каждые 10мс. Т. е сигнал ШИМ с заданной скважностью должен пройти полностью Цитата(Golikov A. @ Dec 3 2014, 10:49)  периодичность опроса и время реакции системы также нормальные требования ТЗ, особенно если это ТЗ на блок, и оно учитывает общую загрузку системы... написал выше
|
|
|
|
|
Dec 3 2014, 11:12
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Цитата(arthedza @ Dec 3 2014, 14:34)  Частота вращения будет изменяться в диапазоне 0..5200с^-1. 1 оборот=30 зуб. Хотя для объекта управления (гидроклапан) указана частота шим 100гц (10мс) с точки зрения обеспечения устойчивости такт решения задачи производительности гидросистемы необходимо сделать в 5мс. Т.е каждые 5 мс нужно обрабатывать частоту вращения и считать фильтры. Частота выдачи упр. сигнала должна соответствовать частоте ШИМ-сигнала. формировать значение упр. сигнала можно и каждые 5 мс но ШИМ будет менять свою скважность каждые 10мс. Т. е сигнал ШИМ с заданной скважностью должен пройти полностью Считаем число импульсов от датчика за 5мс. Имеем число от 0 до 780 импульсов. Разрешающая способность 6.(6) об/сек. При времени реакции 5мс и скоростях ниже 6 об/сек имеем ситуацию, когда на выходе измерителя будет ШИМ: 5 мс скорость будет равна нулю, а в следующие 5 мс = 6.(6) об/сек. На низких оборотах скорость нужно усреднять с большим интервалом.
|
|
|
|
|
Dec 4 2014, 07:11
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 1-12-14
Пользователь №: 83 922

|
Цитата(adnega @ Dec 3 2014, 13:12)  Считаем число импульсов от датчика за 5мс. Имеем число от 0 до 780 импульсов. Разрешающая способность 6.(6) об/сек. При времени реакции 5мс и скоростях ниже 6 об/сек имеем ситуацию, когда на выходе измерителя будет ШИМ: 5 мс скорость будет равна нулю, а в следующие 5 мс = 6.(6) об/сек. На низких оборотах скорость нужно усреднять с большим интервалом. Простите, не то написал. Обороты в минуту, а не в секунду. Выходит: 5200 об/мин * 30 = 156000 имп/мин 156000/60 = 2600 имп/сек 2600/1000*5 = 13 импульсов в 5 милисекунд при 5200 об/мин.
Сообщение отредактировал arthedza - Dec 4 2014, 07:19
|
|
|
|
|
Dec 4 2014, 07:25
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 1-12-14
Пользователь №: 83 922

|
Цитата(adnega @ Dec 4 2014, 09:15)  Что ж - стало хуже ровно в 60 раз) Всего будет три режима работы: V1 = 1800 об/мин = 4,5 имп/5мс V2 = 3000 об/мин = 7,5 имп/5мс V3 = 5200 об/мин = 13 имп/5мс Делать мгновенные выборки через каждые 5 мс в несколько тактов, а потом усреднять? Или как?
Сообщение отредактировал arthedza - Dec 4 2014, 07:42
|
|
|
|
|
Dec 4 2014, 08:13
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Цитата(arthedza @ Dec 4 2014, 11:25)  Или как? Мотор - штука инертная, поэтому за 5 мс скорость поменяться не может, и даже если поменяется зубцов не так много, чтобы уловить эти изменения. Я бы предложил: 1. Запустить 16-разрядный счетчик на непрерывный подсчет импульсов. 2. Раз в 5 мс считывал значение из счетчика и считал дельту с предыдущим считанным значением (аккуратно на переходе 0xFFFF -> 0x0000 !). 3. Полученную дельту помещал в очередь (LIFO) из N элементов, где N*5мс = интервал усреднения/сглаживания. 4. Зная N и общее число импульсов в очереди (сумма всех элементов), можно рассчитать мгновенную (каждые 5 мс) скорость усредненную за большой интервал (N * 5 мс).
|
|
|
|
|
Dec 4 2014, 09:24
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 1-12-14
Пользователь №: 83 922

|
Цитата(adnega @ Dec 4 2014, 10:13)  Мотор - штука инертная, поэтому за 5 мс скорость поменяться не может, и даже если поменяется зубцов не так много, чтобы уловить эти изменения. Я бы предложил: 1. Запустить 16-разрядный счетчик на непрерывный подсчет импульсов. 2. Раз в 5 мс считывал значение из счетчика и считал дельту с предыдущим считанным значением (аккуратно на переходе 0xFFFF -> 0x0000 !). 3. Полученную дельту помещал в очередь (LIFO) из N элементов, где N*5мс = интервал усреднения/сглаживания. 4. Зная N и общее число импульсов в очереди (сумма всех элементов), можно рассчитать мгновенную (каждые 5 мс) скорость усредненную за большой интервал (N * 5 мс). 5 мс ведь заложили потому, что период управляющего ШИМ-воздействия с контроллера составляет 10 мс. Как я понял, за 10 мс мы должны успеть опросить датчик холла, вычислить частоту вращения, сформировать закон управления по полученной скорости и в соответствии с этим законом выдать ШИМ на выход контроллера.
|
|
|
|
Сообщений в этой теме
arthedza STM32F0 + датчик Холла SCM Sunfab Dec 1 2014, 16:57 Golikov A. ну просто если брать мотор для которого положение ... Dec 1 2014, 17:29 arthedza Цитата(Golikov A. @ Dec 1 2014, 19:29) ну... Dec 1 2014, 18:01  kovigor Цитата(arthedza @ Dec 1 2014, 22:01) Напр... Dec 1 2014, 18:05 kovigor Цитата(arthedza @ Dec 1 2014, 20:57) Что,... Dec 1 2014, 17:33 Golikov A. ЦитатаС датчика идет 4 провода: питание, земля и д... Dec 1 2014, 18:26 arthedza Цитата(Golikov A. @ Dec 1 2014, 20:24) по... Dec 1 2014, 18:39 Golikov A. Вот.... теперь вопрос
в датчике стоят 2 магнита и ... Dec 1 2014, 19:28 arthedza Цитата(Golikov A. @ Dec 1 2014, 21:28) Во... Dec 1 2014, 19:51  Сергей Борщ Цитата(arthedza @ Dec 1 2014, 21:51) Дава... Dec 2 2014, 07:27   arthedza Цитата(Сергей Борщ @ Dec 2 2014, 09:27) А... Dec 2 2014, 07:39 arthedza Цитата(Golikov A. @ Dec 1 2014, 21:28) Во... Dec 2 2014, 07:30  Сергей Борщ Цитата(arthedza @ Dec 2 2014, 09:30) кана... Dec 2 2014, 07:34     arthedza Цитата(adnega @ Dec 3 2014, 13:12) Считае... Dec 3 2014, 11:48 arthedza Следовательно, подходит вариант второй: подсчет чи... Dec 2 2014, 11:08 Golikov A. ну строго говоря надо еще понять какого уровня изм... Dec 2 2014, 19:24 Сергей Борщ А еще обратите внимание на вот это сообщение: http... Dec 2 2014, 21:00 Golikov A. Спасибо, интересная тема. Правда пришлось нескольк... Dec 2 2014, 23:31 Golikov A. периодичность опроса и время реакции системы также... Dec 3 2014, 08:49 Golikov A. 1000-1500 - это 150 - 225 импульсов в 5мСек
6.666... Dec 3 2014, 13:05 adnega Цитата(Golikov A. @ Dec 3 2014, 17:05) Но... Dec 3 2014, 14:16 Golikov A. ну при такой частоте у вас ничего просто не выйдет... Dec 4 2014, 09:55 arthedza Цитата(Golikov A. @ Dec 4 2014, 11:55) ну... Dec 4 2014, 10:16  KnightIgor Цитата(arthedza @ Dec 4 2014, 12:16) Спас... Dec 6 2014, 17:13 arthedza Цитата(Golikov A. @ Dec 4 2014, 11:55) Я ... Dec 9 2014, 08:13 arthedza Вот появился еще такой вопрос: как можно смоделиро... Dec 6 2014, 18:01 Golikov A. а чем симулятор то не годиться?
в IAR, KEIL есть... Dec 6 2014, 18:09 arthedza Цитата(Golikov A. @ Dec 6 2014, 20:09) а ... Dec 6 2014, 18:15 Golikov A. работайте вы скачайте триальную версию на 30 дней,... Dec 6 2014, 18:22 arthedza Цитата(Golikov A. @ Dec 6 2014, 20:22) ра... Dec 6 2014, 18:24 Golikov A. кнопку тактовую и нажимайте рукой...
или с одной ... Dec 6 2014, 18:33 arthedza Цитата(Golikov A. @ Dec 6 2014, 20:33) кн... Dec 6 2014, 18:36 Golikov A. да я в терминал шлю. Раньше был гипертерминал, сей... Dec 6 2014, 21:01 Golikov A. проще временными воротами
точнее методом захвата..... Dec 9 2014, 09:06 arthedza Цитата(Golikov A. @ Dec 9 2014, 11:06) пр... Dec 9 2014, 09:49 Golikov A. ЦитатаПоговорил со своим куратором. Как я понял, н... Dec 9 2014, 14:52 arthedza Цитата(Golikov A. @ Dec 9 2014, 16:52) на... Dec 10 2014, 06:38 arthedza Цитата(Golikov A. @ Dec 9 2014, 16:52) Вс... Dec 10 2014, 07:33 Golikov A. да.
в прерывании вы только определяете интервалы..... Dec 10 2014, 07:16 Golikov A. Ну наверное где-то должно быть деление, потому что... Dec 10 2014, 11:33
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|