Fórum témák
» Több friss téma |
Végülis a kollega ezt javasolta:
#define ILI_WRITE_8BIT(d) {uint8_t arg = d; GPIO_OCTL(ILI_PORT_DATA) = (GPIO_OCTL(ILI_PORT_DATA) & 0xff00) | arg; ILI_WR_STROBE;} így működik jól. Sort kerítettünk a library-k kérdésére. Valamivel tisztább a kép )
Ez technikailag ugyanaz az univerzális mód, amit én ajánlottam neked...
Viszont az arg változót ajánlatosabb 16 bitesként deklarálni, az a biztos!
Köszönöm neked is a választ, a szűk keresztmetszet itt is a tudatlanságom volt.
Sziasztok!
Vannak ezek az ún.: Hoverboard-ok. azoknak a vezérlője általában valamilyen MCU. Jelen esetben STM32F103RCT6. ( nem is lényeges). Ezt a firmware-t használom kisebb módosításokkal, jól is működik, viszont, van egy fűnyíró motorom amiben nincs Hall jeladó, csak ugye a 3 vezeték a tekercsekhez. Hogyan tudnám azt a projektet átmókolni, hogy hall-jeladó nélkül is működjön, vagy ez nem ilyen egyszerű? Esetleg elég egy támpont is, hol nézelődjek, vagy miket kellene átírni, módosítani. A projektben ilyet találtam Szerintem ez az a rész amit módosítani kellene, de nem tudom, hogyan. A segítségeteket köszönöm. (nem, várom el, hogy ,megcsináljátok helyettem, elég egy támpont mit kellene, vagy esetleg hogyan induljak el). Azt elfelejtettem mondani, hogy a fűnyíró motor 7S akkuról ment(28V) a hoverboard vezérlő pedig 10S akkuról megy (42V), ez nem releváns, mert elvileg a vezérlő tud menni alacsonyabb feszültségről is. A hozzászólás módosítva: Jún 8, 2022
Nem szívesen mondom ezt, de szerintem nem tudod egyszerűen átmókolni sensorless-re ezt a vezérlőt.
A BLDC motorok vezérlésénél a legnehezebb feladat annak megoldása, hogy megbecsülje a vezérlő, hogy pillanatnyilag hol van a forgórész. A Hall-elemes vagy egyéb szenzoros megoldásoknál ugye nincs ilyen gond, hiszen erre valók az érzékelők. A sensorless megoldásoknál a BEMF jelet felhasználva számítják ki a motor pillanatnyi helyzetét. Ráadásul a hoverboardnál álló helyzetben is tudni kellene, hogy hol áll a motor, és álló helyzetben nincs BEMF jel. (A fűnyírónál nem gond hogy induláskor megrángatja a forgórészt, és akkor máris van némi indukált feszültség, de ennél a közlekedési eszköznél ilyenkor leesne az ember induláskor) Erre is van módszer, pl. a HFI (high frequency injection), de ez is rengeteg számítás. Röviden, egy csomó matekot kell végeznie a vezérlőnek, épp ezért azokhoz már - amiket én láttam - legalább STM32F407-t használnak. A forráskódba belenéztem, de semmi hasonlót nem találtam. Hoppá, most nézem, hogy azt nem is írtad, hogy a motor BLDC lenne. Nem tudom, hogy a fűnyírómotor milyen, ha nem BLDC, akkor felejtsd el, amit fentebb írtam. A hozzászólás módosítva: Jún 8, 2022
Oh értem, igazából csak azért gondoltam ezt, mert az eredeti vezérlőjét ( a fűnyírónak) nem tudom életre kelteni, hoverboard vezérlőből meg van pár itthon.
Köszönöm, hogy ránéztél!
Ezek után esetleg érdemes megnézni a másik módszerrel is, hogy működik-e, és gyorsul-e valamennyit.
Sziasztok
Valaki tudja , hogy ARM cortex M4 PWM lábainak hány hertz a frekvenciája? ( NUCLEO-F302R8 panelon van az MCU , de nem találok róla dokumentációt)
A hozzátartozó TIM előosztó, számláló határozza meg a periódus időt...
A timer (PWM) perifériát a gyártó (STM) adja, nem az ARM.
Gyártói dokumentáció: https://www.st.com/resource/en/reference_manual/rm0365-stm32f302xbc...cs.pdf https://www.st.com/resource/en/datasheet/stm32f302r6.pdf
És az is számít, hogy az adott TIM milyen órajelről jár. Ez kerül továbbosztásra.
Amúgy nem a lábnak van frekvenciája.
Attól is függ, hogy melyik timerről van szó, és honnan kap órajelet. Használd a CubeMX-et, ott ezek láthatók és állíthatók is.
Úgy is fogalmazhattam volna hogy PWM képes kimenetek . A Cube MX et meg csak ez miatt nem akartam telepiteni . De ha nincs más megoldás...
Kipróbáltam, 16 bitessé is definiáltam az arg-ot, így is működik!
Ismételten köszönöm mindenkinek a segítséget.
Vannak itt 8 Mhz-s frekvenciák is. És ha jól látom ezt már nem is tudja kapcsolni egy IRFZ44N mosfet.
Ezt a hozzászólásodat nem egészen értem. Sok vagy kevés a 8 MHz? A mellékelt képen mondjuk az látszik, hogy mindegyik timert 64 MHz-re állítottam...
Van egy órajel, amiről működhet egy timer. Ez sok esetben még tovább osztható. Ez lesz a maximális frekvencia. Aztán ahogy növeled a felbontást, úgy csökken tovább a frekvencia. (Ugyanazzal az órajellel sokkal tovább tart elszámolni 4095-ig, mint mondjuk 255-ig.) Az IRFZ44N nem logic level FET, a VGS feszültsége legyen legalább 10 Volt. Ezt direktben ne probáld egy 3.3 Voltos mikronoktrollerrel kapcsolni, mert sosem fog teljesen kinyitni, és csak fűt, rossz esetben el is ég.
Ha leírnád, hogy mi a célod az egésszel, mit szeretnél elérni, akkor segíteni is könnyebb.
Kipróbáltam a CubeMX -et és ott nekem is 8 Mhz-t irt ki valamelyik végpontnál. És ezzel azt akartam mondani , hogy sok a 8 Mhz ,mert ennyit nem tud kapcsolni a mosfet . Akkor vennem kell IRLZ44N feteket mert azok legalább logikaiak.
Nem akarok halálcsillagot épiteni ,csak egy arduinonál gyorsabb , pontosabb fejlesztőpanelen akarok kisérletezni A hozzászólás módosítva: Jún 10, 2022
Milyen 8 MHz? A MOSFET-nek nem a Timer bemenő frekvenciáját kell kapcsolhatnia.
Az igazat megvallva az eredeti kérdés az volt, hogy
Idézet: „Sziasztok Valaki tudja , hogy ARM cortex M4 PWM lábainak hány hertz a frekvenciája? ( NUCLEO-F302R8 panelon van az MCU , de nem találok róla dokumentációt)”
Talán az alapoknál lenne érdemes kezdened, mi is az a PWM, és hogy működik?! Amíg ezzel nem vagy tisztában, az eredmény is kérdéses lesz....
Idézet: Az attól függ, hogy milyen szoftverkörnyezetben mit állít be a programod.„Valaki tudja , hogy ARM cortex M4 PWM lábainak hány hertz a frekvenciája?” A timer bemenő frekvenciáját az előosztó leosztja, a timer periódus regisztere pedig még tovább osztja ez lesz a PWM frekvencia például 72 MHz-es bemenőjel, előosztó=51, periódus=2800, counting=up beállítással közel 500 Hz.
Értem . Köszi!
Eredetileg azt hittem olyan egyszerű lesz a válasz mint amit itt írnak a nano pwm pinekről
Az Arduino nano esetében sem a kártya, vagy a mikrovezérlő tulajdonsága a PWM frekvencia, hanem a programodhoz automatikusan hozzácsapott Arduino programkönyvárak állítanak be valamilyen alapértelmezett frekvenciát.
Az Arduino egy NAGYON egyszerűsített környezt, egy csomó mindent elrejt. Az AVR-nél is hasonlóan kellene beállítani a PWM frekvenciát, legfeljebb kevesebb osztó meg szorzó van, mint STM32-ben.
Megpróbálhatod Arduinoval használni az STM32-t is, van hozzá támogatás. Minden sokkal egyszerűbb, cserébe kevesebb ráhatásod van a működésre.
Egyelőre csak arduinoval használom.
Most elég az is... Idézet: Ezzel kellett volna kezdeni!!! „Egyelőre csak arduinoval használom.” Mert az STM32 Arduino Core (amivel az Arduino IDE-t ki kellett egészíteni, hogy az STM32 mikrovezérlőt kezelni tudja) tartalmaz leírást is (Wiki), melynek API references fejezetében ez áll: Van egy analogWrite(pin, value) függvény, amellyel beállíthatod a PWM frekvenciát. Az alapértelmezett frekvencia (PWM_FREQUENCY) = 1000 Hz.
Üdv!
VSCode, C/C++ Extension Pack, Raspberry Pico SDK, Linux-on. Jól működik. Nem jövök rá, hogy a CMake-el hogy tudnám kiíratni a memória használatot? (méret, százalék) CMakeLists.txt fájlba kellene írnom linker opciót...gondolom. |
Bejelentkezés
Hirdetés |