Создание собственной системы стабилизации

SergDoc
RW9UAO:

ищите процедуру read_adc(). смотрите в нее, там указание канала и ожидание готовности.

А слона то я и не приметил, а теперь для тех кто с бронепоезда - если я вклинюсь в эти процедуры считаю акселерометр воткну филтр Кальмана www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=125320229… и верну полученное значение вместо данных с гироскопа? а дальше пущай полетает?

Кстати порт CS можно всё таки прижать к земле навечно а) акселерометр работать будет б) как пишут всё равно его дёргать программно надо, а значит атмега должна понять что она мастером стоит.

RW9UAO

вот смотрите, читается состояние гироскопов

	//--- Read gyros ---
	ReadGyros(false);
//вот тут можно сунуть опрос акселерометра

потом идет математика.

	//--- Start mixing by setting collective to motor input 1,2,3 and 4 ---
	//--- Calculate roll gyro output ---
	//--- (Add)Adjust roll gyro output to motors

и вместо простой пропорции вы можете поставить псевдоКалмана с вашей ссылки и ПИДЫ.
сигнал CS акселерометра вы повесьте на свободную ногу контроллера. мега поймет, что она мастер если выставить правильный бит при инициализации.

#include <iom128v.h>
#include <macros.h>
#include "main.h"
#include "tx_xemix.h"

//==============================================================================
//SPI initialize
void spi_init(void){
 //SPCR = 0x57; //setup SPI
 //SPCR = 0x57 | BIT(3); //setup SPI
 //SPCR = BIT(6) | BIT(4) |BIT(3) | 3;// SPE, MSTR, CPOL, fosc /128
 SPCR = BIT(6) | BIT(4) |BIT(3) | BIT(2) | 3;// SPE, MSTR, CPOL, CPHA, fosc /128
 //SPCR = BIT(6) | BIT(4) |BIT(3) | BIT(2) | 1;// SPE, MSTR, CPOL, CPHA, fosc /16
 SPSR = 0x00; //setup SPI
}
//==============================================================================
unsigned char spi(unsigned char x){
	SPDR = x;
	while(!(SPSR & (1<<SPIF)));
	return SPDR;
}
//==============================================================================
void read_ADIS(void){
unsigned char s;

	PORTB &= ~BIT(ADIS_CS);//set CS
	//spi(0x80 | );// WR
	spi(0x00 | 0x03);// next - Power supply output data
	spi(0x00);
	PORTB |= BIT(ADIS_CS);	//clear CS

	for(s = 0; s < 100; s++){NOP();}

	PORTB &= ~BIT(ADIS_CS);	//set CS
	SUPPLY_OUT = spi(0x05);// next - X-Axis Acceleration Data
	SUPPLY_OUT = SUPPLY_OUT << 8;
	SUPPLY_OUT |= spi(0x00);
	SUPPLY_OUT &= 0x3FFF;
	PORTB |= BIT(ADIS_CS);	//clear CS

	for(s = 0; s < 100; s++){NOP();}

	PORTB &= ~BIT(ADIS_CS);	//set CS
	XACCL_OUT = spi(0x07);// next - Y-Axis Acceleration Data
	XACCL_OUT = XACCL_OUT << 8;
	XACCL_OUT |= spi(0x00);
	XACCL_OUT &= 0x3FFF;
	PORTB |= BIT(ADIS_CS);	//clear CS

	for(s = 0; s < 100; s++){NOP();}

	PORTB &= ~BIT(ADIS_CS);	//set CS
	YACCL_OUT = spi(0x0D);// next - X-Axis Inclination Data
	YACCL_OUT = YACCL_OUT << 8;
	YACCL_OUT |= spi(0x00);
	YACCL_OUT &= 0x3FFF;
	PORTB |= BIT(ADIS_CS);	//clear CS

	for(s = 0; s < 100; s++){NOP();}

	PORTB &= ~BIT(ADIS_CS);	//set CS
	XINCL_OUT = spi(0x0F);// next - Y-Axis Inclination Data
	XINCL_OUT = XINCL_OUT << 8;
	XINCL_OUT |= spi(0x00);
	XINCL_OUT &= 0xFFF;
	PORTB |= BIT(ADIS_CS);	//clear CS

	for(s = 0; s < 100; s++){NOP();}

	PORTB &= ~BIT(ADIS_CS);	//set CS
	YINCL_OUT = spi(0x0B);// next - Sensor Temperature Data
	YINCL_OUT = YINCL_OUT << 8;
	YINCL_OUT |= spi(0x00);
	YINCL_OUT &= 0xFFF;
	PORTB |= BIT(ADIS_CS);	//clear CS

	for(s = 0; s < 100; s++){NOP();}

	PORTB &= ~BIT(ADIS_CS);	//set CS
	TEMP_OUT = spi(0x03);// next - Power Supply Data
	TEMP_OUT = TEMP_OUT << 8;
	TEMP_OUT |= spi(0x00);
	TEMP_OUT &= 0x3FFF;
	PORTB |= BIT(ADIS_CS);	//clear CS
}
//==============================================================================

а вообще такая мысль. берите хрюдуино на меге и побалуйтесь с мультивии проектом. вы и так к нему идете =)

SergDoc

Огромное спасибо, с портом вроде подружился, щас какие-то цифирки считаю,

RW9UAO:

а вообще такая мысль. берите хрюдуино на меге и побалуйтесь с мультивии проектом. вы и так к нему идете =)

а зачем брать склепать платку три в одном атмега+асель поI2C + гироскопы - что-то на подобии мультивия и получится ну USB для полного счастья заливай прошивку и вперёд на мины 😁 двухслойки у меня получаются

SergDoc

Даже название придумал KUii или KUrdunio😁

7 days later
SergDoc

Первые наброски: може ещё чё поменяю

SergDoc

Блин? а картинка вроде ничего была, ладно всё равно переделываю, платку почти развёл новую, совместима с Arduino Nano, через пару дней выкину, пока дтальки подбираю помельче, от виртуального USB/RS 232 отказался комы и дома и на работе имеются, железки старые в крайнем случае есть переходник, так что повесил обычный макс и разъём от телефона (евро) акселерометр LIS35DE (по I2C) гироскопы мутара из HK401 две управляемые кренки 1117 на 3.3V и 1.65V так что собираю из того что есть под руками, атмега 168 или 328 - что привезут сегодня платка размерами как КУК 52Х52…

SergDoc:

атмега 168 или 328

Из кука не хочу выпаивать, и так уже два раза выдирал, пока платки всякие делал, а кук портить не хочется, мало ли…

SergDoc

Выставляю схемку и платку на суд:

SergDoc

Кстати от КУКа с акселем я не отказался, просто я в программном как свинья в апельсинах, для начала посмотрю что получится, по крайней мера к ардуино больше инфы есть, а там вернусь (если всё получится) к КУКу и SPI…

native18

Каков размер платы? Все будет на одной плате или еще будут какие платы подсоединяться?

SergDoc

платка 52X52мм больше ничего всё в одном (макс, атмега, гироскопы, аксель и стабилизаторы), я налепил квадратиков лишних хлорное железо кончалось - экономил…

По поводу гироскопов два выпаяны третий вместе с платкой своей как в куке стояком

Свёрлышки только после выходных привезут так что дальше делать буду только на следующей неделе

native18

Сергей, таким коротким сообщением Вы не отвертитесь. 😉 Нужны характеристики, ну или хотя бы пробные испытания, а еще лучше летные. Хоть внешний вид покажите для начала.

SergDoc

Я только платку собрал, теперь думаю попробовать мльтивийную прошивку подцепить, чёт мне не совсем нравится, что получилось без прошивки всё равно не проверю, буду пробовать…

шас попробую залить посмотрю вообще на что нибудь реагировать будет

SergDoc

Внимание !!! в схеме ошибка - у макса 232 - перепутаны входы с выходами!!! блин пол ночи просидел не мог понять чёй то он бутлоадер по SPI принял а дальше не в какую… ладно не так страшно выводы рядом окуратно перекину дорожки

Если комуто интересно - в ардуине бутлоадер можно залить и простым “пять проводков” программатором и STK200 в файле hardware\arduino\programmers.txt нужно прописать

stk200.name=STK200
stk200.protocol=stk200

и он появится в меню а самое главное работает…

SergDoc

И так путём экспериментов и выдирания микросхем добился связи с ПК зря на ресет кнопочку не сделал на SPI рфзъёме есть всё и ресет и корпус подцеплю туда… Теперь буду пробоватьпрошивками баловатся…

на максе 232 поменять выводы 11-14 12-13

SergDoc

Получил данные с акселерометра, полностью совместим с LIS302 только по схеме включения (моей) адрес устройства не 1D а 1С воюю дальше…

SergDoc

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

Если кто-нибудь скинет прошивку от MYNAME к Мультивию с аналоговыми гирами для ознакомления - буду очень благодарен…

Панкратов_Сергей
SergDoc:

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

Этот исход с самого начала ветки всем ясен был - и про программера стороннего и про то что Вий. Удивительно - что до Вас только дошло.

killmouse
SergDoc:

Если кто-нибудь скинет прошивку от MYNAME к Мультивию с аналоговыми гирами для ознакомления - буду очень благодарен…

Если не найдете до вторника прошивку, пишите в Лс, у меня на работе лежит одна версия, скину.