Autor |
Zpráva |
Míšánek
|
Napsal: čtv 09.12.2021 10:54 |
|
Nováček serveru
|
|
Registrován: 7.12.2021 Příspěvky: 21 Bydliště: Uherský Brod
|
prikrylm píše: Pro zdejší komunitu by možná byly dobré informace o tom jakých 8 kanálů. Jestli vyp/zap, tedy tlačítko nebo je tam nějaká páčka... Možná bych začal tím, co to je za soupravu, jestli je k ní manuál atd.
Tak nějak mi vyplývá, že je souprava spíš 8x on/off a někde na výstupu je 0 nebo 12V (asi 8x).
Děkuji za reakci DO by se mělo chovat přesně tak jak jsi popsal, tzn. tlačítka on/off a po dobu držení tlačítka by na výstupu přijímače mělo být +12V. Žádný proporcionál tam není. Jedná se konkrétně o tenhle set: https://www.fruugo.cz/f21-e1b-dc12-72v- ... hAQAvD_BwEEDIT: Jinak co se týče toho napájení tak třeba zde doporučené Uno má na gme.cz psaný rozsah napájení 7-12V, nicméně při chodu motoru a běžícím dobíjení je palubní napětí na cca 14,2-14,6V, to by nebyl problém a toto napětí by ještě napájecí okruh Una vzal nebo je tam nějaká přepěťová ochrana která by napájení odstřihla nebo by to Uno shořelo?
|
|
Nahoru |
|
|
|
|
|
igorb
|
Napsal: čtv 09.12.2021 17:51 |
|
Moderátor serveru
|
|
|
Registrován: 22.3.2007 Příspěvky: 4785 Bydliště: SK Bratislava
|
No tak tu mas priklad zapojenia, a ten jednoduchy program na 3 tlacitka zapojenie vysledujes z obrazka, tlacitka su napojene na piny 11 12 a 13, tie moje vyrabaju 0V ked nie su stlacene (cez tie zelene odpory) a 5V ked su stlacene priamo z 5V. ty to budes musiet urobit inak, a to napriklad odporovym delicom z tych 12V na 5, spytaj sa ak nevies o com hovorim servo je na pine 8 signalovym vodicom a 5V a 0V napajanim ty to urobis tak ze 5V das priamo servu a z toho isteho konektora dostane 5V aj arduino, presne rovnako ako sa to robi u prijimacov program je trivialny, mas ho tu, mas tam tri polohy definovane sirkou impulzu od 1000us do 2000us, kludne si to zmen ako potrebujes ... normalne ho skopiruj, daj ho do arduino programu a odpal to, pojde to, keby nieco neone, tak sa ozvi: Kód: #include <Servo.h>
Servo servo;
int pos1 = 1000; int pos2 = 1500; int pos3 = 2000;
void setup() { servo.attach(8); // servo pin 8 servo.writeMicroseconds(pos1); // start -> pos1 }
void loop() { if (digitalRead(11)) servo.writeMicroseconds(pos1); // btn 1 if (digitalRead(12)) servo.writeMicroseconds(pos2); // btn 2 if (digitalRead(13)) servo.writeMicroseconds(pos3); // btn 3 }
Přílohy: |
DSC06634.JPG [ 130.04 KiB | Zobrazeno 1646 krát ]
|
DSC06635.JPG [ 111.25 KiB | Zobrazeno 1646 krát ]
|
DSC06636.JPG [ 104.53 KiB | Zobrazeno 1646 krát ]
|
DSC06637.JPG [ 109.45 KiB | Zobrazeno 1646 krát ]
|
|
|
|
Nahoru |
|
|
igorb
|
Napsal: čtv 09.12.2021 18:10 |
|
Moderátor serveru
|
|
|
Registrován: 22.3.2007 Příspěvky: 4785 Bydliště: SK Bratislava
|
no tak som to nevydrzal a dorobil aj to posuvanie stredu, to be pripojene na nozickach 9 a 10 rovnako ako tie tri tlacitka na 11 az 13 ked to chces nalestit, mohol by si napriklad tu stredovu polohu ukladat do epromky, takze pri naslenom spusteni budes mat posunuty stred tak ako si to naposledy vyopol, ale to uz necham na teba Kód: #include <Servo.h>
Servo servo;
int pos1 = 1000; int pos2 = 1500; int pos3 = 2000;
void setup() { servo.attach(8); // servo on pin 8 servo.writeMicroseconds(pos1); // start -> pos1 }
void loop() { if (digitalRead(11)) servo.writeMicroseconds(pos1); // btn 1 if (digitalRead(12)) servo.writeMicroseconds(pos2); // btn 2 if (digitalRead(13)) servo.writeMicroseconds(pos3); // btn 3
if (digitalRead(9)) { if (pos2 > pos1) pos2 -= 1; servo.writeMicroseconds(pos2); delay(20); }
if (digitalRead(10)) { if (pos2 < pos3) pos2 += 1; servo.writeMicroseconds(pos2); delay(20); }
}
|
|
Nahoru |
|
|
igorb
|
Napsal: čtv 09.12.2021 18:33 |
|
Moderátor serveru
|
|
|
Registrován: 22.3.2007 Příspěvky: 4785 Bydliště: SK Bratislava
|
A ked na to tak kukam, ono by bolo lepsie pouzit piny A0 az A5 a tym budes mat vsetky pouzite piny v jednom rade a tym mozes pouzit jednu pinovu listu na napojenie vsetkych vyvodov: https://www.gme.sk/oboustranny-kolik-s1g40-2-54mmprogram by potom vyzeral takto (to ze som presunul delay na to nema vplyv, to si nevsimaj): Kód: #include <Servo.h>
Servo servo;
int pos1 = 1000; int pos2 = 1500; int pos3 = 2000;
void setup() { servo.attach(A0); // servo on pin 8 servo.writeMicroseconds(pos1); // start -> pos1 }
void loop() { if (digitalRead(A1)) servo.writeMicroseconds(pos1); // btn 1 if (digitalRead(A2)) servo.writeMicroseconds(pos2); // btn 2 if (digitalRead(A3)) servo.writeMicroseconds(pos3); // btn 3
if (digitalRead(A4)) { // btn 4 if (pos2 > pos1) pos2 -= 1; servo.writeMicroseconds(pos2); }
if (digitalRead(A5)) { // btn 5 if (pos2 < pos3) pos2 += 1; servo.writeMicroseconds(pos2); } delay(20); }
|
|
Nahoru |
|
|
Míšánek
|
Napsal: čtv 09.12.2021 23:30 |
|
Nováček serveru
|
|
Registrován: 7.12.2021 Příspěvky: 21 Bydliště: Uherský Brod
|
Kua Igor, ty jsi bůh! Díky moc Jenom trochu dovysvětlím, asi jsme se nepochopili, nebo možná spíš teď já nechápu úplně tebe, ale: Polohy sice potřebuji 3, nicméně trigger bude pouze na polohy dvě. Tu třetí polohu, neutrální potřebuji jako výchozí a do které se pokaždé má servo po uvolnění tlačítka znovu vrátit. Tzn. servo bude ve své neutrální poloze, která bude odpovídat volnoběžným otáčkám. Zmáčknu jedno tlačítko a po dobu jeho držení se servo přesune na jednu stranu do definovaného úhlu. Jakmile pustím tlačítko, servo se opět vrací na svou neutrální polohu. Zmáčknutí druhého tlačítka, servo se přesune na opačnou stranu do definovaného úhlu. Pustím tlačítko = opět se vrací do své neutrální polohy. Dále úprava dvou krajních poloh - v okamžiku kdy bude servo v jedné z krajních poloh, tak bych chtěl tuto polohu upravovat buď do + nebo - stiskem jednoho nebo druhého tlačítka. Uložení by nebylo v tomhle směru žádoucí, tedy by jsem chtěl aby se servo po návratu do neutrální polohy a poté po další aktivaci tlačítka opět přesunulo do polohy definované v programu. Jediná úprava kterou bych chtěl eventuálně uložit je možná změna neutrální polohy serva, jestli je vůbec možná. Tedy že bych v režimu, kdy na inputu není aktivované žádné tlačítko pr jednu z definovaných poloh a servo je v neutrálu zmáčkl +/- a tom se v podstatě změnila hodnota neutralniho natočení serva a tím se změnila hodnota volnoběhu motoru. Tato hodnota by se ovšem asi musela nějak aby se to na tuto hodnotu opět vrátilo i příště při dalším návratu z jedné z krajních poloh, co? Jestli ano, potom by z toho asi mohl plynout problém s pamětí viz. níže, je tak? Vymýšlím si hovädziny, čo? Jenom samozřejmě pár dotazů: Ty krmíš to servo přímo z Arduina, je tak? Známý mi ale říkal že Arduino neumí dát dostatečně velký proud na stabilní funkci serva. Mám tedy použít nějaký step down na napájení serva jako mi tady třeba poslal prikrylm? A z tohoto step downu bych třeba rovnou i bral těch +5V na spínání vstupů, které bych spínal přes obyčejné relé ovládané těmi +12V co by mi lezly z přijímače. Může tahle být? Zápis do eprom by asi nebyl vhodným řešením kvůli její omezené kapacitě přepisování, ne?
|
|
Nahoru |
|
|
Bel Mondo
|
Napsal: pát 10.12.2021 8:40 |
|
Nováček serveru
|
|
Registrován: 15.1.2021 Příspěvky: 43
|
Moje idea: dva digitální vstupy, jeden analogový vstup, jeden digitální výstup pro servo. Na dig. vstupech se vyhodnotí 4 stavy - dekadicky 0, 1, 2, 3. Oba spínače vypnuté (0) je servo v neutrálu, jeden spínač sepnutý (1) servo je v nastaveném plynu, druhý spínač sepnutý (2) servo je v poloze zhasnutí motoru, oba spínače sepnuty (3) servo přejíždí pomalu od neutrálu do max. výchylky (buď plynule nebo skokově s prodlevami) a po uvolnění spínačů se hodnota polohy uloží do EPROM. Poloha neutrálu se nastavuje trimrem na analog. vstupu (není třeba ukládat do EPROM), poloha zhasnutí je nastavena napevno v programu (případně dalším trimrem). Postaveno na arduino nano, vstupy přes optočleny. Stavět to rozhodně nebudu, chce to někoho, koho máš po ruce kvůli testování a změnám. Základní program bych případně napsal někdy po neděli, až bude čas. Nebo to tady někdo udělá dřív.
|
|
Nahoru |
|
|
igorb
|
Napsal: pát 10.12.2021 8:51 |
|
Moderátor serveru
|
|
|
Registrován: 22.3.2007 Příspěvky: 4785 Bydliště: SK Bratislava
|
Míšánek píše: Kua Igor, ty jsi bůh! Díky moc Jenom trochu dovysvětlím, asi jsme se nepochopili, nebo možná spíš teď já nechápu úplně tebe, ale: Polohy sice potřebuji 3, nicméně trigger bude pouze na polohy dvě. Tu třetí polohu, neutrální potřebuji jako výchozí a do které se pokaždé má servo po uvolnění tlačítka znovu vrátit. Tzn. servo bude ve své neutrální poloze, která bude odpovídat volnoběžným otáčkám. Zmáčknu jedno tlačítko a po dobu jeho držení se servo přesune na jednu stranu do definovaného úhlu. Jakmile pustím tlačítko, servo se opět vrací na svou neutrální polohu. Zmáčknutí druhého tlačítka, servo se přesune na opačnou stranu do definovaného úhlu. Pustím tlačítko = opět se vrací do své neutrální polohy. Dále úprava dvou krajních poloh - v okamžiku kdy bude servo v jedné z krajních poloh, tak bych chtěl tuto polohu upravovat buď do + nebo - stiskem jednoho nebo druhého tlačítka. Uložení by nebylo v tomhle směru žádoucí, tedy by jsem chtěl aby se servo po návratu do neutrální polohy a poté po další aktivaci tlačítka opět přesunulo do polohy definované v programu. Jediná úprava kterou bych chtěl eventuálně uložit je možná změna neutrální polohy serva, jestli je vůbec možná. Tedy že bych v režimu, kdy na inputu není aktivované žádné tlačítko pr jednu z definovaných poloh a servo je v neutrálu zmáčkl +/- a tom se v podstatě změnila hodnota neutralniho natočení serva a tím se změnila hodnota volnoběhu motoru. Tato hodnota by se ovšem asi musela nějak aby se to na tuto hodnotu opět vrátilo i příště při dalším návratu z jedné z krajních poloh, co? Jestli ano, potom by z toho asi mohl plynout problém s pamětí viz. níže, je tak? Vymýšlím si hovädziny, čo? Jenom samozřejmě pár dotazů: Ty krmíš to servo přímo z Arduina, je tak? Známý mi ale říkal že Arduino neumí dát dostatečně velký proud na stabilní funkci serva. Mám tedy použít nějaký step down na napájení serva jako mi tady třeba poslal prikrylm? A z tohoto step downu bych třeba rovnou i bral těch +5V na spínání vstupů, které bych spínal přes obyčejné relé ovládané těmi +12V co by mi lezly z přijímače. Může tahle být? Zápis do eprom by asi nebyl vhodným řešením kvůli její omezené kapacitě přepisování, ne? chapem, nestiham, potom si to znova precitam a porozmyslam, tak zase vecer
|
|
Nahoru |
|
|
Míšánek
|
Napsal: pát 10.12.2021 9:07 |
|
Nováček serveru
|
|
Registrován: 7.12.2021 Příspěvky: 21 Bydliště: Uherský Brod
|
To Bel Mondo: Již jsem objednal na základě zdejšího doporučení uno r3. Nicméně změnu polohy dálkové pomocí kombinace stisku dvou tlačítek je podle mě zbytečná, jelikož na DO budu mít ještě volné dva kanály, tedy dvě tlačítka. A ty bych chtěl definovat jako +/- natočení serva. Tzn. držím tlačítko +, servo se natáčí tak aby motor zvedal otáčky. Držím tlačítko -, motor snižuje otáčky. Oboje po dobu stisku tlacitka.
Dále zatím netuším jak by se případné trimry daly obejít pro dálkovou změnu polohy seva
|
|
Nahoru |
|
|
Bel Mondo
|
Napsal: pát 10.12.2021 9:18 |
|
Nováček serveru
|
|
Registrován: 15.1.2021 Příspěvky: 43
|
Aha, myslel jsem, že máš jen dva kanály. Tak na ten můj návrh zapomeň.
|
|
Nahoru |
|
|
Míšánek
|
Napsal: pát 10.12.2021 9:37 |
|
Nováček serveru
|
|
Registrován: 7.12.2021 Příspěvky: 21 Bydliště: Uherský Brod
|
Ještě jsem nad tím celým teď znovu přemýšlel a asi bych udělal jednu změnu co se týče změny poloh pomocí tlačítek +/-. Ale nevím jestli by to bylo možné.
Koncové, resp. všechny tři polohy by byly definované v programu, které by se vždy nacetly po připojení napájení Arduina.
Nicméně pokud bych tyto polohy byl schopen upravit/doladit dálkově pomocí tlačítek +/- tak by bylo ideální aby tyto polohy zůstaly dočasně uloženy v "mezipaměti" (jestli něco takového vůbec existuje, a pokud ano, tak aby to nemělo tak omezený přepis paměti jako eprom). Takže aby se servo po dalším stisku jednoho z tlačítek pro přesunutí do definované polohy přesunulo do té polohy změněné pomocí +/-.
Po vypnutí napájení arduina a opětovném zapnutí by opět byly vyvolány defaultní polohy definované programem.
Je tahle konfigurace ještě realizovatelná?
To Bel Mondo: nikoliv. Kanálů budu mít celkem 8, a z toho 4 volné/ využívané přímo pro ovládání serva. Tzn. zvýšené otáčky, zastavení motoru a +/-
|
|
Nahoru |
|
|
Bel Mondo
|
Napsal: pát 10.12.2021 9:51 |
|
Nováček serveru
|
|
Registrován: 15.1.2021 Příspěvky: 43
|
Tlacitka: neutral/zápis zhasnuti,přednastavený plyn/zápis přednastavený plyn, +, -. Za lomítkem je delší stisk.
|
|
Nahoru |
|
|
igorb
|
Napsal: pát 10.12.2021 16:56 |
|
Moderátor serveru
|
|
|
Registrován: 22.3.2007 Příspěvky: 4785 Bydliště: SK Bratislava
|
Míšánek píše: Tzn. zvýšené otáčky, zastavení motoru a +/- OK, takze aby som zase nevyrabal co som si sam dovymyslel: 1/ zapnes geret, v pameti mas hodnoty neutralu, zhasnutia a maxima tak ako si si ich urcil v texte programu a vychodzia poloha je neutral 2/ stlacis tlacitko max, servo vybehne na max pokym to drzis, ked pustis, padne na neutral ... to isne so zhasinacim tlacitkom 3/ ak stlacis tlacitko + tak neutral sa pomaly pohybuje do plusu, ked pustis, zostane tam ... to iste s tlacitkom - na opacnu stranu 4/ ak tlacis max alebo min, tak po pusteni sa servo vrati do novo definovaneho neutralu podla 3/ chapem dobre?
|
|
Nahoru |
|
|
igorb
|
Napsal: pát 10.12.2021 16:58 |
|
Moderátor serveru
|
|
|
Registrován: 22.3.2007 Příspěvky: 4785 Bydliště: SK Bratislava
|
Míšánek píše: Již jsem objednal na základě zdejšího doporučení uno r3.
Tak ked vies presne co si objenal, skontroluj aky to ma USB konektor a skontroluj ci mas prislusny kabel, ak nie, treba doobjednat
|
|
Nahoru |
|
|
igorb
|
Napsal: pát 10.12.2021 18:00 |
|
Moderátor serveru
|
|
|
Registrován: 22.3.2007 Příspěvky: 4785 Bydliště: SK Bratislava
|
igorb píše: OK, takze aby som zase nevyrabal co som si sam dovymyslel:
1/ zapnes geret, v pameti mas hodnoty neutralu, zhasnutia a maxima tak ako si si ich urcil v texte programu a vychodzia poloha je neutral
2/ stlacis tlacitko max, servo vybehne na max pokym to drzis, ked pustis, padne na neutral ... to isne so zhasinacim tlacitkom
3/ ak stlacis tlacitko + tak neutral sa pomaly pohybuje do plusu, ked pustis, zostane tam ... to iste s tlacitkom - na opacnu stranu
4/ ak tlacis max alebo min, tak po pusteni sa servo vrati do novo definovaneho neutralu podla 3/
chapem dobre?
tak ak ano, tak tu je riesenie ... Kód: #include <Servo.h>
Servo servo;
int next_pos; int pos1 = 1000; int pos2 = 1500; int pos3 = 2000;
void setup() { servo.attach(A0); servo.writeMicroseconds(pos2); }
void loop() {
if (digitalRead(A1)) if (pos2 > pos1) pos2 -= 1; // - if (digitalRead(A2)) if (pos2 < pos3) pos2 += 1; // +
next_pos = pos2;
if (digitalRead(A3)) next_pos = pos3; // max if (digitalRead(A4)) next_pos = pos1; // min
servo.writeMicroseconds(next_pos); delay(20); }
|
|
Nahoru |
|
|
Kdo je online |
Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 25 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
|
|
|