Arduino home position

Rasprava o AVR mikrokontrolerima, AVR projekti i drugo vezano za AVR...

Moderators: pedja089, stojke369, trax, InTheStillOfTheNight

Post Reply
chuspy
Posts: 15
Joined: 03-10-2009, 17:22

Arduino home position

Post by chuspy »

Jel mi neko slucajno moze pomoc malo sa postavljanjem motora u home polozaj.
koristim a988 driver, kojem je enable spojen na pin 3 arduina, a limit switch na pin 2 i koristim njegov interni pullup. (arduino je nano inace, sa ebay-a).
Trenutni dio koda koji pokusavam upogonit je da se motor vrti dok se ne stisne prekidac, i onda ga zaustavi (zato nemam nista u loopu), tj. pin 3 postane high i tako se iskljuci driver i zasvjetli ledica na pinu 13, a situacija je da se motor trenutno vrti cijelo vrijeme bez obzira na stanje prekidaca.
Kod koji koristim (prema onom sta znam c-a sa faxa je):

Code: Select all

const int dirPin = 7;
const int stepperPin = 6;
const int homepolozaj = 2;
const int paljenjeMotora = 3;
const int ledPin = 13;
byte stanje;

void setup() {
  pinMode(dirPin, OUTPUT); //smjer
  pinMode(stepperPin, OUTPUT);
  pinMode(homepolozaj, INPUT); // limitswitch pin 2
  digitalWrite(homepolozaj, HIGH); // pali interni pullup
  pinMode(paljenjeMotora, OUTPUT); // pali gasi driver pin 3
  pinMode(ledPin, OUTPUT); // ledica
  pocetak();
}

void loop() {
   
}

void pocetak () {
  digitalWrite(dirPin, HIGH);  // promjena smjera
  stanje = digitalRead(homepolozaj);   // cekam prekidac
  while (stanje == HIGH)
  {
    digitalWrite(stepperPin, HIGH);
    delayMicroseconds(40000);
    digitalWrite(stepperPin, LOW);
    delayMicroseconds(40000);
        digitalWrite(ledPin, LOW);
        stanje = digitalRead(homepolozaj);
  }
  digitalWrite(ledPin, HIGH);
  digitalWrite(paljenjeMotora, HIGH); // gasi motor
  
}

User avatar
Kukinjos
Pravi forumaš
Pravi forumaš
Posts: 1724
Joined: 28-03-2012, 18:01
Location: Split

Re: Arduino home position

Post by Kukinjos »

Koliko ovako na brzinu vidim, program bi trebao raditi. Možda je problem u hardveru, mikroprekidaču, žicama spojevima. Konačno možeš iz programa izbaciti sve vezano za motor, i ostaviti samo LED i prekidač, odnosno krajnji kontakt i ispitati radi li kako treba.
Cezare, star sam i nemoćan, ali poslušaj moj savjet ....
User avatar
bob4
Stariji član
Stariji član
Posts: 2572
Joined: 31-01-2010, 16:12
Location: Kutina

Re: Arduino home position

Post by bob4 »

Ja bi progogram stavio unutar loop petlje. Zato da se taj prekidač ispituje stalno, i zatim dalje....ovako daš naredbu motoru i ledici da rade i program ode do kraja. Ako dobro razmišljam uz jutarnju kavu :o
mersadk
Pocetnik na forumu
Pocetnik na forumu
Posts: 25
Joined: 16-11-2011, 22:07

Re: Arduino home position

Post by mersadk »

A da li ti se upali LED kada pritisnueš dugme?

setup() metoda treba da je kratka a sva logika treba da se izvršava u loop() metodi.

Probaj sa ovim kodom:

Code: Select all

const int dirPin = 7;
const int stepperPin = 6;
const int homepolozaj = 2;
const int paljenjeMotora = 3;
const int ledPin = 13;
byte stanje;
bool motorRun = true;

void setup() {
  pinMode(dirPin, OUTPUT); //smjer
  pinMode(stepperPin, OUTPUT);
  pinMode(homepolozaj, INPUT_PULLUP); // limitswitch pin 2
  pinMode(paljenjeMotora, OUTPUT); // pali gasi driver pin 3
  pinMode(ledPin, OUTPUT); // ledica
  
  // Pocetak
  digitalWrite(dirPin, HIGH);  // promjena smjera
}

void loop() {
  stanje = digitalRead(homepolozaj);  // cekam prekidac
  if (stanje == LOW) {
    motorRun = false;
    digitalWrite(ledPin, HIGH);
    digitalWrite(paljenjeMotora, HIGH); // gasi motor
  }
  
  if (motorRun) {
    digitalWrite(stepperPin, HIGH);
    delay(40);
    digitalWrite(stepperPin, LOW);
    delay(40);
  }
}
chuspy
Posts: 15
Joined: 03-10-2009, 17:22

Re: Arduino home position

Post by chuspy »

@ svi
koji su sudjelovali, nasa sam jos onu vecer problem samo nisam stiga javit. Problem je bio u prekidacu koji malo radi malo ne. Sad je zamjenjen s novim i ok je :D

@bob4
malo krivo razmisljanje uz kavu, probaj caj :D
zezam se, ovo je samo postavljanje u pocetni polozaj. Znaci ako nestane struje ili ga neko nasilno ugasi ovo ce mu rec vozi desno dok ne aktiviras prekidac i cekaj.
Sad pisem input sa touchscreena i ono sta program radi, al nemogu ga ganjat 30cm lijevo ako mi je ostalo 5 do kraja. Ovako znam di se nalazi svaki put i koja je udaljenost.

@opet za sve
Jos me jedna stvar zanima. Na motor je spojena navojna sipka m8 za koju znam da mi treba 8 okreta za 1 cm (1.25mm je korak), a za motor znam da je 200 koraka po okretu i onda bi matemtika trebala bit:
30cm = 200 x 8
a ako ga vozim sa 1/16 korakom onda bi trebalo bit
30cm ) 200 x 8 x 16 ili nema veze?
User avatar
Kukinjos
Pravi forumaš
Pravi forumaš
Posts: 1724
Joined: 28-03-2012, 18:01
Location: Split

Re: Arduino home position

Post by Kukinjos »

I nije ti baš neka matematika :)

1,2 mm x 8 krugova = 100 mm
8 krugova x 200 impulsa/krugu = 1600 - full step impulsa za 100 mm
1600 imp/100 mm x 300 mm = 4800 - ful step impulsa za 300mm
ako ga voziš s 1/16 impulsa/stepu onda za 300mm trebaš 4800 x 16 = 76800 impulsa
Cezare, star sam i nemoćan, ali poslušaj moj savjet ....
Post Reply