[image]

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

 
1 77 78 79 80 81 88

Ckona

опытный
★☆
Ckona> у меня сейчас технические затруднения.
Ну, тут уже тупостью отличается отнюдь не цифровая обработка. :-)
624 в квадрате - это 389376, а максимальное значение переменной типа integer ±32768 или 65536.
Техническое затруднение локализовано !
   
+
-
edit
 

shadowjack

втянувшийся
shadowjack>> Ckona, вот шестиосевая писалка.
Ckona> Сколько 8-разрядных слов (байт) может быть записано ?
EEPROM у нас вроде 1МБит? Тогда 128 Кбайт.
Ckona> С какой скоростью ведется запись ?
100 Гц, 16 байт на комплект измерений - время, угловые скорости, ускорения.
Ckona> Какую нужно устанавливать скорость считывания записанного через сом-порт ?
115200
Директорию E24C1024 нужно положить в libraries Arduino. Если среда ардуино запушена, то перезапустить.
   11.011.0
+
-
edit
 

shadowjack

втянувшийся
Ckona> 624 в квадрате - это 389376, а максимальное значение переменной типа integer ±32768 или 65536.
Точнее -32768 +32767 или 65535
long int (или для ясности int32_t) поможет.
   11.011.0
UA Ckona #09.04.2012 12:27  @Андрей Суворов#07.04.2012 10:22
+
-
edit
 

Ckona

опытный
★☆
А.С.> А вообще - успехов, очень здорово!

Собственно говоря, вот первый скромный успех.

Маятник отклоняется и совершает свободные колебания.
Датчик угловых скоростей вкупе с цифровым интегратором дает значение угла отклонения.
Пороговое значение угла - 5 градусов.
По достижении порогового угла "оно" пищит.
Если угол отклонения меньше 3-х градусов, то "оно" не пищит.
Все вполне наглядно представлено на видео (3Мб):
http://ckona.rocketworkshop.net/Videos/Angle_2.mpg

Теперь будем переходить на автономное питание и бортовую память.
В текущей версии можно менять зону нечувствительности и пороговые значения углов.
Если "оно" предоставлено самому себе, то начинает пищать через минуту-две.
Причина - случайные "выбросы" за пределы объявленной зоны нечувствительности.
"Лечение" - скользящее среднее или еще что-нибудь в таком духе.

Прошу не забывать - это работа группы в составе трех человек.
Прикреплённые файлы:
 
   
UA Non-conformist #09.04.2012 13:54  @Ckona#09.04.2012 12:27
+
-
edit
 

Non-conformist

аксакал

Смотрится убедительно! А что это за шарнир такой интересный? Я, помню, долго что-то подобное искал на "Кобру". Хотел юыло самоцетрирующийся подшипник приспособить, но трение сильно большое было. Притереть алмазной пастой не догадался.

зы: А сковородка - это акустический экран? ))
   
+
-
edit
 

shadowjack

втянувшийся
Ckona> Собственно говоря, вот первый скромный успех.
Здорово!
Выложи пожалуйста свою версию прошивки - может, что-нибудь подскажу.
Может быть нам проект на github-е замутить, чтобы было легче изменения отслеживать?
   11.011.0
UA RLAN #09.04.2012 15:28  @Non-conformist#09.04.2012 13:54
+
-
edit
 

RLAN

старожил

Non-conformist> зы: А сковородка - это акустический экран? ))

Не, судя по форме - точно - нейтронный отражатель.
   
UA Non-conformist #09.04.2012 15:47  @RLAN#09.04.2012 15:28
+
-
edit
 

Non-conformist

аксакал

Нет, не то. Скорее всего это гравитационный нуль-компенсатор. Для локальной коррекции гравитационной вертикали.
   
UA Ckona #09.04.2012 21:08  @Non-conformist#09.04.2012 13:54
+
-
edit
 

Ckona

опытный
★☆
Non-conformist> А что это за шарнир такой интересный?
Шведский, компании UNIBAL.

Валялся в тумбочке, вот и пригодился.
   
UA Ckona #09.04.2012 21:11  @Non-conformist#09.04.2012 13:54
+
-
edit
 

Ckona

опытный
★☆
Non-conformist> А сковородка - это акустический экран?
Это я экспроприировал, чтоб по голове за пищание не получить.
И приспособил в качестве фона на заднем плане.
Заодно и многослойный гадюшник на столе прикрыл.
   
+
-
edit
 

Ckona

опытный
★☆
shadowjack> Выложи пожалуйста свою версию прошивки - может, что-нибудь подскажу.
Пожалуйста ! См. аттач.
shadowjack> Может быть нам проект на github-е замутить, чтобы было легче изменения отслеживать?
Это что - среда для группового проектирования ?
Прикреплённые файлы:
 
   
+
-
edit
 

Ckona

опытный
★☆
shadowjack> Ckona, вот шестиосевая писалка.

Готовлюсь работать с ней, так сказать - "въезжаю".

shadowjack> У программы 3 режима - ожидание, запись, сброс данных.

Также существует короткое и длинное нажатие на кнопку.

Насколько я понимаю, сначала по умолчанию включен режим "ожидание" - ничего не записывается.
После короткого нажатия производится запись данных, после переполнения памяти запись производится поверх старых данных, с текущими значениями времени - скачок времени обозначит "хвост".
Если будет длинное нажатие, прекращается запись данных, содержимое памяти один раз транслируется в СОМ-порт, программа переходит в режим "ожидание".
Все выше сказанное - предположение, я пока не "откопал", как сделано на самом деле в коде.

Разумеется, переход в режим "запись" должен инициироваться стартовым ускорением - точно так же будет меняться режим "измерение отклонения направляющей" на режим "вертикальная стабилизация в полете". Предлагаю также прекращать запись по таймеру.

Кстати, что будет с записями, если вследствие аварии останется целой только микросхема памяти ? Не сотрутся ли данные от перепаивания микросхемы на новую плату ?

Вообще, я созрел для описания полетного задания.
   

Xan

координатор

Ckona> Кстати, что будет с записями, если вследствие аварии останется целой только микросхема памяти ? Не сотрутся ли данные от перепаивания микросхемы на новую плату ?

Я перепаивал и микроконтроллеры, и еепромы, никогда ничего не пропадало.
В каком-то доке читал, что данные должны сохраняться две недели при температуре около 280. Если не склероз.
   9.09.0

Ckona

опытный
★☆
Ckona> созрел для описания полетного задания.

Все достаточно тривиально.
Интересно, что "созрел" в День Космонавтики.
В прилагаемом файле - циклограмма работы, составленная исходя из реальных возможностей ракеты-носителя.

Если установлена память 128 кБайт, куда 100 раз в секунду записывается 16 Байт, то места хватит на 80 секунд.
Рассматривая циклограмму, можно затевать тесты по проверке записи-считывания памяти.
Возможно расширение в части звуковой сигнализации.

Из нерассмотренных задач - способ дистанционной подачи разовой команды.
Прикреплённые файлы:
 
   
RU Андрей Суворов #12.04.2012 21:05  @Xan#12.04.2012 11:54
+
-
edit
 

Андрей Суворов

координатор

Ckona>> Кстати, что будет с записями, если вследствие аварии останется целой только микросхема памяти ? Не сотрутся ли данные от перепаивания микросхемы на новую плату ?

Наши китайские вендоры программируют NAND FLASH на групповом программаторе по 31 штуке, а уже потом паяют в печке. Ничего не стирается.
   8.08.0
+
-
edit
 

Ckona

опытный
★☆
shadowjack> Директорию E24C1024 нужно положить в libraries Arduino. Если среда ардуино запушена, то перезапустить.

Добрался до тестирования писалки.
Вроде, директорию положил куда надо.
По крайней мере из этой же директории запускал среду разработки.

Итоги проверок:
1) Компиляция и загрузка софта в контроллер - без замечаний.
2) кнопка на шилде работает, на нее есть реакция.
3) ни фига из памяти не извлекается, а может, и не записывается.

Действия т.н. "оператора":
- запустил отладчик, открыл файл с кодом, загрузил программу в контроллер,
- запустил "КОМПОРТ" Ксаныча на скорости 115200,
- нажал на кнопку коротким нажатием,
- пошевелил маятником,
- нажал на кнопку длинным нажатием,
- подождал 5 секунд,
- нажал на кнопку коротким нажатием,
- закрыл программу "КОМПОРТ".

Вот все, что "осело" в файле:
Button up
Long press
state -> DUMP
66723 31 19 -9 -3 -4 -43
Button down
Button up
Long press
state -> DUMP
66723 31 19 -9 -3 -4 -43
Button down
Button up
Long press
state -> DUMP
66723 31 19 -9 -3 -4 -43
Button down


Насколько я понял, state -> IDLE означает режим ожидания.
state -> DUMP - это режим вывода данных из памяти на последовательный порт.
Поскольку время 66723 не меняется, то "оно" все время находится в состоянии вывода данных, которых в памяти аж одна строка.

Почему не устанавливается RECORD или IDLE ?

ага, короткого нажатия-то и не зафиксировано !
   
Это сообщение редактировалось 19.04.2012 в 00:59

Ckona

опытный
★☆
Ckona> ага, короткого нажатия-то и не зафиксировано !

По-моему, тут какая-то инверсная логика.
После перезапуска программы (RESET) всегда выводится BUTTON DOWN.
А кнопка-то не нажатая ! Естественно, после нажатия тут же выскакивает BUTTON UP и после этого LONG PRESS.

Поменять местами состояния кнопок, что ли...
   

Ckona

опытный
★☆
Ckona> Поменять местами состояния кнопок, что ли...

Не помогло.
"Поменял местами состояния", запуская RESETом при нажатой кнопке, а после отпуская ее на короткое время. Система ведет себя точно так же. Сразу после запуска (прописались датчики) - BUTTON DOWN, при отпускании кнопки - BUTTON UP.
Configuring L3G4200D
Configuring LIS331D
Button down
Button up
Long press
state -> DUMP
60190 193 13 -35 2 10 -58
Button down
Button up
Long press
state -> DUMP
60190 193 13 -35 2 10 -58
Button down
Button up
Long press
state -> DUMP
60190 193 13 -35 2 10 -58
Button down
   

Ckona

опытный
★☆
Ckona> Не помогло.

Пытаюсь разобраться в логике работы софта.
Вроде бы как в главном цикле каждый раз и текущее, и предыдущее состояния кнопки принудительно объявляются LOW. Хотя и static ! (тут мне уже трудно въехать)
Похоже, это неправильно - как ни тычь кнопкой, в каждом обороте цикла принудительное "обнуление".
И непонятно, как получается LONG PRESS, если предыдущее состояние кнопки все время внутри цикла принудительно устанавливается LOW.
   
Это сообщение редактировалось 19.04.2012 в 19:17

Ckona

опытный
★☆
Ckona> Пытаюсь разобраться
Ой.
А кнопочка-то дает нулевой потенциал примерно лишь на протяжении 1 мкс, а потом конденсатор 1000 пФ заряжается через резистор 1 кОм и все - снова 5 вольт, сколько ее ни дави (см. схему электрическую принципиальную). Разряд конденсатора при отпускании кнопки - за 560 мкС, и только потом снова возможно "мгновенье обнуленья".
Интересно, что это означает ?
   
UA Non-conformist #19.04.2012 22:49  @Ckona#19.04.2012 18:55
+
-
edit
 

Non-conformist

аксакал

Ckona> Интересно, что это означает ?
Антидребезг, однако. Под эту кнопку код соответствующий нужен - посмотри выше по тексту, страниц пятнадцать: shadowjack уже написал и "фиксируемую кнопку" и "обычную кнопку" для этого железа.

С микросекундами имхо что-то не то у тебя. Там, если мне не изменяет память, ДЕСЯТЬ нан стоит. Один нан вначале стоял - мне не понравилось. Потому что мой осциллограф работу схемы практически не фиксировал с такой малой ёмкостью, по причине возрастных проблем со ждущей развёрткой.
   
Это сообщение редактировалось 19.04.2012 в 22:54
UA Ckona #19.04.2012 23:56  @Non-conformist#19.04.2012 22:49
+
-
edit
 

Ckona

опытный
★☆
Non-conformist> ДЕСЯТЬ нан стоит.
Ага, все-таки не одна микросекунда. Тем не менее никак не пойму - если один цикл со всеми-всеми операциями занимает 5 миллисекунд, и внутри на каких-то 10 микросекунд возникает ноль от кнопки - вероятность обработки этого нажатия 1:500. В моем (возможно тупом) понимании (или непонимании ?) продолжительность пребывания кнопки "в нуле" должна быть не менее чем два цикла - тогда обработчик кнопки гарантированно "зацепит" ее нажатое состояние.

Общий выход из ситуации (не работает запись в память) таков: дробить код на куски, вставлять тестовые "распечатывания", проверять по частям и смотреть, что происходит.

Не получится головой - будем напрягать седалище.

Non-conformist> Один нан вначале стоял
Так на схеме и осталось ( С11 ).
   
UA Non-conformist #20.04.2012 09:10  @Ckona#19.04.2012 23:56
+
-
edit
 

Non-conformist

аксакал

Ckona> Так на схеме и осталось ( С11 ).
Сейчас это C10, 22n. Насчёт светодиода не уверен - по-моему я его переставил на D7 только на принципиальной схеме, на будущее. У тебя в реале светодиодов вообще нет, потому что они мешают нормальной работе загрузчика (не на те ноги повесили). Схему прилагаю.

Насчёт циклов - по-моему твои рассуждения содержат ошибку, причём в самом начале. Посылка неравильная, и как следствие весь дальнейших ход неверен, при безупречной логике. Я думаю, что нулевой импульс, который даёт кнопка с обсуждаемой схемой антидребезга, многократно (тысяч в сто раз) перекрывает потребности его обнаружения программой.
Прикреплённые файлы:
 
   
UA Ckona #20.04.2012 09:49  @Non-conformist#20.04.2012 09:10
+
-
edit
 

Ckona

опытный
★☆
Non-conformist> Сейчас это C10, 22n. Схему прилагаю.
Спасибо !
Меняю. (у меня ведется документация)

Non-conformist> Насчёт циклов - по-моему твои рассуждения содержат ошибку, причём в самом начале.
Разумеется.
Ведь я "стартовал" исходя из "статической" кнопки.

В связи с новой вводной, понятие "длинное нажатие кнопки" отменяется. (Все "нажатия" длятся, пока не зарядится конденсатор, их продолжительность от человека не зависит).
Есть три команды.
"Из ожидания перейти в запись измерений",
"передать содержимое памяти на сом-порт и перейти в режим ожидания",
"Из измерений перейти в режим ожидания".

Как обеспечить их распознавание, если кнопка "выдает" нулевой импульс длительностью 20 мкс, который может быть повторен не ранее чем через 12 мс ?
Повторными нажатиями, с измерением времени между ними.

Все мои "повторные нажатия" проводились с интервалом более 1 секунды, так что, вполне возможно, все проблемы в заскорузлости (не будем говорить чего).
   
Можно мнение высказать?
Мне кажется с такими алгоритмами у вас будет куча ошибок.
Я бы сделал так: при подключении к ком-порту контроллер становится мостом UART-I2C. Это позволит с компьютера как снимать данные из памяти, так и получать значения с датчиков в реальном времени.
При отключении от ком-порта - первым нажатием на кнопку начинается запись, вторым останавливается, пишется по кругу.
   
1 77 78 79 80 81 88

в начало страницы | новое
 
Поиск
Поддержка
Поддержи форум!
ЯндексЯндекс. ДеньгиХочу такую же кнопку
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru