Proste Sterowanie silnikiem krokowym bez komputera

Rozmowy na temat układów elektronicznych sterowania obrabiarek CNC

Autor tematu
Andrzej G
Nowy użytkownik, używaj wyszukiwarki
Nowy użytkownik, używaj wyszukiwarki
Posty w temacie: 1
Posty: 1
Rejestracja: 12 kwie 2012, 16:49
Lokalizacja: Lubliniec

Proste Sterowanie silnikiem krokowym bez komputera

#1

Post napisał: Andrzej G » 12 kwie 2012, 17:15

Witam , proszę o pomoc w opracowaniu sterownika silnika krokowego do następującej czynności:
Powinien reagować na prosty sygnał typu podanie napięcia lub zwarcie wejścia sterującego.
- mam do dyspozycji wyjścia typu otwarty kolektor.

po otrzymaniu sygnału" start "
silnik krokowy ma zrobić np. 30 kroków i się zatrzymać
po ustaniu sygnału sterującego silnik ma wrócić 30 kroków do pozycji wyjściowej.

wymagania niewielkie ale gotowych rozwiązań nie widziałem

kąt obrotu silnika około 30 stopni nie wymagana precyzja większa niż 5 stopni
prędkość obrotu 30 stopni ok 0,05 sek
W pozycji wyjściowej silnik musi być zasilany - wymagany moment trzymający
w pozycji po obrocie 30 stopni - moment trzymający nie jest wymagany
obciążenie silnika - minimalne


będę bardzo wdzięczny za sugestie w tym temacie - możliwe zlecenie wykonania takich modułów

pozdrawiam

Andrzej - 790 770 020



Tagi:

Awatar użytkownika

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

Re: Proste Sterowanie silnikiem krokowym bez komputera

#2

Post napisał: pitsa » 12 kwie 2012, 18:07

Arduino podpięte do normalnego sterownika silnika krokowego - 4 przewody.
Zasilacz do silnika i zasilacz Arduino.

Mniej więcej coś takiego:
Obrazek
ale bez tak dużej ilości kabli.

Zaprogramowanie tego jest bardzo proste.

Mogę jutro osobiście zaprezentować wraz z ekipą młodych osób. :-)

[ Dodano: 2012-04-13, 21:29 ]
Serdecznie dziękuję, za dwukierunkową możliwość podzielenia się wiedzą. :-)
To było dla młodych ludzi bardzo wartościowe spotkanie, podczas którego mogli się przekonać, że warto robić coś wyjątkowego, łącząc tak wiele różnych umiejętności z wielu dziedzin.
zachowanie spokoju oznacza zdolności do działania
ᐃ 🜂 ⃤ ꕔ △ 𐊅 ∆ ▵ ߡ

Awatar użytkownika

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

Re: Proste Sterowanie silnikiem krokowym bez komputera

#3

Post napisał: pitsa » 08 maja 2018, 19:00

Do sposobów sterowania silnikiem bez komputera mogę dodać esp8266 i arduino - właśnie kręcę dwoma silnikami z jednego ESP-12. ;-)

Przy arduino i accelstepper uzyskuje się impulsy do około 4kHz.
Na ESP-12 mam max 17kHz gdy drugim silnikiem kręcę wolno.
Przy szybkiej pracy dwoma silnikami max użytkowa częstotliwość impulsów to 10kHz.

Reklama: 13,90zł za moduł esp-12e plus do tego konwerter poziomów logicznych za 3,90zł.
zachowanie spokoju oznacza zdolności do działania
ᐃ 🜂 ⃤ ꕔ △ 𐊅 ∆ ▵ ߡ

Awatar użytkownika

markcomp77
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 1
Posty: 3962
Rejestracja: 18 wrz 2004, 12:51
Lokalizacja: k/w-wy
Kontakt:

Re: Proste Sterowanie silnikiem krokowym bez komputera

#4

Post napisał: markcomp77 » 06 sie 2018, 17:41

moduł ESP wygląda super - dzięki Pitsa :)
SpotkanieCNC: STOM-TOOL Marzec 2014
http://www.cnc.info.pl/topics79/spotkan ... t55028.htm

Awatar użytkownika

kwarc
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 1
Posty: 1058
Rejestracja: 06 sty 2007, 18:13
Lokalizacja: Mgławica Andromedy

Re: Proste Sterowanie silnikiem krokowym bez komputera

#5

Post napisał: kwarc » 15 sie 2018, 13:42

ach te arduino , to już niechce siem lutowac plytki? żartuje troche ....

Awatar użytkownika

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

Re: Proste Sterowanie silnikiem krokowym bez komputera

#6

Post napisał: pitsa » 25 sie 2018, 08:01

Prosty kod do sterowania jedną osią i jazdy do dwóch punktów.
Sterowanie: dwa oddzielne przyciski nakazujące ruch.

Kod: Zaznacz cały

#include <AccelStepper.h>
// pobierz i wgraj do libraries stąd:
// http://www.open.com.au/mikem/arduino/AccelStepper/
// pin 7 zwarty do zera ruch w jedną stronę 
// pin 8 zwarty do zera ruch w drugą stronę 
// po 10 sekundach wyłączany silnik krokowy

AccelStepper osX(1, 13, 11);  //   pin 13 - STEP, pin 11 - DIR
long goX = 200;                //   zdefiniowana liczba kroków do wykonania.
boolean lewo = false;  
boolean bylo = false;
    
unsigned long czasn;  // w zmiennej czas będziemy przekazywać aktualną wartość millis()
                                // do ustalania czas od ostatniego zadanego ruchu

void setup() {  
  pinMode(7, INPUT);
  pinMode(8, INPUT);  
  digitalWrite(7,HIGH);    
  digitalWrite(8,HIGH);    
  
  pinMode(13, OUTPUT);  
  pinMode(5, OUTPUT);  
  digitalWrite(5,LOW);    

  osX.setMaxSpeed(4300.0);    // 
  osX.setSpeed(4300.0); 
  osX.setAcceleration(4000.0);  //


// na starcie sterownika jedzie silnik w jedną stronę do pozycji na zderzak mechaniczny.
// później ruch będzie odmierzany od tego zderzaka 
 for ( int i=0 ; i < 360 ; i++ ) {
  osX.runToNewPosition(osX.currentPosition()-1);
  osX.run(); 
  delay(2);
 }
// zamiast zderzaka można pozycjonować krańcówką 
// przykład tutaj: https://www.cnc.info.pl/maszyna-do-punktowania-rur-t94055-40.html#p655149
 
  czasn = millis();

}

void loop(){

// to jest glowne polecenie ruchu - ma być w loop uruchamiane cały czas
// pozostałe rzeczy są na warunkach
  osX.run(); 

// opcja wyłączania silnika na postoju - 10000 = 10 sek i wyłączenie silnika ENA
if ( ( millis() - czasn ) >  10000 ) {
  digitalWrite(13, HIGH);  // dioda na arduino
  digitalWrite(5, HIGH);   // sygnał ENA
}

//jeśli sygnał ruchu i pozycja po przeciwnej stronie to można jechać i zmienić pozycję o goX
if  ( (digitalRead(7) == LOW ) && ( bylo == false ) ) {
  delay(50);
  digitalWrite(5, LOW);  // obudzenie
  delay(50);
  if (digitalRead(7) == LOW ) {
     osX.runToNewPosition(osX.currentPosition()+goX);
     bylo = true ;
     czasn = millis();
  }
}

// i tu ruch w drugą strone
if ( (digitalRead(8) == LOW ) && ( bylo == true ) ) {
  delay(50);
  digitalWrite(5, LOW);  // obudzenie
  delay(50);
  if (digitalRead(8) == LOW ) {
     osX.runToNewPosition(osX.currentPosition()-goX);
     bylo = false ;
     czasn = millis();
  }
}
  
}
zachowanie spokoju oznacza zdolności do działania
ᐃ 🜂 ⃤ ꕔ △ 𐊅 ∆ ▵ ߡ

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „Elektronika CNC”