Maszyna do punktowania rur

Połączenie obrotnika z młotkiem pneumatycznym przy pomocy ardruino.

Ogólne tematy związane z maszynami CNC, maszyny o odmiennej konstrukcji czyli wszystko co nie pasuje do powyższych.
Tu możesz również przedstawić się i opisać swoją maszynę

Bronsonboss
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 11
Posty: 304
Rejestracja: 14 sty 2018, 18:27
Lokalizacja: Cedry Wielkie

Re: Maszyna do punktowania rur

#31

Post napisał: Bronsonboss » 16 sie 2018, 21:01

krańcówki pewnie mechaniczne, najtaniej i najprościej... potrzebujesz dwie ?? no to można wolne 2 piny arduino wykorzystać tylko przy mechanicznych trzeba by jeszcze debonce zrobić.. ale to też znajdziesz opis bez problemu w necie albo gotowe biblioteki
wtedy tylko odpowiednie pętle w kodzie głównym i wio...
Można jakiś wyświetlacz z kilkoma przyciskami... np do ustawiania szybkości pracy czy coś.. ale to już jak rozkminisz normalne działanie.. :-)
najlepiej zamów sobie drugie arduino (klona) a Ali, przyjdzie za miesiąć to będziesz na jednym mógł pracować normalnie a na drugim eksperymentować...
No i wg mnie najważniejsze to kup shield taki co piny z arduino na złącza skręcane zamienia...
Jutro w pracy fotkę zrobię jak wygląda.. będziesz wiedział czego szukać..




Autor tematu
mat008
Czytelnik forum poziom 3 (min. 30)
Czytelnik forum poziom 3 (min. 30)
Posty w temacie: 24
Posty: 30
Rejestracja: 17 maja 2015, 15:24
Lokalizacja: NML

Re: Maszyna do punktowania rur

#32

Post napisał: mat008 » 16 sie 2018, 23:07

No też już tak myślałem że muszę zamówić jeszcze jedno arduino 😊 tak kranicówki mechaniczne, to nie wystarczy że podają te 5v na ena w sterowniku silnika ? W sumie jak będzie z tym duży problem to póki co mogę odpuścić bo to tylko miało być jako ograniczniki dla bezpieczeństwa.
Wyświetlacz itp też mnie kusi ale po kolei 😉
Jak przyszło arduino to byłem bardzo zdziwiony że złącza nie są skręcane, ale widać tak musi być żeby różne moduły dało się wpiąć. Siedziałem chwilę na Google i tak oto domawiałem goldpiny które lutowałem ostatnio do kabli 😁 a są to moje początki z lutowaniem więc było ciekawie ale jakoś się wszystko trzyma.

Dodane 42 minuty 22 sekundy:
Podłączyłem już silnik do sterownika, wykorzystałem 4 przewody z 6 bo niby tak można 😊 tylko ten przykładowy program stepperoneR. Wykorzystuje piny od 8 do 11 które to plus a które minus to raczej nie ma aż znaczenia to zawsze można przełożyć ale skąd mam wiedzieć które pod pul a które pod dir?


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

Re: Maszyna do punktowania rur

#33

Post napisał: Avalyah » 16 sie 2018, 23:14

Co do wysterowania sygnału pulse w sterowniku to nie ma w tym żadnej filozofii. Krok wykonywany jest, jak sygnał zmieni się z 0V na 5V. Sterownik potrzebuje coś kilka mikrosekund, żeby zarejestrować zmianę. W Twoim przypadku, żeby wykonać krok wystarczy Ci taka funkcja (poglądowo):

Kod: Zaznacz cały

static inline void doStep(uint8_t direction)
{
     digitalWrite(pinPul, LOW);       // Ustaw pin Pul na 0V.
     digitalWrite(pinDir, direction);  // Ustaw pin Dir zgodnie z wybranym kierunkiem - 0 albo 1
     digitalWrite(pinPul, HIGH);      // Ustaw pin Pul na 5V.
}
i gotowe, krok wykonany. Czas wykonywania funkcji digitalWrite jest na tyle duży (o ile pamiętam coś koło 6uS), że powinien wystarczyć sterownikowi do wykrycia zmiany bez dodawania dodatkowych opóźnień. Oczywiście możesz sobie to rozszerzyć na kilka osi itd., to co napisałem to takie minimum, żeby zakręcić silnikiem w wybranym kierunku. To, jak szybko będzie kręcił się silnik zależy oczywiście od tego, jak często będziesz tę funkcję doStep wywoływał. Możesz to zrealizować za pomocą przerwań wykonywanych równiutko co określony czas ("równolegle" do głównej pętli programu, która może w tym czasie robić coś innego), albo po prostu zrobić gdzieś pętlę z opóźnieniem (prostsze rozwiązanie ale nieeleganckie i zajmuje całkowicie procesor). Dla przykładu (znowu zupełnie poglądowo!):

Kod: Zaznacz cały

void doSteps(uint32_t numberOfSteps, uint8_t msBetweenSteps,uint8_t direction)
{
	for (uint32_t i = 0; i < numberOfSteps; i++)
	{
	      doStep(direction);
	      delay(msBetweenSteps);
	}
}
wykona Ci zadaną ilość kroków z określoną prędkością w określonym kierunku. Wywołanie w kodzie funkcji w ten sposób:

Kod: Zaznacz cały

doSteps(1000,5,1);
spowoduje, że silnik wykona 1000 kroków (5 obrotów bez mikrokroku) w ciągu 5 sekund (każdy krok co 5ms).

Chociaż nie wiem, po co ja się produkuję, to samo będziesz pewnie miał już w gotowej bibliotece od arduino :P do tego w zestawie od razu przyspieszanie itd. Ale z tego, co pamiętam te biblioteki też takie cudowne nie są, jak będziesz chciał trochę rozwinąć projekt to zobaczysz, że samemu napiszesz do tego lepszy kod.

Co do krańcówek to nie wiem, czy do końca rozumiem, ale jeśli chcesz je wykorzystać tylko jako zabezpieczenie to wystarczy je spiąć z sygnałem ena na sterowniku. Natomiast w takim przypadku gdy zostaną aktywowane to arduino się o tym nie dowie i będzie wykonywać program dalej (oczywiście silniki nie będą już odpowiadać), więc odpada Ci możliwość reakcji programowej na to i na przykład umożliwienie wznowienia pracy po usunięciu ręcznym problemu, jeżeli to możliwe.


Autor tematu
mat008
Czytelnik forum poziom 3 (min. 30)
Czytelnik forum poziom 3 (min. 30)
Posty w temacie: 24
Posty: 30
Rejestracja: 17 maja 2015, 15:24
Lokalizacja: NML

Re: Maszyna do punktowania rur

#34

Post napisał: mat008 » 17 sie 2018, 07:49

Avalyah dzięki za włączenie się do tematu. Myślę że mam już wystarczająco wskazówek żeby zacząć coś więcej sam kibicować więc póki co nie będę was męczył, tylko w wolnym czasie biorę się za robotę. Jak będą nowe problemy a pewnie będą to dam znać 😊 a kranicówki tak mogę działać nie przeszkadza mi to. Pozdrawiam


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

Re: Maszyna do punktowania rur

#35

Post napisał: Avalyah » 17 sie 2018, 10:25

Powodzenia. Jakbyś miał jakieś pytania dotyczące programowania arduino to wal śmiało tutaj lub na pw, robiłem podobne urządzonko z ekranem dotykowym i innymi bajerami i nawet działa :P


Bronsonboss
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 11
Posty: 304
Rejestracja: 14 sty 2018, 18:27
Lokalizacja: Cedry Wielkie

Re: Maszyna do punktowania rur

#36

Post napisał: Bronsonboss » 17 sie 2018, 10:29

odnośnie shielda z przyłączami to coś takiego można nabyć.. :
Obrazek
Obrazek

Awatar użytkownika

pitsa
Moderator
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 2
Posty: 4654
Rejestracja: 13 wrz 2008, 22:40
Lokalizacja: PL,OP

Re: Maszyna do punktowania rur

#37

Post napisał: pitsa » 17 sie 2018, 21:12

Shieldy są zbędne.

Do szybkich testów silnika i łatwego programowania pracy silników z arduino polecam gotową bibliotekę AccelStepper. Jej zaleta to możliwość ustawienia przyspieszeń przy starcie i zatrzymywaniu silnika.

tak się definiuje silniki dla step/dir:
http://www.airspayce.com/mikem/arduino/ ... ample.html

Przykład jazdy w te i we wte:
http://www.airspayce.com/mikem/arduino/ ... ample.html

Wyszukaj na forum posty z "accelstepper" i poczytaj wątki.
zachowanie spokoju oznacza zdolności do działania
ᐃ 🜂 ⃤ ꕔ △ 𐊅 ∆ ▵ ߡ


Bronsonboss
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 11
Posty: 304
Rejestracja: 14 sty 2018, 18:27
Lokalizacja: Cedry Wielkie

Re: Maszyna do punktowania rur

#38

Post napisał: Bronsonboss » 18 sie 2018, 00:19

pitsa pisze:Shieldy są zbędne.
jak testujesz i masz dwa ardino to się przydaje... jedno wyciągasz, drugie wkładasz.. a kable cały czas tak samo zapięte... :-)


Autor tematu
mat008
Czytelnik forum poziom 3 (min. 30)
Czytelnik forum poziom 3 (min. 30)
Posty w temacie: 24
Posty: 30
Rejestracja: 17 maja 2015, 15:24
Lokalizacja: NML

Re: Maszyna do punktowania rur

#39

Post napisał: mat008 » 22 sie 2018, 12:10

Witam ponownie. No i Pierwsze obroty silnika są 😀 i nawet nic nie dymi 😉 póki co zrezygnowałem jednak z używania bibliotek bo chodź pisze tam że korzystają np. Z pinów od 8 do 11 to nie widzę już jak to dokładnie podłączyć. Dlatego wykorzystałem kod kolegi Avalyah. Musiałem jednak dodać delay bo bez tego silnik tylko piszaczał, może dla sterownika silnika za szybko wszystko się działo? Teraz mam tak że na delay o wartości 1 silnik działa dość szybko, im dam większą wartość tym obroty są mniejsze.
Teraz próbuje zrobić parę obrotów w jedną i parę w drugą stronę ale coś mi nie idzie. Pewnie nie jest dobrym pomysłem dawać po sobie dwie pętle for?

Kod: Zaznacz cały


void setup() {
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
     for (int i = 0; i < 400; i++) { //Wykonaj 2 obroty
     digitalWrite(9, LOW);       // Ustaw pin Pul na 0V.
     digitalWrite(8, HIGH);  // Ustaw pin Dir zgodnie z wybranym kierunkiem - 0 albo 1
     digitalWrite(9, HIGH);      // Ustaw pin Pul na 5V.
     delay(1);
     }
     for (int a = 0; a < 600; i++) { //Wykonaj 3 obroty
     digitalWrite(9, LOW);       // Ustaw pin Pul na 0V.
     digitalWrite(8, LOW);  // Ustaw pin Dir zgodnie z wybranym kierunkiem - 0 albo 1
     digitalWrite(9, HIGH);      // Ustaw pin Pul na 5V.
     delay(1);
}
}


Autor tematu
mat008
Czytelnik forum poziom 3 (min. 30)
Czytelnik forum poziom 3 (min. 30)
Posty w temacie: 24
Posty: 30
Rejestracja: 17 maja 2015, 15:24
Lokalizacja: NML

Re: Maszyna do punktowania rur

#40

Post napisał: mat008 » 22 sie 2018, 22:30

Dopiero po parokrotnym przeczytaniu kodu od kolegi Avalyah widzę że próbował mi dać podpowiedź o użyciu funkcji, tylko że nie za bardzo rozumiem ten kod, głównie użytych parametrów jakie mogą mieć. Próbuje coś z tym zdziałać ale słabo idzie i już sam gubię się w tym krótkim kodzie...

Kod: Zaznacz cały


void setup() {
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  void doStepPrawo()
     {
     digitalWrite(9, LOW);       // Ustaw pin Pul na 0V.
     digitalWrite(8, HIGH);  // Ustaw pin Dir zgodnie z wybranym kierunkiem - 0 albo 1
     digitalWrite(9, HIGH);      // Ustaw pin Pul na 5V.
     delay(1);
}


void loop() {
doStepsPrawo(1000,5,1)
{
  for (i = 0; i < 1000; i++)
  {
        doStep(direction);
        delay(msBetweenSteps);
  }
}
     

}

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „NASZE AMATORSKIE MASZYNY CNC”