Odeslat nové téma Odpovědět na téma  [ Příspěvků: 104 ]  Přejít na stránku Předchozí  1, 2, 3, 4, 5, 6, 7  Další
Autor Zpráva
 Předmět příspěvku: Re: Arduino a servo
PříspěvekNapsal: stř 07.03.2018 13:11 
Moderátor serveru
Moderátor serveru
Uživatelský avatar

Registrován: 28.2.2005
Příspěvky: 20822
Bydliště: Rakovník, CZ
Obrázky: 0
Ja to kupoval vcelku:
https://www.banggood.com/Funduino-Nano- ... rehouse=CN

_________________
jyrry.webnode.cz


Nahoru
 Profil  
 
 
 Předmět příspěvku: Re: Arduino a servo
PříspěvekNapsal: stř 07.03.2018 19:26 
Mazák
Mazák
Uživatelský avatar

Registrován: 12.2.2016
Příspěvky: 1975
Bydliště: Vysočina, ČR
mior píše:
Poprosím o link, tiež ma to zaujalo...
Ebay - hledej: Arduino Nano Board


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Arduino a servo
PříspěvekNapsal: stř 07.03.2018 19:32 
Moderátor serveru
Moderátor serveru
Uživatelský avatar

Registrován: 28.2.2005
Příspěvky: 20822
Bydliště: Rakovník, CZ
Obrázky: 0
https://www.ebay.com/itm/Nano-I-O-Expan ... 1684168863
A doporučuju tu s barevnými piny, i tak jsem to včera asi 2x otočil :oops:

_________________
jyrry.webnode.cz


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Arduino a servo
PříspěvekNapsal: stř 07.03.2018 20:31 
Moderátor serveru
Moderátor serveru
Uživatelský avatar

Registrován: 28.2.2005
Příspěvky: 20822
Bydliště: Rakovník, CZ
Obrázky: 0
Chvilku jsem to zase šteloval a výsledkem je servotester s plynulým řízením jak rychlosti přeběhu serva tak s nastavením rozsahu pohybu. Je to sranda jak se servíčka škubou s malým rozkmitem a vysokou rychlostí :lol:


Návod jak vložit video do příspěvku na RCMANIA.cz
Mám u toho vedle sebe "modrý zázrak" HXT500 a dvě silně letité HS50 (černou i modrou). To je jako Moskvič, Mercedes a Bavorák. Ten chróstal se pohybuje nekultivovaně, poskoky a proměnnou rychlostí zato HS-ka si tak jako vrní a jezdí měkce, plynule.


Návod jak vložit video do příspěvku na RCMANIA.cz

_________________
jyrry.webnode.cz


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Arduino a servo
PříspěvekNapsal: pon 12.03.2018 20:09 
Moderátor serveru
Moderátor serveru
Uživatelský avatar

Registrován: 28.2.2005
Příspěvky: 20822
Bydliště: Rakovník, CZ
Obrázky: 0
Dneska dorazilo tohle, patří to k sobě:
Příloha:
CP2102.jpg
CP2102.jpg
[ 108.36 KiB | Zobrazeno 13944 krát ]

Předpokládám že to bude stačit... :?:

_________________
jyrry.webnode.cz


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Arduino a servo
PříspěvekNapsal: pon 12.03.2018 20:11 
Mazák
Mazák

Registrován: 3.11.2011
Příspěvky: 592
Bydliště: Česká republika
Na naprogramování určitě.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Arduino a servo
PříspěvekNapsal: pon 12.03.2018 21:45 
Mazák
Mazák
Uživatelský avatar

Registrován: 12.2.2016
Příspěvky: 1975
Bydliště: Vysočina, ČR
jyrry píše:
Předpokládám že to bude stačit... :?:
A ani nebudeš muset instalovat driver :) . Koukám, že chystáš automatický mávátka :mrgreen: .


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Arduino a servo
PříspěvekNapsal: úte 13.03.2018 6:45 
Moderátor serveru
Moderátor serveru
Uživatelský avatar

Registrován: 28.2.2005
Příspěvky: 20822
Bydliště: Rakovník, CZ
Obrázky: 0
Funguje. Akorát se musí dobře připájet všechny potřebné piny směrem k převodníku :oops:
:mrgreen:

_________________
jyrry.webnode.cz


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Arduino a servo
PříspěvekNapsal: úte 13.03.2018 9:17 
Mazák
Mazák
Uživatelský avatar

Registrován: 12.2.2016
Příspěvky: 1975
Bydliště: Vysočina, ČR
jyrry píše:
Funguje. Akorát se musí dobře připájet všechny potřebné piny směrem k převodníku :oops:
:mrgreen:
Jj, pájení je základ. Ale jen tak pro úplnost. Stačí 4 dráty (+,-,rx,tx). DTR je vlastně reset a když ho převodník nemá, musí se krátce stisknout tlačítko na desce v momentě, kdy začíná nahrávat soft do desky.
A teď už můžeš mít (třeba zítra :D ) telemetrický měřič článků i na tvých 6S (a může to být i s variem)


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Arduino a servo
PříspěvekNapsal: úte 20.03.2018 6:59 
Moderátor serveru
Moderátor serveru
Uživatelský avatar

Registrován: 28.2.2005
Příspěvky: 20822
Bydliště: Rakovník, CZ
Obrázky: 0
Trochu si hraju s načítáním délky servoimpulzu ze servotesteru. Funguje mi to na X způsobů, s přerušením i bez něj ale když tím krmím servo, je pořád takové nervozní, jemně povrkává.
Dal jsem si posílat do PC načtenou délku a ejhle, motá se to kolem plusmínus 4 us - tedy o takt procesůrku. Dá se s tím něco udělat?
Mimo to jsem zjistil že ten servotester (G.T.Power v alu-profilu) jede s rámcem 16.5 ms ... :?
Takhle to je třeba bez přerušení:
Kód:
// servo čtení:
  int puls_uS;
  long ramec_uS;
  unsigned long aktual_uS;
  unsigned long start_uS;
   
void setup() {
  pinMode(2, INPUT_PULLUP); // vstup PWM
  pinMode(3, OUTPUT); // servo 1
  Serial.begin(9600);
  }

void loop() {
  while (digitalRead(2) == 0) { }
  ramec_uS = (micros() - aktual_uS);
  aktual_uS = micros();
  while (digitalRead(2) == 1) { }
  puls_uS = micros() - aktual_uS;
  Serial.print(puls_uS);
  Serial.print("  ");
  Serial.println(long(ramec_uS));
  pulz(puls_uS);
  }

void pulz(int pulz_uS) {
  start_uS = micros();
  digitalWrite(3, HIGH);
//  delayMicroseconds(pulz_uS);
  while (micros() - start_uS <= pulz_uS){ }
  digitalWrite(3, LOW);
  }

_________________
jyrry.webnode.cz


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Arduino a servo
PříspěvekNapsal: úte 20.03.2018 11:18 
Mazák
Mazák
Uživatelský avatar

Registrován: 12.2.2016
Příspěvky: 1975
Bydliště: Vysočina, ČR
jyrry píše:
... a ejhle, motá se to kolem plusmínus 4 us - tedy o takt procesůrku. ...
Zase jen pro upřesnění, z manuálu - přeložil Google:
ATmega48A / PA / 88A / PA / 168A / PA / 328 / P je nízkonapěťový 8bitový CMOS mikrokontrolér založený na architektuře ARIS RISC. Vykonáním výkonných instrukcí v jednom hodinovém cyklu .....
(Tohle není pic, nebo máš hodiny 250kHz?)


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Arduino a servo
PříspěvekNapsal: úte 20.03.2018 15:06 
Mazák
Mazák
Uživatelský avatar

Registrován: 17.1.2017
Příspěvky: 1339
Bydliště: Brno
jyrry píše:
Trochu si hraju s načítáním délky servoimpulzu ze servotesteru. Funguje mi to na X způsobů, s přerušením i bez něj ale když tím krmím servo, je pořád takové nervozní, jemně povrkává.
Dal jsem si posílat do PC načtenou délku a ejhle, motá se to kolem plusmínus 4 us - tedy o takt procesůrku. Dá se s tím něco udělat?


To jsou brutální rozdíly. Promicro teda nemá krystal, jen keramický oscilátor, ale to se spíš projeví na teplotní stabilitě v delším horizontu, ne takhle. 4 us je fakt hodne.

Nejpřesnější čtení délky pulzu se dělá přes input capture unit. Vezme se časovač který je napojený na input capture, nastaví se mu nějaký vhodný takt tak, aby měl jednak dostatečné rozlišení, a jednak aby nepřetekl mezi jednotlivými pulzy. Já jsem pro čtení PPM signálu z žákovského výstupu vysílačky nastavoval na 16MHz Promicru osminásobný dělič, čili takt 2 MHz, půl mikrosekundy. Toto pokryje 20 ms PPM signálu a přitom má dostatečné rozlišení na servo signál. A pak se už jen nechá zasílat přerušení od vzestupné nebo sestupné hrany, přičemž čas té hrany je uchovaný v tom input capture registru, a až tak moc nezáleží na tom, kdy se dostaneme k obsluze přerušení (samozřejmě to musíme stihnout do příští hrany signálu).

Kus kódu (v obyčejném céčku, ne Arduino IDE):

Kód:
void init_timer(void)
{
        TCCR1B = _BV(CS11) | _BV(ICNC1);
        TIMSK1 |= _BV(ICIE1);
        edge = 0;
        channel = 0;
}

ISR(TIMER1_CAPT_vect) {
        uint16_t duration = (ICR1 - prev_time);

        prev_time = ICR1;

        if (edge) { // rising
                TCCR1B &= ~_BV(ICES1);
                edge = 0;
       
                if (duration < 500)
                        goto packet_err;
        } else { // falling
                TCCR1B |= _BV(ICES1);
                edge = 1;

                // tady nejak zpracovat informaci, ze mame pulz delky duration
        }
packet_err:
        // tady zpracovat chybnou delku pobytu v nule
}


A na výstup podobně - použít časovač a přes output compare unit říct, po kolika taktech časovače má dojít k překlopení signálu. Opět se to dá říct předem a časovač to pak nějak sám vykoná bez ohledu na to, jak zrovna hlavní program stíhá nebo ne.

_________________
Sky Surfer; HK Paraglide; DYI: samokřídlo Ita, elektrovětroň Kaze, delta Quasar3D; FlySky i6


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Arduino a servo
PříspěvekNapsal: úte 20.03.2018 21:28 
Moderátor serveru
Moderátor serveru
Uživatelský avatar

Registrován: 28.2.2005
Příspěvky: 20822
Bydliště: Rakovník, CZ
Obrázky: 0
To už je vyšší dívčí, já mám jen strojárnu. Plavu už jen v tom zápisu, samý znaky... :?

_________________
jyrry.webnode.cz


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Arduino a servo
PříspěvekNapsal: úte 20.03.2018 21:46 
Mazák
Mazák
Uživatelský avatar

Registrován: 26.5.2013
Příspěvky: 1538
Bydliště: Brno
Jj, u Megy je Input Capture Unit dobrá volba, u Tiny se to musí ošetřit jinak.

_________________
MC-20HOTT,DS-16,X10S,14SG,S-trino MkII,SpeedFire, Extra 102",MiniCorado,LOGO550SE,Goblin570


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Arduino a servo
PříspěvekNapsal: úte 20.03.2018 22:18 
Mazák
Mazák
Uživatelský avatar

Registrován: 26.5.2013
Příspěvky: 1538
Bydliště: Brno
jyrry píše:
To už je vyšší dívčí, já mám jen strojárnu. Plavu už jen v tom zápisu, samý znaky... :?

V zápisu se převážně jedná o bitové operace, něco o bitových operacích najdeš, když do googlu zadáš heslo jazyk C bitové operace, makro _BV(xy) je popsáno v knihovnách avr-lib, jedná se o bitový posun jedničky vlevo o xy míst, tj. 1<<xy, třeba posuv jedničky (např. 0b00000001) o tři bity vlevo, tj. 1<<3 potom je 0b00001000. Když máš nějaký např. 8 bitový registr TMSK s hodnotou 0b11000101, a potřebuješ nastavit bit IE, který je na pozici 5 bitu, tak v pro preprocesor nadefinuješ #define IE 5,
a poté v programu napíšeš TMSK |= _BV(IE). Preprocesor to doplní takto TMSK |= 1<<5, což je vlastně TMSK=TMSK | 1<<5, což je bitový OR mezi bajty TMSK (0b11000101) a 1<<5 (0b0010000), takže výsledek je TMSK (0b11100101). Btw, bity se počítají zleva, 0 až 7.

Jinak TCCR1B |= _BV(ICES1); je nastaveni bitu ICES1 do jedničky v registru TCCR1B, TCCR1B &= ~_BV(ICES1); je vynulování bitu ICES1 v registru TCCR1B. & je bitový AND, a ~ je bitový doplněk (0b11111110 = ~ 0b00000001).

_________________
MC-20HOTT,DS-16,X10S,14SG,S-trino MkII,SpeedFire, Extra 102",MiniCorado,LOGO550SE,Goblin570


Naposledy upravil BoŠ dne úte 20.03.2018 22:26, celkově upraveno 1

Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 104 ]  Přejít na stránku Předchozí  1, 2, 3, 4, 5, 6, 7  Další

 


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 12 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  

 

  Powered by phpBB® Forum Software © phpBB Group  Český překlad – phpBB.cz 

 

NAVRCHOLU.cz