Sisällysluettelo:
- Vaihe 1: Osaluettelo
- Vaihe 2: Selvä ratkaisu
- Vaihe 3: Cascading -ajastimet parempaa resoluutiota varten
Video: Korkean resoluution PWM -signaalin luominen RC -servoille STM32 -laitteilla: 3 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:00
Rakennan tällä hetkellä SX1280 RF -siruun perustuvaa RC -lähetintä/vastaanotinta. Yksi projektin tavoitteista on, että haluan 12 -bittisen servotarkkuuden tikkuista aina servoihin asti. Osittain siksi, että nykyaikaisilla digitaalisilla servoilla on 12-bittinen resoluutio, toiseksi huippuluokan lähetin käyttää joka tapauksessa 12 bittiä. Tutkin, kuinka voin tuottaa korkean resoluution PWM -signaaleja STM32 -laitteille. Käytän prototyyppiä varten tällä hetkellä mustaa pilleriä (STM32F103C8T8).
Vaihe 1: Osaluettelo
Laitteisto
- Mikä tahansa STM32F103 -kehityskortti (sininen pilleri, musta pilleri jne.)
- USB -virtapankki virtalähteenä
- STM32-ohjelmoija (Segger j-links, ST-LINK/V2 tai yksinkertaisesti st-link-klooni)
Ohjelmisto
- STM32CubeMX
- Atollic TrueSTUDIO STM32: lle
- Projektin lähde githubista
Vaihe 2: Selvä ratkaisu
Luultavasti helpoin ratkaisu on käyttää yhtä ajastimesta, joka voi tuottaa PWM-signaaleja, kuten TIM1-3 STM32F103: ssa. Nykyaikaisen digitaalisen servon kuvataajuus voi laskea noin 5 ms: iin, mutta vanhan analogisen servon sen pitäisi olla 20 ms tai 50 Hz. Joten pahimmassa tapauksessa kehitämme sen. 72 MHz: n kellon ja 16 -bittisen ajastinlaskurin tarkkuuden vuoksi meidän on asetettava ajastimen esiasetin vähintään 23: een 20 ms: n kuvataajuuden kattamiseksi. Valitsin 24, koska sitten 20 ms: n ajan minun on asetettava laskuri täsmälleen 60000: een. Näet CubeMX -asetukset ja luodut 1 ja 1,5 ms PWM -signaalit kuvakaappauksissa. Valitettavasti 1 ms: n ajastinlaskurin tulisi olla 3000, mikä antaisi meille vain 11 -bittisen resoluution. Ei paha, mutta tavoite oli 12 -bittinen, joten kokeillaan jotain muuta.
Tietenkin Jos valitsisin mikro -ohjaimen, jossa on 32 -bittinen ajastinlaskuri, kuten STM32L476, tämä resoluutio voi olla paljon suurempi ja ongelma ratkaistaan.
Mutta tässä haluaisin ehdottaa vaihtoehtoista ratkaisua, joka lisää entisestään jopa STM32F103: n resoluutiota.
Vaihe 3: Cascading -ajastimet parempaa resoluutiota varten
Suurin ongelma edellisessä ratkaisussa on se, että kehysnopeus (20 ms) on suhteellisen korkea verrattuna todellisuudessa luotuun PWM -signaaliin (1-2 ms), joten tuhlaamme joitain arvokkaita bittejä jäljellä oleville 18 ms: lle odottaessamme seuraava kehys. Tämä voidaan ratkaista porrastamalla ajastimia käyttämällä ajastinlinkkiominaisuutta synkronointia varten.
Ajatuksena on, että käytän TIM1: tä isäntänä kehysnopeuden (20 ms) ja TIM2, TIM3 selviytymään PWM -signaaleista orjina. Kun isäntä laukaisee orjat, ne tuottavat vain PWM -signaalin yhdessä pulssitilassa. Siksi minun on katettava vain 2 ms näissä ajastimissa. Onneksi voit laskea nämä ajastimet laitteistoon, joten tämä synkronointi ei vaadi prosessorin väliintuloa ja se on myös erittäin tarkka, värinä on ps -alueella. Näet CubeMX -asetukset kuvakaappauksissa.
Kuten näette, valitsin esikalariksi 3, joten 2 ms: n ajan minun on asetettava 48000 ajastinlaskuriin. Tämä antaa meille 24000 1 ms, joka on itse asiassa enemmän mitä tarvitsemme 14 -bittiselle resoluutiolle. Tadaaaa…
Katso intro -oscilloskoopin kuvakaappaukset lopputuloksesta. Kanava 3 (violetti) on pääajastimen keskeytys, joka laukaisee salvat tuottamaan yhden pulssin. Kanava 1 ja 4 (keltainen ja vihreä säde) ovat eri ajastimien tuottamia todellisia PWM -signaaleja. Huomaa, että ne ovat synkronoituja, mutta ne synkronoidaan takareunoilla, mikä johtuu PWM -tilasta 2. Tämä ei ole ongelma, koska tietyn servon PWM -nopeus on edelleen oikea.
Tämän ratkaisun toinen etu on se, että kehysnopeuden muuttaminen merkitsisi vain TIM1 -ajanjakson muuttamista. Nykyaikaisilla digitaalisilla servoilla voit laskea jopa 200-300 Hz: iin, mutta tarkista servon käyttöopas, jos haluat hienosäätää.
Suositeltava:
Korkean resoluution taajuuslaskuri: 5 vaihetta (kuvien kanssa)
Korkean resoluution taajuuslaskuri: Tämä ohje näyttää vastavuoroisen taajuuslaskurin, joka pystyy mittaamaan taajuuksia nopeasti ja kohtuullisella tarkkuudella. Se on valmistettu vakiokomponenteista ja se voidaan tehdä viikonloppuna (kesti vähän kauemmin :-)) EDIT: Koodi on nyt saatavilla
Kannettavan älypeilin luominen/meikkilaatikkoyhdistelmän luominen: 8 vaihetta
Kannettavan älypeilin luominen/meikkilaatikkoyhdistelmän luominen: Viimeisenä projektina Davisin & Elkinsin yliopisto, päätin suunnitella ja luoda meikkimatkalaukun sekä suuremman peilin ja käyttää vadelmapiä ja taikuuspeiliohjelmistoa, joka toimisi porttina
Korkean resoluution verkkokamera: 9 vaihetta (kuvien kanssa)
Korkean resoluution verkkokamera: Käytin joitakin vuosia RPi -pohjaista verkkokameraa (PiCam -moduulin kanssa). Tuotetut kuvat olivat kunnossa, mutta sitten oli hetki, jolloin en ollut enää tyytyväinen laatuun. Päätin tehdä korkean resoluution verkkokameran. Seuraavat osat ovat
OpenLogger: Korkean resoluution, Wi-Fi käytössä, avoimen lähdekoodin, kannettava dataloggeri: 7 vaihetta
OpenLogger: Korkean resoluution, Wi-Fi käytössä, avoimen lähdekoodin, kannettava dataloggeri: OpenLogger on kannettava, avoimen lähdekoodin, edullinen ja korkearesoluutioinen dataloggeri, joka on suunniteltu tarjoamaan korkealaatuisia mittauksia ilman kalliita ohjelmistoja tai kirjoitusohjelmistoja tyhjästä. Jos olet insinööri, tiedemies tai harrastaja, joka ei
Kuinka saada korkean resoluution kuvat pois ohjeista: 4 vaihetta
Kuinka saada korkean resoluution kuvat pois opetusmateriaaleista: Nautitko todella siitä ohjeellisesta kuvasta ja haluatko tallentaa siitä korkean resoluution kopion? Tämä hieno pieni ominaisuus jää helposti huomiotta