Создание собственной системы стабилизации
Вот немного полетал вчера, ветер был 4-5м\с сс порывами до 8. Можно увидить этот по верхушкам деревьев, плюс не доконца отстроенные ПИД, получилась болтанка.
Покупаю bmp085 на маленькую платку, брать второй на новую или все таки рискнуть взять что-нибудь по приличнее?
ИМХО лучше уж тогда взять ВМР180,он меньше и вроде немного точнее.На Ибее можно найти за примерно 6еу с доставкой.
Не я подумываю о двух бяках:
аналоговый MPX4115A и цифровой MS5611-01BA01 причем установить оба, боюсь не справиться с программным…
Таймкоп кстати добавил к своей NAZE32 гироскоп L3g4200 в программном…
на MPX4115A нужен внешний АЦП , например 16 битный ADS1100 как у немцев …
тот что в проце непрокатит …
Тоесть 12 битного АЦП мало будет?
Внешнее АЦП вешать не хочу по причине загруженности плат, я и так коэффициент дезинтеграции 1.5 беру, что для домашнего изготовления не есть гуд, конечно можно взять и 1.2 но тогда плату явно придётся заказывать и скорей всего 4 слоя 😦
MPX4115A ведь старый баро, я его еще у Руссокоптера видел, они в свою очередь вроде у немцев взяли. Какой прикол такую здоровую байду на плату ставить при наличии MS5611?
хотя 55уе и три комплекта (2 четырёхслойных) плат…
есть вариант MPXV5004DP - он по меньше будет, а скорей всего выведу несколько лап АЦП на разъём, а там посмотрим чё туда цеплять…
Присмотритесь к www.freescale.com/files/sensors/…/MPXA6115A.pdf разрешающая способность вроде как выше и шире рабочий диапазон температур
Тут ещё MPU6500 объявилось документации пока нет но по ходу работает как и MPU6000 и I2C и SPI
Тут ещё MPU6500 объявилось документации пока нет но по ходу работает как и MPU6000 и I2C и SPI
Что то я невкурил, в чем отличие от существующего MPU6000 ?
Edit: Ага, только размер уменьшили… был 4x4 стал 3x3
Никто в продаже кварцы 8мГц как на фотке не встречал? кончились 😦 , не хочу ставить что-то другое (лень рисовать), хотя один есть на выпаять…
потихоньку начал закупатся, получается не очень то и дёщево, в полной комплектации с GPS и сонаром как бы в 150 уголовных вложится…
CSTCE ??? если сильно нада могу поделиться по сходной цене …
Следуя за Таймкопом code.google.com/p/afrodevices/source/list , я тоже обновил прошивку маленькой платки, “полёт” нормальный, правда пока не до самих полётов 😦 (не приехало ещё всё что нужно, но в пути)
добавление LSMки:
board.h
typedef enum AccelSensors {
ACC_DEFAULT = 0,
ACC_ADXL345 = 1,
ACC_MPU6050 = 2,
ACC_MMA8452 = 3,
+ ACC_LSM330A = 4,
} AccelSensors;
-------------------------------------------------------------------------
// AfroFlight32
#include "drv_system.h" // timers, delays, etc
#include "drv_adc.h"
#include "drv_adxl345.h"
#include "drv_bmp085.h"
#include "drv_hmc5883l.h"
#include "drv_i2c.h"
#include "drv_ledring.h"
#include "drv_mma845x.h"
#include "drv_mpu3050.h"
#include "drv_mpu6050.h"
#include "drv_l3g4200d.h"
#include "drv_pwm.h"
#include "drv_uart.h"
#include "drv_hcsr04.h"
+ #include "drv_lsm330acc.h"
+ #include "drv_lsm330gyro.h"
#endif
sensors.c
// Autodetect gyro hardware. We have MPU3050 or MPU6050.
if (mpu6050Detect(&acc, &gyro, cfg.mpu6050_scale)) {
// this filled up acc.* struct with init values
haveMpu6k = true;
} else if (l3g4200dDetect(&gyro)) {
havel3g4200d = true;
}
- else if (!mpu3050Detect(&gyro)) { //хотя тут можно подумать о совместимости
}
+ else if (!lsm330gyroDetect(&gyro)) {
// if this fails, we get a beep + blink pattern. we're doomed, no gyro or i2c error.
failureMode(3);
}
// Accelerometer. Fuck it. Let user break shit.
retry:
switch (cfg.acc_hardware) {
case 0: // autodetect
case 1: // ADXL345
acc_params.useFifo = false;
acc_params.dataRate = 800; // unused currently
if (adxl345Detect(&acc_params, &acc))
accHardware = ACC_ADXL345;
if (cfg.acc_hardware == ACC_ADXL345)
break;
; // fallthrough
case 2: // MPU6050
if (haveMpu6k) {
mpu6050Detect(&acc, &gyro, cfg.mpu6050_scale); // yes, i'm rerunning it again. re-fill acc struct
accHardware = ACC_MPU6050;
if (cfg.acc_hardware == ACC_MPU6050)
break;
}
; // fallthrough
case 3: // MMA8452
if (mma8452Detect(&acc)) {
accHardware = ACC_MMA8452;
if (cfg.acc_hardware == ACC_MMA8452)
break;
}
+case 4: // LSM330ACC
+ if (LSM330ACCDetect(&acc)) {
+ accHardware = ACC_LSM330A;
+ if (cfg.acc_hardware == ACC_LSM330A)
+ break;
+ }
}
ну и соответственно сами драйвера (они в архиве) положить в папку src и подключить к проекту сишные файлы в папку Drivers, как-то так…
только вот пока незнаю, баро у меня дохлый или конфликт где-то (новый баро едет)
Немного прикинул размеры плат, получается:
Нижняя 52Х64 крепления 45Х45 сзади хвостик - умещаются как раз 16 входов-выходов с корпусом и питанием (8 разъёмов MA03-2), в передней части умещаются 4 разъёма JST-SH 4-pin (4 входа на ключи для подсветки ULN2003, 2 UART и разъём для сонара) снизу (спереди) USB и MicroSD, по бокам два переходных разъёма на верхнюю плату MA12-1
Верхняя 52Х52, крепление 45Х45, пока думаю что делать со светодиодами, либо все вынести на верхнюю плату (что не есть хорошо), либо забить пусть тупо остаются на нижней (можно продублировать), можно так же сделать эротичный вырез в верхней плате, пока не знаю, начну разводить видно будет…
4 входа на ключи для подсветки ULN2003
Может ее вообще вынести на отдельную мини плату расширения и вывести все ноги от драйвера? Подозреваю, что не последняя плата у вас будет ее можно будет потом в других использовать без перепайки. А все ноги, потому что в будущем может захотеться использовать какие-нибудь световые паттерны для подсветки, где 4 вывода может мало оказаться
Я вообще в раздумьях - а надо оно мне, я просто копался в загашниках и нашел микруху…
Уряяя, все недостающие детали к моей трёшке уже на таможне, скоро испытания маленькой платки 😃 , обидно только, баро где-то затерялся, ну и фиг с ним 😃
Это как пойдет, я вон вообще хочу еще к ней отдельную атмегу развести чтобы сложные паттерны делать и не грузить мейн луп.
Заказал на орz светодиодиков, конденсаторов, разъёмов - ну, в общем, всякой мелочевки, оплатил 10-го, ещё не выслали, поругатся с ними или ещё подождать?
Написал претензию 😦 блин аж руки опускаются…
Денюжку вернут куплю лучше ещё одну батарейку…