реклама на сайте
подробности

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> STM32F0 + датчик Холла SCM Sunfab
arthedza
сообщение Dec 2 2014, 11:08
Сообщение #16


Участник
*

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



Следовательно, подходит вариант второй: подсчет числа зубцов прошедших мимо датчика за определенное время
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Dec 2 2014, 19:24
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



ну строго говоря надо еще понять какого уровня изменения возможны за этот интервал. То есть возможно шестерня крутиться так медленно что несколько 5 мСек интервалов попадут на 1 зуб и вам ничего делать не надо, просто тупо раз в 5 мСек опрашивать состояние входа и если оно изменилось из 0 в 1, считать импульс, и ждать изменения из 1 в 0.

Если же скорость вращения выше, или импульсы коротки и есть шанс их пропустить с 5 мСек опросами, то надо их заводить на ногу клока таймера, и пусть он их считает. А вы раз в 5 мСек спрашиваете сколько он насчитал....

Одна хитрость остается, это сброс таймера.
Если вы раз в 5 мСек будете забирать значение и сбрасывать таймер, существует вероятность что вы сбросите сразу после импульса, и отсчет потеряется.
то есть вы вошли в прерывание
берете из таймера значение Н (в этот момент проходит импульс и таймер становится Н+1)
вы пишите в таймер 0, и 1 импульс потерялся.

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

Вот как бы и все. Так что заводите ваши сигналы на источник клока таймера и дерзайте
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 2 2014, 21:00
Сообщение #18


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



А еще обратите внимание на вот это сообщение: http://electronix.ru/forum/index.php?s=&am...st&p=234466

Там описан более точный вариант измерения на основе комбинации описанных выше двух методов.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Dec 2 2014, 23:31
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Спасибо, интересная тема. Правда пришлось несколько раз перечитать первые страницы прежде чем в их попытках измерения длинны органов разглядел суть.

Смысл поста такой
можно относительно частоты проца считать импульсы измеряемой частоты и получить их с точностью +-1.
А можно так вывернуться что относительной измеряемой частоты считать импульсы частоты проца, получить их опять с точность +-1.

Поскольку считается что частота проца в сотни раз выше измеряемой частоты, то и погрешность в 1 процовый такт будет так же в сотни раз, в итоге выше.

Но на самом деле метод что предлагал, когда с равными интервалами относительно частоты проца забираются разницы счета измеряемой величины в мгновенном варианте дает погрешность +-1, а в дальней перспективе значительно выше. Те остатки такта, что были не учтены на текущем интервале перейдут на следующий, и выразятся в дрожании значения, которое после фильтрации (а ее все равно по уму надо делать) как раз даст доп точность....
Go to the top of the page
 
+Quote Post
adnega
сообщение Dec 3 2014, 08:03
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(arthedza @ Dec 2 2014, 13:23) *
Просмотрел внимательно ТЗ, опрос датчика скорости должен производиться с периодичностью в 5мс

Странное ТЗ. В ТЗ не нужно писать _как_делать, а нужно описать _что_делать_.

Формулировка в виде:
- Диапазон измеряемых скоростей от 5 зуб/с до 300 зуб/с.
- Время реакции на изменение скорости не более 1 с.
(цифры разумеется должны быть из вашей задачи).

сократит число вариантов решения и постов в этой теме)
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Dec 3 2014, 08:49
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



периодичность опроса и время реакции системы также нормальные требования ТЗ, особенно если это ТЗ на блок, и оно учитывает общую загрузку системы...
Go to the top of the page
 
+Quote Post
arthedza
сообщение Dec 3 2014, 10:34
Сообщение #22


Участник
*

Группа: Участник
Сообщений: 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) *
периодичность опроса и время реакции системы также нормальные требования ТЗ, особенно если это ТЗ на блок, и оно учитывает общую загрузку системы...

написал выше
Go to the top of the page
 
+Quote Post
adnega
сообщение Dec 3 2014, 11:12
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 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) об/сек.
На низких оборотах скорость нужно усреднять с большим интервалом.
Go to the top of the page
 
+Quote Post
arthedza
сообщение Dec 3 2014, 11:48
Сообщение #24


Участник
*

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



Цитата(adnega @ Dec 3 2014, 13:12) *
Считаем число импульсов от датчика за 5мс.
Имеем число от 0 до 780 импульсов. Разрешающая способность 6.(6) об/сек.
При времени реакции 5мс и скоростях ниже 6 об/сек имеем ситуацию, когда на выходе измерителя будет ШИМ:
5 мс скорость будет равна нулю, а в следующие 5 мс = 6.(6) об/сек.
На низких оборотах скорость нужно усреднять с большим интервалом.


А если низкие обороты будут только при пуске/останове, а основная частота, к примеру, будет составлять 1000-1500 с^-1?
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Dec 3 2014, 13:05
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



1000-1500 - это 150 - 225 импульсов в 5мСек
6.666666 оборотов в секунду - это 1 импульс в 5 мСек

получается что у вас 1000 оборотов в секунду не отличимо от 1001, 1002, 1003, 1004, 1005, 1006, но вот 1007 уже отличается это 151 импульс
так что если вы шимом будете стараться поддержать обороты, то вы это сможете сделать с точностью до 6 оборотов в 5 мСек.
Но обычно системы несколько более инертны, и можно использовать показания за несколько 5 мСек периудов, и получить разрешение повыше, ценой потери оперативность регулировки. Но думаю что мотор все равно мгновенно скорость не поменяет, наверняка будет там какой то ПИД, который все сгладит...
Go to the top of the page
 
+Quote Post
adnega
сообщение Dec 3 2014, 14:16
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Golikov A. @ Dec 3 2014, 17:05) *
Но думаю что мотор все равно мгновенно скорость не поменяет...

Поэтому возникает вопрос целесообразности 5 мс интервала.
Усреднять можно и в течение секунды, а мгновенные выборки делать хоть каждые 5 мс.
Go to the top of the page
 
+Quote Post
arthedza
сообщение Dec 4 2014, 07:11
Сообщение #27


Участник
*

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
adnega
сообщение Dec 4 2014, 07:15
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(arthedza @ Dec 4 2014, 11:11) *
Простите, не то написал. Обороты в минуту, а не в секунду. Выходит:
5200 об/мин * 30 = 156000 имп/мин
156000/60 = 2600 имп/сек
2600/1000*5 = 13 импульсов в 5 милисекунд.

Что ж - стало хуже ровно в 60 раз)
Go to the top of the page
 
+Quote Post
arthedza
сообщение Dec 4 2014, 07:25
Сообщение #29


Участник
*

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
adnega
сообщение Dec 4 2014, 08:13
Сообщение #30


Гуру
******

Группа: Свой
Сообщений: 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 мс).
Go to the top of the page
 
+Quote Post

4 страниц V  < 1 2 3 4 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 10:02
Рейтинг@Mail.ru


Страница сгенерированна за 0.01493 секунд с 7
ELECTRONIX ©2004-2016