
Orodha ya maudhui:
2025 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2025-01-23 15:11


Halo marafiki tena:) Kwa hivyo, katika mradi huu tutadhibiti servo motor na STM32F4 ARM MCU. Kwa upande wangu, nitatumia bodi ya ugunduzi, lakini ikiwa unaelewa kiini cha shida, basi unaweza kuitumia kwa kila MCU. Kwa hivyo. tuanze:)
Hatua ya 1: Mahitaji ya vifaa na programu
Kwa upande wa vifaa tutahitaji:
- MCU ambayo iko kwa upande wangu Bodi ya Ugunduzi ya STM32f4
- Servo motor ya kawaida, kama SG90 au nyingine yoyote
Kwa suala la programu tutahitaji:
- STM32CubeMX
- Keil uVision
Ikiwa unayo yote haya, rukia hatua inayofuata:)
Hatua ya 2: Usanidi wa STM32CubeMX
Kama unavyojua, kwa kudhibiti motor servo tunahitaji ishara ya PWM. Mahitaji kulingana na ishara ya PWM ni kama hiyo:
- Kipindi cha PWM kinapaswa kuwa 20 mS
- Kwa wakati lazima iwe kati ya 0.5 mS hadi 2.5 mS. Wakati kwa wakati ni 0.5 mS, basi servo itageuka digrii 0, 1.5 mS kwa digrii 90, na 2.5 mS kwa digrii 180.
Kwa hivyo, tunahitaji kusanidi PWM na kwa kusudi hilo tutatumia Timer1.
- Kwanza, chagua TIM1 kutoka sehemu ya Vipima muda. Hatua hii
- Kisha, kutoka sehemu ya Njia
- Chagua Saa ya Ndani Hatua hii
- Kizazi cha PWM CH1 Hatua hii
-
Kisha, kutoka sehemu ya Usanidi
- Weka Prescaler kwa 160 Hatua hii
- Weka Kipindi cha Kukabiliana na 2000 Hatua hii
- Weka Pulse hadi 50 Hatua hii
- Kwa kuongeza, kutoka kwa Usanidi wa Saa kuweka saa za APB1 Timer hadi 16MHz. Hatua hii
Sasa, wacha tuzungumze kidogo juu ya hatua hii:
Mzunguko wetu wa saa ya APB1 ni 16MHz. Kwa hivyo, inamaanisha kuwa inahitajika kupe 16, 000, 000 kupata sekunde 1. Walakini, tunaweka daktari wetu hadi 160. Inamaanisha, tunagawanya masafa yetu kwa idadi hiyo na kupunguza idadi ya kupe hadi 100, 000. Kwa hivyo, kwa sekunde 1 tunahitaji kupe elfu 100. Walakini, tunahitaji 20mS ya kipindi cha PWM kama tulivyosema hapo awali. Kwa hivyo, kulingana na hesabu rahisi, tunahitaji kupe 2000 kwa 20mS. Kwa hivyo, kwa kuweka Kipindi cha Kukabiliana na 2000 tunaamua kipindi cha ishara ya PWM ambayo ni 20mS. Sasa tunahitaji kuamua nambari ya kupe kwa kupata Mara kutoka 0.5mS hadi 2.5mS. Tunaweza kupata equation hii kutoka kwa hesabu rahisi na ni:
On_Time = (Tick_Number / 100). Kumbuka kwamba hii ni wakati wa wakati ambao hubadilisha pembe ya servo motor. Kwa hivyo, chini ya picha mimi muhtasari wa hatua hii. Ikiwa una swali lolote andika kwenye maoni na nitajibu haraka iwezekanavyo.
Picha ya mahesabu
Baada ya kufanya haya yote hutengeneza nambari:)
Hatua ya 3: Keil UVision Coding
Kwa hivyo, wacha kwanza tuamua nini tunataka kufanya? Tunataka, kuandika kazi ambayo inakubali digrii na kuiandikia servo. Kwa hivyo, tutafanyaje hivyo? Kama tulivyosema hapo awali, ili kubadilisha angle tunahitaji kubadilisha wakati. Angle zetu hubadilika kati ya [0, 180] na idadi yetu ya kupe ambayo huamua kwa wakati mabadiliko kati ya [50, 250]. Kwa hivyo, tunahitaji kazi ya ramani ambayo ramani zimepewa pembe kwa anuwai ya kupe. Kwa mfano, kwa tikiti 0 digrii 50, kwa kupe 180 digrii 250 na kadhalika… Kwa hivyo wacha tuandike kazi yetu ya ramani:
ramani ya int (int st1, int fn1, int st2, int fn2, int value) {kurudi (1.0 * (thamani-st1)) / ((fn1-st1) * 1.0) * (fn2-st2) + st2; }
Hii ni kazi yetu ya ramani. Je! Unavutiwa jinsi inavyopatikana? Kisha soma hiyo. Kwa hivyo, tunachukua safu zetu na thamani ambayo tunataka kuweka ramani.
Sasa, wacha tuandike kazi inayokubali pembe na kuiweka ramani kwa anuwai ya kupe:
batili servo_write (int angle) {htim1. Instance-> CCR1 = ramani (0, 180, 50, 250, angle); }
Kama unavyoona, nambari hii inakubali pembe na inaipa ramani kwa idadi ya kupe. Halafu, idadi ya kupe hutolewa kwa rejista ya CCR1 ambayo inadhibiti kwa wakati na kwa hivyo, pembe.
Walakini, ili hizi zote zifanye kazi tunaanza kwanza pwm ambayo inaweza kufanywa na laini tu ya nambari:
Anza HAL_TIM_PWM_Start (& htim1, TIM_CHANNEL_1);
Kwa hivyo, tuna kazi inayokubali pembe na kuiandikia servo. Wacha tuijaribu na tuandike kazi yetu ya kufagia ambayo ni rahisi sana:
utupu servo_sweep (utupu) {kwa (int i = 0; i <= 180; i ++) {servo_write (i); HAL_Delay (10); } kwa (int i = 180; i> = 0; i--) {servo_write (i); HAL_Delay (10); }}
Kwa hivyo, ni hesabu hadi 180 halafu chini hadi 0 na andika maadili haya kwa servo:) Kwa hivyo, wacha tuone matokeo!
Hatua ya 4: Matokeo:)
Kwa hivyo, huu ndio mwisho. Ikiwa una swali lolote tafadhali uliza. Nitafurahi ili kuwajibu. Asante sana kwa kusoma na tunatumahi kuwa nitakuona katika mradi unaofuata:)
Ilipendekeza:
Mzunguko wa Udhibiti wa Kasi ya Magari: Hatua 5

Mzunguko wa Udhibiti wa Kasi ya Dc: Katika nakala hii fupi, tunapata kujua jinsi ya kuunda mzunguko wa maoni ya hasi ya mwendo wa kasi wa DC. Hasa tunapata kujua jinsi mzunguko unafanya kazi na nini kuhusu ishara ya PWM? na njia ambayo ishara ya PWM imeajiriwa kudhibiti
Mafunzo ya Arduino - Udhibiti wa Magari ya Servo na Joystick: Hatua 4

Mafunzo ya Arduino - Udhibiti wa Magari ya Servo na Joystick: Katika mafunzo haya, tutajifunza jinsi ya kutumia servo na Joystick. Tutadhibiti 1 pcs servo motor na Joystick 1. Unaweza kutekeleza miradi yako ya mkono wa roboti kwa kurejelea mafunzo haya. Kwa kweli tutatumia betri / nguvu ya nje wakati wa kufanya
Mafunzo ya Arduino - Udhibiti wa Magari ya Servo Na Potentiometer: Hatua 5

Mafunzo ya Arduino - Udhibiti wa Magari ya Servo Pamoja na Potentiometer: Hii inaweza kufundishwa ni toleo lililoandikwa la yangu " Arduino: Jinsi ya Kudhibiti Servo Motor na Potentiometer " Video ya YouTube ambayo nimepakia hivi majuzi. Ninakupendekeza sana kuiangalia. Tembelea Kituo cha YouTube
Mafunzo ya Arduino - Udhibiti wa Magari ya Servo Na Arduino: Hatua 5

Mafunzo ya Arduino - Udhibiti wa Magari ya Servo Na Arduino: Hii inaweza kufundishwa ni toleo lililoandikwa la yangu " Arduino: Jinsi ya Kudhibiti Servo Motor na Arduino " Video ya YouTube ambayo nimepakia hivi majuzi. Ninakupendekeza sana kuiangalia. Tembelea Kituo cha YouTube
Udhibiti wa kasi wa Magari ya DC Kutumia PID Algorithm (STM32F4): Hatua 8 (na Picha)

Udhibiti wa kasi wa Magari ya DC Kutumia Algorithm ya PID (STM32F4): hello kila mtu, Hii ni tahir ul haq na mradi mwingine. Wakati huu ni STM32F407 kama MC. Huu ni mwisho wa mradi wa muhula wa katikati. Natumahi unaipenda.Inahitaji dhana nyingi na nadharia ili tuingie ndani kwanza.Na ujio wa kompyuta na