Top.Mail.Ru
Перейти к содержанию
Новости в мире симрейсинга
Новости

mypkuh

Рейсеры
  • Постов

    251
  • Зарегистрирован

  • Посещение

  • Победитель дней

    4

Весь контент mypkuh

  1. неровности дороги. включены вертикальная и горизонтальная оси
  2. GranDoxin щас потестил чисто вертикальную ось с максимальной сенсой и таки да, на болидах с жесткой подвеской все неровности дороги отчетливо чувствуются, примерно как на том видео трясет что выше
  3. ось heave как вариант, собери тестовый стенд из ардуинки и моторчика для лодок, и погоняй в симтулзе его, заодно и решишь надо или нет
  4. если дорога не ровная - то будет трясти, если ровная -то не будет, можно настроить чтобы на ямах подпрыгивал. если ускоряешся или сбрасываешь газ, на прямой соответствено будут клевания носа или жопы. опятже выбор богатый, мне удавалось настроить чтобы чувствовал только перепада высот и паребрики траву гравий. но зависит от игры в каждой игре по разному вот человек снял видео по своей настройки https://www.youtube.com/watch?v=NuKOo_1RDnU
  5. я вам скажу что настройка симтулз, гораздо сложнее и нуднее чем постройка кокпита, это ад, для каждой игры нужно свои настройки а параметров которые нужно настривать вагон и маленькая тележка, и это еще не все, из- за того что у всех разные моторы в разной компоновки, большинство настроек других пользователей вам не подойдет, если вы хотите точности и реализма "условного", нужно все делать самому, изменил одну из двух-десятков настроек, сделал тест драйв и так далее пока не найдешь идеал :wall:
  6. на данный момент (как я понимаю) судя по этой картинке. на каждый мотор можно настроить свою одну ось, или же все оси на один мотор накинуть можно тоже. Как мне удалось настроить? я включил все силы что можно было, на всех моторах, и оно заработало :hooray: разделять и смешивать получается можно как угодно, также инвертировать там можно их. еще у каждой силы на каждой оси есть свою меню настроек вот такое: [spoiler=описание на инглише]Smoothing – Will smooth the value, if a value seems jerky or not flowing this can be increased to add a smoothing effect by creating a mean value of the values coming in. Washout – Is handy when we require a value to wash back to 0. i.e. like for a yaw axis that doesn’t actually turn a full 360 degrees. So to give the feeling to the rider that he/she is still actually turning. Deadzone – Is for setting a deadzone in the middle of the movements i.e. around the 0, so if our Min Max in the tuning center is set to Max 10 Min 10 and we don’t want to feel 3-0-3 we can set a percent to represent this and take these values away from the equation, resulting in a deadzone on the middle of our axis movements. Boundary – Is to make sure the single DOF does not use more than X amount of the available axis. In turn letting you have a very sensitive axis and will make sure it doesn’t take over the whole axis. Пока я вижу это так, но возможно это не точно и не является таковым на самом деле
  7. не массовый продукт это, да и есть ребята на украине которые хорошо и дешего делают отписал
  8. [spoiler=Смотр] По сути дела, я получил то, что и ожидал. Как уже было сказано одним гуру автосима строения, кататься без платформы это как играть без отдачи на руле, играть можно, но все не то. то есть появляется ощущения пятой точкой машины. ради этого все и делалось! максимальный реализм мать его. Для ВР дофПлатформа строго обязательна, жду выхода второго пимакса) Но постройка в первый раз далась нелегко, думаю когда буду собирать вторую платформу все будет ровнее и быстрее. По поводу цены, я находил без доставки за 40к рублей платформы без кресла, думаю оно того стоить если у вас есть лишние деньги, берите не раздумывая. 100к на известном 2дофе.ру конечно перебор. в данном случае процесс его создания доставляет тоже массу приятных ощущение и также значим как и результат, скажем так одно дело купить, а совсем другое построить самому :facepalm: К сожалению из-за неимения "гейм плагинов" катаю только ЛФС. мб кто поделится плагинами в личку. Также настройка симтулз требует много внимания, например добиться плавности и быстроты движения, на видео этого не видно, но он меня качает такими рывками хорошими, хотелось бы плавнее.(но это все настраивается просто нужно время.) Кстати создал тему на хсимуляторе и дали таки ключик от симтулза спасибо ТОРМОЗ Педали от G27 отказались работать на новом кокпите, похоже двигателя дают наводку на корпус, земли нет и не будет. По поводу веса , двигателей от ланоса, хватает заглаза, [вес платформы с учетом меня и всего навесного будет порядка 200кг!] притом что сила скорость и диапазон работы ограничен около 80%, запас еще есть Мощность бп 16ампер пока хватает его. Мост греется, поставил вентилятор выше 50гр я не видел Цент тяжести получился немного или много завален вперед, при постройке забыли учесть вес педалей и руля, проблема заключается в том, что если садится низкорослый водитель, то сидение двигаем еще вперед и центр тяжесть еще более заваливается, от этого мотором становится совсем тяжко они начинают проворачиваьтся, со всеми вытекающими, так что получается кроме меня никто мою платформу катать не сможет) Шум есть, ночью лучше не играть) С радостью отвечу на интересующие вас вопросы
  9. Альфа 2.0 пока на этом сделаю перерыв, буду катать как есть, вроде работает, осталась с симтулз до конца разобратся :bananadance:
  10. Можно сказать альфа версия сима готова [spoiler=Альфа 1.0] Есть кто разбирается в настройках SimTools ? какие силы нужны для 2dof, как инвертировать силы? и прошу поделится вашими пресетами по силам.
  11. щас от ланоса 50ватные, но на долго их не хватить. внутри вот такое будет, после примерно 200 часов
  12. С заделом на будущие, кто знает вдруг психану и моторы помощнее поставлю)
  13. На русском форуме подсказали что это норма и под нагрузкой пройдет. И вообще настройкой моторов только под нагрузкой заниматся. Возможно дело в мотомонстре Тем временем https://photos.app.goo.gl/0HmoMAUyXKnTmJNE2
  14. В общем дело явно в коде, при переключении мотора работает без пробелем
  15. измение данной настройки увы не помогает. единственное что остается это либо в коде ардуино что-то или мотор такой глюченый. вот мой код мб кто разбирается в таких?) [spoiler=код ардуино] /* Arduino code for dynamic playseat 2DOF Created 24 May 2011 by Jim Lindblom SparkFun Electronics https://www.sparkfun.com/products/10182 "Example Code" Created 24 Apr 2012 by Jean David SEDRUE Version betatest26 - 24042012 http://www.gamoover.net/Forums/index.php?topic=25907 Updated 20 May 2013 by RacingMat in english http://www.xsimulator.net/2dof-wiper-motor-playseat/ in french : http://www.gamoover.net/Forums/index.php?topic=27617 Updated 30 April 2014 by RacingMat (bug for value below 16 corrected) */ #define BRAKEVCC 0 #define RV 2 //beware it's depending on your hardware wiring #define FW 1 //beware it's depending on your hardware wiring #define STOP 0 #define BRAKEGND 3 //////////////////////////////////////////////////////////////////////////////// #define pwmMax 255 // or less, if you want to lower the maximum motor's speed // defining the range of potentiometer's rotation const int potMini=300; const int potMaxi=800; //////////////////////////////////////////////////////////////////////////////// #define motLeft 0 #define motRight 1 #define potL A0 #define potR A1 //////////////////////////////////////////////////////////////////////////////// // DECLARATIONS //////////////////////////////////////////////////////////////////////////////// /* VNH2SP30 pin definitions*/ int inApin[2] = { 7, 4}; // INA: Clockwise input int inBpin[2] = { 8, 9}; // INB: Counter-clockwise input int pwmpin[2] = { 5, 6}; // PWM input int cspin[2] = { 2, 3}; // CS: Current sense ANALOG input int enpin[2] = { 0, 1}; // EN: Status of switches output (Analog pin) int statpin = 13; //not explained by Sparkfun /* init position value*/ int DataValueL=512; //middle position 0-1024 int DataValueR=512; //middle position 0-1024 //////////////////////////////////////////////////////////////////////////////// // INITIALIZATION //////////////////////////////////////////////////////////////////////////////// void setup() { // serial initialization Serial.begin(115200); // initialization of Arduino's pins pinMode(statpin, OUTPUT); //not explained by Sparkfun digitalWrite(statpin, LOW); for (int i=0; i<2; i++) { pinMode(inApin[i], OUTPUT); pinMode(inBpin[i], OUTPUT); pinMode(pwmpin[i], OUTPUT); } // Initialize braked for motor for (int i=0; i<2; i++) { digitalWrite(inApin[i], LOW); digitalWrite(inBpin[i], LOW); } } //////////////////////////////////////////////////////////////////////////////// ///////////////////////////////// Main Loop //////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// void loop() { int sensorL,sensorR; readSerialData(); // DataValueR & L contain the last order received (if there is no newer received, the last is kept) // the previous order will still be used by the PID regulation MotorMotion Function sensorR = analogRead(potR); // range 0-1024 sensorL = analogRead(potL); // range 0-1024 motorMotion(motRight,sensorR,DataValueR); motorMotion(motLeft,sensorL,DataValueL); } //////////////////////////////////////////////////////////////////////////////// // Procedure: wait for complete trame //////////////////////////////////////////////////////////////////////////////// void readSerialData() { byte Data[3]={ '0','0','0' }; // keep this function short, because the loop has to be short to keep the control over the motors if (Serial.available()>2){ //parse the buffer : test if the byte is the first of the order "R" Data[0]=Serial.read(); if (Data[0]=='L'){ Data[1]=Serial.read(); Data[2]=Serial.read(); // call the function that converts the hexa in decimal and that maps the range DataValueR=NormalizeData(Data); } if (Data[0]=='R'){ Data[1]=Serial.read(); Data[2]=Serial.read(); // call the function that converts the hexa in decimal and maps the range DataValueL=NormalizeData(Data); } } if (Serial.available()>16) Serial.flush(); } //////////////////////////////////////////////////////// void motorMotion(int numMot,int actualPos,int targetPos) //////////////////////////////////////////////////////// { int Tol=20; // no order to move will be sent to the motor if the target is close to the actual position // this prevents short jittering moves //could be a parameter read from a pot on an analogic pin // the highest value, the calmest the simulator would be (less moves) int gap; int pwm; int brakingDistance=30; // security concern : targetPos has to be within the mechanically authorized range targetPos=constrain(targetPos,potMini+brakingDistance,potMaxi-brakingDistance); gap=abs(targetPos-actualPos); if (gap<= Tol) { motorOff(numMot); //too near to move } else { // PID : calculates speed according to distance pwm=195; if (gap>50) pwm=215; if (gap>75) pwm=235; if (gap>100) pwm=255; pwm=map(pwm, 0, 255, 0, pwmMax); //adjust the value according to pwmMax for mechanical debugging purpose ! // if motor is outside from the range, send motor back to the limit ! // go forward (up) if ((actualPos// go reverse (down) if ((actualPos>potMaxi) || (actualPos>targetPos)) motorGo(numMot, RV, pwm); } } //////////////////////////////////////////////////////////////////////////////// void motorOff(int motor){ //Brake Ground : free wheel actually //////////////////////////////////////////////////////////////////////////////// digitalWrite(inApin[motor], LOW); digitalWrite(inBpin[motor], LOW); analogWrite(pwmpin[motor], 0); } //////////////////////////////////////////////////////////////////////////////// void motorOffBraked(int motor){ // "brake VCC" : short-circuit inducing electromagnetic brake //////////////////////////////////////////////////////////////////////////////// digitalWrite(inApin[motor], HIGH); digitalWrite(inBpin[motor], HIGH); analogWrite(pwmpin[motor], 0); } //////////////////////////////////////////////////////////////////////////////// void motorGo(uint8_t motor, uint8_t direct, uint8_t pwm) //////////////////////////////////////////////////////////////////////////////// { if (motor <= 1) { if (direct <=4) { // Set inA[motor] if (direct <=1) digitalWrite(inApin[motor], HIGH); else digitalWrite(inApin[motor], LOW); // Set inB[motor] if ((direct==0)||(direct==2)) digitalWrite(inBpin[motor], HIGH); else digitalWrite(inBpin[motor], LOW); analogWrite(pwmpin[motor], pwm); } } } //////////////////////////////////////////////////////////////////////////////// void motorDrive(uint8_t motor, uint8_t direct, uint8_t pwm) //////////////////////////////////////////////////////////////////////////////// { // more readable function than Jim's (for educational purpose) // but 50 octets heavier -> unused if (motor <= 1 && direct <=4) { switch (direct) { case 0: //electromagnetic brake : brake VCC digitalWrite(inApin[motor], HIGH); digitalWrite(inBpin[motor], HIGH); break; case 3: //Brake Ground (free wheel) digitalWrite(inApin[motor], LOW); digitalWrite(inBpin[motor], LOW); break; case 1: // forward : beware it's depending on your hardware wiring digitalWrite(inApin[motor], HIGH); digitalWrite(inBpin[motor], LOW); break; case 2: // Reverse : beware it's depending on your hardware wiring digitalWrite(inApin[motor], LOW); digitalWrite(inBpin[motor], HIGH); break; } analogWrite(pwmpin[motor], pwm); } } //////////////////////////////////////////////////////////////////////////////// // testPot //////////////////////////////////////////////////////////////////////////////// void testPot(){ Serial.print(analogRead(potR)); Serial.print(";"); Serial.println(analogRead(potL)); delay(250); } //////////////////////////////////////////////////////////////////////////////// void testpulse(){ int pw=120; while (true){ motorGo(motLeft, FW, pw); delay(250); motorOff(motLeft); delay(250); motorGo(motLeft, RV, pw); delay(250); motorOff(motLeft); delay(500); motorGo(motRight, FW, pw); delay(250); motorOff(motRight); delay(250); motorGo(motRight, RV, pw); delay(250); motorOff(motRight); Serial.println("testpulse pwm:80"); delay(500); } } //////////////////////////////////////////////////////////////////////////////// // Function: convert Hex to Dec //////////////////////////////////////////////////////////////////////////////// int NormalizeData(byte x[3]) //////////////////////////////////////////////////////////////////////////////// { int result; if ((x[2]==13) || (x[2]=='R') || (x[2]=='L')) //only a LSB and Carrier Return or 'L' or 'R' in case of value below 16 (ie one CHAR and not 2) { x[2]=x[1]; //move MSB to LSB x[1]='0'; //clear MSB } for (int i=1; i<3; i++) { if (x[i]>47 && x[i]<58 ){//for xA to xF x[i]=x[i]-48; } if ( x[i]>64 && x[i]<71 ){//for x0 to x9 x[i]=x[i]-55; } } // map the range from Xsim (0 <-> 255) to the mechanically authorized range (potMini <-> potMaxi) result=map((x[1]*16+x[2]),0,255,potMini,potMaxi); return result; }
  16. ну на столе слышно, после установки моторы стоят за креслом, пилот обычно в наушниках и шлеме, врятли услушит
  17. Кардан https://goo.gl/photo...r5YZHxMG247KuDA https://goo.gl/photo...6xHeNx4ttJWHct7 при покупке обращать внимание на состоянии крестовины, чтобы легко вращалась) UPD Хорошие новости "оно заработало" видео с полей https://www.youtube.com/watch?v=fYMBm8TMLGw
  18. Добавляем к нашим расходам +1500р. П.О по извлечению данных из игр, оказывается стоит денег) Кряка я не нашел, а я искал (нет) затраты на сегодняшний день: Два мотора 2400р экзист автодок Адруино и МоторМосты 500р али два БП 12вольт 16А примерно 2000р (БУ)авито Поты 300р 10шт(продаются партиями) али ПО simtools 1500р Провода и расходы на пайку Кардан, расходы на сварку и металл еще неизвестны. [spoiler=Мотор от ланоса]https://fotki.yandex...80/view/2120681 [spoiler=наша схема и что получилось]https://fotki.yandex...80/view/2120680 https://fotki.yandex...80/view/2120679 В. Почему нужен мотор от ланоса? О. У него масса не на корпусе, а отдельным проводом!
  19. китайцы радуют доставка за 12 дней. [spoiler=Готовь кокпиты летом] Заканчиваю первый этап, остались моторы дождаться и начинаю собирать стенд.
  20. mypkuh

    Project CARS 2

    У пекарса, детские болезни шифта2 до сих пор не поправили судя по ютубу.
  21. на форуме строителей прочел что зависит от наката платформы, износа шестерен (примерно 100 часов на один участок мотора, если прокручивать каждые 100 часов мотор, то срок службы порядка 500часов. мотора дворников естественно
  22. Sim tools - вот это п.о. управляет. 2мотора-2dof, 3 мотора-3dof и тд до 6dof ,встречал. Попробуешь один раз и подругому ездить не захочешь. Для полного комплекта vr обязателен
×
×
  • Создать...