Znaleziono 7 wyników

autor: Somnambulik
06 lut 2021, 16:38
Forum: Silniki Krokowe / Sterowniki Silników Krokowych
Temat: Prośba o poradę - kontrola pracy cyklicznej silnika krokowego
Odpowiedzi: 14
Odsłony: 1381

Re: Prośba o poradę - kontrola pracy cyklicznej silnika krokowego

Piszę update, może komuś się przyda w przyszłości, kod napisany. Do kompletu dokupiłem jeszcze Arduino screw shield v3.
Kod napisany, działa, przyciski na keypadzie zmieniają prędkość oraz zatrzymują i startują silniczek. W sumie enkodera nie używam, ale podłączony :) Udało się uniknąć "delay", dzięki temu przyciski na keypadzie zawsze działają (w poprzedniej wersji przy komendzie 'delay' przyciski nie działały w momencie zatrzymania programu

Wklejam kod, może komuś się przyda. Od strony mechanicznej niestety jeszczcze wszystko leży i czeka na ostatnie części


Kod v0.01 :) w przyszłości dodam zapewne parę czujników i elementów, ale to w bliżej nieokreślonej przyszłości. Pozdrawiam

Kod: Zaznacz cały

#include <LiquidCrystal.h> 
#include <Stepper.h>


//create object to control an LCD.  
//number of lines in display=2
LiquidCrystal lcd( 8, 9, 4, 5, 6, 7 ); 

// Define pins
int driverPUL = 12;    // PUL- pin
int driverDIR = 13;    // DIR- pin
int EncoderDT = A1;     // Encoder Output A
int EncoderCLK = A2;     // Encoder Output B
int stopSwitch = A3;  // Push button on encoder

// Define variables
int pause = 3000;     // time for stepper to stop/pause
long previousMillis = 0;        // will store last time LED was updated
long interval = pause; 
bool stepperOn = false;
const int stepsPerRevolution = 1600;  // change this to fit the number of steps per revolution

// Stepper options
Stepper myStepper(stepsPerRevolution, driverPUL, driverDIR); 

//Keypad setup 
int adc_key_val[5] ={30, 150, 360, 535, 760 };
int NUM_KEYS = 5;
int adc_key_in;
int key=-1;
int oldkey=-1;


///////////////////////////SETUP/////////////////////START///////
 
void setup() { 
  pinMode(stopSwitch, INPUT);
  myStepper.setSpeed(300);
//  Serial.begin(9600);

  pinMode (driverPUL, OUTPUT);
  pinMode (driverDIR, OUTPUT);

 //////// LCD SETUP /////// START ///////
  lcd.begin(16, 2);
  lcd.clear();
  lcd.print("Prototype v0.01");
  lcd.setCursor(0, 2);
  lcd.print("Pause:");
  lcd.setCursor(6, 2);
  lcd.print (pause);
   //////// LCD SETUP /////// END ///////
}




///////////////////////////SETUP/////////////////////END///////


///////////////////////////LOOP///////////////////START/////////

void loop() {


  
  ////////////////////STEPPER IN LOOP///////START////
  unsigned long currentMillis = millis(); 
  if(stepperOn && currentMillis - previousMillis > interval)
    {
    previousMillis = currentMillis;  
    myStepper.step(stepsPerRevolution);       
    }
  ////////////////////STEPPER IN LOOP///////END////


  ////////////////////KYPAD IN LOOP///////START////

  adc_key_in = analogRead(0);    // read the value from the sensor  
  key = get_key(adc_key_in);            // convert into key press
  
  if (key != oldkey)            // if keypress is detected
  {
    delayMicroseconds(500);    // TODO wait for debounce time (will propably be interrupting stepper, change to millis or something, not v. important as it's gonna start/stop motor
    adc_key_in = analogRead(0);    // read the value from the sensor  
    key = get_key(adc_key_in);            // convert into key press
    if (key != oldkey)        
    {     
      oldkey = key;
      if (key >=0){
      lcd.setCursor(0, 2);  //line=2, x=0
        if(key == 0)            //if key pressed is RIGHT;
          {               
            Serial.println(key);
            stepperOn = true;
          }
        if(key == 1)            //if key pressed is UP;
          {  
            pause += 100;             
            Serial.println(key);    
          }
        if(key == 2)            //if key pressed is DOWN;
          {               
            Serial.println(key);
            pause -= 100;        
          }
        if(key == 3)            //if key pressed is LEFT;
          {               
            Serial.println(key);
            stepperOn = false;
          }
        if(key == 4)            //if key pressed is SELECT;
          {               
            Serial.println(key);
          }
          Serial.println(pause);
          lcd.setCursor(6, 2);  //line=2, x=6 
          lcd.print (pause); //////TO DO //////////////////Print current pause time in milliseconds   
          interval = pause;
          

      }
    }
  }

    ////////////////////KYPAD IN LOOP///////END////
  
  
}
///////////////////////////LOOP///////////////////END/////////


// Convert ADC value to key number
int get_key(unsigned int input)
{
  int k;
    
  for (k = 0; k < NUM_KEYS; k++)
  {
    if (input < adc_key_val[k])
    {
           
    return k;
        }
  }
    
    if (k >= NUM_KEYS)
        k = -1;     // No valid key pressed
    
    return k;
}


Obrazek
Obrazek
autor: Somnambulik
29 sty 2021, 02:02
Forum: Silniki Krokowe / Sterowniki Silników Krokowych
Temat: Prośba o poradę - kontrola pracy cyklicznej silnika krokowego
Odpowiedzi: 14
Odsłony: 1381

Re: Prośba o poradę - kontrola pracy cyklicznej silnika krokowego

TOP67 pisze:Jeśli silniki nie będą się kręciły bardzo szybko i nie będzie potrzebna rampa, to zaprogramowanie jest dziecinnie łatwe i nie potrzeba żadnych bibliotek poza tą do wyświetlacza.


Nie, raczej powoli wszystko będzie działać, UNO i LCD Shield dotarło - podłączyłem na razie tylko to, później pobawię się i popodłączam do silnika, zainstalowałem IDE, wszystko pięknie działa i jak widzę faktycznie banalnie proste, nie powinno być problemu z rozwinięciem prototypu w przyszłości, już mi przemnkęły potrzebne później czujniki itp. Na razie muszę zająć się całą konstrukcją mechaniczną, samo zaprogramowanie to będzie przyjemność, jeżeli by się udał to podzieliłbym tym co stworzę, na razie nie zapeszam :)

tristar0 pisze:jak będziesz miał problem daj znać zostało mi parę PCB prototypowych i wyświetlaczy no i plytek bazowych no i soft więc mogę zmodyfikować pod twoje potrzeby. Nie jest to Arduino Uno choć wyprowadzenia płyty takie same .

Dziękuję, w razie czego się odezwę

Pozdrawiam serdecznie,
Kamil
autor: Somnambulik
24 sty 2021, 23:39
Forum: Silniki Krokowe / Sterowniki Silników Krokowych
Temat: Prośba o poradę - kontrola pracy cyklicznej silnika krokowego
Odpowiedzi: 14
Odsłony: 1381

Re: Prośba o poradę - kontrola pracy cyklicznej silnika krokowego

TOP67 pisze:Tak. To wystarczy. Shield jest podstawką pod malutkie sterowniki, ale one tego silnika nie uciągną.


Dziękuję za całą pomoc w doborze :)
tuxcnc pisze: a do napisania własnych już trochę więcej wiedzy potrzeba ...

na szczęście jakieś podstawy programowania mam (choć niestety nie z tej branży :P), nie ma to być cudo, to może się uda, wiedza jest rozsiana po całym internecie, może znajdę, gdzieś ukryta w tym całym śmietniku informacji, szczególnie, że kod nie wysyła ludzi na Marsa :) w każdym razie jestem dobrej myśli, a w razie dużych problemów myślę że znajdę cudotwórcę :)

----------------------------------------------------------------------------
nobody is perfect - be nobody
autor: Somnambulik
24 sty 2021, 20:48
Forum: Silniki Krokowe / Sterowniki Silników Krokowych
Temat: Prośba o poradę - kontrola pracy cyklicznej silnika krokowego
Odpowiedzi: 14
Odsłony: 1381

Re: Prośba o poradę - kontrola pracy cyklicznej silnika krokowego

Dobrze, myślę, że udało mi się coś skompletować po poszukiwaniach, czytaniu itp, czy to ma sens? :) troszkę inaczej ale chyba będzie prościej to wszystko połączyć i stworzyć obudowę na to

Byłoby Arduino Uno plus do tego nakładka z wyświetlaczem i guzikami (do zatrzymania, zmiany ustawiania czasu postoju silnika i puszczenia dalej) plus impulsator i trochę złączy ark pod lcd keypad shield, aby łatwo i trwale podłączyć pod sterownik silnika.

https://www.gotronik.pl/zestaw-startowy ... -1597.html
https://www.gotronik.pl/modul-keypad-sh ... -1566.html
https://www.gotronik.pl/impulsator-enko ... -4018.html
https://botland.com.pl/zlacza-ark/9444- ... 10szt.html
https://botland.com.pl/zlacza-ark/9443- ... 10szt.html
plus zasilacz do arduino np 12V i oczywiście do silnika krokowego

i to rozumiem wystarczy to stworzenia cyklu pracy silnika krokowego? W sensie nie potrzeba innych modułów? Widziałem jakieś nakładki (Shield) pod silniki (https://www.gotronik.pl/l298n-motor-shi ... -2834.html) ale skoro już jest sterownik dedykowany do silnika, to nie jest on potrzeby?
autor: Somnambulik
24 sty 2021, 16:11
Forum: Silniki Krokowe / Sterowniki Silników Krokowych
Temat: Prośba o poradę - kontrola pracy cyklicznej silnika krokowego
Odpowiedzi: 14
Odsłony: 1381

Re: Prośba o poradę - kontrola pracy cyklicznej silnika krokowego

TOP67 pisze:Jaki silnik i sterownik do tego chcesz użyć?


myślałem o czymś takim:
https://adroautomatyka.pl/pl/p/Silnik-k ... 7H1402/224
takie cudo ze sterownikiem wbudowanym

tutaj jakiś człowiek łączy z Arduino UNO podobny tj o podobnej mocy silnik, jeszcze nie wiem czym różnią się wersje Arduino, i jakie dokładnie elementy będą musiał zakupić

TOP67 pisze:Ale jak doliczysz obudowę i czas poświęcony na programowanie, to wyjdzie więcej niż te chińskie gotowce.

z chęcią zrobię obudowę, szczególnie, że jakieś kawałki blachy walają mi się tu i tam niewykorzystane, podoba mi się potencjał Arduino i chyba jednak wolę napisać kawałek programu niż męczyć się z manualem do kontrolera

tristar0 pisze:posiadam sterownik takowy

myślę ostatecznie, że Arduino będzie jednak najlepszym rozwiązaniem, w przyszłości mogę do niego dodać parę czujników i ulepszyć pototyp, ma możliwość rozbudowy, a jestem pewien że na prototyp będę narzekać, tj będzie wymagał udoskonaleń i poprawek
autor: Somnambulik
23 sty 2021, 19:59
Forum: Silniki Krokowe / Sterowniki Silników Krokowych
Temat: Prośba o poradę - kontrola pracy cyklicznej silnika krokowego
Odpowiedzi: 14
Odsłony: 1381

Re: Prośba o poradę - kontrola pracy cyklicznej silnika krokowego

Dziękuję za szybką odpowiedź,

w takim razie udaję się na forum Arduino, ale wcześniej trochę postaram się zaznajomić z tematem, dzięki temu będę mógł dodać parę innych funkcjonalności w kolejnych etapach projektu :)
Jak już ktoś pomoże dobrać hardware (widziałem kilka różnych typów Arduino i duużo modułów do tego), to z zaprogramowaniem powinienem sobie poradzić, muszę odkurzyć stare umiejętności :) Mam nadzięję, że uda mi się w miarę szybko to ogarnąć, akurat teraz mam czas przez najbliższe miesiące bez wolnego czasu :(

Pozdrawiam i dziękuję za podpowiedź
Kamil
autor: Somnambulik
22 sty 2021, 22:34
Forum: Silniki Krokowe / Sterowniki Silników Krokowych
Temat: Prośba o poradę - kontrola pracy cyklicznej silnika krokowego
Odpowiedzi: 14
Odsłony: 1381

Prośba o poradę - kontrola pracy cyklicznej silnika krokowego

Witam serdecznie,

mam nadzieję, że dobry dział wybrałem
szukam porady jak i co dobrać pod względem elektroniki do prostej maszyny cnc, którą próbuję skonstruować

Mianowicie:
- w jaki sposób najlepiej uzyskać dany efekt działania pracy cyklicznej silnika krokowego:

1. ruch do przodu o zadaną ilość kroków
2. zatrzymanie silnika na określoną ilość czasu (np 3s) - możliwość szybkiej zmiany czasu - bez lub z podłączeniem do komputera (najlepiej bez)
3. w nieskończoność powtarzanie pkt 1 i 2 - z możliwością zatrzymania i zmodyfikowania 'czasu postoju'


trochę szukam od paru dni rozwiązań, ale naprawdę nie wiem, czy dane rozwiązanie/urządzenie jest właściwe.

np sterownik z lcd - http://pl.aliexpress.com/item/329161699 ... hweb201603_
czy spełni swoje zadanie, czy wystarczy takie cudo plus silnik krokowy (plus zasilanie)?

albo taki sterownik programowalny:
http://pl.aliexpress.com/item/323315557 ... hweb201603_

czy to przerost formy nad treścią?

w trakcie szukania przewijało się też coś takiego jak "Arduino" - czy to też coś, co mogłoby posłużyć za rozwiązanie.

stąd moje pytanie o jakiś rozsądny wybór, co byłoby właściwe?
szukałem także na forum, ale proszę mnie nie linczować, jeżeli jest odpowiedź na podobne pytanie

Z wyrazami szacunku :)
Kamil

Wróć do „Prośba o poradę - kontrola pracy cyklicznej silnika krokowego”