[Onderwater boegschroefbediening] Hoe gebruik ik STM32 om ESC via PWM te regelen?

Geplaatst door Fengyukun op

Veel onderzoekers die microcontrollers willen gebruiken om de werking van stuwraketten te controleren, hebben veel informatie op internet gevonden, maar ontdekten dat veel ervan niet duidelijk geschreven zijn. APISQUEEN legt grofweg vast hoe het probleem kan worden opgelost.
Ik hoop dat iedereen zijn ervaringen in het commentaarveld kan delen en meer mensen kan helpen.
De ESC die we hebben gekocht is misschien anders, maar het algemene besturingsidee is hetzelfde, dus ik denk dat je na het lezen van dit artikel je doelen zult kunnen bereiken.

PWM-signaal:
(1) PWM-golfbesturing (doorgaans gebruikt esc 50 Hz of 20 ms PWM-golfbesturing);
(2) Tussenpauze (hier wordt doorgaans verwezen naar een werkcyclus op hoog niveau) 1,5 ms, in feite is het een tussenpauze tussen 1,475 ms en 1,525 ms;
(3) Het regelbereik is 1 ms ~ 2 ms;
(4) Ga 1,5 ms vooruit naar 2 ms en ga 1,5 ms terug naar 1 ms.



Hier is een eenvoudige referentie gebaseerd op Arduino:



OPMERKING: De ESC moet ontgrendeld zijn om te kunnen gebruiken! Wanneer u de ESC op de stroom aansluit, piept hij 3 keer, en als hij succesvol is ontgrendeld, piept hij 2 keer, in totaal 5 keer. Als u ESC niet met succes ontgrendelt, kunt u deze niet gebruiken om te besturen. Daarom kunnen we, verwijzend naar de bovenstaande code, concluderen dat de manier om ESC te ontgrendelen is om het na initialisatie op een neutraal signaal in te stellen en te wachten tot het signaal wordt ontvangen (twee piepjes) voordat de snelheidsregeling wordt gestart.


Controle- en foutopsporingsmethoden


We gebruiken het STM32F7-ontwikkelbord en gebruiken de HAL-bibliotheek voor programmeren en debuggen. In feite voert de timer PWM-golven uit. Maar er zijn veel dingen waar je op moet letten, en onduidelijke details verspillen echt tijd en energie. Hier zijn een paar woorden over de foutopsporingservaring.

Allereerst moet u er bij het configureren van de PWM-golf in de timer op letten dat u deze niet initialiseert als een ontgrendelingssignaal, er geen willekeurige waarde aan geeft of deze niet configureert. Omdat ESC pas wordt ontgrendeld nadat de timer en PWM zijn geïnitialiseerd, is, in mijn voorbeeld, het gemiddelde stopsignaal van 1,5 ms het ontgrendelingssignaal, dan kun je de PWM vanaf het begin niet configureren op 1,5 ms, anders piept ESC slechts één keer daarna drie pieptonen en dan draait je peddel nog steeds niet.



Ten tweede, let op het gebruik van vertraging. In eerste instantie gebruikte ik geen vertraging, en het resultaat was dat ESC alleen maar piepte en vervolgens niet reageerde. Toen ik vervolgens de PWM-golf observeerde met een oscilloscoop, ontdekte ik dat de PWM die ik had geïnitialiseerd direct flitste, en ik moest geef ESC de tijd om het ontgrendelingssignaal te ontvangen. Maar je moet op dit moment ook opletten. In eerste instantie gebruikte ik delay_us() om het te configureren, maar het probleem kon niet worden opgelost. Later veranderde ik het in delay_ms(1000), wat betekent dat de geconfigureerde tijd 1s is. is nog steeds een probleem. Vervolgens heb ik de tijd aangepast. Na twee laatste pieptonen begint de motor te draaien. Daarom is het erg belangrijk om de ontvangsttijd van dit ontgrendelingssignaal te kennen.



Besteed ook aandacht aan het leren omgaan met een oscilloscoop om te controleren of er problemen zijn met de signalen die je tijdens het gebruik configureert. Hieronder ziet u de PWM-golf met een werkcyclus van 1,5 ms, een periode van 20 ms en een amplitude van 3,3 V die ik in het begin heb geïnitialiseerd.



Samenvattend moet bij het hele proces aandacht worden besteed aan:

(1) ESC wordt over het algemeen geregeld op een frequentie van 50 Hz, en het regelbereik ligt grofweg tussen 1 ms en 2 ms, uiteraard afhankelijk van de situatie.
(2) Nadat de stroom is ingeschakeld, piept ESC 3 keer. Nadat het ontgrendelen is gelukt, piept ESC 2 keer. Als de ESC echter slechts één keer piept, kan dit betekenen dat de ESC het door u geconfigureerde signaal heeft ontvangen, maar het apparaat niet succesvol heeft ontgrendeld. U moet dus de ontgrendelingscode nogmaals controleren om te zien of er fouten zijn. Als de ESC geen geluid maakt en geen signaal ontvangt, controleer dan uw bedrading en code.
(3) Let erop dat u de vertragingsfunctie gebruikt om de ESC een bepaalde tijd te geven om het ontgrendelingssignaal te ontvangen. Elke ESC is anders, dus u kunt dit zelf aanpassen.
(4) Let op de aarding, sluit de ESC-signaallijn aan op de signaaluitgang van de besturingskaart en aard de signaallijn vervolgens op de GND-aarde van de besturingskaart.
(5) Leer een oscilloscoop gebruiken om geconfigureerde signalen te controleren.
Sluit niet de verkeerde lijn aan!


Deel dit bericht



← Ouder bericht Nieuwer bericht →


Laat een reactie achter