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: 4419
Rejestracja: 31 mar 2017, 19:47
Lokalizacja: Warszawa

#241

Post napisał: strikexp » 17 cze 2017, 22:08

Yogi_ pisze: Pokaż ten kawałek kodu?
Dodaje w załączniku ale nie wiem czy nawet działa :mrgreen: Rzuciłem w pewnym momencie pisanie i nie pamietam na czym stanęło.
W każdym razie, z tego co pamietam to dodałem drugą funkcję obsługi ekranu do przerobienia na obsługę "menu".
Yogi_ pisze:Zgaś resztę :-D
Kropek czy cyfr? :P Lepiej jak sa podświetlone wszystkie kropki, bo od razu widać że jest się w trybie edycji.
Tylko nie wiem jak ogarnąć te róznice na róznych wyświetlaczach :???:
Yogi_ pisze:strikexp (żebyś się nie nudził :-D ) przewidź wersję na frezarkę i na tokarkę. Wersja tokarkowa powinna liczyć średnicę w osi X a nie promień.
Czyli do tokarki druga oś poprzeczna? To będzie trudne bo trzeba znać pozycję noża. Czyli po każdej zmianie trzeba by podawać jego realną pozycję. Plus oczywiście odległość pionowa od osi tokarki :wink:
Na frezarkę to nie wiem jak ma to działać. Czyżby 3 osie? Po pierwsze to trzeba rozwiązać problem, jakich czujników użyć i gdzie je wmontować.
Załączniki
DRO.ino.zip
(1.71 KiB) Pobrany 94 razy



Tagi:

Awatar użytkownika

Yogi_
Specjalista poziom 3 (min. 600)
Specjalista poziom 3 (min. 600)
Posty w temacie: 25
Posty: 759
Rejestracja: 13 sty 2010, 08:07
Lokalizacja: Braniewo

#242

Post napisał: Yogi_ » 18 cze 2017, 11:07

Tak na szybko:
strikexp pisze:Czyli do tokarki druga oś poprzeczna?
Nawet na kolejnym arduino :-) Kto bogatemu zabroni?
To będzie trudne bo trzeba znać pozycję noża. Czyli po każdej zmianie trzeba by podawać jego realną pozycję.
Nie ma potrzeby. Zobacz, że bębenek (jak się to nazywa?) skali suportu masz wyskalowany w średnicy nie w promieniu detalu. Jeśli pokręcisz od 0 do 2mm to nóż przesunie się o 1mm.
Plus oczywiście odległość pionowa od osi tokarki :wink:
To ma być dowcip?

Mam nadzieję, że zdążysz podejść jeszcze do tokarki i popatrzeć o czym piszę.
Pozdrawiam
Krzysiek


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

#243

Post napisał: Avalyah » 18 cze 2017, 17:03

strikexp pisze: Wychodzę przyciskiem MENU to od razu wskakuję spowrotem. Wychodzę przyciskiem ZERO to mi sie zeruje to co ustawiłem. Pozostaje chyba wyjść przyciskiem NEXT po przeleceniu wszystkich cyfr.
Zrób tak, że przycisk wymaga minimum np. 1 sekundy, żeby ponownie zarejestrował naciśnięcie. Możesz to zrobić funkcją "przechodnią" (żeby nie stosować żadnego okropnego delaya, czego w zasadzie nie możesz zrobić, bo pętli głównej nie możesz opóźniać) i skorzystać z funkcji millis() i porównywać czas w każdym wywołaniu. Taka funkcja oczywiście w pętli loop.


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

#244

Post napisał: strikexp » 18 cze 2017, 17:17

Raczej innej opcji jak osobne Arduino do każdej osi to nie widzę.
Yogi_ pisze:
Plus oczywiście odległość pionowa od osi tokarki :wink:
To ma być dowcip?
Żaden dowcip, przecież nóż możesz mieć różnej wysokości. I trzeba podać ten parametr aby wiedzieć jak jest realna średnica elementu.


@Avalyah
Masz rację opóźnienie byłoby przydatne, ale testowałem to i tak jak jest też działa :P


InzSpawalnik
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 4
Posty: 1693
Rejestracja: 28 gru 2012, 01:04
Lokalizacja: Galaktyka

#245

Post napisał: InzSpawalnik » 18 cze 2017, 17:49

Poczytajcie panowie troche o przerwaniach w atmedze i dowiecie sie jak ( moze ) jak programowac na poziomie do tej pory dla was nieznanym, funkcje delay zostawicie w spokoju jak poznacie dzemiace mozliwosci atmegi, tutaj bodajze na tym forum nawet ktos experymentowal ( z powodzeniem ) ze zmiana taktowania arduino co mialo na celu obnizenie zapotrzebowania na prad. Szukajcie hasla przerwania ( interrupts ).
Majac do dyspozycji przerwania oraz taka ilosc wejsc i wyjsc jakie oferuje arduino mozna zrobic prakltycznie wszystko, z jednego arduino wykorzysujecie jego 1-2% mocy obliczeniowych max to po cholere kupowac drugie arduino skoro i tak na jednym nie bylo wystarczajaco umiejetnosci zeby sobie poradzic ? J


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

#246

Post napisał: strikexp » 18 cze 2017, 18:29

InzSpawalnik pisze: z jednego arduino wykorzysujecie jego 1-2% mocy obliczeniowych max to po cholere kupowac drugie arduino skoro i tak na jednym nie bylo wystarczajaco umiejetnosci zeby sobie poradzic ?
Żeby obsłużyć szybkie obroty enkodera...
Nie kasa wydana na poszczególne rzeczy się liczy, ale końcowy koszt projektu.

W mikrokontrolerach standardem jest że wykorzystuje się tylko kilka procent mocy obliczeniowej. Pozostała moc obliczeniowa jest wykorzystywana na wykonanie instrukcji NOP:
https://pl.wikipedia.org/wiki/Instrukcja_pusta
Nie myl systemu operacyjnego z mikrokontrolerem. No i jeszcze jedno, sprawdzałeś jaką moc pobiera Arduino zasilane 5V? :mrgreen: Jak wymontujesz diody LED to zaoszczędzisz 90% energii bo sama atmega nie pobiera jej prawie wcale :mrgreen:


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

#247

Post napisał: Avalyah » 18 cze 2017, 20:04

InzSpawalnik pisze:Poczytajcie panowie (...)
Do kogo mówisz, że mówisz w liczbie mnogiej? :razz:

Awatar użytkownika

Yogi_
Specjalista poziom 3 (min. 600)
Specjalista poziom 3 (min. 600)
Posty w temacie: 25
Posty: 759
Rejestracja: 13 sty 2010, 08:07
Lokalizacja: Braniewo

#248

Post napisał: Yogi_ » 19 cze 2017, 01:19

strikexp pisze:Żaden dowcip, przecież nóż możesz mieć różnej wysokości. I trzeba podać ten parametr
:-( Zainwestuj w poradnik tokarza, co?
Przyjmij jako prawdę objawioną:
Obrazek
Obrazek

strikexp pisze:aby wiedzieć jak jest realna średnica elementu.
To trzeba użyć przyrządu do mierzenia średnic :-)

Menu:
Dziwnie kombinujesz.
1. wczytaj stan przycisku menu w setupie jako np stan_A
2. w pętli głównej sprawdzaj czy stan przycisku się zmienił jeśli tak zapamiętaj go (np. stan_T) skocz do procedury
3 w procedurze np za pomocą case sprawdzaj jaki klawisz został naciśnięty i wykonaj działania przypisane do niego
4 dla przycisku wyjścia z zapamiętaniem przepisz stan_T do stan_A
tadam ;-)

Wygaszanie cyfr - dlaczego nie? po wejściu do menu włączona jest tylko prawa, ustawiasz ją, kursor w lewo zapala się następna itd... wychodząc z menu przepisujesz wartości ustawione do zmiennej i na wyświetlacz. I już. Aha... powinno po tym liczyć do 0, tak + jak i -.
Jako przykład - masz tulejkę 25mm śr. zewn. i 12mm śr. wewn., a potrzebujesz np. 23,5 zewn.i 15 wewn. czyli dojeżdżasz nożem zewnętrznym do tulejki ustawiasz na urządzeniu 1.5000 i jazda :-) do zera. Następnie nożem wewnętrznym dotykasz tulejkę wewnątrz ustawiasz -3.0000 i też do 0 :-)

Jutro (sensie, że we dnie) dalsze wywody :-D
Pozdrawiam
Krzysiek

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

#249

Post napisał: pioterek » 19 cze 2017, 05:29

Nie rozumie czym się tak martwić, na razie, to znaczy do poprzedniej wersji, działało to na tej zasadzie, że

Kod: Zaznacz cały

// liczba całkowita - odleglosc na impuls w 0,000001mm, max 32000
int distance = 1000;
powyższa liczba miała wpływ na to ile Arduino wyświetla na wyświetlaczu i zawsze nie było problemu z tym, żeby wyświetliło mniej niż ilość impulsów na obrót enkodera. I tak dla enkodera 1000 imp/obr dawało się wyświetlić
Obrazek
i każdą liczbę mniejszą w zależności od tego jaką cyfrę się wpisze w linii [int distance = 1000;]
A więc zależy to od użytkownika a nie od programisty i nie ma sensu o to zawracać głowę koledze strikexp.
Pisałem, że przydało by się wprowadzić coś co dawało by możliwość by zwielokrotnić tę liczbę. Z tym był problem i miał się rozwiązać po zdobyciu enkodera.
pioterek pisze: Zgłaszałem pewne rzeczy które by warto udoskonalić. I tak: Zera które są dalej na lewo niż jedno przed przecinkiem wyłączyć.
( to zostało zrobione - ekstra ) Gdyby ten minus był obok pierwszej cyfry to było by elegancko.
pioterek pisze: Wprowadzić dodatkowe cztery przyciski z których jedna para by ustawiała cyfrę, a kolejna para dawała możliwość zmiany jej wartości w górę i w dół, tak jak to jest na wielu monitorach do zmiany parametrów obrazu. Pierwszy z przycisków "Setup" ma włączać możliwość edycji aktualnie wyświetlanej wartości, funkcja ta powinna sprawić, że pierwsza cyfra zacznie migać i dzięki temu wiadomo, że to właśnie ją można zmieniać. Ponownie włączenie tego przycisku ma wyłączać możliwość (wpisywania) - zmiany wartości na wyświetlaczu. Funkcja ta, po jej włączeniu oprócz mrugania edytowaną cyfrą powinna aktywować pozostałe przyciski i zmieniać działanie trzeciego - patrz "Uwaga". ( Jeżeli te mruganie jest za trudne do wykonania, to można by włączyć wszystkie kropki poza tą której cyfrę edytujemy.)
Drugi przycisk "Select" powinien sprawić, że zaczyna migać kolejna cyfra i dzięki temu wiadomo, że to ją można edytować, ponowne wciskanie przełącza na kolejną cyfrę i tak w kółko bez końca, następna, następna, aż dojdzie do ostatniej i znów od pierwszej.
Trzeci przycisk "UP" wciśnięcie jego powoduje zmianę wartości migającej cyfry na kolejną wyższą, i tak gdy było 2, to zmieni ją na 3, itd zawsze o jedną w górę a po dojściu do wartości 9 zmienia ją na 0, potem na 1 i tak w kółko. Uwaga! gdy wcześniej nie został wybrany przycisk "Setup" i żadna cyfra nie mruga to ten trzeci przycisk powinien powodować wyzerowanie całego licznika tak jak dotychczasowy zastosowany w napisanym wcześniej programie.
Czwarty przycisk "DOWN" wciśnięcie jego powoduje zmianę wartości migającej cyfry na kolejną niższą, i tak gdy było 4, to zmieni ją na 3, itd zawsze o jedną w dół a po dojściu do wartości 0 zmienia ją na 9, potem na 8 i tak w kółko.
Zostało zrobione, ale inaczej - wprowadzone zostały dodatkowe przyciski, a lepiej było by, żeby niektóre z nich miały kilka funkcji tak jak to opisałem. W ostateczności miałem nadzieję, że wystarczą trzy przyciski gdyby zrezygnować z ostatniego "Down" a tu się narobiło aż pięć.
pioterek pisze: liczy tak samo, nadal nie ma zwielokrotnienia wyświetlanej wartości. Trzymam kciuki, żeby dobrze poszło dalej z pozostałymi udoskonaleniami. :wink:
Przy wpisaniu 5000 na obrót wychodzi [000 0,541]. Jest jakaś dziwna zależność, bo wydaje mi się, że po wielokrotnym odjęciu liczby 256 od wpisanej liczby pozostała reszta mniejsza od 256 działa tak samo jak pierwotnie wpisana liczba. A więc 5000 -(18*256)=392 i gdy wpiszę 392 to wynik jest identyczny jak dla 5000. Czyli ilość doliczanych impulsów do licznika w reakcji na impulsy enkodera są regulowane tylko w dół, a przydało by się jeszcze w górę.
Wpisywanie w program liczby większej niż [int distance = 250;] nie ma sensu, bo i tak nie zwiększa to wyniku na wyświetlaczu.

Ostatniej wersji nie testowałem jeszcze dokładnie więc proszę poczekać.


InzSpawalnik
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 4
Posty: 1693
Rejestracja: 28 gru 2012, 01:04
Lokalizacja: Galaktyka

#250

Post napisał: InzSpawalnik » 19 cze 2017, 20:18

StrikeXP : "prawie wogole" - gratuluje dokladnego okreslenia.
Elektronicy uzywaja miliamperow.
Jak poczytasz troche to sie dowiesz ze nawet bez ledow ( a dokladnie jest ich trzy RX, TX i 13 kontrolna ) arduino wciaz zuzywa energie i to wcale nie tak malo. Na baterii nie pociagnie dluzej niz pare dni.

Sa projekty ktore zalecam wszystkim zainteresowany do wgladu ktorych autorzy skupili sie na tym jak obnizyc pobor pradu przez procesor do faktycznego minimum ( wlasnie poprzez "spowolnienie" procesora ) itp. Nawet przy najnizszych predkosciach magistrali wciaz jest to wystarczajaco szybki sprzet do takich zastosowan o jakich jest tutaj mowa.

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „Elektronika ogólna”