Orodha ya maudhui:

Azimio la Juu PWM Kizazi cha Ishara kwa RC Servos Pamoja na Vifaa vya STM32: Hatua 3
Azimio la Juu PWM Kizazi cha Ishara kwa RC Servos Pamoja na Vifaa vya STM32: Hatua 3

Video: Azimio la Juu PWM Kizazi cha Ishara kwa RC Servos Pamoja na Vifaa vya STM32: Hatua 3

Video: Azimio la Juu PWM Kizazi cha Ishara kwa RC Servos Pamoja na Vifaa vya STM32: Hatua 3
Video: 🟡 POCO X5 PRO - САМЫЙ ДЕТАЛЬНЫЙ ОБЗОР и ТЕСТЫ 2024, Novemba
Anonim
Azimio la Juu PWM Kizazi cha Ishara kwa RC Servos Pamoja na Vifaa vya STM32
Azimio la Juu PWM Kizazi cha Ishara kwa RC Servos Pamoja na Vifaa vya STM32
Azimio la Juu PWM Kizazi cha Ishara kwa RC Servos Pamoja na Vifaa vya STM32
Azimio la Juu PWM Kizazi cha Ishara kwa RC Servos Pamoja na Vifaa vya STM32
Azimio la Juu PWM Kizazi cha Ishara kwa RC Servos Pamoja na Vifaa vya STM32
Azimio la Juu PWM Kizazi cha Ishara kwa RC Servos Pamoja na Vifaa vya STM32

Hivi sasa, ninaunda transmitter / mpokeaji wa RC kulingana na chip ya SX1280 RF. Lengo moja la mradi huo ni kwamba nataka azimio la servo 12 kutoka kwa vijiti mbali kabisa hadi kwenye servos. Hasa kwa sababu servos za kisasa za dijiti zina azimio la 12 kidogo pili mtoaji wa hali ya juu anatumia bits 12 hata hivyo. Nilikuwa nikichunguza jinsi ninavyoweza kutoa ishara za juu za PWM kwenye vifaa vya STM32. Ninatumia kidonge nyeusi (STM32F103C8T8) kwa sasa kwa mfano.

Hatua ya 1: Orodha ya Sehemu

Vifaa

  • Bodi yoyote ya maendeleo ya STM32F103 (kidonge cha hudhurungi, kidonge nyeusi, n.k.)
  • Benki ya umeme ya USB kama usambazaji wa umeme
  • Programu ya STM32 (Segger j-viungo, ST-LINK / V2, au tu kiunganishi cha st-link)

Programu

  • STM32CubeMX
  • Atollic TrueSTUDIO ya STM32
  • Chanzo cha mradi kutoka github

Hatua ya 2: Suluhisho la wazi

Suluhisho la wazi
Suluhisho la wazi
Suluhisho la wazi
Suluhisho la wazi
Suluhisho la wazi
Suluhisho la wazi

Labda suluhisho rahisi ni kutumia moja ya kipima muda ambacho kinaweza kutoa ishara za PWM, kama TIM1-3 kwenye STM32F103. Kwa servo ya kisasa ya dijiti kiwango cha fremu kinaweza kushuka hadi 5 ms au hivyo, lakini kwa servo ya zamani ya analog inapaswa kuwa 20 ms au 50 Hz. Kwa hivyo, kama hali mbaya zaidi hebu tuzalishe hiyo. Na saa ya MHz 72 na azimio la kukabiliana na timer 16 tunahitaji kuweka prescaler ya saa kwa kiwango cha chini cha 23 ili kufidia kiwango cha fremu 20 ms. Nilichagua 24 kwa sababu basi kwa ms 20 nahitaji kuweka kaunta haswa hadi 60000. Unaweza kuona usanidi wa CubeMX na ishara zinazozalishwa za 1 na 1.5 ms PWM kwenye viwambo vya skrini. Kwa bahati mbaya, kwa 1ms kaunta ya saa inapaswa kuwekwa kwa 3000, ambayo itatupa tu azimio 11 tu. Sio mbaya, lakini lengo lilikuwa 12 kidogo, basi wacha tujaribu kitu kingine.

Kwa kweli ikiwa ningechagua kidhibiti kidogo na kaunta ya saa 32, kama STM32L476 azimio hili linaweza kuwa kubwa zaidi na shida ingetatuliwa.

Lakini hapa, ningependa kupendekeza suluhisho mbadala ambalo litaongeza azimio hata kwenye STM32F103.

Hatua ya 3: Kuweka vipima muda kwa Azimio la Juu

Vipimo vya muda vya Azimio la Juu
Vipimo vya muda vya Azimio la Juu
Vipimo vya muda vya Azimio la Juu
Vipimo vya muda vya Azimio la Juu
Vipimo vya muda vya Azimio la Juu
Vipimo vya muda vya Azimio la Juu

Shida kuu na suluhisho la hapo awali ni kwamba kiwango cha fremu (20 ms) ni kubwa sana ikilinganishwa na ishara ya kweli ya PWM (kati ya 1 na 2 ms), kwa hivyo tunapoteza vipande kadhaa vya thamani kwa 18 ms iliyobaki wakati tunangojea sura inayofuata. Hii inaweza kutatuliwa kwa kutumia vipima muda kwa kutumia kipengee cha kiunga cha kipima muda kwa usawazishaji.

Wazo ni kwamba nitatumia TIM1 kama bwana kutoa kiwango cha fremu (20 ms) na TIM2, TIM3 kukabiliana na ishara za PWM kama watumwa. Wakati bwana anasababisha watumwa huzalisha tu ishara ya PWM kwa njia moja ya kunde. Kwa hivyo ninahitaji tu kufunika 2 ms katika vipima muda hivyo. Kwa bahati nzuri unaweza kuteketeza vipima muda katika vifaa hivyo usawazishaji huu hauitaji uingiliaji wowote kutoka kwa processor na ni sahihi pia, jitter iko katika mkoa wa ps. Unaweza kuona usanidi wa CubeMX kwenye viwambo vya skrini.

Kama unavyoona nilichagua 3 kama mapema ili kwa ms 2 nahitaji kuweka 48000 kwenye kaunta ya kipima muda. Hii inatupa 24000 kwa 1 ms ambayo kwa kweli ni zaidi tunayohitaji kwa utatuzi wa 14. Tadaaaa…

Tafadhali angalia viwambo vya skrini ya oscilloscope kwenye utangulizi wa matokeo ya mwisho. Kituo cha 3 (zambarau) ni kukatiza kwa timer bwana ambayo itasababisha salves kutoa mapigo moja. Channel 1 na 4 (boriti ya manjano na kijani) ni ishara halisi za PWM zinazozalishwa na vipima wakati tofauti. Kumbuka kuwa zinaoanisha lakini zimesawazishwa kwenye kingo zinazofuatia, hiyo ni kwa sababu ya hali ya PWM 2. Hili sio shida, kwa sababu kiwango cha PWM cha servo fulani bado ni sahihi.

Faida nyingine ya suluhisho hili ni kwamba kubadilisha kiwango cha fremu itamaanisha kubadilisha kipindi katika TIM1 tu. Kwa servos za kisasa za dijiti unaweza kushuka hata 200-300 Hz, lakini tafadhali wasiliana na mwongozo wa servo ikiwa unataka kufanya tune nzuri.

Ilipendekeza: