Борисов назвал причину гибели «Луны-25»
Российская станция «Луна-25» разбилась о поверхность спутника из-за того, что акселерометр не передал информацию, необходимую для выключения двигателя, заявил глава «Роскосмоса» Юрий Борисов.
Российская станция «Луна-25» разбилась о поверхность спутника из-за того, что акселерометр не передал информацию, необходимую для выключения двигателя, заявил глава «Роскосмоса» Юрий Борисов.
Была одна офигенная игра на телефон, где надо было железным шариком лопать пузыри в строгой последовательности
Всем здравствуйте! Недавно сломалась детская автоматическая качелька (сгорела плата) и я решил заменить ее на Ардуино нано. Прикупил платки: члюч на мосфете для управлением моторчиком, Акселерометр-гироскоп на базе mpu9250. Немного об устройстве: раскачивалие люльки осуществляется моторчиком на 12в через редуктор (установленны в блоке управления где вентилятор). Раскачивает люльку моторчик только в одну сторону, в обратную сторону отклоняется по инерции. Я прикрепил mpu9250 к днищу люльки, а ардуино и все остальные потроха запихал в корпус блока управления. При написании скетча столкнулся с проблемой: при подаче на регулятор 12 вольт качалка раскачивается и ардуино зависает, а при подаче на регулятор 6 вольт качалка качается минуты 3-4 и тоже зависает.
скетч
#include <Wire.h>
#include <TimerOne.h>
#define MPU9250_ADDRESS 0x68
#define GYRO_FULL_SCALE_250_DPS 0x00
#define GYRO_FULL_SCALE_500_DPS 0x08
#define GYRO_FULL_SCALE_1000_DPS 0x10
#define GYRO_FULL_SCALE_2000_DPS 0x18
#define ACC_FULL_SCALE_2_G 0x00
#define ACC_FULL_SCALE_4_G 0x08
#define ACC_FULL_SCALE_8_G 0x10
#define ACC_FULL_SCALE_16_G 0x18
#define relay_pin 8 // пин мосфета / реле
int flagMosphet = 0;
// This function read Nbytes bytes from I2C device at address Address.
// Put read bytes starting at register Register in the Data array.
void I2Cread(uint8_t Address, uint8_t Register, uint8_t Nbytes, uint8_t* Data)
{
// Set register address
Wire.beginTransmission(Address);
Wire.write(Register);
Wire.endTransmission();
// Read Nbytes
Wire.requestFrom(Address, Nbytes);
uint8_t index=0;
while (Wire.available())
Data[index++]=Wire.read();
}
// Write a byte (Data) in device (Address) at register (Register)
void I2CwriteByte(uint8_t Address, uint8_t Register, uint8_t Data)
{
// Set register address
Wire.beginTransmission(Address);
Wire.write(Register);
Wire.write(Data);
Wire.endTransmission();
}
// Initial time
long int ti;
volatile bool intFlag=false;
// Initializations
void setup()
{
pinMode(relay_pin, OUTPUT);
// Arduino initializations
Wire.begin();
Serial.begin(115200);
// Set accelerometers low pass filter at 5Hz
I2CwriteByte(MPU9250_ADDRESS,29,0x06);
// Set gyroscope low pass filter at 5Hz
I2CwriteByte(MPU9250_ADDRESS,26,0x06);
// Configure accelerometers range
I2CwriteByte(MPU9250_ADDRESS,28,ACC_FULL_SCALE_4_G);
// Configure gyroscope range
I2CwriteByte(MPU9250_ADDRESS,27,GYRO_FULL_SCALE_1000_DPS);
pinMode(13, OUTPUT);
Timer1.initialize(20000); // initialize timer1, and set a 1/2 second period
Timer1.attachInterrupt(callback); // attaches callback() as a timer overflow interrupt
// Store initial time
ti=millis();
}
// Counter
long int cpt=0;
void callback()
{
intFlag=true;
digitalWrite(13, digitalRead(13) ^ 1);
}
// Main loop, read and display data
void loop()
{
while (!intFlag);
intFlag=false;
// _______________
// ::: Counter :::
// Display data counter
// Serial.print (cpt++,DEC);
// Serial.print ("t");
// ____________________________________
// ::: accelerometer and gyroscope :::
// Read accelerometer and gyroscope
uint8_t Buf[14];
I2Cread(MPU9250_ADDRESS,0x3B,14,Buf);
// Create 16 bits values from 8 bits data
// Accelerometer
int16_t ay=-(Buf[2]<<8 | Buf[3]);
// Gyroscope
int16_t gx=-(Buf[8]<<8 | Buf[9]);
// Display values
// Gyroscope
if(gx>=0){
flagMosphet = 1;
}
else if(gx<-30 || ay<-100){
flagMosphet = 0;
}
digitalWrite(relay_pin, flagMosphet);
}
ссылка на библеотеку TimerOne.h
ардуино просто подает на мосфет сигнал 1 и останавливается оставляя моторчик под нагрузкой.
Доброго времени суток, купил смартфон xiaomi redmi 8a, есть проблема с гироскопом или акселерометром, в приложении real rasing 3 минут через 5 перестает рулиться, аппарат совсем новый информации не нашел. Может кто нибудь поможет советом
Собираю перчатки для захвата движения на инерциальных сенсорах для работы в школьном лагере Таватуй. Использую платы BMI160. На них я много чего сделал, периодически пересобираю проекты для модернизации, так вот при демонтаже повредил одну плату. Вот так:
Можно заметить скол с одного края. Грустно немного, выкидывать не очень люблю сенсоры. Поэтому напоследок...
Собираю такую установку:
Это USB веб-камера превращенная в так называемый электронный микроскоп (по версии алиэкспресса). Там можно фокусное расстояние настраивать.
По центру выпилено технологическое отверстие, чтобы можно было мини-дрелью подобраться. Сама плата дополнительно зафиксирована термоклеем.
Сам процесс. Первые 15 секунд пристрелочно конденсатор подпиливаю, чтобы с нажимом потренироваться.
Всего в чипе два сенсора, МЭМС гироскоп и акселерометр. Возможно мы их видим в начале распила как два прямоугольника. А может и нет.
Самое интересное на 50 секунде, где схема оголяется.
В конце видны пины чипа, но только с обратной стороны :)
Выводов не будет, просто стало интересно что из этого выйдет.
Читаешь себе статью про то как на акселерометрах жесты распознают...
Perng, J. K., Fisher, B., Hollar, S., & Pister, K. S. (1999, October). Acceleration sensing glove (ASG). In Wearable Computers, 1999. Digest of Papers. The Third International Symposium on (pp. 178-180). IEEE.
Доброго всем времени суток, продолжаю серию постов про образовательную робототехнику. Здесь я описываю результаты и просто ход выполнения своей научной работы.
Кратко: разрабатываю специальную робо-накидку на одежду, которая сможет оцифровывать часть двигательных навыков мастеров своего дела и передавать это тем, кто только учится.
О чем этот пост: будет проведена проверка предположения о том, что два сенсора на разных МК (В каждом 3 осевой гироскоп и 3 осевой акселерометр) в одной плоскости при одинаковых воздействиях будут показывать примерно одинаковые показания.
Конечно знающие люди могут предугадать ответ сразу. Для таких я добавлю, что лучше было перепроверить, уж слишком много поспешных выводов я делал ранее в элементарных вещах, которые потом здорово портили мне жизнь. Визуально оценить разницу тоже полезно, что бы принять решение о том, надо ли более строго считать расхождения.
Зачем это надо?
Во-первых на этом строится предположение о том, что не важно в какую часть фаланги пальца можно закреплять сенсор, данные будут корректными. Если предположение не верное, то это значит, что нужна очень тонкая настройка костюма, чтобы его правильно надеть. Сами понимаете, что на этом проект нужно или сильно переориентировать, либо менять элементную базу, либо просто закрывать.
Во-вторых. Представьте, что Вы показываете пальцем на небо (увидели вертолет и показываете другу где он) (ну или кидаете грамма-наци зигу, когда в интернете кто-то пишет с ошибками, кому как понятнее будет). В этот момент палец выпрямлен, а значит все три сенсора на пальце должны выдавать примерно схожий рисунок по данным. Это называется взаимозависимостью сенсоров. Это нужно будет для одной из частей автоматической корректировки ошибок сенсоров между собой.
Вся соль моей работы будет в том, что за счет связанности сенсоров и специфической механики движения тела человека - мы получим больше возможностей для корректировки ошибок, чем если бы использовали те же сенсоры, но в квадрокоптере.
Задачи:
1) Подготовить скетч для вывода данных для трех осей гироскопа\акселерометра (отдельные тесты по 3 значения). 500000 БОД. Задержка 50 мс. Один скетч, чтобы управлять сенсорами и в ESP32 и в Arduino MEGA 2560. Сенсоры BMI160. Данные без дополнительной обработки, только то, что сенсор выдает по умолчанию. Сам скетч отсюда. Я его лишь немного доработал.
2) Одновременно вывести значения через Плоттер по последовательному соединению.
3) Покрутить вдоль крена, тангажа и рыскания.
4) Сравнить визуально графики.
Схема включения:
Поехали. Гироскоп:
И еще раз.
Акселерометр:
Вполне.