Zresztą jesli dobrze pamiętam, to moje DRO może się rozkaliborwać ale nigdy się nie zatnie.
DRO DIY
-
pioterek
- ELITA FORUM (min. 1000)

- Posty w temacie: 69
- Posty: 1724
- Rejestracja: 27 gru 2012, 02:40
- Lokalizacja: kujawsko-pomorskie
Tak, jest kilka sposobów:
http://practicalusage.com/arduino-using ... y-encoder/
http://playground.arduino.cc/Main/Rotar ... s#Example1
Zdaje się, że znalazłem miejsce, problemu i to o co w tym chodziło.
trzeba zmienić na
No i zaczęło coś tam liczyć, teraz trzeba połączyć do maszyny i potestować parametry mechaniczne.
Jednocześnie proszę o skomentowanie fragmentów programu i opis jaka idea mu przyświecała w poszczególnych miejscach mających wpływ na wyświetlane liczby w zależności od ilości impulsów.
Wiadomo są różne maszynki w których można to zastosować, i tak dla przykładu posiadają różne skoki śruby pociągowej [ 2,5 3 , 3,175 4, 4,2333333~ 5, 6, 6,35, 8, 12, 12,7 mm ], są też różne ilości impulsów na jeden obrót enkodera których nie będę teraz przytaczał. Chodzi teraz o to w jaki sposób należało by ten program dostosować do realiów mechanicznych maszyny. Możliwe, że to nie jedyny fragment który o tym decyduje, więc proszę o komentarz w tej kwestii.
http://practicalusage.com/arduino-using ... y-encoder/
http://playground.arduino.cc/Main/Rotar ... s#Example1
Zdaje się, że znalazłem miejsce, problemu i to o co w tym chodziło.
Kod: Zaznacz cały
void setup()
{
pinMode(DIOpin, OUTPUT);
pinMode(RCKpin, OUTPUT);
pinMode(SCKpin, OUTPUT);
pinMode(EncApin, INPUT);
pinMode(EncBpin, INPUT);
pinMode(resetPin, INPUT_PULLUP);
Kod: Zaznacz cały
void setup()
{
pinMode(DIOpin, OUTPUT);
pinMode(RCKpin, OUTPUT);
pinMode(SCKpin, OUTPUT);
pinMode(EncApin, INPUT_PULLUP);
pinMode(EncBpin, INPUT_PULLUP);
pinMode(resetPin, INPUT_PULLUP);Jednocześnie proszę o skomentowanie fragmentów programu i opis jaka idea mu przyświecała w poszczególnych miejscach mających wpływ na wyświetlane liczby w zależności od ilości impulsów.
Kod: Zaznacz cały
// liczba całkowita - odleglosc na impuls w 0,000001mm
int distance = 1000;
// liczba całkowita - ilosc impulsow dla luzu w nakretce
int clearance = 50;
-
strikexp
- Lider FORUM (min. 2000)

- Posty w temacie: 105
- Posty: 4884
- Rejestracja: 31 mar 2017, 19:47
- Lokalizacja: Warszawa
Kurcze, nie pomyślałem o tympioterek pisze: Zdaje się, że znalazłem miejsce, problemu i to o co w tym chodziło.
To dowodzi że do zabawy w elektronikę potrzebny jest multimetr
Słusznie przypuszczasz że dostosowanie do maszyny to nie tylko ten zacytowany fragment. Ale dla nas istotne jest tylko to, powinno wystarczyć.
Masz tam dwie zmienne(zapamietać tą nazwę). Nadaje się im stałą wartość więc mogłyby być i stałą(zapamietać tą nazwę) a nie zmienną. Ale już takie moje zboczenie z bardziej zaawansowanego programowania. Że stałych raczej nie używam.
Do rzeczy, zgodnie z angielskimi nazwami, zmienna distance określa rozdzielczość DRO. A zmienna clearance luzy na połączeniu nakrętka-śruba.
Distance określami obliczając dystans jaki pokonuje nasz suport pomiędzy dwoma kolejnymi impulsami. Całe obliczenia robimy na parametrach mechanicznych, obliczając jaki dystans przypada na jeden obrót enkodera. Dopiero na końcu dzielimy obrót enkodera przez ilość impulsów i otrzymujemy docelową odległość.
Jednak DRO z powodów wydajnościowych, robi obliczenia na liczbach całkowitych. Przyjmując że liczba 1 odpowiada odległości 0,000001mm (mogłem pomylić ilość zer, ale to sobie sprawdzisz). Czyli mając np dystans 0,00073827894mm na impuls, wpisujemy w zmienną distance wartość 738. Zaokrąglając cyfry spoza zakresu.
Warto mieć takie przełożenie aby wyszło dokładne zaokrąglenie. Wszelkie nierówności są wtedy kumulowane powodując liniowy błąd pozycji DRO.
Natomiast zmienna clearance powinna zawierać liczbę impulsów które wystąpią przy zmianie kierunku DRO. Zanim suport faktycznie zacznie się poruszać. Czyli po prostu trzeba wyliczyć:
1. Ile luzu jest w nakrętce
2. Podzielić luz przez dystans przypadający na jeden impuls. Np z powyższego przykładu podzielmy luz np 0,01mm przez 0,00073827894mm wyjdzie 13,54501593 obrotu. Zła liczba bo nie da sie jej dokłądnie zaokrąglić, ale niech bedzie już 14 bo luz się powiększa z czasem. I właśnie 14 należy wpisać jako wartość zmiennej clearance.
DRO będzie sobie symulowało pozycję w nakrętce i naliczało zmianę odległości jedynie w momencie przekroczenia krawędzi gwintu/luzu.
-
upanie
- ELITA FORUM (min. 1000)

- Posty w temacie: 48
- Posty: 1962
- Rejestracja: 15 sty 2011, 09:26
- Lokalizacja: Wyszków
Cholera jasna jakie to proste. Że też tyle lat się męczyłem a wystarczy czytać datasheet-a.strikexp napisał/a:
To dowodzi że do zabawy w elektronikę potrzebny jest multimetr
Do zabawy w elektronikę wystarczy czytać datasheeta (zapamiętać to słowo).
Ten wątek jest genialny. Z resztą tak jak i wszystkie inne, w których bierze udział strikexp.
czilałt...




