Motor vezérlése STM32 blue pill board-al, és tb6612fng motor vezérlővel

 ( dlaszlo | 2019. március 17., vasárnap - 18:46 )

Sziasztok!

Egy motort szeretnék vezérelni, egy STM32 blue pill board-al, és furcsa dolgok történnek:

- Ha a PWM-et 255-re állítom, akkor úgy hallatszik, mint ha működne valami a motorban, de nem forog a kerék.
- Ha a PWM-et 100-ra, vagy 10-re állítom, akkor egy sípoló hangot ad a motor (két motorral is kipróbáltam, ugyanaz a jelenség, szerintem nem a motor a rossz)

Ha valaki tudja, hogyan kell ezeket használni, akkor szeretnék segítséget kérni, hogy mit ronthatok el? Elég sok mindent kipróbáltam, és tuti, hogy valami alap dolgot rontok el.

A következőt műveltem:

1. Ez a motor:

https://www.banggood.com/DC-6V-210RPM-Encoder-Motor-Set-DC-Gear-Motor-with-Mounting-Bracket-and-Wheel-p-1170162.html?cur_warehouse=CN

2. Ez a motorvezérlő:

https://www.banggood.com/Dual-Motor-Driver-Module-1A-TB6612FNG-For-Arduino-Microcontroller-p-926152.html?rmmds=search&cur_warehouse=CN

3. Ez a board:

https://wiki.stm32duino.com/index.php?title=Blue_Pill

4. A motorhoz külső 4s1p lipo aksi, ezzel 6V-ra konvertálva:
https://www.aliexpress.com/item/10pcs-lot-LM2596-DC-5V-12V-24V-Adjustable-Voltage-Regulator-LM2596S-3A-Step-down-Module/32952554897.html

5. A board a PC USB portjáról kap áramot.

6. Az arduinó keretrendszert használom, a PlatformIO IDE-vel, genericSTM32F103C8 board-al.

7. A board-ot a következő módon kötöttem a motorvezérlőre:

    STM32 board <---> Motor vezérlő


PA6 <---> STBY
PB1 <---> AIN1
PB2 <---> AIN2
PA7 <---> PWMA
GND <---> GND
3.3V <---> VCC

    4S1P aksi step down voltage regulator-ral 6V-ra konvertálva <---> Motorvezérlő


OUT+ <---> VM
OUT- <---> GND

    Motor vezérlő <---> Motor


VCC (3.3V) <---> 3V3 Encoder
GND <---> GND Encoder
AO1 <---> M1 motor -
AO2 <---> M2 motor -

8. Ez a program:

#include

#define STAND_BY_PIN PA6
#define IN1_PIN PB1
#define IN2_PIN PB0
#define PWM_PIN PA7

void setup()
{

pinMode(IN1_PIN, OUTPUT);
pinMode(IN2_PIN, OUTPUT);
pinMode(PWM_PIN, PWM);
pinMode(STAND_BY_PIN, OUTPUT);

digitalWrite(STAND_BY_PIN, HIGH);
digitalWrite(IN1_PIN, HIGH);
digitalWrite(IN2_PIN, LOW);
analogWrite(PWM_PIN, 255);

void loop()
{
delay(1000);
}

Köszi szépen
Dávid

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Elírtam, az STM32 board-ot, és a motor vezérlőt így kötöttem össze:

    STM32 board <---> Motor vezérlő


PA6 <---> STBY
PB0 <---> AIN1 (...és nem PB1 <---> AIN1)
PB1 <---> AIN2 (...és nem PB2 <---> AIN2)
PA7 <---> PWMA
GND <---> GND
3.3V <---> VCC

Mindenféle tudományosság nélkül: PB0 vagy PB2?


tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Szia! PB0, a PB2 elírás volt.

Ennek a TB729A-nak nem találom az adatlapját. Néhány kereskedőnél is néztem, ott sem. A kép csak illusztráció, vagy tényleg ez az IC típusa?


tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Ez a típusa tényleg, de így én sem találtam. TB6612FNG alatt van meg: https://www.pololu.com/file/0J86/TB6612FNG.pdf

Igaz, közben megtaláltam én is.


tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Nem ertek az STM32-hoz. Nezd meg, hogy PWM nelkul (sima digitalWrite, esetleg fizikailag a board nelkul tapra kotve) mit csinal a motorvezerlo, forgatja-e a motort. Ha ezzel megy, akkor a PWM frekit probald meg atallitani. Ha sipol, akkor gondolom valami jopar (10-15?) kHz-es frekin probalja hajtani a motort, es ez lehet, hogy nem tetszik neki, tul gyors.
A motorvezerlod nem melegszik?

--
When you tear out a man's tongue, you are not proving him a liar, you're only telling the world that you fear what he might say. -George R.R. Martin

Szia! Köszi szépen, tényleg, lehet hogy valami frekvencia gond van, az STM32 dolgai miatt.

Jól gondolom, hogy ha digitalWrite-al 1-re állítom a portot, ahol a PWM-volt, és nem PWM portként kezelem, hanem sima digitális portként, akkor folyamatosan max erővel kellene mennie a motornak? (mert az = PWM 255-el?)

Igen, jól.


tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Sajnos így sem megy.

Szörnyű gyanúm támadt. Szerintem ez a motor nem egy szimpla motor, hanem van benne elektronika, meghajtó, s tippem szerint kér fix tápfeszültséget, egyik lábán pwm-et, illetve van egy enkóder kimenete. Ha a tápját pwm-ezzük, szerencsétlen épp elindulna, majd összeesik, s így tovább. Tehát ez nem egy passzív DC motor lesz.

Szerk.: Úgy tűnik, mégsem. Viszont elég rosszul specifikált ez az izé.


tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

A következő lábak vannak:

1. M1 motor -
2. GND Encoder
3. Encoder A phase
4. Encoder B phase
5. 3V3 Encoder +
6. M1 motor +

Most foglalkozok először ilyesmivel, de gondolom, hogy a 2, 3, 4, 5-ös láb azért kell, hogy egy elektronika visszajelzést tudjon adni, hogy mennyit fordult a motor. Ez az elektronika a 2-es és 5-ös lábon kap 3.3V-os, a 3-as és 4-es lábat szerintem egy interrupt lábra kellene kötni az STM32 board-on. De nem vagyok biztos benne, csak ezt gondolom.

Szerkesztve: És nem teljesen világos, hogy miért van kettő: Encoder A phase, és Encoder B phase.

Azért, mert úgy működik, mint az egerek görgőinek optikai jeladója. A forgásirányt csak a kétfázisú jelből tudod meg.


tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Még egy dolog merült fel bennem, de ez elég furcsa lenne. A motorhoz azt írták, hogy 6V. A tb6612fng adatlapján a VM bemenet 15V-ra van írva. Lehet, hogy 15V kellene neki, én most 6V-ot adtam erre portra a DC-DC konverterrel, ez lehet a gond?

Nem ezt írják. 2.5 V-tól 13.5 V-ig kell lennie.


tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

És tényleg :) akkor ez sem lehet a gond.

Egyébként kezdd el debugolni! Közvetlenül táppal megkínálva a motort, megy? Mivel az álló motor gyakorlatilag rövidzár, nem lehet, hogy a DC/DC konverter áramkorlátja szólal meg, ami miatt nem tud elindulni ez a villamosgép?


tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Ha az M1 motor -, és M1 motor + lábra rákötöm az aksiról a 6V-olt, akkor elindul a motor.

És ha a DC/DC konverteren keresztül, akkor is?


tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Igen, úgy forog szépen a motor.

Akkor most a motorvezérlőn keresztül nézd meg, de a mikrokontroller nélkül. Kösd statikusan 3.3 V-ra, GND-re, amiket kell. Azaz szimulálj 100 % pwm kitöltést, az inputokkal a megfelelő üzemmódot, standby is úgy, hogy menjen. Meg persze kapjon 6 V-ot a végfok.


tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Sajna nem működik, úgy hogy mikrokontroller nélkül kötögetem be a motor vezérlőt (mindent portot a motorvezérlőn, ahogy a mikrokontrollerrel is menne PWM 255-el) :/ De még egyszer át fogom nézni, hogy mindent jó helyre kötöttem-e, és kipróbálom a PWMB-vel, és a B motorral is. Van még egy ilyen vezérlőm itthon, max azzal is kipróbálom.

Próbáld azt, hogy 0 %-os kitöltésről indulva mondjuk 2 másodperc alatt éred el a 100 % kitöltést. Tehát lágyan indítsd a motort, mert álló helyzetben lényegében rövidzár, s lehet, valaminek megszólal a túláram védelme.


tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Úgy érted, hogy a PWM-el induljon 0-ról, és 2 másodperc alatt érje el a 255-öt, a mikrokontrollerrel?

Igen. Nyilván a 2 s nem kritikus, tehát lehet azt, hogy 10 ms-onként eggyel nagyobb értéket írsz a pwm regiszterbe. 0-tól 255-ig mész egyesével.


tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Ok, ezt kipróbálom. Most azt csináltam, hogy lehúztam a motorról, és úgy "indítottam el" (még a mikrokontroller nélküli verziót), és multiméterrel megnézve 0V van a motorvezérlő motor kimenetén.

Ha nincs benne áramkorlát, így kinyírhatod a végfokot. Ha meg van, akkor csak szimplán nem fog elindulni. Ahhoz, hogy egységugrás szerinti fordulatszámmal járjon a forgórész, végtelen nagy szöggyorsulás kell, ehhez végtelen nagy nyomaték, s végtelen nagy áram tartozik egy ideális világban. Nyilván van a tekercsnek induktivitása és ellenállása is, ami valamelyest segít ezen. Ezért is mondtam, hogy próbáld folyamatosan emelni a feszültség középértékét az egyre nagyobb kitöltésű négyszögjellel.


tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE


#include

#define STAND_BY_PIN PA6
#define IN1_PIN PB1
#define IN2_PIN PB0
#define PWM_PIN PA7

int pwm = 0;

void setup()
{

pinMode(IN1_PIN, OUTPUT);
pinMode(IN2_PIN, OUTPUT);
pinMode(PWM_PIN, PWM);
pinMode(STAND_BY_PIN, OUTPUT);

digitalWrite(STAND_BY_PIN, HIGH);
digitalWrite(IN1_PIN, HIGH);
digitalWrite(IN2_PIN, LOW);
}

void loop()
{
analogWrite(PWM_PIN, pwm);
if (pwm < 255)
{
pwm++;
}
delay(10);
}

Nem indult a motor. Elkezd "sípolni" a motor, nem hangosan, kb mint amikor valakinek elkezd a füle csengeni, majd elhalkul, és utána csend.

Biztos, hogy nincs valami idétlen kontakthibád? Valamelyik GND-re vagy tápra gondolok.

Azt csinálnám, hogy miközben szépen emeled a kitöltést, nem a motor feszültségét, hanem a Vm tápfeszültséget mérném, hogy lássam, nem a kapcsolóüzemű táp kimenetén esik össze a feszültség.

Az elhalkulás érthető, hiszen 50 % kitöltés fölött az alsó „félperiódus” lesz egyre kisebb, 100 %-nál meg nyilván egyáltalán nem kell sípolnia.


tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

A Vm-en végig 6V van. Nem találtam kontakt hibát a pontok között méricskéléssel. Közben kipróbáltam a másik motor vezérlőt is, és pont ugyanígy viselkedik.

Ez egyre furcsább, tuti valami nagyon alap dolgot rontok el.

Most az lenne jó, ha lenne oszcilloszkópod, meg kellene nézni, pontosan mi történik. Viszont gyanítom, hogy nincs. Amit tennék, az az, hogy valami kis áramú műterhelést hajtanék vele a motor helyett. Teszem azt, egy 100 Ω-os ellenállást. A multiméterek jellemzően integráló típusú mérést végeznek, így a pwm esetén középértéket fog mutatni. Meg lehetne nézni, műterheléssel a tápfeszültség kitöltési tényezőszerese lesz-e hozzávetőlegesen a kimeneti feszültség.


tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Köszi szépen a segítséget. Az oszcilloszkóp bennem is megfogalmazódott már. Máskor is jól jött volna.

Alszok rá egyet, meg lehet hogy utána nézek, hogy ezzel a motor típussal milyen motor kontrollert használtak az emberek.

Köszi szépen a segítséget, amúgy. Közben találtam egy ilyen leírást is: https://learn.sparkfun.com/tutorials/tb6612fng-hookup-guide/all Szerintem ez alapján jól kötöttem be, és mivel közvetlenűl 6V-al megy a motor, szerintem rossz a motorvezérlőm. Kipróbálom a másikkal.

Ami még eszembe jutott... Van ebben under voltage detektálás. Ha a táp felőli impedanciád nagy, a nyákon lévő tantál kondenzátorban tárolt energia kevés lehet, így a tápfeszültség rövid összeomlása inicializálhatja a motor driver IC-t. Ekkor a rövid és vastag táp hozzávezetések, valamint a tápfeszültségre tett néhány száz µF kapacitás segíthetnek. Viszont a motorral párhuzamosan ne tégy kondenzátort! Ha kell a zavarvédelem, így a kondenzátor, akkor kell soros induktivitás is a pwm teljesítmény kimenet felől.


tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Nem biztos hogy jól értettem amit írsz, tegyek pár száz µF kondenzátort a motor driver tápellátásokhoz?

Igen. Ott már van a nyákon egy kondenzátor, azzal párhuzamosan. Vigyázz, a tantálok polaritás jelölése szokatlan lehet, alaposan nézd meg a polaritást!


tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Szia! Kipróbáltam, sajnos nem oldotta meg.

Most már mérni kellene, mi a fene is történik tulajdonképpen. Teszem azt, műterhelésen 100 % kitöltés mellett a 1.5 V nagyon nincs rendben, ha a tápfeszültség 6 V. Nincs valamelyik GND megszakadva?


tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

A szakadásokat végignéztem sokszor, és összedugdostam próbapanel nélkül is. Átforrasztgattam a motor vezérlő nyákján a lábaknál a tüskesort, hátha csak az volt a gond, hogy a kis kínaiak lefújták valami sprayvel a furatokat (is), és nem jól forrasztottam meg, de nem találtam végül ilyen jellegű problémát. Illetve csak a motor lábaknál találtam furcsaságokat, az AO1, AO2, BO2, BO2-nél.

Szia!

Köszi szépen a segítséget! Igazad volt a GND-vel. :)

Ide írtam, hogy mi lett a megoldás: https://hup.hu/node/163469#comment-2330722

laikus kezdőként pár ötlet:

első körben a pwm frekvenciára gondolnék, nem megfelelő frekvencia miatt adhat ki síró hangot a motor. Ez igaz a nem mozdulra is.

a második dolog https://learn.adafruit.com/adafruit-motor-shield-v2-for-arduino/faq

(I'm using a 4WD robot platform and I can't get anything to work.) bejegyzésnél a leírás képpel

Köszi szépen. A szűrő kondikat kipróbálom.

A PWM frekvenciában azért nem vagyok biztos, hogy az lehet a probléma, mert ha "teljes kitöltés" van, akkor az egy sima 1-es jel, teljesen mindegy a frekvencia, és akkor kellene teljes erővel mennie a motornak, nem?

De próbáltam állítani a HardwareTimer-el, illetve programozottan is próbáltam a PWM jelet kapcsolgatni a többféle frekvenciával, és semmi.

Locsemege ezt írta: "Viszont a motorral párhuzamosan ne tégy kondenzátort!", a képen nem pont a motorral van párhuzamosan kondenzátor?

az adafruit motor vezérlő shielden ugyanez a tb6612fng vezérlő található, ha ott működik a dolog, itt is kell. Annyiban szerencsésebb az adafruitos megoldás, hogy saját pwm jelet használ, független a mikrocontrollertől.

Jó, akkor ezt tegyük tisztába! A gond az, hogy a kondenzátoron ugrásszerű feszültségváltozás végtelen nagy áramot indít el: i = C*du/dt. Ennélfogva ez egy igen kellemetlen üzemállapot lesz a motort meghajtó MOSFET-eknek, a tápegységnek, EMC szempontból is borzalmas, sugározni fog.

Lehet a motorral párhuzamosan kondenzátort tenni, de akkor az egész kócerájjal sorba kell kötni induktivitást. Ezt nyilván méretezni kell.

Ha elhagyjuk a kondenzátorokat, akkor a motor tekercse egyben az induktivitás. Ugyanakkor most nem az a legnagyobb problémánk, hogy halkan sípol, hanem az, hogy alig van nyomatéka, nem forog. Most erre fókuszáljunk, a sípolás jelenleg másodlagos.

Az, hogy valamit leírnak egy fórumban, még nem jelenti automatikusan azt, hogy az a valami egyben helyes is. Akkor sem jelenti ezt, ha fénykép is van róla, sőt akkor sem, ha működik. Más az, hogy valami jól működik, vagy úgy, hogy bármikor tönkremehet. Vagy csak a hatásfokát rontottuk el. (Ahogyan önmagában az, hogy valami összeesküvés-elmélet, semmit nem mond annak igazságtartalmáról. Lehet akár igaz is.)


tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Bizonyára igazad van, de nem kell leszólni a fórumokat. A linux is így indult, fórumbejegyzéssel (levlistán anno) és mi lett belőle. Arról nem is beszélve, hogy maga a gyártó helyezte el saját FAQ-jában, feltehetően nem ok nélkül. Aztán azt se feledd, ez hobby projekt, nem a NASA eszköze készül idegen bolygón való üzemelésre. Mi történik, ha nem jön be a kondenzátor? Elfüstöl egy motor, vezérlő, esetleg mikrovezérlő? Nagy kaland, néhány dollárért van másik és tanul belőle az ember. CSak egy ötlet volt, de még most is inkább a pwm frequenciára gondolnék, szerintem túl magas.

Nem szólom le, épp fórumra írogatok. :) Csak óvatosan jeleztem, hogy helytelen volt az a hozzászólás. Illetve lehet bizonyos körülmények mellett valami igaz, de sokszor elkopnak a peremfeltételek, amelyek nélkül már ostobaság az állítás.

PWM freki nem nagy, ha hallja. A középérték attól még ugyanannyi.


tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Én ezzel játszadozom jelenleg:

http://wiki.seeedstudio.com/Grove-I2C_Motor_Driver-TB6612FNG/

Kerestem alacsony feszültségű (2,8V)léptetőmotor vezérlést és ez volt az egyik találatom. Modellvasúttal kapcsolatban barkácsolgatom az alapokat, ugyanezzel a vezérlővel van szerelve, rendesen működik, bár dc motort nem kergettem még vele.

Nem rossz I2C-vel, így kevesebb portot kell bekötni, és a PWM-et intézi.

Kipróbálom a szűrő kondenzátorokat, máshol is írják, hogy erősen javasolják, lehet, hogy tényleg ennyi lesz a megoldás. :) Köszi szépen.

Biztos? Ne feledd, a 100 %-os kitöltést is próbáltad, ott sem ment...


tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Szia!

Jelenleg én is enkóderes DC motorok vezérlésével foglalkozok (egyetemi feladat részeként) szintén Blue Pill board-dal, Arduino környezetben, viszont másfajta motorvezérlővel (L298N típusú, hasonló a vezérlése tiédhez, csak nincs rajta standby bemenet).
Amit vasárnap este írtál, hogy a motorvezérlő nem működik, az azóta már megoldódott?
Én a PB0 / PB1 kimenetekről veszem a motorvezérlő PWM jelét, a PWM frekvencia 550Hz alapesetben, a PA7-hez is ugyanaz a belső PWM modul tartozik, szóval ha a motorvezérlőd és a bekötése jó, akkor szerintem működnie kéne a kiírásban szereplő programmal is.

Szia!

Sajnos még nem oldódott meg. A szűrő kondenzátorok sem oldották meg, nem működik.

Ha kicserélem a motort egy ellenállásra, akkor 1,5V-ot mérek az ellenállásnál ha a PWM > 0, PWM==0-nál pedig 0V-ot.

Jelenleg semmi ötletem, eddig egy motorral próbálkoztam, lehet, hogy mindkettőnek rajta kell lenni, akkor fog működni?

" 1,5V-ot mérek az ellenállásnál ha a PWM > 0"
>0 voltot kéne mérni, a PWM függvényében.

nem is megy a motor.

Szia!

Az 1,5 V-ot az ellenálláson méred, vagy az ellenállás egyik lába és a GND között? Szerintem érdemes lenne megnézni azt, hogy a standby pin működik-e, vagyis PWM > 0 esetén ha a standby pin jelét LOW-ra viszed, akkor az ellenállásnál mért feszültség lemegy-e 0 V-ra ahogy várható lenne. A motorvezérlőnek 1 motorral is működnie kellene.

Az ellenálláson mértem. Ma megint nekifutok, megnézem. Szerintem nem működik a motor vezérlő, rossz amit vásároltam, és ennyi lehet a gond. Várom az L298N motorvezérlőt. :)

Rendeltem is L298N típusú motorvezérlőt. Már csak hetek kérdése... :)

Két motor vezérlőt is próbáltam, de mindkettő ugyanolyan típusú, és ugyanonnan vettem. Lehet, hogy valami probléma van velük.

Off. Szerintem igy ne programozz. Standard periph lib ezt az ardunionot meg felejtsd el /off
------------------------
uint8_t *data; // tipussal megszorozzuk az adatot. wtf?

-1
Ha visszaolvasol, a motorvezerloje akkor sem hajtja a motort, ha teljesen kiiktatja a mikrokontrolleret. Ehhez nem sok koze van annak, hogy egy 16MHz-es 8 bites uC-t lecserelt egy 72MHz-es ARMra.

--
When you tear out a man's tongue, you are not proving him a liar, you're only telling the world that you fear what he might say. -George R.R. Martin

Varjal miert irtam hogy off. Varjal ooo.
------------------------
uint8_t *data; // tipussal megszorozzuk az adatot. wtf?

Köszi a tippet, meg fogom nézni a periph libet.

Programozásról igazából még nem volt itt szó, tudom, hogy több lehetőség is van, de itt a cél most az volt, hogy az STM32 lapka működik-e, a lehető leggyorsabban be legyen kapcsolva 3 pin, egy meg ki, és az egy PWM-es, hogy a motor vezérlőt kipróbáljam, legyen soros kommunikáció, meg az I2C-re valami egyszerű library, ezeket próbáltam.

Itt azt írják az stm32 - nek 16 bites a pwm-je. Esetleg 255 helyett a 65535?

Az analogWrite ezt kezelte, 255 után túlcsordulás van, és 0-ról indult a pwm, ez hallatszik a sípoló hangból is.

Találtam a itthon két tárgyat, egy ULN2803A-t, és egy IRLZ44N mosfet tranzisztort (+ IN4001 dióda + ellenállás), amire azt gondoltam, hogy fogom tudni vele állítani PWM-el a motor sebességét, és szerettem volna már valami sikerélményt is:

Mindkettővel tökéletesen működik PWM-el a motor sebességállítás. (de gondolom ez nem ugyanaz, mint amit ez a kis motorvezérlő tudna)

Sajnos ezekkel nem tudok irányt váltani, illetve ez egy-egy rövid próba volt, ampereket, stb nem néztem...

A PWM szerintem működik az STM32-vel. (Az STM32 blue pill lapkáról egyébként 2-3 nap alatt nagyon jó lett a véleményem, amit próbáltam, az működik.)

Ezt a táblázatot néztem, hogy hogyan tudok frekvenciát állítani:

http://stm32duino.com/viewtopic.php?p=12493#p12493

Például:


...
HardwareTimer pwmtimer(3);

void setup()
{
pwmtimer.setPeriod(3600000);
pwmtimer.setPrescaleFactor(55);
pwmtimer.setOverflow(65455);
...
}
...

Sziasztok!

Hogy kell beírni a title-be, hogy [MEGOLDVA]? Megoldva!

Köszönöm szépen mindenkinek a segítséget.

Így nem működött:

A 6V-hoz tartozó GND-t, és a 3.3V-hoz tartozó GND-t én összekötöttem, és ezt kötöttem be a VCC melletti GND-re. A VCC-re kötöttem a 3.3V-ot, és a VM-re a 6V-ot. Gondoltam
ez elég is, de most, az utolsó utáni utáni próbálkozásra bekötöttem motorvezérlőn lévő mindhárom GND-t, és:

Így működik:

A probléma az volt, hogy nem elég a VCC melletti GND-t bekötni (vagy azzal valami gond van), hanem a PWMB1, vagy a BO1 melletti GND-t is be kell kötni.

Nem gondoltam, hogy egy modulon, IC-n belül több GND-t is be kell kötni, hogy működjön. Biztos le van valahol írva, és én voltam a töketlen, hogy ezt nem olvastam, de a belinkelt sparkfun-os oldalon sincs rajta a rajzon.

https://learn.sparkfun.com/tutorials/tb6612fng-hookup-guide/all

Lehet, hogy a VCC melletti GND-vel van gond, nincs rendesen a modulon belül bekötve. Hiába néztem a próbapanelen multiméterrel, mert a modulon belül lehet gond. (Ha ez hibának számít, és nem ismert dologról van szó.)

Viszont most egy életre el vagyok látva motorvezérlőkkel, mert ezeket ki akartam dobni, és rendeltem más fajtát. :)

Köszi még egyszer.

Bizony, az összes GND-t be kell kötni, hiszen ellenkező esetben kialakulhat akár olyan nagy áramsűrűség néhol, ami tönkreteheti a chip-et!

Valahogy éreztem, hogy a GND nincs rendben. Lényeg, hogy megoldódott. :)


tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Igazad volt a GND-vel, kívül mérve (a modul GND+VCC és GND+VM lábánál) rendben is volt. :) A másik két GND-vel eszembe sem jutott foglalkozni, gondoltam össze van kötve a nyákon. Köszi szépen.