Stránka 1 z 3
Řízení serva "jako hydraulika"
Napsal: čtv 05.06.2025 21:06
od jyrry
Při revitalizaci synova tanku (jakoAbrams 1/10) jsem řešil inovaci zdvihu kanónu a výsledek se dostavil v podobě serva s ozubeným pastorkem a ozubený segment na tělese děla.
Servo je řízené přes Arduino Pro mini, do kterého vstupuje běžný PWM servosignál a servo se v neutrálu nehýbe, při výchylce se rozjede na příslušnou stranu a to tím rychleji, čím je výchylka od neutrálu větší.
Může se hýbat opravdu velmi pomalu až pak poměrně fofrem.
Buďte shovívaví, kód psal strojař
.

Kód: Vybrat vše
// rizeni serva jako hydraulika
#define input 2 // vstup PWM
#define output 4 // vystup PWM
#define led 13 // pin LED
const int hystereze = 30;
const int neutral_uS = 1500;
const int min_uS_in = 850;
const int max_uS_in = 2150;
const int min_uS_out = 450;
const int max_uS_out = 2350;
const int start_uS = 1800;
float out_uS;
float cislo;
long int new_uS;
void setup() {
pinMode(led, OUTPUT); // LED
pinMode(input, INPUT_PULLUP); // input PWM
pinMode(output, OUTPUT); // output servo
out_uS = start_uS;
puls();
delay(20);
attachInterrupt(0, puls_start, RISING);
}
void loop() {
delay(10);
}
void puls_start() {
new_uS = micros();
attachInterrupt(0, puls_end, FALLING);
}
void puls_end() {
new_uS = micros() - new_uS;
vypocet();
puls();
attachInterrupt(0, puls_start, RISING);
}
void vypocet() {
new_uS = min(new_uS, max_uS_in);
new_uS = max(new_uS, min_uS_in);
cislo = new_uS - neutral_uS;
if (abs(cislo) > hystereze) {
digitalWrite(led, HIGH);
cislo = cislo / 60;
cislo = cislo * cislo;
if (new_uS < neutral_uS) cislo = - cislo;
out_uS = out_uS + cislo;
out_uS = min(out_uS, max_uS_out) ;
out_uS = max(out_uS, min_uS_out) ;
}
else {
digitalWrite(led, LOW);
}
}
void puls() {
digitalWrite(output, HIGH);
delayMicroseconds(out_uS);
digitalWrite(output, LOW);
}
Re: řízení serva "jako hydraulika"
Napsal: pát 06.06.2025 9:10
od prikrylm
No, když kód funguje, tak je samozřejmě správně!

---
To mi "postižení" OTX/ETX děláme "hydrauliku" v zkákladu dvěma řádkama v mixeru. Pravda omezení kanálu pomocí LS a dalších dvou řádků mixu, je trochu ... netriviální, ale jde to. Někdo určitě vymyslí elegantnější řešení. (na CH1 je "tupé" řešení se dvěma řádky mixeru, na CH2 je řešení s nejjednodušším "omezovačem", který jsem byl zatím schopen vymyslet + 3LS + dva řádky mixeru) viz příloha
A tuším, že v ETHOSu by TO mohlo jít ještě o chloupek jednodušeji.
Re: řízení serva "jako hydraulika"
Napsal: pát 06.06.2025 9:28
od Zenair
prikrylm píše: pát 06.06.2025 9:10
To mi "postižení" OTX/ETX děláme "hydrauliku" v zkákladu dvěma řádkama v mixeru.
Jen drobná poznámka - možná by byl fajn obrázek. Dost lidí si asi .etx soubor neotevře...
Re: řízení serva "jako hydraulika"
Napsal: pát 06.06.2025 9:58
od jyrry
Nejen svědkové ETXovi/OTXovi to maj v rádiu, mám to v něm taky, ale tohle mi přišlo zábavnější
A můžu si to nastavit jak já chci, nejsem závislý na tom, jak to naprogramil nějakej číňan.
Dá se TO "vaše" nastavit s progresí, třeba křivkama? Aby to lezlo pomalilinku při malé výchyce páky a fakt rychle při velké?
Re: Řízení serva "jako hydraulika"
Napsal: pát 06.06.2025 21:27
od ellet
Jyrry, to co předložil prikrylm je hodně chytře naprogramovaný na samotném vysílači. Nic co by předpřipravil číňan (jen mixer a logické podmínky) Jediná nevýhoda je v tom, že tohle málokdo vymyslí. Funguje to od prakticky 0 do max rychlosti, podle výchylky páky.
Marku, i když mně to k ničemu není, za tohle palec nahoru.
Re: Řízení serva "jako hydraulika"
Napsal: pát 06.06.2025 21:50
od prikrylm
Jakási textová podoba toho tupého je CH1, toho složitějšího je CH2:
(+= znamená přičíst řádek k tomu, co je nad ním; := znamená zapomeň, co bylo dřív, teď nastav hodnotu výstupu na to, co určuje tento řádek)
Kód: Vybrat vše
Mixers
CH1
I1:Ail Weight(+10%) [tupy]
+= CH1 Weight(+100%) [self]
CH2
I2:Ele Weight(+10%) [netupy]
+= CH2 Weight(+100%) Switch(!L03)
:= MAX Weight(+100%) Switch(L02)
:= MAX Weight(-100%) Switch(L01)
Logical Switches
L1 CH2 < -100
L2 CH2 > 100
L3 L01 OR L02
ano, je TO proporcionální. málo taháš za páčku, málo se hýbe. Může se přidat ještě křivka s tolerancí kolem středu, tak jak TO máš v tom kódu pro jednočip. Ano řešení jednočipem je bezdiskuse zábabnější!
"Rádiové řešení" je pro ty, co bohužel nemají páječku a odvahu(?) něco sbastlit s jednočipem.
Ne, EdgeTX není čínský produkt.Co vím, tak OTX/ETX vychází z myšlenky od Multiplexu a začal ji tuším taky němec Thomas Husterer (ER9X) a když se jukneš na hlavní přispěvatele ETX, tak číňana jsem nezaregistroval (možná jsem se blbě díval) od boku střelím, převážná většína je Evropa. Že TO dost sponzoruje číňan, o tom žádná...
@ellet - moc nechválit nebo zpychnu!

Re: Řízení serva "jako hydraulika"
Napsal: sob 07.06.2025 9:47
od igorb
Take serva sa daju kupit na vselijakych robotic shopoch, su to klasicke analogove serva s odpojenym potenciometrom nahradenym odporovym delicom (alebo vhodne "pokazenym" potenciometrom). Funguje to presne ako pises, zapichnes priamo do prijimaca bez arduina a programovania.
Je to urcene presne na to co pises, ale da sa to pouzit aj na pohon, ak das na servo kolecka ... potom nepotrebujes regler
Spachat si to mozes doma samozrejme sam
... aj ked jasne v kode tvojho riesenia sa daju parametre presnejsie nastavit, aj sa tam da pritvrdit moment v neutrali a tak.
Re: Řízení serva "jako hydraulika"
Napsal: sob 07.06.2025 15:09
od jyrry
igorb píše: sob 07.06.2025 9:47
Take serva sa daju kupit na vselijakych robotic shopoch, su to klasicke analogove serva s odpojenym potenciometrom nahradenym odporovym delicom...
Ale ty se točí pořád dokola (takové mám na otáčení věže), musely by tam být koncáky. Já si nastavím meze a startovací polohu.
Re: Řízení serva "jako hydraulika"
Napsal: sob 07.06.2025 15:43
od ellet
Jyrry, když použiješ mikročip máš pod kontrolou všechno, to je jasný. Ale jen pro zajímavost, podobné řešení co dal prikrylm by lepší Graupner (než jsem měl já) neuměl? Já se přiznám, že bych asi šel stejnou cestou jako ty, protože by mě, aspoň v první moment, nic jinýho nenapadlo. Njn, diskuze je užitečná.
Re: Řízení serva "jako hydraulika"
Napsal: sob 07.06.2025 16:00
od jyrry
Mám Mz-16, což je druhý nejlepší "palcový" vysílač od Graupnera. Předchozí Mx-20 to neuměla, tohle to umí. Ale pořádně jsem to nezkoumal, poslední dobou jsem se "rozjel" v Arduinu, tak jsem rovnou sáhl po něm
edit: Tak jsem to znovu zkusil. Nejede to plynule, krokuje to po 4%. Jak to přenastavit jsem v krátkosti nenašel, tak to nechám být, s vědomím, že teda holt mám hloupé rádio

Re: Řízení serva "jako hydraulika"
Napsal: sob 07.06.2025 16:51
od igorb
jyrry píše: sob 07.06.2025 15:09
Ale ty se točí pořád dokola (takové mám na otáčení věže), musely by tam být koncáky. Já si nastavím meze a startovací polohu.
nepochybne ze ked to naprogramujes das si tam cho chces, ze sa daju kipt alebo urobit som napisal aby bolo jasne ze to je
BTW co ti stepuje po 4%? to arduino? takychto veci som v arduine urobil vela, ale dobre a stabilne riesenie aby servo nemalo rozne papohyby som dosiahol len priamym naprogramovanim countrov, u 328P sa daju urobit 2 hardverove vystupy serva (no este urobis 2 ale maju len 16 poloh, takze skackaju) a u 328PB 4 vystupy, zalezi aky procesor tam mas
Re: Řízení serva "jako hydraulika"
Napsal: sob 07.06.2025 17:18
od jyrry
igorb píše: sob 07.06.2025 16:51
BTW co ti stepuje po 4%? to arduino? ...
Nee, Arduino chodí krásně plynule.
Krokuje Mz-16.
Re: Řízení serva "jako hydraulika"
Napsal: sob 07.06.2025 19:28
od ellet
jyrry píše: sob 07.06.2025 16:00
... Nejede to plynule, krokuje to po 4%. Jak to přenastavit jsem v krátkosti nenašel, tak to nechám být, s vědomím, že teda holt mám hloupé rádio
No, hloupý rádio, to bych neříkal (i když vidím ten smajlík). Takový ptákoviny rádio sice umět může, ale určitě nemusí. A i na rádiu který to umí to stejně většina uživatelů neobjeví, takže neocení. A děkuji za odpověď.
Re: Řízení serva "jako hydraulika"
Napsal: ned 08.06.2025 6:58
od ellet
@prikrylm, co L3 vypustit?
Re: Řízení serva "jako hydraulika"
Napsal: ned 08.06.2025 8:40
od prikrylm
Asi klidně. Je TO pozůstatek "evoluce" a přesto, že je prakticky k ničemu, tak nevadí. Takže vlastně jo, kdo to napípává, tak L03 je zbytečný.
---
K řešení jednočipem - krom toho, že nemá omezení, co má ETX, tak se k tomu může "přilepit" spousta dalších úžasností! A když už v modelu nějaký ten jednočip je, tak se takových úžasností určitě najde spousta.