[image]

Стабилизация Активная - часть II

 
1 67 68 69 70 71 88
UA Non-conformist #16.02.2012 11:10  @Non-conformist#15.02.2012 22:32
+
-
edit
 

Non-conformist

аксакал

Смотрел осциллографом D4, пытался обнаружить какую-то электрическую реакцию ноги на нажатие кнопки MODE. Единственное, что удалось обнаружить - запуск ждущей развёртки (мелькание прямой линии ждущей развёртки в такт нажатиям на кнопку). Это мне показалось недостаточным - заменил 1n на 22n. Теперь на ждущей развёртке в момент клика явно виден фронт импульса. Длительность импульса замерить не могу, не позволяет осциллограф. Думаю, что кнопка работает нормально. Программку бы, светодиодиком порулить?

***
И вообще, что-то мне кажется - вяловато-кисловато процесс идёт последние пару дней, вы не находите?

1. Что с программой записи показаний датчиков в память?
2. Когда гироскоп автомобильными лампочками рулить будет?
   
UA Ckona #16.02.2012 11:23  @Non-conformist#16.02.2012 11:10
+
-
edit
 

Ckona

опытный
★☆
Non-conformist> вяловато-кисловато
Условия работы у всех разные.
   
UA Non-conformist #16.02.2012 12:09  @Ckona#16.02.2012 11:23
+
-
edit
 
UA Non-conformist #16.02.2012 12:36  @Non-conformist#16.02.2012 12:09
+
-
edit
 

Non-conformist

аксакал

А сколько времени потребуется твоим четырём клапанам, чтобы опорожнить десятилитровый баллон с 50 кгс азота внутри? Не постоянно открытым, а именно в рабочем цикле, как ты его себе представляешь? Примерно?
   
RU shadowjack #16.02.2012 12:46
+
-
edit
 

shadowjack

втянувшийся
Да, не очень у меня со временем. Но это ничего 8).
Замени в скетче функцию loop() на такую (вариант с переключением светодиода on/off по переднему фронту сигнала с кнопки):

void loop(){
static int ledState = LOW;
static int prevButtonState = LOW;
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);

// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (buttonState == HIGH && prevButtonState == LOW) {
if(ledState == LOW)
ledState = HIGH;
else
ledState = LOW;
digitalWrite(ledPin, ledState);
}
prevButtonState = buttonState;
}
   5.0.15.0.1
UA Non-conformist #16.02.2012 13:05  @shadowjack#16.02.2012 12:46
+
-
edit
 

Non-conformist

аксакал

Работает кнопка! Дребезга нет, переключается чётко.
   
UA Non-conformist #16.02.2012 13:25  @Non-conformist#16.02.2012 13:05
+
-
edit
 

Non-conformist

аксакал

Что делать со светодиодами D0 и D1? Запаивать их на место? Не будут ли они мешать общению Ардуины с ПК?
   
UA Non-conformist #16.02.2012 13:38  @Non-conformist#16.02.2012 13:25
+
-
edit
 

Non-conformist

аксакал

1. Запись показаний датчиков в память.
2. Гироскоп рулит автомобильными лампочками.
   
RU shadowjack #16.02.2012 13:46  @Non-conformist#16.02.2012 13:38
+
-
edit
 

shadowjack

втянувшийся
Non-conformist> 1. Запись показаний датчиков в память.
Выложи исправленые тобой версии библиотеки и примера.
Non-conformist> 2. Гироскоп рулит автомобильными лампочками.
Опиши точнее алгоритм работы.
   5.0.15.0.1
RU shadowjack #16.02.2012 13:51  @Non-conformist#16.02.2012 13:25
+
-
edit
 

shadowjack

втянувшийся
Non-conformist> Что делать со светодиодами D0 и D1? Запаивать их на место? Не будут ли они мешать общению Ардуины с ПК?
Ну вообще с D0 я, конечно, не подумал. Нужно на какую-нибудь другую ногу перекинуть.
   5.0.15.0.1
UA Non-conformist #16.02.2012 14:01  @Non-conformist#16.02.2012 13:38
+
-
edit
 

Non-conformist

аксакал

Ckona, набросай логику работы перевёрнутого маятника, как ты её видишь. Стабилизация клапанами, управляемыми гироскопом. Примерно в таком виде:

1. Состояние равновесия. Клапана закрыты.
2. Валимся вправо. По превышению заданной пороговой скорости подаём на правый клапан ШИМ-последовательость, коэффициент заполнения которой пропорционален как текущей скорости, так и скорости изменения скорости (ПИ). Т.е. чем ближе к точке равновесия - тем ШИМ менее заполнена.
3. При переходе через точку равновесия, заполнение ШИМ правого клапана приобретает нулевое значение, и начинает расти заполнение ШИМ левого клапана.

Что-то в этом роде...
   
UA Non-conformist #16.02.2012 14:04  @shadowjack#16.02.2012 13:51
+
-
edit
 

Non-conformist

аксакал

shadowjack> Ну вообще с D0 я, конечно, не подумал. Нужно на какую-нибудь другую ногу перекинуть.
Это будет возможным только на второй версии платы. Сейчас сопли кидать... С души воротит. А нужен ли он вообще? Может будет достаточно D1? Да по-моему и он тут лишний...
   
RU shadowjack #16.02.2012 14:16  @Non-conformist#16.02.2012 14:04
+
-
edit
 

shadowjack

втянувшийся
Non-conformist> Это будет возможным только на второй версии платы. Сейчас сопли кидать... С души воротит. А нужен ли он вообще? Может будет достаточно D1? Да по-моему и он тут лишний...
Не, ну индикация-то нужна какая-нибудь.
   5.0.15.0.1
UA Non-conformist #16.02.2012 15:08  @shadowjack#16.02.2012 14:16
+
-
edit
 

Non-conformist

аксакал

Ты, насколько я помню, вообще заказывал ОДИН светодиод, а два - это уже моя инициатива была? Так пусть и будет D1, если он действительно нужен... Его не нужно принудительно программно выключать, пусть себе мигает? Или в каждом скетче придётся писать строчку конфигурации D1, специально для того, чтобы задействовать светодиод как индикатор?

***
По поводу алгоритма перевёрнутого маятника. Не совсем понятно мне, как детектировать точку равновесия.

Гироскоп чувствует угловую скорость. В точке равновесия угловая скорость наименьшая (в пределе - нулевая). Но угловая скорость будет нулевой (переходить через ноль) ещё и в точке изменения направления движения, во время работы клапана. Получается, что если при переходе угловой скорости через ноль её знак меняется, то это не точка равновесия, а наинизшая точка балансирования. Дополнительно наинизшая точка балансирования может характеризоваться относительно малым временем нахождения в нуле, по сравнению с точкой равновесия (принимая внимание инерционность маятника).

Тогда точка равновесия - как её чувствует гироскоп - это когда есть какая-то угловая скорость, потом она уменьшается (причём совершенно не обязательно до нуля) и снова начинает расти, НЕ МЕНЯЯ СВОЕГО ЗНАКА. Вот вокруг этого ОЧЕНЬ пологого минимума и придётся плясать имхо...
   
Это сообщение редактировалось 16.02.2012 в 15:29
UA Non-conformist #16.02.2012 15:13  @shadowjack#16.02.2012 13:46
+
-
edit
 

Non-conformist

аксакал

Non-conformist>> 1. Запись показаний датчиков в память.
shadowjack> Выложи исправленые тобой версии библиотеки и примера.
Прикреплённые файлы:
 
   
UA Ckona #16.02.2012 15:31  @Non-conformist#16.02.2012 12:36
+
-
edit
 

Ckona

опытный
★☆
Non-conformist> А сколько времени потребуется твоим четырём клапанам, чтобы опорожнить десятилитровый баллон с 50 кгс азота внутри? Не постоянно открытым, а именно в рабочем цикле, как ты его себе представляешь? Примерно?

Клапаны на 50 атмосфер не рассчитаны, они не откроются.
Предположим, что имеется редуктор 50 -> 6 Атм.

Если "мой" клапан открыт, он от 6 атмосфер дает тягу 4 Ньютона при расходе 7 г/с.
В баллоне 650 граммов газа, продолжительность выпускания будет около 100 секунд.

Теперь допустим, что корректируется один раз в 4 секунды на протяжении одной секунды,
по обеим осям.
Итого: баллона хватит на три-четыре минуты такого корректирования.
   
UA Ckona #16.02.2012 15:34  @Non-conformist#16.02.2012 14:01
+
-
edit
 

Ckona

опытный
★☆
Non-conformist> Ckona, набросай логику работы перевёрнутого маятника,

Маленько на работе зашиваюсь... потерпи три дня.
Нужно "по науке" прописать схему автоматического регулирования.
С отслеживанием лампочки - сигнал рассогласования получается как разность между углом на источник света и углом поворота мотрчика/датчика.
С перевернутым маятником: хз
   
UA Non-conformist #16.02.2012 15:37  @Non-conformist#16.02.2012 15:08
+
-
edit
 

Non-conformist

аксакал

Non-conformist> Вот вокруг этого ОЧЕНЬ пологого минимума и придётся плясать имхо...
Что-то сомневаюсь я, что наш гироскоп способен почувствовать этот минимум с нужной уверенностью. Думаю, что он просто утонет в собственных шумах гироскопа. Т.е. наверное не получится неподвижное стояние, будут нужны осцилляции...
   
UA Non-conformist #16.02.2012 15:38  @Ckona#16.02.2012 15:31
+
-
edit
 

Non-conformist

аксакал

Ckona> Итого: баллона хватит на три-четыре минуты такого корректирования.
Понятно. Не проходит.
   
UA Non-conformist #16.02.2012 18:00  @Non-conformist#16.02.2012 15:37
+
-
edit
 

Non-conformist

аксакал

Non-conformist> Что-то сомневаюсь я, что наш гироскоп способен почувствовать этот минимум с нужной уверенностью. Думаю, что он просто утонет в собственных шумах гироскопа. Т.е. наверное не получится неподвижное стояние, будут нужны осцилляции...
Закрепил сабж на торце полуметровой палки, привязал к ней кабель USB, чтобы не мешал. Синяя и розовая кривые - это X и Y при "ручной осцилляции": изображал рукой дрожание маятника, примерно как на моём видео с "Гелиостатом". Амплитуду старался изобразить в пределах пары миллиметров по обеим осям. Жёлтая и голубая кривые - собственные шумы гироскопа (палка в практически вертикальном положении прислонена к стене и оставлена в покое). Наблюдается небольшое постоянное смещение кривых относительно нуля. Судя по всему, из-за неидеальной вертикальости палки во время проведения опыта.

Если помнить о том, что эти кривые - не что иное как угловые скорости, то некоторым умственным усилием можно понять, что синусоидоподобные пики - это отнюдь не крайние положения осцилляции вдоль данной оси, а напротив её средние точки. А вот переход "синусоиды" через ноль - это как раз-таки изменение направления движения маятника на противоположное в момент прохождения крайней точки осцилляции. Диапазон "250" - самая высокая чувствительность, но и самые большие шумы.
Прикреплённые файлы:
123.png (скачать) [7,2 кБ]
 
 
   
UA Non-conformist #16.02.2012 22:53  @Non-conformist#16.02.2012 18:00
+
-
edit
 

Non-conformist

аксакал

Вопрос возник - а с какой частотой сейчас монитор пишет отчёты? Что-то вроде как совсем нечасто? В память данные будут чаще писаться?
   
RU shadowjack #17.02.2012 15:12  @Non-conformist#16.02.2012 22:53
+
-
edit
 

shadowjack

втянувшийся
Non-conformist> Вопрос возник - а с какой частотой сейчас монитор пишет отчёты? Что-то вроде как совсем нечасто? В память данные будут чаще писаться?
С памятью все зависит от того, какова будет скорость записи в память.
Посмотри частоту сам - там же время в выводимых данных есть. Хочешь часще уменьши или убери задержку.
   
UA Non-conformist #17.02.2012 16:02  @shadowjack#17.02.2012 15:12
+
-
edit
 

Non-conformist

аксакал

shadowjack> С памятью все зависит от того, какова будет скорость записи в память.
Тест памяти проходит со скоростью 181 байтов в секунду. Т.е. период получается 5,5 мс.

shadowjack> Посмотри частоту сам - там же время в выводимых данных есть.
Если первый столбец показывает миллисекунды, то период обновления получается 102..103 мс (разность двух соседних значений). Уменьшил задержку до шести - всё работает нормально...
   
UA Non-conformist #17.02.2012 16:08  @Non-conformist#17.02.2012 16:02
+
-
edit
 

Non-conformist

аксакал

shadowjack, а есть вообще готовые ардуинопримеры перевёрнутого маятника? Не обязательно на гироскопе?
   
RU GOGI #17.02.2012 16:10  @Non-conformist#17.02.2012 16:02
+
-
edit
 
Non-conformist> Тест памяти проходит со скоростью 181 байтов в секунду. Т.е. период получается 5,5 мс.
Используя двойную буферизацию можно скорость сделать примерно 15 килобайт/c. Памяти много, 512 байт на буфер много не будет.
   10.0.110.0.1
1 67 68 69 70 71 88

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru