Indholdsfortegnelse:
![Højopløselig PWM -signalgenerering til RC -servoer med STM32 -enheder: 3 trin Højopløselig PWM -signalgenerering til RC -servoer med STM32 -enheder: 3 trin](https://i.howwhatproduce.com/images/010/image-27969-j.webp)
Video: Højopløselig PWM -signalgenerering til RC -servoer med STM32 -enheder: 3 trin
![Video: Højopløselig PWM -signalgenerering til RC -servoer med STM32 -enheder: 3 trin Video: Højopløselig PWM -signalgenerering til RC -servoer med STM32 -enheder: 3 trin](https://i.ytimg.com/vi/7XeTgV9OJvM/hqdefault.jpg)
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:27
![Højopløselig PWM -signalgenerering til RC -servoer med STM32 -enheder Højopløselig PWM -signalgenerering til RC -servoer med STM32 -enheder](https://i.howwhatproduce.com/images/010/image-27969-1-j.webp)
![Højopløselig PWM -signalgenerering til RC -servoer med STM32 -enheder Højopløselig PWM -signalgenerering til RC -servoer med STM32 -enheder](https://i.howwhatproduce.com/images/010/image-27969-2-j.webp)
![Højopløselig PWM -signalgenerering til RC -servoer med STM32 -enheder Højopløselig PWM -signalgenerering til RC -servoer med STM32 -enheder](https://i.howwhatproduce.com/images/010/image-27969-3-j.webp)
I øjeblikket bygger jeg en RC -sender/modtager baseret på SX1280 RF -chippen. Et af målene for projektet er, at jeg vil have 12 bit servo -opløsning fra pindene helt ned til servoerne. Dels fordi moderne digitale servoer har 12 bit opløsning, for det andet bruger en high-end sender 12 bits alligevel. Jeg undersøgte, hvordan jeg kan generere højopløselige PWM -signaler på STM32 -enheder. Jeg bruger i øjeblikket sort pille (STM32F103C8T8) til prototypen.
Trin 1: Deleliste
Hardware
- Enhver STM32F103 udviklingstavle (blå pille, sort pille osv.)
- En USB powerbank som strømforsyning
- STM32 programmerer (Segger j-links, ST-LINK/V2 eller simpelthen en st-link klon)
Software
- STM32CubeMX
- Atollic TrueSTUDIO til STM32
- Projektkilde fra github
Trin 2: Den åbenlyse løsning
![Den åbenlyse løsning Den åbenlyse løsning](https://i.howwhatproduce.com/images/010/image-27969-4-j.webp)
![Den åbenlyse løsning Den åbenlyse løsning](https://i.howwhatproduce.com/images/010/image-27969-5-j.webp)
![Den åbenlyse løsning Den åbenlyse løsning](https://i.howwhatproduce.com/images/010/image-27969-6-j.webp)
Sandsynligvis den nemmeste løsning er at bruge en af timeren, der kan generere PWM-signaler, som TIM1-3 på en STM32F103. For en moderne digital servo kan billedhastigheden gå ned til 5 ms eller deromkring, men for en gammel analog servo bør den være 20 ms eller 50 Hz. Så lad os generere det som et værst tænkeligt scenario. Med et 72 MHz ur og en 16 bit timer tælleropløsning skal vi indstille timeren til forvalteren til minimum 23 for at dække billedhastigheden på 20 ms. Jeg valgte 24, fordi jeg derefter i 20 ms skal indstille tælleren nøjagtigt til 60000. Du kan se CubeMX -opsætningen og de genererede 1 og 1,5 ms PWM -signaler i skærmbillederne. Desværre skulle timertælleren i 1 ms indstilles til 3000, hvilket kun ville give os 11 bit opløsning. Ikke dårligt, men målet var 12 bit, så lad os prøve noget andet.
Selvfølgelig Hvis jeg ville vælge en mikrocontroller med 32 bit timer tæller, ligesom STM32L476, kan denne opløsning være meget højere, og problemet ville blive løst.
Men her vil jeg gerne foreslå en alternativ løsning, der vil øge opløsningen yderligere på STM32F103.
Trin 3: Kaskadetimere til højere opløsning
![Kaskadetimere til højere opløsning Kaskadetimere til højere opløsning](https://i.howwhatproduce.com/images/010/image-27969-7-j.webp)
![Kaskadetimere til højere opløsning Kaskadetimere til højere opløsning](https://i.howwhatproduce.com/images/010/image-27969-8-j.webp)
![Kaskadetimere til højere opløsning Kaskadetimere til højere opløsning](https://i.howwhatproduce.com/images/010/image-27969-9-j.webp)
Hovedproblemet med tidligere løsning er, at billedhastigheden (20 ms) er relativt høj i forhold til det faktisk genererede PWM -signal (mellem 1 og 2 ms), så vi spilder nogle værdifulde bits for de resterende 18 ms, når vi venter på den næste ramme. Dette kan løses ved at kaskade timere ved hjælp af timerlink -funktionen til synkronisering.
Ideen er, at jeg vil bruge TIM1 som master til at generere billedhastigheden (20 ms) og TIM2, TIM3 til at klare PWM -signalerne som slaver. Når masteren udløser slaverne, genererer de kun et PWM -signal i en pulsfunktion. Derfor behøver jeg kun at dække 2 ms i disse timere. Heldigvis kan du kaskade disse timere i hardware, så denne synkronisering ikke behøver nogen indgriben fra processoren, og det er også meget præcist, rystelsen er i ps -regionen. Du kan se CubeMX -opsætningen på skærmbillederne.
Som du kan se, valgte jeg 3 som prescalar, så for de 2 ms skal jeg indstille 48000 i timertælleren. Dette giver os 24000 for 1 ms, hvilket faktisk er mere, hvad vi har brug for til 14 bit opløsning. Tadaaaa…
Tag et kig på oscilloskopets skærmbilleder i introen for det endelige resultat. Kanalen 3 (lilla) er master -timers afbrydelse, som vil udløse salverne til at generere en puls. Kanal 1 og 4 (gul og grøn stråle) er de faktiske PWM -signaler genereret af forskellige timere. Bemærk, at de er synkroniseret, men de er synkroniseret ved bagkanterne, det er på grund af PWM -tilstand 2. Dette er ikke et problem, fordi PWM -hastigheden for den pågældende servo stadig er korrekt.
En anden fordel ved denne løsning er, at ændring af billedfrekvensen ville betyde kun at ændre perioden i TIM1. For moderne digitale servoer kan du gå ned til endda 200-300 Hz, men se venligst servoens manual, hvis du vil finjustere.
Anbefalede:
Højopløselig webcam: 9 trin (med billeder)
![Højopløselig webcam: 9 trin (med billeder) Højopløselig webcam: 9 trin (med billeder)](https://i.howwhatproduce.com/images/005/image-14719-j.webp)
Højopløselig webcam: I nogle år brugte jeg et RPi -baseret webcam (med PiCam -modulet). De producerede billeder var i orden, men så var der det øjeblik, hvor jeg ikke længere var tilfreds med kvaliteten. Jeg besluttede mig for at lave et webkamera i høj opløsning. Følgende dele med
PWM Med ESP32 - Dæmpning LED med PWM på ESP 32 Med Arduino IDE: 6 trin
![PWM Med ESP32 - Dæmpning LED med PWM på ESP 32 Med Arduino IDE: 6 trin PWM Med ESP32 - Dæmpning LED med PWM på ESP 32 Med Arduino IDE: 6 trin](https://i.howwhatproduce.com/images/001/image-1144-103-j.webp)
PWM Med ESP32 | Dæmpning af LED med PWM på ESP 32 Med Arduino IDE: I denne instruktion vil vi se, hvordan man genererer PWM -signaler med ESP32 ved hjælp af Arduino IDE & PWM bruges dybest set til at generere analog output fra enhver MCU, og den analoge output kan være alt mellem 0V til 3,3V (i tilfælde af esp32) & fra
1A til 40A nuværende BOOST -konverter til op til 1000W DC -motor: 3 trin
![1A til 40A nuværende BOOST -konverter til op til 1000W DC -motor: 3 trin 1A til 40A nuværende BOOST -konverter til op til 1000W DC -motor: 3 trin](https://i.howwhatproduce.com/images/006/image-16934-16-j.webp)
1A til 40A Current BOOST-konverter til op til 1000W DC-motor: Hej! I denne video lærer du, hvordan du laver et strømforstærkerkredsløb til dine høj ampere DC-motorer op til 1000W og 40 ampere med transistorer og en center-tap-transformer. Selvom, strømmen ved udgangen er meget høj, men spændingen bliver r
Overbevis dig selv om bare at bruge en 12V-til-AC-line inverter til LED-lysstrenge i stedet for at genoprette dem til 12V .: 3 trin
![Overbevis dig selv om bare at bruge en 12V-til-AC-line inverter til LED-lysstrenge i stedet for at genoprette dem til 12V .: 3 trin Overbevis dig selv om bare at bruge en 12V-til-AC-line inverter til LED-lysstrenge i stedet for at genoprette dem til 12V .: 3 trin](https://i.howwhatproduce.com/images/003/image-6100-83-j.webp)
Overbevis dig selv om bare at bruge en 12V-til-AC-line inverter til LED-lysstrenge i stedet for at genoprette dem til 12V .: Min plan var enkel. Jeg ville skære en væg-drevet LED-lysstreng i stykker og derefter genkoble den til at køre 12 volt. Alternativet var at bruge en strømomformer, men vi ved alle, at de er frygtelig ineffektive, ikke? Ret? Eller er de det?
12v til USB Adapter 12v til 5v Transformer (fantastisk til biler): 6 trin
![12v til USB Adapter 12v til 5v Transformer (fantastisk til biler): 6 trin 12v til USB Adapter 12v til 5v Transformer (fantastisk til biler): 6 trin](https://i.howwhatproduce.com/preview/how-and-what-to-produce/11124725-12v-to-usb-adapter-12v-to-5v-transformer-great-for-cars-6-steps-j.webp)
12v til USB Adapter 12v til 5v Transformer (fantastisk til biler): Dette viser dig, hvordan du laver en 12v til USB (5v) adapter. Den mest oplagte anvendelse af dette er til 12v biladaptere, men hvor som helst du har 12v kan du bruge det! Hvis du har brug for 5v til andet end USB, skal du blot springe trinene om tilføjelse af USB -porte over