|
Головоломка: емкостной датчик угла 0..359`, Проблема краевого эффекта |
|
|
|
Nov 3 2010, 10:00
|
Частый гость
 
Группа: Участник
Сообщений: 127
Регистрация: 6-07-08
Из: Москва
Пользователь №: 38 765

|
Ребята, всем привет, всех с наступающими!!!!!!! Вот делаю датчик для самолета. Принцип работы: общая обкладка трех конденсаторов лежит на флюгере датчика и имеет форму полукруга. Флюгер изготовлен из фольгированного текстолита. Три остальные обкладки расположены на трех секторах круга из фольгированного текстолита. Он должен быть закреплен с внешней стороны фюзеляжа СЛС. В качестве вала, на котором закреплен флюгер, используется втулка с подшипниками от жесткого диска. При вращении флюгера меняется емкость трех конденсаторов. Останется только ее измерить. Конденсаторы электрически соединены звездой. На общую обкладку конденсаторов подается переменное синусоидальное напряжение высокой частоты. Математика для одного из шести (виртуальных) секторов следующая: (обкладка C закрыта (0 - 60 град)) ResetAngl = 300 - ((Ub - Ua) * 1200) div Uc, где Ux - напряжения на обкладках. Идея работает, но наблюдается краевой эффект. Модель идеального датчика работает изумительно, но если, например, внести смещение емкости (столкнулся с этим на макете) хотя бы одного из конденсаторов, то сразу возникает нелинейность при восстановлении угла. Вопрос: как побороть? И еще, просьба: не предлагайте мне купить энкодер или еще чего готовое. Это легкий путь.  А я очень хочу добить эту конструкцию. Тем более, что она стоила мне копейки. Во вложении две програмки-модели. В одной емкости одинаковые, во второй с перекосом (это видно по значениям напряжений). Спасибо!!!!
Сообщение отредактировал Rostislav - Nov 3 2010, 10:34
Эскизы прикрепленных изображений
Прикрепленные файлы
Unit1.pas.zip ( 1.95 килобайт )
Кол-во скачиваний: 29
_____.rar ( 185.7 килобайт )
Кол-во скачиваний: 25
____.rar ( 185.71 килобайт )
Кол-во скачиваний: 23
|
|
|
|
3 страниц
< 1 2 3
|
 |
Ответов
(30 - 40)
|
Nov 4 2010, 11:57
|
Частый гость
 
Группа: Участник
Сообщений: 127
Регистрация: 6-07-08
Из: Москва
Пользователь №: 38 765

|
Цитата(xemul @ Nov 4 2010, 13:03)  измерительный сигнал подаётся на подвижную обкладку В моем случае это именно так. На подвижную (общую) обкладку подаю синус амплитудой порядка 20В.
|
|
|
|
|
Nov 6 2010, 18:58
|
Знающий
   
Группа: Свой
Сообщений: 888
Регистрация: 25-09-08
Из: Питер
Пользователь №: 40 458

|
Берется генератор, у которого есть 4 выхода: 1. Синус 2. Синус, задержанный на 90* (косинус) 3. Инверсный синус (синус, задержанный на 180*) 4. Инверсный косинус (синус, задержанный на 270*) На круглой плате нарезается 4 сектора по 90*. Нумеруем их по часовой стрелке и подаем на сектора соответствующие сигналы с 4-х выходов генератора. Измерительный электрод выполняется в форме такого-же сектора. При его повороте на него будут преимущественно поступать сигналы с соответствующего сектора. Они идут на два синхронных детектора, которые выделяют синусную и косинусную компоненты - дальше простая математика дает угол поворота. Лучше сделать измерительный электрод в форме двух противостоящих секторов, тогда на одном будет фаза, на другом противофаза, и подать на дифференциальный измеритель. При этом будут скоменсированы некоторые геометрические искажения, амплитуда сигнала станет более постоянной, заодно помехи уменьшаться. Цитата(xemul @ Nov 4 2010, 14:03)  Ни то, ни другое не спасает от механических погрешностей. Ессно, зато нет никаких перескоков.
|
|
|
|
|
Nov 6 2010, 22:31
|
Частый гость
 
Группа: Участник
Сообщений: 127
Регистрация: 6-07-08
Из: Москва
Пользователь №: 38 765

|
Цитата(rudy_b @ Nov 6 2010, 21:58)  дальше простая математика дает угол поворота У Вас есть ссылочка на математику?  Спасибо!
|
|
|
|
|
Nov 7 2010, 01:00
|
Знающий
   
Группа: Свой
Сообщений: 888
Регистрация: 25-09-08
Из: Питер
Пользователь №: 40 458

|
Цитата(Rostislav @ Nov 7 2010, 02:31)  У Вас есть ссылочка на математику?  Спасибо! Так она школьная, только с квадрантами нужно быть аккуратным. Если нужен угол > -180 и <=+180 то if(cos==0 && sin>=0) f=90; *(sin==0 && cos==0 - не бывает) if(cos==0 && sin<0) f=-90; if(cos>0) f=atan(sin/cos); if(cos<0 && sin>=0) f=atan(sin/cos)+180; if(cos<0 && sin<0) f=-180-atan(sin/cos); Бывает честная atan2, которая сразу и квадрант учитывает, но это нужно библиотеки смотреть. Если нужен угол 0...360-, то выражения несколько иные, но принцип тот же. Что-то в таком духе, рисовал из головы, мог слегка наврать.
|
|
|
|
|
Nov 9 2010, 13:43
|
Частый гость
 
Группа: Участник
Сообщений: 127
Регистрация: 6-07-08
Из: Москва
Пользователь №: 38 765

|
Цитата(rudy_b @ Nov 7 2010, 04:00)  Если нужен угол > -180 и <=+180 то if(cos==0 && sin>=0) f=90; *(sin==0 && cos==0 - не бывает) if(cos==0 && sin<0) f=-90; if(cos>0) f=atan(sin/cos); if(cos<0 && sin>=0) f=atan(sin/cos)+180; if(cos<0 && sin<0) f=-180-atan(sin/cos); Как я могу это применить у себя? У меня три сектора. А напряжение возбуждения подается на одну общую подвижную обкладку. В своем варианте я стремился ограничится только чистой арифметикой. В принципе это получилось. А тут мощная тригонометрия, а обработка у меня происходит в PIC. При таких вычислениях, я не смогу 10 раз в секунду получать результат. Потом, это уже иная конструкция, а переделывать не хочется. Цитата(Hmm @ Nov 7 2010, 15:31)  А такой датчик для авиамодели или частного самолета предпологается использовать? Или так ... для души? Для самодельного частного самолета.  Есть у меня такая мечта. Комплект авионики должен получится крутым, как на боинге. 2-а больших цветных ЖКИ дисплея, 2-е БЭВМ и все это будет работать с электронными датчиками.
Сообщение отредактировал Rostislav - Nov 9 2010, 13:45
|
|
|
|
|
Nov 9 2010, 15:02
|
Частый гость
 
Группа: Участник
Сообщений: 127
Регистрация: 6-07-08
Из: Москва
Пользователь №: 38 765

|
Цитата(MrYuran @ Nov 9 2010, 16:48)  Главное, чтобы парашют не подвёл... Не парашют, а балистическая спассистема! Обязательно поставлю! По-поводу датчика. Есть идея взять сумму напряжений на крайних секторах. Например, так: U`a = Ua + Ub, U`b = Ub + Uc, U`c = Uc + Ua. И рассчитать угол по этим значениям.
|
|
|
|
|
Nov 13 2010, 16:10
|
Знающий
   
Группа: Свой
Сообщений: 888
Регистрация: 25-09-08
Из: Питер
Пользователь №: 40 458

|
Цитата(Rostislav @ Nov 9 2010, 17:43)  Как я могу это применить у себя? У меня три сектора. А напряжение возбуждения подается на одну общую подвижную обкладку. Так переделайте, делов-то. Особенно если Цитата Комплект авионики должен получится крутым, как на боинге. 2-а больших цветных ЖКИ дисплея, 2-е БЭВМ и все это будет работать с электронными датчиками. А насчет Цитата В своем варианте я стремился ограничится только чистой арифметикой. В принципе это получилось. А тут мощная тригонометрия, а обработка у меня происходит в PIC. При таких вычислениях, я не смогу 10 раз в секунду получать результат. то PIC с этим справится элементарно, даже если считать напрямую. Но никто не мешает использовать табличные значения. А по поводу одного излучателя и трех приемников - почти гарантированно будет куча некомпенсируемых геометрических искажений. В моем варианте искажения минимальны (например перекос оси будет компенсироваться автоматически) и амплитуда сигнала (одного, а не трех!) значительно более постоянна, что облегчает ее измерение и обработку. Но генерировать приходится два сигнала (два получаются инверсией), что не представляет особой проблемы, хоть таймером с процессора. Можно вообще использовать прямоугольник, а фильтрацию верхних гармоник сделать прямо в проце для одного входного сигнала.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|