Pantový stolek
Pravidla fóra
Tohle subfórum je určeno pro konzultaci ucelených nápadů, popřípadě řešení komplexnějších projektů, které opravdu není možné rozdělit na menší části.
Většinu problémů jde rozdělit na menší a ptát se na ně v konkrétních subfórech.
Tohle subfórum je určeno pro konzultaci ucelených nápadů, popřípadě řešení komplexnějších projektů, které opravdu není možné rozdělit na menší části.
Většinu problémů jde rozdělit na menší a ptát se na ně v konkrétních subfórech.
Pantový stolek
Zdravím vás.
Můžete mi prosím pomoct se zapojením a naprogramováním?
Vyrabím pantový stolek, kvůli focení hvězd. Podoba je tady https://imgur.com/a/dAOIhfd
S čím si ale nevím rady je zapojení a naprogramování desky. Mám použitý Arduino UNO R3, krokový motorek 28BYJ-48 s driverem ( https://www.gme.cz/krokovy-motor-ridici-modul )
Nikdy předtím jsem s tímhle nedělal.
Povedlo se mi ale jen rozchodit motorek a měnit rychlost podle návodu https://navody.arduino-shop.cz/navody-k ... river.html
Chtěl bych ale mít zapojené dvě tlačítka (přepínače). Jedním přepínačem bych chtěl motorek zapnout a měnit směr otáčení a druhým přepínačem bych chtěl měnit rychlost. Jako příklad je tohle video https://www.youtube.com/watch?v=KryNwpZH5zs
Hledám už to pár dní ale nikde jsem zatím nenašel zapojení vodičů a kód pro mé komponenty.
Díky za případné rady.
Můžete mi prosím pomoct se zapojením a naprogramováním?
Vyrabím pantový stolek, kvůli focení hvězd. Podoba je tady https://imgur.com/a/dAOIhfd
S čím si ale nevím rady je zapojení a naprogramování desky. Mám použitý Arduino UNO R3, krokový motorek 28BYJ-48 s driverem ( https://www.gme.cz/krokovy-motor-ridici-modul )
Nikdy předtím jsem s tímhle nedělal.
Povedlo se mi ale jen rozchodit motorek a měnit rychlost podle návodu https://navody.arduino-shop.cz/navody-k ... river.html
Chtěl bych ale mít zapojené dvě tlačítka (přepínače). Jedním přepínačem bych chtěl motorek zapnout a měnit směr otáčení a druhým přepínačem bych chtěl měnit rychlost. Jako příklad je tohle video https://www.youtube.com/watch?v=KryNwpZH5zs
Hledám už to pár dní ale nikde jsem zatím nenašel zapojení vodičů a kód pro mé komponenty.
Díky za případné rady.
Re: Pantový stolek
Ten levy prepinac ma imho uprostred zem, kterou pripojuje bud doleva, nebo doprava na piny, kde je INPUT_PULLUP. Ktery pin vrati pri cteni nulu, tam je to prepojene, uprostred vraci oba dva jednicku. Pravy prepinac je mozna pouze vypinac mezi zemi a tretim pinem s INPUT_PULLUP a podle toho jestli je na pinu 0 nebo 1, tak jede pomalu, nebo rychle.
Podle prepinace v tom prikladu poustis bud jen cast s rotacePoSmeru() nebo cast s rotaceProtiSmeru() (nebo ani jednu, kdyz je uprostred a ma stat).
Vypinacem nastavujes rychlost na 1, nebo 2 a cekani v loop nedelas vubec a delas tam nikoli 512 kroku (dokola), ale jen jeden krok, takze celou otocku o 360 stupnu udelas po asi 512 pruchodech loop();
Podle prepinace v tom prikladu poustis bud jen cast s rotacePoSmeru() nebo cast s rotaceProtiSmeru() (nebo ani jednu, kdyz je uprostred a ma stat).
Vypinacem nastavujes rychlost na 1, nebo 2 a cekani v loop nedelas vubec a delas tam nikoli 512 kroku (dokola), ale jen jeden krok, takze celou otocku o 360 stupnu udelas po asi 512 pruchodech loop();
Kód: Vybrat vše
void loop() {
if (digitalRead(pinVypinac)) {
rychlost=2; // pomalu
} else {
rychlost=1; // rychle
};
// rotace o 1 krok = 1 volání
// funkce rotacePoSmeru() či rotaceProtiSmeru()
if (digitalRead(pinVlevo)==0) {
rotacePoSmeru();
}
if (digitalRead(pinVpravo)==0) {
rotaceProtiSmeru();
}
}
Re: Pantový stolek
Takže černé vodiče s přepínačů jsou propojené a zapojené do GND. Jednotlivé zelené jsou pak zapojené do analogových vstupů 5,4,3 ?(nevím, nejde to pořádně poznat z toho videa). Navíc jsou ještě všechny zelené přes odpory propojené a zapojené do 5V ? (taky to nejde úplně poznat).
Re: Pantový stolek
Ono je celkem jedno na ktere volne piny pripojist ty zelene, pro ten prepinac smeru je pak oznacis jako pinVlevo a pinVpravo, pro rychlost pinVypinac. Odpory k +5V netreba, pokud to das jako INPUT_PULLUP (pouzijou se vnitrni pullup odpory Arduina pro pritazeni k +5V) , nikoli jen INPUT . At uz pouzijes Dneco, nebo Aneco, tak je pouzijes jako digitalni, cili digitalRead.
Re: Pantový stolek
No zatím tomu zase tak uplně nerozumím tak musím pomaleji
Zapojení by bylo asi takhle jestli to chápu? Tenhle základní kód bych pak upravil s tím co si napsal ty nahoře.
Zapojení by bylo asi takhle jestli to chápu? Tenhle základní kód bych pak upravil s tím co si napsal ty nahoře.
Kód: Vybrat vše
// Krokový motor a driver
// čísla pinů pro digitální výstupy
const int in1 = 8;
const int in2 = 9;
const int in3 = 10;
const int in4 = 11;
// proměnná pro nastavení rychlosti,
// se zvětšujícím se číslem se rychlost zmenšuje
int rychlost = 1;
//
int uhel = 360;
void setup() {
// inicializace digitálních výstupů
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
}
void loop() {
// plná rotace o 360 stupňů = 512 volání
// funkce rotacePoSmeru() či rotaceProtiSmeru()
for(int i=0;i<(uhel*64/45);i++){
rotacePoSmeru();
}
// pauza po dobu 1 vteřiny
delay(1000);
for(int i=0;i<(uhel*64/45);i++){
rotaceProtiSmeru();
}
// pauza po dobu 1 vteřiny
delay(1000);
}
// zde následují funkce pro volání jednotlivých
// kroků pro otočení po či proti směru hodinových
// ručiček
void rotacePoSmeru() {
krok1();
krok2();
krok3();
krok4();
krok5();
krok6();
krok7();
krok8();
}
void rotaceProtiSmeru() {
krok8();
krok7();
krok6();
krok5();
krok4();
krok3();
krok2();
krok1();
}
// každý krok obsahuje výrobcem dané pořadí
// pro správné spínání motoru a následnou
// pauzu, kterou určujeme rychlost otáčení
void krok1(){
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
delay(rychlost);
}
void krok2(){
digitalWrite(in1, HIGH);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
delay(rychlost);
}
void krok3(){
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
delay(rychlost);
}
void krok4(){
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
delay(rychlost);
}
void krok5(){
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
delay(rychlost);
}
void krok6(){
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, HIGH);
delay(rychlost);
}
void krok7(){
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
delay(rychlost);
}
void krok8(){
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
delay(rychlost);
}
Re: Pantový stolek
Vyzkoušený to nemám, ale asi to mělo být nějak takhle:
A co se týče schématu, tak tam přece není možné připojit na kontakt z jedné strany +5V a z druhé GND!
Při jeho sepnutí by došlo ke zkratu.
V příloze je opravené schéma:
Kód: Vybrat vše
// Krokový motor a driver
// čísla pinů pro digitální výstupy
const int in1 = 8;
const int in2 = 9;
const int in3 = 10;
const int in4 = 11;
const int pinVypinac = A5;
const int pinVlevo = A3;
const int pinVpravo = A4;
unsigned int rychlost;
void setup() {
// inicializace digitálních výstupů
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
pinMode(pinVypinac, INPUT_PULLUP);
pinMode(pinVlevo , INPUT_PULLUP);
pinMode(pinVpravo , INPUT_PULLUP);
}
void loop()
{
if (digitalRead(pinVypinac)) rychlost=2; // pomalu (rozpojeny kontakt)
else rychlost=1; // rychle (sepnuty kontakt)
// rotace o 1 krok = 1 volání
// funkce rotacePoSmeru() či rotaceProtiSmeru()
if (digitalRead(pinVlevo) == 0)
{
rotacePoSmeru();
}
if (digitalRead(pinVpravo) == 0)
{
rotaceProtiSmeru();
}
}
// zde následují funkce pro volání jednotlivých
// kroků pro otočení po či proti směru hodinových
// ručiček
void rotacePoSmeru() {
krok1();
krok2();
krok3();
krok4();
krok5();
krok6();
krok7();
krok8();
}
void rotaceProtiSmeru() {
krok8();
krok7();
krok6();
krok5();
krok4();
krok3();
krok2();
krok1();
}
// každý krok obsahuje výrobcem dané pořadí
// pro správné spínání motoru a následnou
// pauzu, kterou určujeme rychlost otáčení
void krok1(){
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
delay(rychlost);
}
void krok2(){
digitalWrite(in1, HIGH);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
delay(rychlost);
}
void krok3(){
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
delay(rychlost);
}
void krok4(){
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
delay(rychlost);
}
void krok5(){
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
delay(rychlost);
}
void krok6(){
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, HIGH);
delay(rychlost);
}
void krok7(){
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
delay(rychlost);
}
void krok8(){
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
delay(rychlost);
}
A co se týče schématu, tak tam přece není možné připojit na kontakt z jedné strany +5V a z druhé GND!
Při jeho sepnutí by došlo ke zkratu.
V příloze je opravené schéma:
Re: Pantový stolek
No na tom video příkladu to má právě zapojené s těma odporama na 5V. Ale teď už to chápu, jak si psal, že když se použije INPUT_PULLUP, tak už se to nemusí propojovat. Púvodně jsem myslel, že to musí být i tak propojené bez těch odporů.
Vyzkoušel jsem to zapojit a nahrát kód a je to přesně to co jsem potřeboval. Vše funguje jak má s přepínáním směru i rychlostí otáček Moc díky za pomoc ! Určitě se to bude hodit i dalším astro fotografům Pak sem hodím výslednou podobu pantového stolku.
Vyzkoušel jsem to zapojit a nahrát kód a je to přesně to co jsem potřeboval. Vše funguje jak má s přepínáním směru i rychlostí otáček Moc díky za pomoc ! Určitě se to bude hodit i dalším astro fotografům Pak sem hodím výslednou podobu pantového stolku.
Re: Pantový stolek
nejen astrofotografům
Ono je to docela obvyklý manévr kdekoli použít tlačítka proti zemi a INPUT_PULLUP (ostatně proto to tam výrobce čipu zadrátoval).
Jinak ono obecně pomáhá se naučit programovat, protože pak člověk chápe co dělá a proč a může s důvěrou ve výsledek upravovat cizí programy (které řeší něco jiného) a ukázkové kódy (které jsou většinou samy o sobě celkem na nic, ale ukazují, jak používat různé (často i všechny) funkce nějakého modulu a předpokládají, že laskavý čtenář si z nich vezme inspiraci a napíše si to po svém, na míru vlastnímu problému - nikdo nepotřebuje otáčet krokovým motorem o 360 stupňů tam a zpátky se sekundovými pauzami, ale spousta lidí potřebuje točit krokovými motory nějak a tady vidí, jak je přimět udělat pár kroků tam a pár zpět a jak měnit rychlost a zbytek už si dotvoří)
Ono je to docela obvyklý manévr kdekoli použít tlačítka proti zemi a INPUT_PULLUP (ostatně proto to tam výrobce čipu zadrátoval).
Jinak ono obecně pomáhá se naučit programovat, protože pak člověk chápe co dělá a proč a může s důvěrou ve výsledek upravovat cizí programy (které řeší něco jiného) a ukázkové kódy (které jsou většinou samy o sobě celkem na nic, ale ukazují, jak používat různé (často i všechny) funkce nějakého modulu a předpokládají, že laskavý čtenář si z nich vezme inspiraci a napíše si to po svém, na míru vlastnímu problému - nikdo nepotřebuje otáčet krokovým motorem o 360 stupňů tam a zpátky se sekundovými pauzami, ale spousta lidí potřebuje točit krokovými motory nějak a tady vidí, jak je přimět udělat pár kroků tam a pár zpět a jak měnit rychlost a zbytek už si dotvoří)
Re: Pantový stolek
Tak stolek je téměř hotový. Čekám jen na montáž foťáku a pak už jen na jasnou oblohu. Když to teď různě zkouším, tak ještě řeším rychlost toho pomalého otáčení. Mám nastavenou zatím pomalou rychlost na 6. Číslo 5 by už byla rychle a 7 pomalu. Když budu ale potřebovat ještě rychlost něco mezi tím. Je na to lepší funkce Delay, DelayMicroseconds nebo mikro kroky?
Re: Pantový stolek
Názornou odpověď hlavně s ohledem na omezení nežádoucího chvění najdeš cca od času 1 min v následujícím videu.
https://youtu.be/tRoT3qpndbU?t=57
Mimochodem spoustu informací včetně výpočtů, plánků, zapojení HW a SW je k nalezení pod termíny "barn door" + "mount" nebo + "tracker" různě doplněná o hesla motorized, arduino viz. třeba tady. Nicméně chválim snahu udělat si to po svém a hlavně tomu porozumět
Bodla by nějaká fotka mechaniky a hlavně se nezapomeň pochlubit výsledkem, tj. fotkami hvězd
EDIT:
pro další experimenty s omezením otřesů = omezení rozklepanosti fotek bude potřeba lepší driver, proč, jak na to a co zvolit? Inspirace níže:
test TL Smoother a srovnání A4988 vs. DRV8825
srovnání driveru TMC2100 vs. DRV8825 vs. A4988 při reálném nasazení na video pojezdu
https://youtu.be/tRoT3qpndbU?t=57
Mimochodem spoustu informací včetně výpočtů, plánků, zapojení HW a SW je k nalezení pod termíny "barn door" + "mount" nebo + "tracker" různě doplněná o hesla motorized, arduino viz. třeba tady. Nicméně chválim snahu udělat si to po svém a hlavně tomu porozumět
Bodla by nějaká fotka mechaniky a hlavně se nezapomeň pochlubit výsledkem, tj. fotkami hvězd
EDIT:
pro další experimenty s omezením otřesů = omezení rozklepanosti fotek bude potřeba lepší driver, proč, jak na to a co zvolit? Inspirace níže:
test TL Smoother a srovnání A4988 vs. DRV8825
srovnání driveru TMC2100 vs. DRV8825 vs. A4988 při reálném nasazení na video pojezdu
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 4 hosti