Slider do aparatu i kamery

Masz problem z Arduino? Tutaj możesz szukać pomocy.
ST1CZ
Młodszy majsterkowicz
Posty: 25
Rejestracja: 19 sty 2015, 14:24

Re: Slider do aparatu i kamery

Post autor: ST1CZ » 11 lut 2015, 21:17

Próbowałem to ożywić ale niestety pod A4988 nawet nie drgnie.

Rozważam wymianę silnika... tylko na jaki żeby działał pod A4988 lub ULN2803 ?

Co miesiąc do wygrania nagrody o wartości ponad 1600 zł!


zelek93
Majsterkowicz
Posty: 96
Rejestracja: 27 sie 2013, 02:01

Re: Slider do aparatu i kamery

Post autor: zelek93 » 12 lut 2015, 11:50

Osobiście aktualnie posiadam takie do projektu, chodzą na 100% pod A4988.

http://www.akcesoria-cnc.pl/?menu=produkt&id=1038

Aczkolwiek wydaje mi się że coś może być nie tak z Twoim sterownikiem a4988, według mnie powinien ten silnik ruszyć z nim. Spróbuj jeszcze raz podłączyć pod polu, sprawdź czy w trakcie rozruchu silnika czuć opór na osi, zwiększ może napięcie cewki potencjometrem.

EDIT: Zrób zworkę pomiędzy SLEEP a RESET, całkiem możliwe ,że to tego wina... bo na zdjęciu tego połączenia nie widzę
Awatar użytkownika
Michlax
Młodszy majsterkowicz
Posty: 48
Rejestracja: 12 mar 2012, 22:14
Lokalizacja: Częstochowa

Re: Slider do aparatu i kamery

Post autor: Michlax » 14 lut 2015, 19:27

Witam :)
Podepnę się pod ten wątek, zakupiłem sobie sterownik silnika krokowego A4988 - Sterownik silnika krokowego A4988 RepRap 35V 2A Black - moduł Pololu
i mam kilka pytań :)

Podłączyłem wszystko według tego schematu:
Obrazek
+ dodałem zworkę między piny RESET i SLEEP.

Silnik jaki posiadam ma takie parametry:
Obrazek

Płytkę zasilam zasilaczem 12V 2A, Arduino z usb lub 5V 2A.

Zrobiłem test, silnik się kręci tak jak powinien jednak widzę że powinien on pracować pod napięciem 4,5V, płytka ma być zasilana napięciem 8-36V, w celu wyregulowania tego należy posłużyć się potencjometrem, pytanie jak sprawdzić ile ten silnik pobiera i jak ten potencjometr ustawić? Prosił bym o łopatologiczne wytłumaczenie :)

Póki co zrobiłem tylko szybki test bo wydaje mi się że układ bardzo się grzeje. W opisie sklepowym jest napisane że obsługuje prąd do 1,2A bez radiatora. Czy chcąc używać mojego silnika 1,5A muszę taki przykleić?
Mam malutki radiator i "termopad" taki dwustronnie klejący:), po naklejeniu będzie lepiej?

Następna rzecz to zasilanie Arduino, czy mogę po prostu wpiąć to samo zasilanie do sterownika (12V 2A) do pinów Vin i Gnd w Arduino czy musi być osobne? Docelowo ma to wszystko być zasilane akumulatorem, więc było by fajnie jak by można było podłączyć to wspólnie.
zelek93
Majsterkowicz
Posty: 96
Rejestracja: 27 sie 2013, 02:01

Re: Slider do aparatu i kamery

Post autor: zelek93 » 14 lut 2015, 20:02

Prąd ustawia się mierząc napięcie multimetrem pomiędzy GND a Vref. Punkt Vref znajduje się na potencjometrze. Prąd należy obliczyć ze wzoru, który podałem parę wpisów wcześniej (dla Twojego sterownika RS = 0.05). Radiator będzie potrzebny zwłaszcza podczas stałej pracy silnika chyba,że ograniczysz prąd cewki tracąc na mocy silnika Silniki i arduino możesz zasilić tym samym źródłem zasilania bez problemów.
ST1CZ
Młodszy majsterkowicz
Posty: 25
Rejestracja: 19 sty 2015, 14:24

Re: Slider do aparatu i kamery

Post autor: ST1CZ » 11 cze 2015, 18:49

Sesja dobiegła końca :)

Mogę wrócić do projekty.

Wszystkie podzespoły ramy zostały wycięte z aluminium, wyszlifowane i na poniedziałek mają być poadnodowane na kolor grafitowy :)

Zakupiłem też nowe podzespoły:
Sterownik silnika krokowego EasyDriver A3967 30V 0,7A - SparkFun
Silnik krokowy JK42HS40-0504 200 kroków/obr 12V / 0,5A / 0,43Nm

podłączyłem to według schematu:
Obrazek

Załadowałem prosty kod do arduino

Kod: Zaznacz cały

int dirpin = 2;
int steppin = 3;
void setup()
{
  pinMode(dirpin,OUTPUT);
  pinMode(steppin,OUTPUT);
}
void loop()
{
  int i;
  digitalWrite(dirpin,LOW);
  delay(100);

  for(i=0; i<1000; i++)
  {
    digitalWrite(steppin, LOW);
    digitalWrite(steppin, HIGH);
    delayMicroseconds(1000);
  }
  digitalWrite(dirpin, HIGH);
  delay(100);
  for(i=0; i<1000; i++)
  {
    digitalWrite(steppin, LOW);
    digitalWrite(steppin, HIGH);
    delayMicroseconds(1000);
  }
}

I DZIAŁA !!!! Kręci się w lewo i później w prawo i tak cały czas


Chce teraz podpiąć dwa przyciski
ObrazekObrazek

tak aby sterować silnikiem
button1 - po wciśnięciu obraca się w lewo
button2 - po wciśnięciu obraca się w prawo

Mam nadzieję żę teraz pójdzie już z górki :)
ST1CZ
Młodszy majsterkowicz
Posty: 25
Rejestracja: 19 sty 2015, 14:24

Re: Slider do aparatu i kamery

Post autor: ST1CZ » 17 cze 2015, 19:19

Niestety przy próbie podłączenia wyświetlacza coś poszło nie tak i się spalił :)

Zamówiłem wyświetlacz OLED monochromatyczny graficzny 0,96" 128x64 - I2C / SPI i zwykły alfanumeryczny wyświetlacz LCD 4x20. Jutro powinno dojść

dzisiaj zajmuję się składaniem podzespołów

gwintowanie to jednak nie jest tak prosta sprawa jakby mogło się wydawać :)

sądzę że jutro ruszę z mechanizmem.
ST1CZ
Młodszy majsterkowicz
Posty: 25
Rejestracja: 19 sty 2015, 14:24

Re: Slider do aparatu i kamery

Post autor: ST1CZ » 20 cze 2015, 00:10

niestety mały problem ze szlifem i anodą, mam nadzieję że po weekendzie uda się ogarnąć temat.
jutro gwinty i może motor...

Obrazek
Obrazek
ST1CZ
Młodszy majsterkowicz
Posty: 25
Rejestracja: 19 sty 2015, 14:24

Re: Slider do aparatu i kamery

Post autor: ST1CZ » 21 cze 2015, 11:49

Pomoże ktoś z tymi buttonami ?
ST1CZ pisze:Sesja dobiegła końca :)

Mogę wrócić do projekty.

Wszystkie podzespoły ramy zostały wycięte z aluminium, wyszlifowane i na poniedziałek mają być poadnodowane na kolor grafitowy :)

Zakupiłem też nowe podzespoły:
Sterownik silnika krokowego EasyDriver A3967 30V 0,7A - SparkFun
Silnik krokowy JK42HS40-0504 200 kroków/obr 12V / 0,5A / 0,43Nm

podłączyłem to według schematu:
Obrazek

Załadowałem prosty kod do arduino

Kod: Zaznacz cały

int dirpin = 2;
int steppin = 3;
void setup()
{
  pinMode(dirpin,OUTPUT);
  pinMode(steppin,OUTPUT);
}
void loop()
{
  int i;
  digitalWrite(dirpin,LOW);
  delay(100);

  for(i=0; i<1000; i++)
  {
    digitalWrite(steppin, LOW);
    digitalWrite(steppin, HIGH);
    delayMicroseconds(1000);
  }
  digitalWrite(dirpin, HIGH);
  delay(100);
  for(i=0; i<1000; i++)
  {
    digitalWrite(steppin, LOW);
    digitalWrite(steppin, HIGH);
    delayMicroseconds(1000);
  }
}

I DZIAŁA !!!! Kręci się w lewo i później w prawo i tak cały czas


Chce teraz podpiąć dwa przyciski
ObrazekObrazek

tak aby sterować silnikiem
button1 - po wciśnięciu obraca się w lewo
button2 - po wciśnięciu obraca się w prawo

Mam nadzieję żę teraz pójdzie już z górki :)
zelek93
Majsterkowicz
Posty: 96
Rejestracja: 27 sie 2013, 02:01

Re: Slider do aparatu i kamery

Post autor: zelek93 » 21 cze 2015, 22:05

Powiedz mi z czego cięte te elementy i jaka jest ich waga ?
Magic
Młodszy majsterkowicz
Posty: 2
Rejestracja: 23 lis 2015, 22:29

Re: Slider do aparatu i kamery

Post autor: Magic » 23 lis 2015, 22:47

Witam
Podepne sie pod temat.

Buduje slider do GoPro, na szynie ingus + Arduino Uno + LCD Keypad + EasyDriver + NEMA stepper


na poczatku mam ustalony dystans, zeby wozek przemieszczal sie w odpowiedniej odleglosci.



Proste Menu

wybor kierunku lewo,prawo

oraz

predkosc ustalona w procetach

Kod: Zaznacz cały

#include <LiquidCrystal.h>

 LiquidCrystal lcd(8, 9, 4, 5, 6, 7);  

int lcd_key     = 0; //LCD
 int adc_key_in  = 0; //LCD
  
int dir; //stepper
 int steps = 500; //liczba okresla dystans , stepper
  
  int endStep = 1; //konczy proces
   int startSpeed = 100; // liczba okresla poczatek % w predkosci
    long runprogram = 0;
    
#define btnRIGHT 0
 #define btnUP 1
  #define btnDOWN 2
   #define btnLEFT 3
    #define btnSELECT 4
     #define btnNONE 5 //LCD

#define step_pin 3    //pin 3 do pin 3
 #define dir_pin 2     //pin 2 do pin 2
  #define MS1 11        // pin 11 do pin 11 kontrola dystansu
   #define MS2 12        // pin 12 do pin 20 kontrola dystansu
                          // pin enable do grd - stepper
int read_LCD_buttons(){               
    adc_key_in = analogRead(0);       

    if (adc_key_in > 1000) return btnNONE; 
     if (adc_key_in < 50)   return btnRIGHT;  
      if (adc_key_in < 195)  return btnUP; 
       if (adc_key_in < 380)  return btnDOWN; 
        if (adc_key_in < 555)  return btnLEFT; 
         if (adc_key_in < 790)  return btnSELECT; 
          return btnNONE; //LCD
}        
 void setup()
{
  lcd.begin(16, 2); //lcd
   lcd.clear();
    delay(500);
     lcd.setCursor(2, 0);
      lcd.print("GoPro Slider");
       lcd.setCursor(6, 1);
        lcd.print("v 0.1");
         delay(2500);
          lcd.clear();
 
 pinMode(MS1, OUTPUT); // easy driver
  pinMode(MS2, OUTPUT);
   pinMode(dir_pin, OUTPUT);
    pinMode(step_pin, OUTPUT);
     digitalWrite(MS1, LOW);
      digitalWrite(MS2, LOW);          
}
 void loop()
{
 while(steps>=0)
{
 digitalWrite(step_pin, HIGH);
  delay(5);
   digitalWrite(step_pin, LOW);
    delay(5);
     steps--;
}
 lcd.setCursor(3,0);
  lcd.print("DIRECTION");  
   lcd.setCursor(2,1);  
    lcd.print("LEFT / RIGHT");
 
  while(endStep)
{
   lcd_key = read_LCD_buttons(); 
    switch (lcd_key)
{
 case btnRIGHT: 
{ 

 
  lcd.setCursor(1,0);
   lcd.print("CAM RUN RIGHT");
    lcd.setCursor(1,1);
     lcd.print("SEL TO CONFIRM"); 
      break;
}
 case btnLEFT:
{
  
   lcd.setCursor(2,0);
    lcd.print("CAM RUN LEFT");
     lcd.setCursor(1,1);
      lcd.print("SEL TO CONFIRM"); 
       break;
}
 case btnSELECT:
{
 
  endStep = 0;
   delay(250);
    break;
}
 case btnNONE: 
{ 
 break; 
}   
}
}
 lcd.clear();
  endStep = 1;
   lcd.setCursor(0,0);
    lcd.print("SPEED U/D");
     lcd.setCursor(1,1);
      lcd.print("SEL TO CONFIRM");

      while(endStep)
{
  lcd_key = read_LCD_buttons(); 
   
    lcd.setCursor(13,0);
     lcd.print("  %"); 
      lcd.setCursor(1,1);
       lcd.print("SEL TO CONFIRM");
        lcd.setCursor(12,0);
         lcd.print(startSpeed);
        delay(10);
         switch (lcd_key)
{
 case btnUP:
{
 if (startSpeed < 100) // startSpeed jest okreslony u gory (5) a maksymalna liczba jes 100%
{
 startSpeed = startSpeed + 5; // liczba 5 jest liczba co ile % sie zmienia
}
 delay(250);
  break;
}
 case btnDOWN:
{
 if (startSpeed > 5 && startSpeed < 101)
 startSpeed = startSpeed - 5;
}
 case btnSELECT:
{
 endStep = 0;
  delay(250);
   break;
}
 case btnNONE:
{
 break;
}
}
}
}
  
i tu potrzebuje pomocy, nie moge zrozumiec jak mam dopisac code aby stepper sluchal polecenia z Menu

niestety jako nowy uzytkownik nie moge dodac zadnych linkow do zdjec albo video na ktorym bazowalem
Magic
Młodszy majsterkowicz
Posty: 2
Rejestracja: 23 lis 2015, 22:29

Re: Slider do aparatu i kamery

Post autor: Magic » 27 lis 2015, 23:47

Powoli zaczynam rozumiec jak zbudowac kod, ale nie ukrywam zeby pomoc sie przydala.

Bawie sie kodem i uruchomilem silnik po przycisnieciu Lewo/Prawo

Kod: Zaznacz cały

#include <LiquidCrystal.h>

 LiquidCrystal lcd(8, 9, 4, 5, 6, 7);  

int lcd_key     = 0; //LCD
 int adc_key_in  = 0; //LCD
  int dirpin = 3;
   int steppin = 2;
    int endStep = 1;
    
    
#define btnRIGHT 0
 #define btnUP 1
  #define btnDOWN 2
   #define btnLEFT 3
    #define btnSELECT 4
     #define btnNONE 5 //LCD

int read_LCD_buttons(){
    adc_key_in = analogRead(0);       

    if (adc_key_in > 1000) return btnNONE; 
     if (adc_key_in < 50)   return btnRIGHT;  
      if (adc_key_in < 195)  return btnUP; 
       if (adc_key_in < 400)  return btnDOWN; 
        if (adc_key_in < 555)  return btnLEFT; 
         if (adc_key_in < 790)  return btnSELECT; 
          return btnNONE; //LCD
}        
 void setup()
{
  lcd.begin(16, 2);
   lcd.clear();
    delay(500);
     lcd.setCursor(2, 0);
      lcd.print("GoPro Slider");
       lcd.setCursor(6, 1);
        lcd.print("v 0.1");
         delay(2500);
          lcd.clear();

pinMode(dirpin, OUTPUT);
pinMode(steppin, OUTPUT);
}
void loop()
 
{
lcd.setCursor(3,0);
 lcd.print("DIRECTION");  
  lcd.setCursor(2,1);  
   lcd.print("LEFT / RIGHT");
 
  while(endStep)
{
   lcd_key = read_LCD_buttons(); 
    switch (lcd_key)
{
 case btnRIGHT: 
  lcd.setCursor(1,0);
   lcd.print("CAM RUN RIGHT");
    lcd.setCursor(1,1);
     lcd.print("              ");
{
  int i; 
   digitalWrite(dirpin, LOW);     
    delay(100);
     for (i = 0; i<26800; i++)      
      {digitalWrite(steppin, LOW);  
        digitalWrite(steppin, HIGH); 
         delayMicroseconds(125); //125 max predkosc dla mojego silnika               
}
 break;
}
 case btnLEFT:
{
  
   lcd.setCursor(2,0);
    lcd.print("CAM RUN LEFT");
     lcd.setCursor(1,1);
      lcd.print("               "); 
{
  int i; 
   digitalWrite(dirpin, HIGH);     
    delay(100);
     for (i = 0; i<26800; i++)      
      {digitalWrite(steppin, LOW);  
        digitalWrite(steppin, HIGH); 
         delayMicroseconds(125000); //min predkosc mojego silnika              
}
 break;
}
}
 case btnSELECT:
{
 
  endStep = 0;
   delay(250);
    break;
}
  case btnNONE: 
{ 
 break; 
}   }}}
    

  



Ale bym chcial zronbic menu

wybierz kierunek - Lewo/Prawo
poteierdz - Select
wybierz predkosc - 1-20 (powiedzmy aby przeskok 1 stopnia byl x % pomiedzy 125 max predkosc a 125000 min predkosc)
potwierdz - Select

Pozdrawiam
ODPOWIEDZ

Strony partnerskie: