[image]

Электронное оборудование ракет - БРЭО 2020

 
1 5 6 7 8 9 17
RU Mihail66 #24.11.2020 17:32  @aka_Krishna#24.11.2020 17:29
+
-
edit
 

Mihail66
mihail66

аксакал

a.K.> .... Если интересно - могу расписать к нему алгоритм.

Давай! Мне интересно как запись на SD организована.
   86.0.4240.11186.0.4240.111
RU aka_Krishna #24.11.2020 18:08  @Mihail66#24.11.2020 17:32
+
-
edit
 

aka_Krishna

новичок
Mihail66> Давай! Мне интересно как запись на SD организована.

О, я об этом даже не задумывался, что кому-то будет интересно. В общем, сначала была мысль создать массив типа ключ=значение, а потом скинуть его на флешку одномоментно, но я прикинул - такой массив ардуинке просто не поместится в память. Поэтому в setup() открывается файл на запись (заодним проверятся, открылся он или нет), а в loop() после старта пишется построчно каждые 0,1 сек, пока ракета не приземлится или пока не пройдет одна минута, на случай например, если ракета повисла на высоком дереве. После чего файл закрывается. Немного коряво, и в случае сбоя вроде как повреждается файловая система, но ничего лучше не придумал.
   86.0.4240.19886.0.4240.198
RU Mihail66 #24.11.2020 18:15  @aka_Krishna#24.11.2020 18:08
+
-
edit
 

Mihail66
mihail66

аксакал

a.K.>... а в loop() после старта пишется построчно каждые 0,1 сек...

А короче интервал можно сделать? Например писать с частотой 40-50Гц?
   86.0.4240.11186.0.4240.111
RU aka_Krishna #24.11.2020 18:20
+
-
edit
 

aka_Krishna

новичок
В целом алгоритм работы основан на смене фаз выполнения программы.

Орган чувств - барометрический датчик. Зажигание внешнее, пиропатрон используется для выброса парашюта. Светодиод - для индикации состояния. Второй аккум - чтобы в случае КЗ в пиропатроне не просело питание на ардуинке. Флешка понятно зачем.

Все выводы о состоянии и местоположении делаются на основании изменения высоты ракеты.

Все должно быть понятно из инфографики (я писал статью для одного сайта, и постарался нарисовать для них покрасивее). Дальше я просто скопирую пару абзацев текста из своей статьи, и приложу инфографику.

При включении питания контроллер подключается к датчику BMP280 и micro SD карте, отрывает файл лога, и если эти операции прошли успешно, переходит к основной программе. В случае неудачи сигнализирует светодиодом. Все это упаковано в функцию setup().

Работа основной части программы, записанной в функцию loop(), основана на смене стадий. Номер стадии хранится в переменной. При каждом повторе функции loop() программа обращается к этой переменной, чтобы определить стадию. Также при каждом повторе функции loop() производится замер высоты.

Стадии меняются последовательно.
Прикреплённые файлы:
 
   86.0.4240.19886.0.4240.198
RU aka_Krishna #24.11.2020 18:21
+
-
edit
 

aka_Krishna

новичок
Первая стадия — время до старта, начинается после выполнения функции setup(). Условие перехода ко второй стадии — текущая высота больше высоты старта на 10 метров.

Вторая стадия — полет до точки апогея. Высота максимума сравнивается с текущей, и если она меньше, то приравнивается к текущей. Условие перехода к третьей стадии — текущая высота меньше максимальной.

Третья стадия — свободное падение на 10 метров ниже апогея. Условие перехода к четвертой части — текущая высота меньше максимальной на 10 метров.

Четвертая стадия — спуск на парашюте. При наступлении этой стадии на 2 секунды подается питание на поджиг пиропатрона для выброса парашюта. Условие перехода к пятой стадии — текущая высота меньше чем высота старта + 10 метров.

Пятая стадия — ракета на земле. Продолжается до выключения или перезагрузки контроллера.
Прикреплённые файлы:
 
   86.0.4240.19886.0.4240.198
RU aka_Krishna #24.11.2020 18:25  @Mihail66#24.11.2020 18:15
+
-
edit
 

aka_Krishna

новичок
a.K.>>... а в loop() после старта пишется построчно каждые 0,1 сек...
Mihail66> А короче интервал можно сделать? Например писать с частотой 40-50Гц?

А я не пробовал, смысла не видел для себя. Листинг прикладываю, там просто одну переменную поменять, если мне склероз не изменяет. Я с этого компа, за которым сижу, не могу открыть ino файл. А нет, еще параметры BMP280 надо будет поменять, чтобы он по обращению от контроллера делал замеры, или вписать в параметры STANDBY_MS_1, чтобы замеры каждую миллисекунду делались. Будет ли успевать контроллер - фиг знает. Будет ли успевать писаться на флешку - тоже.

По результатам работы с этим контроллером я решил, во-первых, перейти на ESP32, чтобы не парится с памятью, и иметь вайфай, а во-вторых - писать программку на питоне, а не на C++. Вот тут я замерю время выполнения всех операций, все-таки микропайтон скорее всего будет работать медленнее, чем скомпилированная программа.
Прикреплённые файлы:
 
   86.0.4240.19886.0.4240.198
Это сообщение редактировалось 24.11.2020 в 18:31
BE pinko #24.11.2020 21:06  @aka_Krishna#24.11.2020 18:08
+
-
edit
 

pinko

опытный

a.K.> После чего файл закрывается. Немного коряво, и в случае сбоя вроде как повреждается файловая система, но ничего лучше не придумал.

будете удивлены, как часто файл будет поврежден из за плохих контактов - высокого ускорения, выброса пиропатрона или жесткой посадки...

Гораздо лучший способ - это буферизация информации в микросхеме памяти (EEPROM или FLASH), а затем передать ее на карту - сразу в конце полета, с помощью кнопки, автоматический трансфер при вставке SD-карты, по команде с ПК, и т.д.
   83.083.0
RU Mihail66 #24.11.2020 21:22  @aka_Krishna#24.11.2020 18:25
+
-
edit
 

Mihail66
mihail66

аксакал

a.K.> А я не пробовал, смысла не видел для себя.

Не, мне алгоритм работы полетного контроллера не интересен.
Но вот для себя я никак не могу заставить записывать данные на флешку постоянно с одинаковым периодом, и чтобы интервал был немногим длиннее одного цикла. Все потому, что я языков программирования не знаю, и пользуюсь только FLP. Максимальная частота выборки, которую я добился от АТмеги358 это примерно 36Гц, но она постоянно меняется, хоть и не сильно, и это напрягает.
   86.0.4240.11186.0.4240.111
+
-
edit
 

SashaMaks
SashaPro

аксакал

pinko> будете удивлены, как часто файл будет поврежден из за плохих контактов - высокого ускорения, выброса пиропатрона или жесткой посадки...
pinko> Гораздо лучший способ

Ещё лучший способ отказаться от записи в файл и писать прямо в флеш, тогда будут все плюшки от eeprom + огромный размер памяти за меньшие деньги.
Так же это ускоряет запись на SD в принципе, так как обработка файловых систем занимает какое-то процессорное время и иногда не маленькое, что приводит к задержкам в записях или неполной загрузке ЦП.
В общем, прямая запись на SD снимает вопрос от пропусков, ошибок записи, повреждений файлов, максимально скоростная, дешевая, простая и т.д. и т.п.
SD память можно по-своему раскроить, создать свою простую файловую систему, например, сделать 8 областей для нескольких записей, а первый сектор в 512 байт использовать, как информационный заголовочный.

Я так у себя в стендовой и ракетной электронике делаю, и ничего не теряется.
В конце-цонцов, карточку можно намертво припаять, а данные перекачивать через USB, но ещё ни разу такой необходимости не было.
   86.0.4240.19886.0.4240.198
RU Mihail66 #25.11.2020 10:00  @SashaMaks#24.11.2020 21:43
+
-
edit
 

Mihail66
mihail66

аксакал

SashaMaks> Ещё лучший способ отказаться от записи в файл и писать прямо в флеш, тогда будут все плюшки от eeprom + огромный размер памяти за меньшие деньги.

А кстати, ты мне хорошую идею подкинул. Я как раз пишу на SD без всякой файловой системы, и если карту тупо припаять прям на плату, то это сведет к нулю возможный дребезг. Не знаю получится ли у меня потом читать карту через контроллер по USB, но я обязательно это попробую.
   86.0.4240.11186.0.4240.111

Xan

координатор

SashaMaks> В конце-цонцов, карточку можно намертво припаять, а данные перекачивать через USB, но ещё ни разу такой необходимости не было.

Можно намертво впаять что-нибудь такое:

(Blocked)

48LM01T-I/SM
   77

Mihail66
mihail66

аксакал

Xan> 48LM01T-I/SM

Маловато будет. Мне ее и на 3 минуты не хватит.
   86.0.4240.11186.0.4240.111
RU SashaMaks #25.11.2020 13:45  @Mihail66#25.11.2020 13:22
+
-
edit
 

SashaMaks
SashaPro

аксакал

Xan>> 48LM01T-I/SM
Mihail66> Маловато будет. Мне ее и на 3 минуты не хватит.

Если писать 5000 значений в секунду, то каждую секунду потребуется 10кБ памяти - это только 1мин 40сек для одной записи, а на 10кГц и вовсе 50с.

Ещё лучше тогда такой чип: (https://www.winbond.com/resource-files/w25q40bw%20revf%20101113.pdf)

на купленной плате уже стоит один похожий: W25Q16 на 16Мбит, но флешка программируется так быстро, что код для этой микрухи до сих пор недописан, а это ещё и программирование USB и софта к нему.

Пожалуй попробую добить эту тему, там же скорость записи просто космическая...
   87.0.4280.6687.0.4280.66
Это сообщение редактировалось 25.11.2020 в 13:56

apakhom

втянувшийся
Xan> 48LM01T-I/SM
Xan> http://ww1.microchip.com/downloads/en/DeviceDoc/20006008C.pdf

А мне понравилась! :) Все больше "микрочипом" восхищаюсь :)
Это ж надо было придумать: в одном корпусе SRAM и EEPROM. Да она еще в фоне сама бэкапы ОЗУ делает!
Получается до старта можно FIFO прямо на ней организовать без всякого буферного ОЗУ.

Спасибо за наводку :)
   87.0.4280.6687.0.4280.66
RU apakhom #25.11.2020 14:03  @SashaMaks#25.11.2020 13:45
+
-
edit
 

apakhom

втянувшийся
SashaMaks> Если писать 5000 значений в секунду, то каждую секунду потребуется 10кБ памяти - это только 1мин 40сек для одной записи, а на 10кГц и вовсе 50с.

А нафига такие скорости? :)
   87.0.4280.6687.0.4280.66
RU Mihail66 #25.11.2020 14:05  @SashaMaks#25.11.2020 13:45
+
-
edit
 

Mihail66
mihail66

аксакал

SashaMaks> на купленной плате уже стоит один похожий: W25Q16 на 16Мбит

А он походу точно так же как и AT24С256 организован?
   86.0.4240.11186.0.4240.111
RU SashaMaks #25.11.2020 14:10  @apakhom#25.11.2020 14:03
+
-
edit
 

SashaMaks
SashaPro

аксакал

apakhom> А нафига такие скорости? :)

Для измерения быстроизменяющихся показаний с тензодатчика и более качественной последующей фильтрации данных, так как данных записывается больше благодаря тому, что сам контроллер меньше складывает.
   87.0.4280.6687.0.4280.66
RU SashaMaks #25.11.2020 14:13  @Mihail66#25.11.2020 14:05
+
-
edit
 

SashaMaks
SashaPro

аксакал

Mihail66> А он походу точно так же как и AT24С256 организован?

Не знаю, но у них есть 2-х и даже 4-х кратное ускорение записи и чтения за счёт параллельно подключенных SPI, которые работают на больших частотах. У W25Q16 частота SPI вообще до 104МГц доходит - суммарно 416МГц!

Но и так если писать данные с частотой 100кГц, то тоже будет только 160с, но попробовать можно...
   87.0.4280.6687.0.4280.66
+
-
edit
 

Tayfur

втянувшийся
Для БРЭО в качестве питания хочу воткнуть коробку АА и Li-Ion АА. Подскажите, какой ёмкости конденсатор желательно воткнуть параллельно, чтобы обезопаситься от дребезга контактов. Надо ли до конденсатора последовательно поставить резистор, чтобы у аккумулятора не сработала защита, если она там вдруг есть?
Прикреплённые файлы:
СнимокБат.PNG (скачать) [287x272, 36 кБ]
 
 
   86.0.4240.19886.0.4240.198
+
-
edit
 

Mihail66
mihail66

аксакал

Tayfur> Для БРЭО в качестве питания хочу воткнуть коробку АА и Li-Ion АА.

Лучше бы припаять намертво. Я уже несколько раз попадал под дребезг, конденсатор на 1000мФ не спас контроллер от перезагрузки. А какая емкость у Li-Ion планируется?
   86.0.4240.11186.0.4240.111
+
-
edit
 

Tayfur

втянувшийся
Tayfur>> Для БРЭО в качестве питания хочу воткнуть коробку АА и Li-Ion АА.
Mihail66> Лучше бы припаять намертво. Я уже несколько раз попадал под дребезг, конденсатор на 1000мФ не спас контроллер от перезагрузки. А какая емкость у Li-Ion планируется?

Аккумулятор литий-ионный 14500 ICR 3.7V 800mAh (14x50мм) (факт. 800)

Так-то понимая тщетность пружинки предполагается повесить это плюсом вниз.
   86.0.4240.19886.0.4240.198
+
-
edit
 

Mihail66
mihail66

аксакал

Tayfur> Так-то понимая тщетность пружинки предполагается повесить это плюсом вниз.

Да какая разница, все равно в полете ускорения разнонаправленные. В моем случае обе нештатки с контроллером закончились тем, что полетные данные на активном участке были затерты, в то время как бортовая камера активный участок полета записала но файл не проиндексировала. Т.е. контроллер перезагружался либо от рывка при сработке ССР, либо от удара при приземлении, а камера в этот момент отрубалась и начинала создавать новый файл. Контроллер и камера запитывались параллельно.

Припаяй проводочки и дело с концом.

Tayfur> Аккумулятор литий-ионный 14500 ICR 3.7V 800mAh

А не будет мало?
   86.0.4240.11186.0.4240.111
Это сообщение редактировалось 30.11.2020 в 18:51
+
-
edit
 

Tayfur

втянувшийся
Вопрос по минимальной ёмкости конденсатора на землю на ножке сброса. По вашему опыту каким он должен быть?
"Запчасть" из темы Ардуинка передатчик HC-12 на микросхеме Si4463.
Чтобы "запчасть" включилась с дефолтными настройками на ножке SET нужно выдержать землю 40мс при включении. Ножка внутри схемы подтянута к плюсу. Допустимое напряжение питания 3.2-5.5В, собираюсь питать напрямую от LI-Ion.
Так-же SET собираюсь подцепить к Ардуино для перенастройки HC-12. Но при включении у Ардуинки, если не ошибаюсь, высокоимпедансное состояние, и будто не должно мешать.
   86.0.4240.19886.0.4240.198
+
-
edit
 

apakhom

втянувшийся
Tayfur> Вопрос по минимальной ёмкости конденсатора на землю на ножке сброса. По вашему опыту каким он должен быть?
Сильно упрощенно t=RC :) - ну и "про запас" увеличить С раз в 5..10
   87.0.4280.6687.0.4280.66
AD Реклама Google — средство выживания форумов :)
+
-
edit
 

Tayfur

втянувшийся
Tayfur>> Вопрос по минимальной ёмкости конденсатора на землю на ножке сброса. По вашему опыту каким он должен быть?
apakhom> Сильно упрощенно t=RC :) - ну и "про запас" увеличить С раз в 5..10

Подтягивающий резистор можно замерить между SET и VCC? Нужно полагать нижняя правая SMD-шка на фото этот резистор и есть?
Прикреплённые файлы:
HC-12.jpg (скачать) [297x512, 63 кБ]
 
 
   86.0.4240.19886.0.4240.198
1 5 6 7 8 9 17

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