Բովանդակություն:

Thrustmaster Warthog Slew Sensor I2C Թարմացում ՝ 5 քայլ
Thrustmaster Warthog Slew Sensor I2C Թարմացում ՝ 5 քայլ

Video: Thrustmaster Warthog Slew Sensor I2C Թարմացում ՝ 5 քայլ

Video: Thrustmaster Warthog Slew Sensor I2C Թարմացում ՝ 5 քայլ
Video: Thrustmaster Warthog Slew Upgrade 2024, Նոյեմբեր
Anonim
Thrustmaster Warthog Slew Sensor I2C արդիականացում
Thrustmaster Warthog Slew Sensor I2C արդիականացում

Սա կոպիտ ուղեցույց է, թե ինչպես կարելի է ինտերֆեյսի ենթարկել ThrustmasterWarthog շնչափողի սենսորի վրա օգտագործվող I2C արձանագրությունը: Սա կարող է օգտագործվել բավականին անօգուտ ստանդարտ ծառայությունից մինչև ավելի լավը բարելավելու համար, բայց միևնույն ժամանակ, օգտագործելով շնչափող սարքում ստանդարտ USB վերահսկիչը: Սա հիմնված է օրիգինալ գրառման վրա ՝

forums.eagle.ru/showthread.php?t=200198

Հիմնական ըմբռնում, եթե I2C արձանագրությունը ենթադրվում է հետևյալ քայլերի մեծ մասի համար, գերազանց բացատրության համար անցեք ՝

learn.sparkfun.com/tutorials/i2c

Specificանկացած կոնկրետ հարց, ազատ զգացեք ինձ տալու, և ես կփորձեմ ապագայում ավելացնել այս անլուծելիին ՝ ավելի համապատասխան տեղեկատվությամբ: Սա ոչ մի կերպ ամբողջական չէ, բայց պետք է լավ ելակետ լինի:

Տրված է որոշ ցուցադրական Arduino կոդ, բայց խնդրում ենք սա միայն որպես տեղեկանք ընդունել, քանի որ սովորական 5V Arduino- ն չի կարող օգտագործվել առանց փոփոխությունների:

Քայլ 1: Առկա սենսորային մանրամասներ

Առկա սենսորային մանրամասներ
Առկա սենսորային մանրամասներ

Նախարարը սահեցրեց սենսորը, որը գալիս է Thrustmaster Wathog շնչափողի հետ, որը հայտնի է, որ հակառակ դեպքում գերազանց արտադրանքի ամենամեծ թերություններից մեկն է: Տարիներ շարունակ եղել են մարդկանց կողմից այն ավելի լավով փոխարինելու մի շարք փորձեր, սակայն մեծամասնությունը բախվել են դրա օգտագործած թվային I2C արձանագրության հետ շփվելու դժվարությունների:

Warthog շնչափողում օգտագործվող ճշգրիտ սենսորը N35P112 - EasyPoint է, որն օգտագործում է AMS- ի կողմից պատրաստված AS5013 սրահի էֆեկտի տվիչ IC- ն:

Տվյալների թերթիկ:

ams.com/arm/Products/Magnetic-Position-Sens…

Հետաքրքիր է, որ միավորը ժամանակին հասանելի էր որպես Sparkfun- ի կողմից որպես ճեղքման մոդուլ.

www.sparkfun.com/products/retired/10835

Սենսորը նախատեսված է նավարկության ծրագրերի համար, ինչպիսիք են բջջային հեռախոսները, և չափազանց էժան է: Իմ կարծիքով անընդունելի է մի բանի համար, որն արժե մոտ $ 500:

Քայլ 2: Պինոուտ

Pinout
Pinout

Սենսորը միանում է PCB- ի աջ ձեռքի շնչափողի միավորին `միկրո 5 փին միակցիչով:

Pinout- ը հետևյալն է.

  1. Vcc +3.3VDC (

    Տեղականորեն կարգավորվում է 5 Վ -ից գծային կարգավորիչով, տախտակի մյուս կողմում, միակցիչի հետևում, պետք է լինի մոտ 20 մԱ, բայց ես դա ոչ մի կերպ չեմ փորձարկել)

  2. I2C SDA
  3. I2C SCL
  4. GND
  5. Կոճակ 1 (սովորաբար բարձր, ներքին 5 Վ քաշիչ)

Քայլ 3. Արձանագրության նկարագրություն

Արձանագրության նկարագրություն
Արձանագրության նկարագրություն

Սենսորը գործում էր I2C հասցեով 0x41 - բոլոր գրելու կամ կարդալու հրամանները սկսվում են այս հասցեով:

Երբ շնչափողը միանում է համակարգչին, I2C ավտոբուսում կա մոտ 250 մբ ներածություն ՝ 0x40 հասցեով, ես ենթադրում եմ, որ սա այլ սենսորային տարբերակի կամ նմանատիպ այլ բանի համար է, բայց դա մեզ համար տեղին չէ:

Սովորական օգտագործման դեպքում I2C ավտոբուսի վրա ուղարկված տվյալները ստորև են, դրանք պետք է մոդելավորվեն մեր միկրոկառավարիչի կողմից `շնչափողի հետ խոսելու համար:

Կարգավորում - Այս տվյալները ուղարկվում են մեկ անգամ ՝ USB- ի միացումից մոտ 500ms հետո, սկզբնական սենսորը օգտագործելու համար կարգավորելու համար:

Վարպետ գրել: 0x0F (Վերահսկիչ գրանցամատյան 1)

Տվյալներ ՝ 0x02 0b0000 0010 (սկսում է փափուկ վերականգնում)

Վարպետ գրել: 0x0F (Վերահսկիչ գրանցամատյան 1)

Գլխավոր ընթերցում.

Վարպետ գրել: 0x2E (Վերահսկիչ գրանցամատյան 2)

Տվյալներ ՝ 0x 86 (սա պարզապես սահմանում է մագնիսի կողմնորոշումը սկզբնական սենսորի մեջ)

Վարպետ գրել: 0x0F (Վերահսկիչ գրանցամատյան 1)

Տվյալներ ՝ 0x 80 0b1000 0000 (Սարքը դնում է անգործուն ռեժիմի (ավտոմատ չափում, ոչ թե ցածր էներգիայի ռեժիմում))

Օղակ. Սա կրկնվում է մոտ 100 Հց հաճախականությամբ ՝ սենսորային տվյալներ ստանալու համար:

Վարպետ գրել: 0x10 (X գրանցամատյան)

Master Read: (ստրուկն ուղարկում է X տվյալներ, 2 -ի լրացում 8 բիթանոց արժեք)

Վարպետ գրել: 0x11 (Y գրանցում)

Master Read: (ստրուկն ուղարկում է Y տվյալներ, 2 -ի լրացում 8 բիթանոց արժեք)

Տրամաբանական անալիզատորից արձանագրության աղբանոցի համապատասխան մասը.

Կարգավորում Գրեք [0x82] + ACK

0x0F + ACK

0x02 + ACK

Կարգավորում Գրեք [0x82] + ACK

0x0F + ACK

Կարգավորում Կարդացեք [0x83] + ACK

0xF1 + NAK

Կարգավորում Գրեք [0x82] + ACK

0x2E + ACK

0x86 + ACK

Կարգավորում Գրեք [0x82] + ACK

0x0F + ACK

0x80 + ACK

Կարգավորում Գրեք [0x82] + ACK

0x10 + ACK

Կարգավորում Կարդացեք [0x83] + ACK 0xFC + NAK

Կարգավորում Գրեք [0x82] + ACK 0x11 + ACK

Կարգավորում Կարդացեք [0x83] + ACK 0xFF + NAK

Քայլ 4: Arduino կոդ

Arduino կոդ
Arduino կոդ

Կցված Arduino ծածկագիրը կարող է օգտագործվել սենսորի նմանակման համար:

Խնդրում ենք նկատի ունենալ. Arduino- ի տախտակների մեծ մասը աշխատում է 5 Վ լարումով, դրա համար անհրաժեշտ է 3.3 Վ համատեղելի կամ փոփոխված տախտակ `աշխատելու համար` ձեր ջոյսթիքին վնասելուց:

Քայլ 5: Կալիբրացում

Կալիբրացիա
Կալիբրացիա

Երբ ձեր նոր սենսորը տեղադրվի, շնչափողը պետք է ճշգրտվի:

Ձեր շնչափողը կալիբրացնելու համար օգտագործեք շնչափողի տրամաչափման գործիքը: Այն կարելի է ներբեռնել մի շարք աղբյուրներից, ինչպիսիք են ՝

forums.eagle.ru/showthread.php?t=65901

Մի օգտագործեք պատուհանների տրամաչափումը:

Պաշտպանությունից առավելագույնը ստանալու համար դուք պետք է փոխեք մի քանի արժեքներ ձեր ստուգաչափման կազմաձևման ֆայլում:

Փոխել ՝

Standard_DZ_SX = 0x10;

Ստանդարտ_ԴZ_ՍՅ = 0x10;

A10_calibration.txt- ի տողերը ՝

Standard_DZ_SX = 0x01;

Ստանդարտ_ԴZ_ՍՅ = 0x01;

Սա 10 -ից 1 -ի կվերածվի մեռած գոտու մահվան կառավարման և շատ ավելի լավ վերահսկողություն կտա: Կարող եք խաղալ այս պարամետրով, այնուհետև նորից չափագրել և տեսնել, թե ինչն է ձեզ ամենից շատ դուր գալիս:

Խորհուրդ ենք տալիս: