Новости: ВСЕМ ХОРОШЕГО  НАСТРОЕНИЯ.СМ. ТУТ: Для просмотр ссылок требуется регистрация.

Автор Тема: Монстр шилд  (Прочитано 271 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Deny

  • Администратор
  • Маршал
  • *****
  • Сообщений: 1796
  • РЕПУТАЦИЯ: +10529/-1
    • Питерский танковод
    • Награды
Монстр шилд
« : 10 Октябрь 2017, 22:05:34 »
в архиве скетча нашел разводку под ардуино моторшилд. а пока пины  

// PINS                       ARDUINO PIN      ARDUINO   DIRECTION                                             ATMEGA PORT PIN       OTHER
// -------------------------------------------------------------------------------------------------------------------------------------------------->
    // RESERVED                          0            // D0    Input     - This is the serial RX pin                      PD0
    // RESERVED                           1            // D1    Output    - This is the serial TX pin                      PD1
    const byte RC2 =                     2;           // D2    Input     - RC input for motor 2                           PD2              INT0
    const byte RC1 =                    3;           // D3    Input     - RC input for motor 1                           PD3              INT1 / Timer 2 / PWM OC2B
    const byte M2_DirA =              4;           // D4    Output    - Motor 2 direction A                            PD4
    const byte M1_DirA =              5;           // D5    Output    - Motor 1 direction A                            PD5              Timer 0 / PWM OC0B
    const byte AddressSwitch =     6;           // D6    Input     - Address selection switch                       PD6              Timer 0 / PWM OC0A
    const byte M1_DirB =              7;           // D7    Output    - Motor 1 direction B                            PD7
    const byte M1_DIAG =            8;           // D8    Input     - Motor 1 status                                 PB0
    const byte M2_PWM =             9;           // D9    Output    - Motor 2 PWM (Left/Turret Rotation)             PB1              Timer 1 / PWM OC1A
    const byte M1_PWM =           10;           // D10   Output    - Motor 1 PWM (Right/Barrel Elevation)           PB2              Timer 1 / PWM OC1B
    const byte Fan_PWM =          11;           // D11   Output    - Fan motor PWM                                  PB3              Timer 2 / PWM OC2A / MOSI
    const byte EmergencyStop = 12;           // D12   Input     - Emergency stop                                 PB4              MISO
    const byte RedLED =            13;           // D13   Output    - Red LED - used to indicate errors              PB5              SCK
    const byte M1_CS =             14;           // A0    Input     - Motor 1 current sense                          PC0              ADC0
    const byte TempSense =        15;           // A1    Input     - Thermistor                                     PC1              ADC1
    const byte M2_DirB =          16;           // A2    Output    - Motor 2 direction B                            PC2              ADC2
    const byte BlueLED =          17;           // A3    Output    - Blue LED - used to indicate status             PC3              ADC3
    const byte M2_CS =            18;           // A4    Input     - Motor 2 current sense                          PC4              ADC4
    const byte M2_DIAG =          19;           // A5    Input     - Motor 2 status                                 PC5              ADC5
    const byte VSense =           A6;           // A6    Input     - Battery voltage reading through divider        N/A              ADC6
    // ADC6 and ADC7 are not broken out in the DIP version of the 328 chip and are therefore not referenced by the original Arduino Duemilanove board.
    // They are however broken out on the TQFP chip and if we set our board type to Nano we can reference the names A6 and A7 in Arduino code.



Оффлайн Deny

  • Администратор
  • Маршал
  • *****
  • Сообщений: 1796
  • РЕПУТАЦИЯ: +10529/-1
    • Питерский танковод
    • Награды
Монстр шилд
« Ответ #1 : 22 Октябрь 2017, 13:34:55 »
Попробовал развести, как указано в скетче, результата не получил ((((
 Интересно, что в схеме разводки и в скетче указаны разные пины))))

Оффлайн Deny

  • Администратор
  • Маршал
  • *****
  • Сообщений: 1796
  • РЕПУТАЦИЯ: +10529/-1
    • Питерский танковод
    • Награды

Оффлайн Deny

  • Администратор
  • Маршал
  • *****
  • Сообщений: 1796
  • РЕПУТАЦИЯ: +10529/-1
    • Питерский танковод
    • Награды
Монстр шилд
« Ответ #3 : 29 Октябрь 2017, 19:16:21 »
Ну, что, дорогие друзья. Мне удалось запустить монстр-шилд с ардуиной 328 с программным обеспечением от OpenPanzer, точнее Scout-ESC-master. Все отлично работает, сейчас недостаток в куче проводов. Не запускался у меня этот монст-шилд по одной причине.  У Люка в программе заложен фактор  контроля питания  const byte VSense = A6; // A6 Input - Battery voltage reading through divider N/A ADC6. Так вот пока я от батареи не кинул провод на ардуину, у меня ничего не запускалось!
Теперь осталось дождаться плату TCB и посмотреть будет ли это все вместе работать))))

Оффлайн Deny

  • Администратор
  • Маршал
  • *****
  • Сообщений: 1796
  • РЕПУТАЦИЯ: +10529/-1
    • Питерский танковод
    • Награды
Монстр шилд
« Ответ #4 : 07 Январь 2018, 23:17:44 »
Доброго времени суток!  Подключил к ардуино меге приемник флайскай  а так же регуляторы скорости HobbyKing XCar 45A, библиотека для IBUS Для просмотр ссылок требуется регистрация.. Получил стабильное управление моторами. Есть одна особенность, для того что бы изменить направления движения следует увести  стик в крайнее противоположное положение, а потом в ноль и начать движение в другую сторону.
Управление пока диагональное, но это решается программным путем.

 программа


#include "FlySkyIBus.h"
#include <Servo.h>//Using servo library to control ESC
Servo esc; //Creating a servo class with name as esc
Servo esc1;


void setup()
{
  Serial.begin(115200);
  IBus.begin(Serial1);
  esc.attach(8); //Specify the esc signal pin,Here as D8
  esc.writeMicroseconds(1000); //initialize the signal to 1000
  esc1.attach(7);
  esc1.writeMicroseconds(1000); //initialize the signal to 1000
}


void loop()
{
  IBus.loop();
  Serial.print(IBus.readChannel(0));
  Serial.print(" - ");
  Serial.print(IBus.readChannel(1));
  Serial.print(" - ");
  Serial.print(IBus.readChannel(2));
  Serial.print(" - ");
  Serial.print(IBus.readChannel(3));
  Serial.print(" - ");
  Serial.println(IBus.readChannel(4));


  int val; //Creating a variable val
  int val1; //Creating a variable val1
  val = IBus.readChannel(1); //Read input from IBus.readChannel(1)and store in val
  val1 = IBus.readChannel(0); //Read input from IBus.readChannel(0)and store in val1
  // val = map(val, 0, 1023, 1200, 1900); //mapping val to minimum and maximum(Change if needed)
  esc.writeMicroseconds(val); //using val as the signal to esc
  esc1.writeMicroseconds(val1); //using val as the signal to esc
}

Оффлайн Deny

  • Администратор
  • Маршал
  • *****
  • Сообщений: 1796
  • РЕПУТАЦИЯ: +10529/-1
    • Питерский танковод
    • Награды
Монстр шилд
« Ответ #5 : 09 Январь 2018, 14:15:28 »
Сергей, вопрос! У меня никак не получается развернуть программно каналы, чтобы получилось стандартное управление. Стик вверч - движение обоих редукторов вперед, стик вниз - движение обоих редукторов назад, ну и соответственно диагонали - повороты. Сейчас у меня диагонали это движение вперед и назад,  а стик вверх и вниз повороты.

Оффлайн Sergevk

  • Клуб
  • Лейтенант
  • **
  • Сообщений: 113
  • РЕПУТАЦИЯ: +2007/-0
    • Награды
Монстр шилд
« Ответ #6 : 09 Январь 2018, 15:40:26 »
Нужно где-нибудь поменять полярность одного двигателя

Оффлайн Deny

  • Администратор
  • Маршал
  • *****
  • Сообщений: 1796
  • РЕПУТАЦИЯ: +10529/-1
    • Питерский танковод
    • Награды
Монстр шилд
« Ответ #7 : 09 Январь 2018, 15:50:41 »
Сергей, полярность автоматом меняется в регуляторах скорости.  Ардуино только передает точные данные.
у меня получилось развернуть одну диагональ

ch1= IBus.readChannel(0) ;
ch2 = IBus.readChannel(1);

int CH1;
CH1 = (ch1*0.707 + ch2 *0.707) *0.707;
esc.writeMicroseconds(CH1);
esc1.writeMicroseconds(CH1);

См. Скетч выше.

а сейчас пришла мысль в голову, надо проверить, что надо все сминусовать и поделить

int CH2;
CH2 = (ch2/0.707 - ch1*0.707)*0.707;
esc.writeMicroseconds(CH2);
esc1.writeMicroseconds(CH2);

Оффлайн Deny

  • Администратор
  • Маршал
  • *****
  • Сообщений: 1796
  • РЕПУТАЦИЯ: +10529/-1
    • Питерский танковод
    • Награды
Монстр шилд
« Ответ #8 : 09 Январь 2018, 16:39:04 »
Нет, с минусом вариант не прошел

Оффлайн Deny

  • Администратор
  • Маршал
  • *****
  • Сообщений: 1796
  • РЕПУТАЦИЯ: +10529/-1
    • Питерский танковод
    • Награды
Монстр шилд
« Ответ #9 : 10 Январь 2018, 00:10:18 »
"TCB на самом деле способен наносить более тонкие или даже случайный и непредсказуемые повреждения, хотя эта функция все еще находится в разработке. На вкладке «Battle» в программе OP Config вы можете выбрать, какой «Вариант повреждений» вы будете использовать. «Tamiya Spec» будет следовать формуле Tamiya для постепенного снижения скорости, а вариант «Experimental» позволит разработчикам создавать различные эффекты повреждений. Однако большинство клубов, вероятно, захотят использовать спецификацию Tamiya для совместимости с другими моделями Tamiya".
Сергей, смотри, оказывается Люк заложил возможность использования более тонких повреждений, это к вопросу о возможности отключения во время боя гусениц, башни выстрела и так далее