PCCar.ru - Ваш автомобильный компьютер

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Общение с машиной (http://pccar.ru/forumdisplay.php?f=14)
-   -   Arduino+CANBUS Shield (http://pccar.ru/showthread.php?t=23221)

Disgraced 20.06.2015 22:36

Arduino+CANBUS Shield
 
Вложений: 1
Помогите разобраться.
Имеется автомобиль семейства Mazda.

Имеется Ардуино Про Микро и CAN-BUS Shield.

Между собой соединял согласно даташита про микры и MCP2515 (прозванивал ноги).
Цитата:

Сообщение от lti1 (Сообщение 289078)
CAN-BUS Shield -> Ардуино
MOSI -> MOSI
MISO -> MISO
SCK -> SCK
CS -> к пину 10 ардуины
INT -> к пину 2 ардуины
GND -> GND

К одной из колодок содержащей CAN_H и CAN_L контакты подключился воткнув в колодку пару иголок, получившееся соединение прозвонил - контакт есть. Данные по шине в месте подключения передаются - инфа 100%.

Согласно найденной информации шина в мазде работает на скорости 500 kbps.
Пробовал залить example receive скетч идущий с CANBUS либой.
Эффект нулевой - в мониторе порта вообще ничего.
Судя по внешнему виду шилда - терминирующего резистора на нём нет, но для эксперимента выпаял резистор R2 - не помогло.
Что я делаю не так, и что мне надо сделать, чтобы стало как надо. Вопрос стоит не в расшифровке сообщений идущих по can, а в их простом получении, для начала.

PS диагностические приблуды мне не нужны. Использую ардуину с шилдом, потому как в итоге хочу получить самостоятельное устройство непрерывно передающее по шине определенную информацию.
Если есть альтернативные ардуине варианты (стоящие копейки) то предлагайте.

Farman 21.06.2015 19:57

GND c массой на машине подключаете?

Disgraced 22.06.2015 11:09

Цитата:

Сообщение от Farman (Сообщение 331091)
GND c массой на машине подключаете?

Нет, а надо? Если да, то мне непонятен принцип подключения - в авто сеть 12V, а ардуина с шилдом питаются от 5V с усб. Да и куда подключать - на ардуине только CAN_H и CAN_L.

В соседней теме у людей не работают параллельно подключенные к колодке OBD устройства - может причина в этом? Хотя у меня подключение скорее последовательное.

Lehas 22.06.2015 11:45

Цитата:

Сообщение от Disgraced (Сообщение 331123)
Нет, а надо? Если да, то мне непонятен принцип подключения - в авто сеть 12V, а ардуина с шилдом питаются от 5V с усб. Да и куда подключать - на ардуине только CAN_H и CAN_L.

В соседней теме у людей не работают параллельно подключенные к колодке OBD устройства - может причина в этом? Хотя у меня подключение скорее последовательное.

массу можно к корпусу разъема подключить.
В can шине не бывает последовательного подключения.

Disgraced 23.06.2015 13:20

Цитата:

Сообщение от Lehas (Сообщение 331127)
массу можно к корпусу разъема подключить.
В can шине не бывает последовательного подключения.

да, с последовательным соединением тупанул, но земля нафиг не нужна.
у шилда своя земля, у авто своя.
проблема не в этом. может быть всё таки в параллельном соединении? хотя если все системы в авто итак параллельно висят, то добавление шилда ничего не должно менять.

Lehas 23.06.2015 14:34

а масса шилда, ардуины и компа как нибудь с массой машиной соединены? шилд начинает принимать данные если подключена масса и can_h, на шилде начинает мигать светодиод.

lti1 23.06.2015 16:33

Масса не обязательна. У меня на Octavia Tour и на FF3 без массы всё отлично принимает и отправляет.

Lehas 23.06.2015 16:51

Цитата:

Сообщение от lti1 (Сообщение 331229)
Масса не обязательна. У меня на Octavia Tour и на FF3 без массы всё отлично принимает и отправляет.

по одному проводу в любом случае работать не будет. либо обе кан, либо кан-х и масса

Disgraced 23.06.2015 17:08

Цитата:

Сообщение от Lehas (Сообщение 331231)
по одному проводу в любом случае работать не будет. либо обе кан, либо кан-х и масса

Ну так у меня и подключены оба can.
На шилде очень быстро моргает светодиод RX, почти непрерывно, и немного реже моргает светодиод TX - значит шилда чтото принимает. И либо не передаёт на ардуину, либо делает это неправильно.
Или ошибка в соединении ардуино-шилд или загвоздка в скетче.
Попробовал ради эксперимента в скетче разные скорости шины указывать - результата нет.
В мониторе порта вообще ничего не отображается. Если скорость неправильная так и должно быть? Или должен быть поток ничего не значащих цифр?

Disgraced 24.06.2015 14:12

Итак, шина работает на скорости 500kbps - это 100%.
Прозвонил все контакты на моём безымянном шилде и на ардуине - подключены они между собой верно - 99%
Залил скетч с вот таким содержанием:
Код:

    if(CAN_OK == CAN.begin(CAN_500KBPS))                  // init can bus : baudrate = 500k
    {
        Serial.println("CAN BUS Shield init ok!");
    }
    else
    {
        Serial.println("CAN BUS Shield init fail");
        Serial.println("Init CAN BUS Shield again");
        delay(1000);
    }

В мониторе порта увидел ответ CAN BUS Shield init ok!
Значит дело в скетче для приёма сообщений с can шины.
Нашел вот такую информацию:
Цитата:

Сообщение от brokly;
Аппаратные фильтры настраивают получение драйвером только сообщений с определенными ID, вплоть до отключения приема сообщений. В вашей бибилиотеке это функции :

1
INT8U init_Mask(const INT8U num,const INT32U ulData); /* init Masks */
2
INT8U init_Filt(const INT8U num,const INT8U ext,const INT32U ulData); /* init filters */
Масок всего две.

Фильтров шесть, причем при определенных обстоятельствах первые два фильтра взаимодействуют с первой маской, остальные 4 со второй. Попробуйте проинициализировать фильтры так :
кодрасечатать?
1
CAN.init_Mask(0, 0); // разрешить маскам получать обычные сообщения
2
CAN.init_Filt(0, 0, 0); // разрешить фильтрам получать обычные сообщения
3
CAN.init_Mask(1, 0); // разрешить маскам получать расширенные сообщения
4
CAN.init_Filt(1, 1, 0); // разрешить маскам получать расширенные сообщения

Немного не отдупляю, как проинициализировать фильтры.


Часовой пояс GMT +4, время: 04:03.

Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot