Hektikus servo működés, leáll a loop?

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Válasz küldése
suketnemet
Újonc
Újonc
Hozzászólások: 13
Csatlakozott: 2020. november 14. szombat, 4:00

Hektikus servo működés, leáll a loop?

Hozzászólás Szerző: suketnemet »

Van egy MG90S Tower Pro servo motorom. Azon már fenn sem akadok, hogy az előírt 180 fokból kb 170-et tud csak. Azon viszont igen, ahogy "működik":

A kapcsolás pofon egyszerű.

Van egy OLD bootloader-es Nano-m, amire a következő módon van kötve a fenti servo:
- GND-re van kötve a barna
- 5V-ra a piros
- 10-es outputra a narancssárga (control) kábel
- a Nano USB-C kábele a számítógépről kapja a tápot

A kód a következő:

Kód: Egész kijelölése

#include <Servo.h>

Servo servo;
int servoPin = 10;
int servoMin = 20;
int servoMax = 90; // 50
int delayTime = 1000;

void setup() {
  Serial.begin(9600);
  servo.attach(servoPin);
}

void loop() {
    servo.write(servoMin);
    delay(delayTime);
    echoPositon();
    servo.write(servoMax);
    delay(delayTime);
    echoPositon();
}

void echoPositon() {
    int pos = servo.read();
    Serial.println("pos: " + String(pos));
}
Ezek pedig a felmerülő problémák:
- néha megtáltosodik, és gyorsabban végzi el ugyanazt az oda-vissza mozgást, majd visszaáll a "normál" sebességre. Felmerül a kérdés, hogy ez valóban gyorsabb működés, vagy csak kisebb szögben csinálta meg ugyanazt az oda-vissza mozgást, és ezért érzékelem gyorsabbnak.
- nem értem ha tud gyorsabban is működni, akkor miért nem az a standard, miért csak néha működik úgy ahogy kifér a csövön. A specifikáció szerint 0.1 másodperc alatt képes 60 fokot fordulni, de ezt a gyorsaságot sehogy sem sikerült elérnem
- 1-2 percen belül leáll, mint aki jól végezte a dolgát. Van kiiratás a loop-ban, tisztán látszik, hogy ilyenkor már maga a loop sem teszi tovább a dolgát, vagy valahol elakad, és nem jut el a kiiratásig.
- számomra furcsa működés, hogy ha leáll, elég megpiszkálnom a serial monitor legördülő baud listáját, és újra "életre kel". Mintha két irányú lenne a serial monitor, és pusztán azzal, hogy átlövöm egy másik baud-ra, küldene vmi jelet az arduino-nak (reset, restart, vagy valami hasonló). Ennek látható jele is van a Nano-n, mert minden ilyen baud váltáskor felvillan builtin LED. Gondolom ez normális, de ettől még szeretném érteni, hogy mi történik boud váltáskor. Ugyanez történik Serial monitor megnyitásakor, és berzárásakor.
- a writeMicroseconds metódus nekem elég fura. A doksi szerint 1500 a középállás, 1000 CCW és 2000 CW között lehet állítani. Kipróbáltam, és tényleg. De az nem tiszta, miért idő alapú, amikor szögröl van szó. Legalább annyira értelmes nekem, mintha valaki azt mondaná, hogy fuss már el addig a fáig, alig 5 liter tejre van innnen.
- Supercharge töltővel hálózatról üzemeltetve egy oda-vissza mozgás után leáll (a töltő outputja 5V 2A vagy 4.5V 5A vagy 5V 4.5A) A voltmérő szerint pedig így, hálózatról is kap 4,9 voltot. Talán nem a legjobb kombináció töltővel üzemeltetni, de logikusnak tűnt, minek után a NANO-nak nincs jack-es adaptercsatija, de van USB-C csatlakozója.

Extra kérdőjel:
- ha 30 fokos tartományban mozgatom oda-vissza pl 20 és 50 között, megszűnik a nem kívánt alkalmankénti gyorsabb ütemű mozgásos hiba, és nincs leállás. Miért jó ebben a tartományban?
- ha a nano-val van valami gond, azt hogy tudom kideríteni? Létezik bármilyen diagnosztikai megoldás ami le tudja ellenőrizni az arduino-t?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Hektikus servo működés, leáll a loop?

Hozzászólás Szerző: Robert »

A tápot megrántja és attól "őrül" meg. A tápfesz leesik egy kritikus szint alá. A szervo nagy áramot vesz(venne) fel.
Tipp: Külső nagyobb áramú 5V esetén mit művel? (láttam - nagyjából megy).

A Power LED nem halványodik el, vagy pulzál, ahogy mozog a szervo?

Sorosport átállítása: reseteli a kommunikációt és így a bootloader elindul. Mintha a reset gombot nyomtad volna.

Kérdések:
- oprendszer?
- arduino keretrendszer verzió?
- processzor a nano lapon? (328/168/8F8...)


Az időalap a szervo logikája miatt van: Egy rövid összefoglaló:
http://www.elektromanoid.hu/ardu13.html
http://www.tavir.hu - a gazda :)
suketnemet
Újonc
Újonc
Hozzászólások: 13
Csatlakozott: 2020. november 14. szombat, 4:00

Re: Hektikus servo működés, leáll a loop?

Hozzászólás Szerző: suketnemet »

Kedves Róbert!

Köszönöm a választ. Én is az áramellátásra gyanakodtam. Érdekesség, hogy UNO-val hiba nélkül működött, adapterrel és még 9V-os elemmel is. Kicsit ellentmondásos, hogy a telefontöltő képes leadni 4.5Ampert, mégis max egyet mozdul, és utána leáll.

Sajnos a termékleírás egy szót sem említ arról, mekkora az áramigénye a motornak:
https://www.hestore.hu/prod_10035810.html

Feltételezem, hogy ez nem véletlen, így rögtön felmerül a kérdés, hogy kell kiszámítani?

Válaszok:
A Power LED nem halványodik el, vagy pulzál, ahogy mozog a szervo? - NEM
Arduino rendszer verzió: 1.8.13
A proci: MEGA 328P (old bootloader)

Egy 220u-s kondi volt kéznél. Ahogy beraktam, egyből hiba nélkül működött :)

A soros port átállítós mondat nem teljesen tiszta. Ez mire vonatkozott?
Illetve az továbbra is kérdéses, hogy ha nincs is elég kraft a nano-ban megtekerni a motort, miért nem tudott log-olni sem?
Válasz küldése