Maszyna do punktowania rur
Połączenie obrotnika z młotkiem pneumatycznym przy pomocy ardruino.
-
- 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
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ć..
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 - 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
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?
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?
-
- 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
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):
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!):
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:
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 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.
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.
}
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);
}
}
Kod: Zaznacz cały
doSteps(1000,5,1);
Chociaż nie wiem, po co ja się produkuję, to samo będziesz pewnie miał już w gotowej bibliotece od arduino 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 - 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
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
-
- 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
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
-
- Specjalista poziom 2 (min. 300)
- Posty w temacie: 11
- Posty: 304
- Rejestracja: 14 sty 2018, 18:27
- Lokalizacja: Cedry Wielkie
-
- Moderator
-
Lider FORUM (min. 2000)
- Posty w temacie: 2
- Posty: 4654
- Rejestracja: 13 wrz 2008, 22:40
- Lokalizacja: PL,OP
Re: Maszyna do punktowania rur
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.
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
ᐃ 🜂 ⃤ ꕔ △ 𐊅 ∆ ▵ ߡ
ᐃ 🜂 ⃤ ꕔ △ 𐊅 ∆ ▵ ߡ
-
- 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
jak testujesz i masz dwa ardino to się przydaje... jedno wyciągasz, drugie wkładasz.. a kable cały czas tak samo zapięte...pitsa pisze:Shieldy są zbędne.
-
Autor tematu - 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
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?
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 - 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
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);
}
}
}