GPS с гироскопом и одометром.

Получил LEA-6R, собрал самую простую схему из даташита с UART на весу на макетке обычным паяльником… надеюсь чип еще жив)
Спамит в консоль какие-то сообщения… пока не разбирался, но хотелось бы, чтобы больше паяльником в него не тыкать, инфу о скорости, температуре и данные с гироскопа гнать в него через UART, вроде бы такой вариант возможен, где-то в доках проскакивало…
С трудом представляю как его отлаживать! Процесс калибровки ведь растянут во времени, да и скорость нужно с тачки снимать… придется с ноутом калиброваться, подробный лог вести и потом анализировать))

UPD1: Посмотрел что за сообщения…
с отрезанной ножкой от резистора в качестве антенны он не ловил спутники!
Припаял 10-15см проводок и модуль начал в консоль спамить команду уже со спутниками, так что чип не трупик!! Я боялся пайку 20Вт паяльником он не переживет…

UPD2: Да! Уже видит координаты и время, спамит в консоль) 14 спутников видит кусочком провода… интересно какой предел)
При закрытом окне координаты не показывает, открываю начинает показывать)

Я бы первым делом сделал дамп RAM, ROM и флэша.

ИМХО, только SPI и 2 IRQ. В этом-то модуль от того же LEA-6H и отличается, что эти суперсекретные BGA пины выведены наружу.

Все ublox чипы 16 канальные (но при этом не надо забывать про геостационарные SBAS, 2 из которых часто видны. Но их можно отключить).
Я видел в реальной жизни 15 (afair).

PS. Посмотрел на схему, MOSI не используется, только MISO, так что кормите его в зависимости от CS0/CS1.

Да, все именно так.

В описании протоколов я видел что команда, которая отправляет данные гироскопа, одометра поддерживается девайсами ADR…

и насколько я понял это “u-blox’ ADR with software sensor interface is available as a single chip UBX-G6010-SA-DR or as a chipset UBX-G6000/G0010, or as NEO-6V module” и Hardware sensor interface один лишь LEA-6R… не знаю, может эта страничка устарела, но модуль LEA-6H раза в полтора-два дешевле LEA-6R…
Так была бы уверенность что он имеет хотя бы софтварный интерфейс к функциям DR, то лучше бы собирать на нем

Пришел IMU… все классно с виду, но пока я его даже не трогал…

“отправляет” ? скорее показывает принятые.

Из всех сенсоров только BMA020 имеет SPI интерфейс, так что от LEA-6R толку никакого.

в описании Input/Output написано… с чего он бесполезный? 6R умеет все считать…
IMU хотел использовать для самопальной реализации фильтра Калмана, координаты брать из GPS мобилы, как-то не рассчитывал на железную реализацию в 6R

Кто юзает “Ардуину”:
“Ардуина” (типа Duemilanove) + “bluetooth shield”(от Seeed Studio) + смарт на “Андроид” -
может получится вполне функциональная система.
GPS и обработка в “Андроиде”, “Ардуина” + сенсоры - сбор данных.
(Опробовал связку (не в целях навигации) - вполне неплохо. )

Разобрал свой механический спидометр и обнаружил геркон, который одной ногой сидит на массе и замыкается 4 раза за 1 оборот троса. Замыкаемая нога, кажется доступна на разъеме. Сегодня подключился и получил результат: примерно 8 импульсов на 1 оборот колеса (замерял из салона по положению соска). Не надо ни чего колхозить :slight_smile:

Действительно, пробег машины на один оборот колеса вряд-ли больше 1,5м, т.е. в худшем случае импульс будет на 18см. Это очень неплохой показатель т.к. большинство машин имеют 0,22-0,25м на пульс. Проблемы наблюдаются при 30-40см на пульс и то могут компенсироваться некоторыми ньюансами вождения. Ура!

зы. Плохо что на массе, это как в suzuki, для dr-gps всеже нужны 12в пульсы. В худшем случае придется колхозить инвертер сигнала. Прерывать землю не получится т.к. от той-же земли питается индикатор заднего хода. Понимаете, по пульсам невозможно определить направление движения автомобиля и калибрация не пройдет.

Ха-ха, это смотря какие колеса, на моих в 33 дюйма получается длинна окружности районе 2,63м., тогда один оборот это как раз зона риска ~ 32см. Хотя понятно, что колесо не бывает в реальности такого диаметра. Т.к. оно всегда проминается.

С 8 импульсами я наврал :frowning: Изначально замерял так: поставил машину, что бы было видно в каком положении сосок и проехал один оборот колеса. Получилось 8 штук.

Потом пробовал по другому: замечаю место где стою, проезжаю до срабатывания импульса, замеряю расстояние: то 75 см получается, то 130 см :slight_smile: Потом подумал, что надо ехать-то не от случайного места, а с того когда только-только импульс пришел :slight_smile:

Доработал обработку следующим образом: Регистрирую импульс когда геркон размыкается. Зажигаю белый светодид с момента замыкания до момента размыкания - это предупреждение, что скоро придет импульс. Затем надо сделать заметку на земле как только белый погаснет первый раз, до того как погаснет второй раз. Делать это лучше на горке, что бы не мучить сцепление.

Но было уже темно. Поэтому я взял два Озика с разными навигаторами, ездил по улицам и фиксировал диктофоном показания GPS-одометров и Arduino-вского. На Arduino получается не намного большие значения, чем на GPS (понятно, что дрейф нулевой точки и мусор ни кто не отменял). Сегодня переведу записи в цифры и все-таки узнаю какое, примерное расстояние я получу на один импульс.
Понятно, что dead reconing у меня все равно не получится, но будет более точный одометр, чем в штатной приборке, который врет на 20% из-за бОльших колес.

Мдааа, на курвиметр непохоже :frowning: Предлагаю использовать и фронт и срез импульса. Получите теже 0,16m/pulse

Нет, т.к. никто не обещал, что коэф. заполнения строго равен 50%. Один импульс будет, предположим, после 10 см, а второй - после 23.

незнаю как там работает ардунские схемы, но в фирменном чипе ublox один раз в секунду в окончательный рассчет принимается только количество импульсов, собранных за предыдущую секунду. Таким образом важным является лишь число, например 35 или 48 импульсов и неважно в каком они были порядке и хромает-ли ритм.

Кроме того зная пропорции работы геркона в спидометре вкл-выкл при генерации удвоенного меандра можно и подправить картинку. Генерить его всеравно придется т.к. все DR-GPS схемы считают только фронты.

Что-то я тогда совсем не понимаю необходимости умножать количество импульсов. Точность-то это никак не повысит…

Что-то у меня сходу не придумывается “подправлялка” на логике, которая автоматически подстраивает длительность импульса под его период. Вполне вероятно, что для этого придётся ставить отдельный контро… ардуину :slight_smile:

Верно, в моем случае длинна импульса явно меньше периода.

Понять очень просто. В герконо-магнитных механизмах меняется частота и длительность импульсов. DR получает только частоту, длительность пропускает, а это дополнительная информация.

можно погуглить “удвоитель частоты” вторая ссылка дает пищу уму поизобретать http://irls.narod.ru/it/uchi.htm

В связи с покупкой raspberry pi я все таки поcтараюсь разобраться
с набором параметров посылаемых на CAN шине контроллером ABS/EPS системы
которая стоит на ‘Audi A4/S4 B6/B7’.
Судя по диагностике их там довольно много, и названия весьма замысловатые…

Измеряется по крайней мере скорость каждого колеса (Geschwindigkeit: km/h), ускорение в 2 направлениях (Querbeschleunigung/Längsbeschleunigung: m/s²) ,
угол поворота (Lenkwinkel: °), скорость изменения угла поворота (Drehrate: °/s).
Druck [bar] это видимо тормозное усилие.
С цифрами надо разбираться, Längsbeschleunigung выглядит странно.
Найти соответствие между параметрами и CAN адресами задача конечно нудная, но разрешимая,
поскольку адаптер в Lаwicel моде использует легко читаемый ascii формат.
Думаю на машинах VW с ESP это тоже булет работать.


	Block 1				
	Zeit	Geschwindigkeit	Geschwindigkeit	Geschwindigkeit	Geschwindigkeit
Markierung	[s]	[km/h]	[km/h]	[km/h]	[km/h]
	1.15	0	0	0	0
	2.63	0	0	0	0
	3.99	0	0	0	0
	5.41	0	0	0	0
	6.74	3	3	3	3
	8.08	5	5	5	5
	9.48	5	5	5	5
	10.80	3	3	3	3


Block 5				
Zeit	Lenkwinkel	Drehrate	Druck	Querbeschleunigung
[s]	[°]	[°/s]	[bar]	[m/s²]
1.59	12.5	0.0	-1.0	-0.38
2.99	12.5	0.0	23.8	-0.38
4.38	10.0	0.0	-1.0	-0.38
5.76	10.0	0.0	-1.0	-0.38
7.09	12.5	-0.4	-1.0	-0.38
8.47	12.5	-0.5	-1.0	-0.38
9.83	10.0	0.0	6.5	-0.19
11.15	10.0	-0.1	15.0	-0.19


Block 10		
Zeit	Längsbeschl.	Längsbeschl.
[s]	[m/s²]	[m/s²]
1.95	292	-195
3.35	389	-195
4.75	195	-292
6.10	-778	-1070
7.45	-389	-778
8.81	97	-389
10.17	1168	195
11.51	1460	778


Block 23	
Zeit	Schalterstellungen
[s]	[]
2.54	101111
3.87	101111
5.28	101111
6.62	101111
7.96	101111
9.32	101111
10.68	101111
12.02	101111

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

Кое-что удалось нагуглить, см. http://www.ate.uniovi.es/12609/seminario_slides.pdf
по id= 4A0H Bremse 3 и 5A0H Bremse 2
http://www.docstoc.com/docs/88972296/CAN–und-LIN-Bus-in-AUDI-Fahrzeugen
Испанец похоже имел доступ к оригинальной документации, его данные по 4A0
говорят что передается не только скорость колес, но и направление их движения.
А вот по 5A0 мой лог дает не 8 битное, а 8 байтовое поле, т.е. он взял кусок из
полного пакета.
Из CAN.ppt


Motor: x0xH / x8xH
Motor-Peripherie: x1xH
Kombi: x2xH
Getriebe: x4xH
ACC: x6xH
ABS: xAxH
ABS-Peripherie: xCxH

 0C0H Lenkwinkel (RB-Sensor)
 0C2H Lenkwinkel (ITT-Sensor für ITT-FDR)
 0C4H Lenkwinkel (ITT-Sensor für RB-FDR)
 0C8H (Gierraten / Querbeschleunigung)  
 100H MSG1 (V6 TDI)
 112H PSG1 (V6 TDI)
 1A0H Bremse 1
 280H Motor 1 
 288H Motor 2
 2A0H Bremse 4
 320H Kombi 1  
 380H Motor 3 
 388H Motor 4
 420H Kombi 2 
 440H Getriebe 1
 480H Motor 5    
 4A0H Bremse 3 
 500H MSG2 (V6 TDI)
 512H PSG2 (V6 TDI)
 520H Kombi 3
 580H Motor Flexia
 5A0H Bremse 2   
 7C0H Lenkwinkel-Konfigurierungskennung (RB)
 7C2H Lenkwinkel-Initialisierungskennung (ITT)

Из отсортированного лога инициализации (id+mgs_size in bytes+description)


200 3 ? Motor: x0xH / x8xH
200 7 ? Motor: x0xH / x8xH
2D0 3 ? Motor: x0xH / x8xH
790 1 ?
790 5 ?
790 6 ?
790 7 ?

Более серьезная диагностика:


050 4 ?
0C2 8 Lenkwinkel (ITT-Sensor für ITT-FDR)
1A0 8 Bremse 1
280 8 Motor 1 
288 8 Motor 2
320 8 Kombi 1
380 8 Motor 3
38A 4 ? Motor: x0xH / x8xH
390 8 ?
394 8 ?
420 8 Kombi 2
440 8 Getriebe 1
44A 8 ? Getriebe 2 ?
44C 8 ? Getriebe 3 ?
480 8 Motor 5 
488 8 ? Motor 6 ?
4A0 8 Bremse 3 (documented)
4A8 8 ? Bremse 4 ?
51A 8 ? Motor-Peripherie X ?
520 8 Kombi 3
540 8 ? Getriebe 4 ?
550 3 ?
572 1 ?
580 8 Motor Flexia ?
588 8 ? Motor X ?
5A0 8 Bremse 2 (documented)
5D0 6 ?
5D2 8 ?
5E0 8 ?
5F2 2 ?

Еще есть голландский лог для Audi A6


280 8 Motor 1 (09 A6 00 00 2A 00 1C 2A)
288 8 Motor 2 (81 76 10 00 00 49 97 AD)
380 8 Motor 3 (00 69 00 00 00 00 00 05)
440 8 Getriebe 1 (00 80 00 FE 7F 00 00 02)
480 8 Motor 5 (3F 24 00 00 00 00 00 00)
488 8 ? Motor 6 ? (00 23 22 7E 00 00 00 00)
540 8 ? Getriebe 4 ? (00 00 FF 00 00 00 10 20)
1A0 8 Bremse 1 (00 18 00 00 FE FE 00 11)
1A8 3 ? ABS ? (FC 03 FF)
4A0 8 Bremse 3 (00 00 00 00 00 00 00 00)
4A8 2 ? ABS ? (00 00)
5A0 8 Bremse 2 (7D 00 00 48 CC 12 00 AD)
7C2 8 Lenkwinkel-Initialisierungskennung (ITT) (67 00 00 00 42 00 00 98)

Фрагмент лога для VW Lupo
http://www.journalofremanufacturing.com/content/pdf/2210-4690-1-6.pdf

Анализ 2 идентификаторов
http://www.iwt-kdg.be/teralabs/sites/default/files/Decoding%20of%20data%20on%20a%20CAN%20powertrain%20network_FINAL.pdf