DRO DIY

Na tym forum rozmawiamy o elektronice nie związanej bezpośrednio z tematem CNC

strikexp
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 105
Posty: 4690
Rejestracja: 31 mar 2017, 19:47
Lokalizacja: Warszawa

#181

Post napisał: strikexp » 13 maja 2017, 17:55

A to akurat łatwo sprawdzić, pioterek musi delikatnie poruszyć tym swoim :wink:
Zresztą jesli dobrze pamiętam, to moje DRO może się rozkaliborwać ale nigdy się nie zatnie.



Tagi:

Awatar użytkownika

pioterek
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 69
Posty: 1724
Rejestracja: 27 gru 2012, 02:40
Lokalizacja: kujawsko-pomorskie

#182

Post napisał: pioterek » 13 maja 2017, 19:40

Nawet bardzo delikatnie i wolniutko nie liczy.


Avalyah
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 22
Posty: 2437
Rejestracja: 29 lis 2015, 00:38
Lokalizacja: Bielsko-Biała

#183

Post napisał: Avalyah » 13 maja 2017, 19:42

Są arduinowe przykłady zrealizowane na kilka sposobów (oczywiście wszystkie z przerwaniami). Możecie je sobie wypróbować. Nawet na jednej osi, żeby zobaczyć, czy działa.

Powinien, bo taki botlandowy enkoder używałem właśnie z nimi.

Awatar użytkownika

pioterek
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 69
Posty: 1724
Rejestracja: 27 gru 2012, 02:40
Lokalizacja: kujawsko-pomorskie

#184

Post napisał: pioterek » 13 maja 2017, 20:02

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.

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);
trzeba zmienić na

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);
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.

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;
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.


strikexp
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 105
Posty: 4690
Rejestracja: 31 mar 2017, 19:47
Lokalizacja: Warszawa

#185

Post napisał: strikexp » 14 maja 2017, 15:07

pioterek pisze: Zdaje się, że znalazłem miejsce, problemu i to o co w tym chodziło.
Kurcze, nie pomyślałem o tym :mrgreen: Mój enkoder dawał normalny sygnał napieciowy, Twój widocznie zwiera do masy. Trzeba było zrobić programowe podciagnięcie Pullpup na wejściu (podanie napięcia 5V przez rezystor dużej wartości). I sygnał zaczął istnieć.
To dowodzi że do zabawy w elektronikę potrzebny jest multimetr :razz:

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.


Avalyah
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 22
Posty: 2437
Rejestracja: 29 lis 2015, 00:38
Lokalizacja: Bielsko-Biała

#186

Post napisał: Avalyah » 15 maja 2017, 01:44

strikexp pisze: To dowodzi że do zabawy w elektronikę potrzebny jest multimetr :razz:
Do zabawy w elektronikę wystarczy czytać datasheeta (zapamiętać to słowo).


251mz
Moderator
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 5
Posty: 4478
Rejestracja: 27 sie 2004, 21:59
Lokalizacja: Polska

#187

Post napisał: 251mz » 15 maja 2017, 02:57

Avalyah,
Z naciskiem na datasheeta ;)
Bo większość czyta wszystkie fora i rady dobrych wróżek ale dokumentacji nie otworzy.


upanie
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 48
Posty: 1962
Rejestracja: 15 sty 2011, 09:26
Lokalizacja: Wyszków

#188

Post napisał: upanie » 15 maja 2017, 05:58

strikexp napisał/a:
To dowodzi że do zabawy w elektronikę potrzebny jest multimetr :razz:

Do zabawy w elektronikę wystarczy czytać datasheeta (zapamiętać to słowo).
Cholera jasna jakie to proste. Że też tyle lat się męczyłem a wystarczy czytać datasheet-a.
Ten wątek jest genialny. Z resztą tak jak i wszystkie inne, w których bierze udział strikexp.
czilałt...


pukury
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 8
Posty: 7737
Rejestracja: 23 lis 2004, 22:41
Lokalizacja: kraków

#189

Post napisał: pukury » 15 maja 2017, 09:38

hej!
a ja tam jestem " Nikiforem " elektroniki.
metoda inżynierska ( tzw. ) - łączę - jak się spali lub nie działa - to łączę inaczej.
elementy dość tanie są w końcu.
prędzej czy później musi się udać.
pzd.
Mane Tekel Fares


Avalyah
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 22
Posty: 2437
Rejestracja: 29 lis 2015, 00:38
Lokalizacja: Bielsko-Biała

#190

Post napisał: Avalyah » 15 maja 2017, 10:01

upanie pisze: Cholera jasna jakie to proste. Że też tyle lat się męczyłem a wystarczy czytać datasheet-a.
Chyba się zgodzisz, że warto od niego zacząć?

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „Elektronika ogólna”