Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Arduino Leonardo FFB Wheel DIY Project
#1
Bug 
Cao ljudi, pocecu u ovom postu polako da ubacujem sve vezano za ovaj projekat, pa da mozemo da nastavimo dalji razvoj ukoliko ima voljnih i zainteresovanih. Osnovne parametre cu pisati na engleskom, kako bismo povecali citljivost.

Project:
- USB device, no need for drivers, Windows reports it as Joystick with FFB capability
- based on microcontroler Arduino Leonardo
- replacement or upgrade for Logitech G29 or Thrustmaster T300

Functions (software):
- 1 analog axis for 16bit steering (optical encoder)
- 3 analog axis for 12bit pedals (load cell brake supported)
- 16 press buttons (separate Arduino Nano as button box)
- FFB output with 2 channel PWM (adjustable modes, frequency and resolution)
- 500Hz USB polling rate, 500Hz FFB calculation rate
- full 16bit FFB effects (no custom force)

To be done:
- selection of FFB actuator and its driver board or circuit (dc brushed motor, dc brushless motor, AC servo motor..)
- mechanical design (gear drive, belt drive, direct drive..)
Reply
#2
Za pocetak, saljem HEX kod za Arduino Leonardo, firmware verzija 11, kao i kontrolni panel verzija 1.73 koji preko RS232 cita i podesava odredjene funkcije volana.

Za uploadovanje HEX-a na Arduino se koristi vrlo jednostavan programcic XLoader, ali je neophodno da Arduino ima odgovoarajuci bootloader. Vise detalja o bootloaderu kasnije.
Kontrolni panel sam programirao u Processing-u, zasnovan na Javi, ali ima slicnosti i sa c++, a potrebno je da na racunaru imate instaliranu najnoviju verziju Java-e. Zbog ogranicenja za velicinu fajla na forumu, saljem link na kome sam upladovao ovaj program:
https://ufile.io/hy0rn5xy




.rar   XLoader.rar (Size: 233,7 KB / Downloads: 1)

.rar   firmware v11.rar (Size: 275 KB / Downloads: 1)

.rar   button box.rar (Size: 4,3 KB / Downloads: 1)
Reply
#3
Detalji oko koriscenja XLoadera su u ovom postu.

Postoji nekoliko varijanti Arduino plocica, koje mogu da se koriste za ovaj projekat. Sve su jeftine i lako dostupne preko eBay-a itd. To su: Arduino Leonardo, Arduino Micro i Arduino Pro micro (svi njihovi kineski klonovi su takodje ok). Oni se malo razlikuju po fizickoj velicini i broju pinova ali i po bootloaderu. Neki klonovi nemaju original bootloader i u tom slucaju je potrebno prvo njega uploadovati, vise detalja kasnije.

Postupak:
- otvoriti Xloader
- izabrati odgovarajuci HEX file (Leonardo HEX moze za Leonardo i Micro, a proMicro HEX je samo za Pro Micro plocicu)
- staviti device Leonardo(32U4)
- baud rate 57600
- prebaciti Arduino u bootloader mod (reset dugme, ili kratkospoijiti pin RST na GND)
- brzo izabrati serijski port koji se pojavio (imate oko 8 sekundi)
- kliknuti upload





Nakon uspesnog uploadovanja HEX-a, Windows ce ovako prijaviti uredjaj. Start, control panel, devices and printers, desni klik na Arduino leonardo pa game controler settings.
Reply
#4
Detalji oko uploadovanja originalnog bootloadera su u ovom postu.

Jednostavna provera da li imate original bootloader na svom Arduinu se moze izvrsiti pritiskom reset dugmeta ili kratkotrajnim spajanjem pina RST na GND. Ukoliko se cuje zvuk u Windowsu kao da ste upravo ukljucili novi USB uredjaj koji je na novom serijskom portu i ako LED na Arduinu pocnu da blinkaju polako nekih 8 sekundi, onda je ok. Ako se sve desi vrlo brzo i Arduino se vrati u normalni mod za manje od 1 sekunde, onda nije ok i mora da se uploaduje originalni bootloader.

Detaljan postupak za ovaj proces je opisan na zvanicnom sajtu za Arduino i potrebno je da se instalira Arduino IDE.
https://www.arduino.cc/en/tutorial/arduinoISP

Ukratko, najpre se programira pomocna Arduino plocica (programer) sa kodom za "Arduino ISP", ovde je Arduino Nano pogodan, jer kasnije moze da se koristi u projekatu kao button box kada se uploaduje odgovarajuci kod na njega, iz prvog posta. Za programer plocicu se stavlja njen board u ovom slucaju Arduino Nano, device Arduino 328p (old bootloader) i port na kome je prijavljen (obicno COM3). Leonardo ili Micro (target) plocica se povezuje fizicki na programer plocicu preko standardnih ISP konekcija po uputstvu sa oficijalnog sajta. Zatim se u podesavanju device stavljaju detalji od target plocice, ovo je veoma bitno. Treba staviti board - Arduino Leonardo, port nije bitan. Na kraju, se klikne na "burn bootloader" i sacekati da se desi magija. Moze da traje oko 1-2 min. Arduino IDE ce dati info da li je uploadovanje bilo uspesno. Ako jeste, odspojiti target plocicu sa programerske i ukljuciti je preko USB porta i ponovo odraditi proveru spajanjem RST na GND.
Reply
#5
Evo nekoliko primera kako izgledaju Arduino plocice koje se mogu koristiti. Jako je bitno da mikrokontroler koji imaju na sebi bude za 5V, 16MHz i ATmega32U4. Taj ima u sebi posebno memorijsko mesto zvano bootloader koji mu daje mogucnost da preko USB porta bude prepoznat kao mis, tastatura, joystick ili bilo koji drugi USB uredjaj iz standardnih definicija za HID (human interface devices).

Leonardo

Micro

Pro Micro


Razlike u firmware-ima iz prvog posta su sto su neki pinovi premesteni, zato sto Pro Micro fizicki nema te pinove na sebi, pa sam stavio zamenske (pogledati Firmware-v11 pinout.ppt) Sve ostalo im je identicno. Moj favorit je Micro zbog male velicine, fizickog reset dugmeta i najvece verovatnoce da ce cak i kineski klon doci sa originalnim bootloaderom.
Reply
#6
Svaka cast na detaljnom uputstvu... Sto se mene tice ja cu ovo probati, samo da se razradi prica i da se definise koji motor i koji drajver...

Savetovao bih te da u listu "To be done" dodas i 900 degree safety lock ili tako nesto... Smile

Onomad kada sam pricao sa Gimbom na tu temu dosli smo do zakljucka da ukoliko dodje do bagovanja arduina i motor pocne nekontrolisano da vrti u jednu ili u drugu stranu to moze biti veoma opasno jer bi motor trebao da bude jak (10Nm-15Nm?) - a on bez problema lomi ruku... Ubacivanje kvacila mislim da nema smisla jer se onda gubi poenta snage motora jer trebaju da se osete udari na volanu a ne da slajfuje kvacilo. Mozda je najbolje uraditi sa zupcanicima od kojih se jedan manji nalazi na osovini motora a koji su u razmeri i jedan (veci) da ima granicnik koji ogranicava okretanje na 900 stepeni. Ili kao sto je Gimba spomenuo katko navojno vreteno iz CNC masina koje je nakaceno direktno na osovinu motora i onda da se napravi granicnik gde matica od vretena udara u granicnik koji limitira kretanje na 900 stepeni sto mislim da je bolja opcija, samo da se vidi kako da se pricvrsti na motor.

Za sve ovo treba dobrano razmisliti jer je odabir motora kljucni u ovoj prici pogotovo zato sto je cenovno najskuplja komponenta u sistemu. Koliko sam gledao po netu red velicine cena oko 300-400e...

BTW, narucio sam 2 komada: https://www.aliexpress.com/item/32887074...4c4d5KrdaN
Reply
#7
Mislim da je za pocetak najbolje da krenemo sa jeftinijom varijantom sto se mehanizma tice, pa da posle unapredjujemo. Ne zeli svako da odvoji toliko para, a vec moze da kupi i komercijalne volane u tom cenovnom rangu. Da, sigurnost je ozbiljan problem za snazne AC servo motore reda par kW. Ono sto ljudi obicno rade je da dodaju jedno industrijsko dugme lako dohvatljivo koje gasi napajanje motora. Pored toga, jedina druga opcija je je softversko ogranicenje struje, obrtnog momenta ili sl. u samom drajveru za motor, koji u sebi ima poseban mikroprocesor i svoj kontrolni program za PC. Mislim da je mehanicko resenje poput nekog mehanizma sa proklizavanjem previse komplikovano i skupo, ali svakako, ko voli nek izvoli sto se kaze. Takodje mislim da mehanicki granicnik za ugao okretanja nije neophodan, ali je svakako lep dodatak. U control panel-u iz prvog posta postoji dugme "center" koje sluzi da se resetuje nulti ugao volana i to mora da se uradi pri svakom ukljucenju nakon rucnog centriranja volana. Onda ce Arduino sam da salje signal za ogranicenje ugla preko PWM signala.

Ja sam vec probao jeftiniju varijantu ali na prazno, samo motor, 3D odstampani zupcanici sa PLA materijalom i 600PPR enkoder. Jednostavan "proof of concept" i 3D model tog dizajna koji sam napravio i testirao koristeci komponente iz liste Version 1. Ima veoma lepu linearnost, ali situacija ce biti nesto drugacija kada se doda opterecenje, tj. volan i sve ostalo. Nije preterano smooth zbog relativno jakih polova ovog motora, trenja u cetkicama i vidno se oseca "cogging" (mora veci gear ratio, helikoidni zupcanici ili mozda prenos preko kajisa, motor sa vise polova itd..).

Version 1 - motor and mechanism:
DC brushed motorH-bridge driverSwitching power supply 12V 480WOptical rotary encoder- belt or gear drive
- Arduino FFB output config: type Phase correct, mode PWM+-, frequency 20kHz

Torque tests done with Wheel check v1.72 - Step log 2 (linear force test), gear ratio 6:1 (motor:encoder)

.rar   WheelCheck v1.72.rar (Size: 138,4 KB / Downloads: 0)
Reply
#8
Industrijsko dugme (takozvana pecurka) kao zastita nije nikakva, motor jako brzo dodje do maksimalnog broja obrtaja i dok odreagujes ode ruka... tako da to ne bih ni razmatrao kao zastitu od povredjivanja vec samo kao zastita ukoliko pocne da vrti u prazno i zakuca u jednu stranu pa da se ne zezne nesto pa da se ugasi napajanje za motor preko "pecurke".

Moze da se proba i sa nekim slabijim motorom, ne mora od 10Nm, ali ako si vec uradio "proof of concept" i pokazao se ok, onda mislim da moze da se uradi ozbiljniji skok, zato sam i mislio tako neku jacu varijantu. Sve sto ubacuje zupcanike u kombinaciju po mom misljenju nije ok jer se gubi poenta - a to je direct drive... Smile

Na primer ovaj motor mi deluje interesantan:
https://www.kupujemprodajem.com/industri...s/75885580

Ovaj novac bih mogao da izdvojim za njega ukoliko moze da se uklopi i napravi okruzenje (H bridge) za njega koji ce da ga pogoni... tu bi vec znaci savet nekog iskusnog kako da se to uklopi da radi...?

Njegove specifikacije su:
Armature Voltage : 230V AC
Brake Option : 24V DC Brake
Bulletin Number : TL-Series (TLY)
Connectors : Cables with circular connectors, 1 m (39.4in.)
Enclosure : IP65 housing/ No Shaft key/ No shaft seal
Factory Options : Standard (Metric)
Feedback : Incremental Encoder (2000 lines/revolution)
Frame : 25 = 90 mm (3.54 in.) or NEMA 34
Magnet Stack Length : Four Stack
Mounting : 90 mm bolt circle metric flange
Speed Rating : 5000 rpm
Torque Rating : 2.94 Nm

Mislim da bi to bio pravi test i da bi to pokazalo mnogo realniju situaciju, a poprilicno sam siguran da bi se pokazalo mnogo bolje nego komercijalni volani koji kostaju reda velicine oko 300e...
Reply
#9
Odlican projekat! Cuo sam ranije od Pakonje o cemu se radi. Nisam stigao ranije da pisem ali vidim da je Pakonja vec komentarisao ono o cemu smo pricali. 
Radi se o prejakom servo motoru koj u slucaju bilo kakvog kvara ili otkazivanja firmware-a moze da povredi nekog. (Tesko da povredi)
Kill switch nije resenje jer ako volan uhvati ruku kad poludi firmware tu pritiskanja Kill Switcha nema. 
Meni je prvo na pamet pala nazubljena letva sa CNC masina, jer moze svuda da se kupi. Za nju bi naravno moralo da se pravi jako kuciste po kom bi nazubljena letva klizila. Ima jos 10001 resenje i vrv ima boljih resenja ali mora se razmisljati u smeru sigurnosti.

Treba koristiti neke stvari koje su lako dostupne i da se troskovi skinu na minimum jer to i jeste ideja ovog projekta. Da se dobije Direct Drive volan za manje pare nego sto to nudi Fanatec ili neko drugi.
Skica je u prilogu.
Reply
#10
Evo i skice.


Attached Files Thumbnail(s)

Reply
#11
Hvala Gimba za predlog. Takav slican mehanizam ima volan Logitech G29. Kod Thrustmaster-a su isli na puzasti zupcanik koji vodi maticu, a ona udara u zidove axijalno duz ose motora. Taj sistem je malko boji jer ima manje trenje. Ovo sa letvom je jednostavno, samo gde naci zupcanike i ko ima strug za bilo kakve prepravke?

Treba nam ozbiljna paznja za drajver za motor, da li neko mozda ima ideju kako da napravimo to? Ulaz da mu bude PWM signal + dir, ili PWM+-,plus jos 3 izvoda sa Hall senzora iz motora. Izlaz treba da bude snazni trofazni PWM signal sa visokim naponom 100-200V. Ja se plasim da je ovo ozbiljna prepreka za DIY sto se sigurnosti i kompleksnosti izrade tice. Nece firmware nista da uradi sto mu racunar (igrica, simulacija voznje) nije poslao, ali moze da se desi da crkne neki od izlaznih tranzistora od DIY drajvera i da motor poludi. Komercijalni drajveri poput Argon-a itd su oko 300-400eur i sve sto mi napravimo nece biti ni priblizno toliko sigurno i pouzdano.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)