Robojuchen / Mechatronics2013

Demo
2 stars 4 forks source link

Kahden askelmoottorin ohjaus #54

Open Mimakas opened 10 years ago

Mimakas commented 10 years ago

Projektissamme askelmoottoreiden pitäisi kääntyä vipukytimellä samanaikaisesti eri suuntiin. Steppereiden perusohjelmalla olemme saaneet askelmoottorit toimimaan eri suuntiin, mutta eriaikaisesti. Olemme vierailleet täällä: http://forum.arduino.cc/index.php?topic=93706.0 ja täällä https://decibel.ni.com/content/message/39175

Näistä ei ollut meidän osaamisellemme apua, sillä emme saaneet koodeja toimimaan. Matin kanssa pohdimme ongelmaa yhden demon, mutta asia ei tunnu etenevän minnekään. Nyt kaivattaisiin vinkkiä, miten pääsisimme eteenpäin.

Robojuchen commented 10 years ago

accelstepper tai customstepper kirjastoilla voi ajaa montaa stepperiä yhtä aikaa mutta luulen että on hyvin helppo ratkaisu.

Jos teille kelpaa että moottorit liikkuvat samalla nopeudella mutta päinvastaisiin suuntiin teette seuraavasti:

Vaihtoehto yksi: Laittakaa samoista arduinon output-pinneistä johdot kahden eri darlington-boardin inputteihin mutta päinvastaisessa järkestyksessä toiseen. Silloin toinen moottori askeltaa päinvastaiseen suuntaan.

Vaihtoehto kaksi: Kytkekää saman darlington-boardin lähtöön kaksi stepperiä mutta toisessa piuhat toiselle päinvastaisessa järjestyksessä. Yksi johdoista on tosin virtajohto ja sen pitää olla sama molemmille.

vemakoj commented 10 years ago

Saimme pienten ongemien kautta askelmoottorit pyörimään ilman kytkintä oikein. Kun ajamme koodin (kytkin mukana) arduinolle, niin moottorit eivät saa edes virtaa. Siis koskematta kytkentään. Ja kun ajamme taas yksinkertaisen koodin pelkille moottoreille, niin ne toimivat taas moitteettomasti.

Kytkimeltä menee kaksi piuhaa eri inputteihin ja yksi piuha 5V. Nämä inputtipiuhat menevät välissä kahdelle 10kohmin vastukselle, joista menee piuha maahan. Onkohan meijän kytkimen kytkentä edes oikein?

Tuleeko kytkin koodiin seuraavasti;

int digitalPin1 = 7 int digitalPin2 = 8

void set up pinMode(7, INPUT); pinMode(8, INPUT);

Serial.begin(9600);

void loop if(7==HIGH)

if(8==HIGH)

?

Robojuchen commented 10 years ago

piirtäkää kuva kytkennästä tai katsokaa mallia jostakin oppaasta arduino switch/ arduino painokytkin tms.

digitaalista inputtia luetaan komennolla digitalRead(digitalPin1)

Esim:

if (digitalRead(digitalPin1) == HIGH) { //jotakin }

Vaihtoehtoisesti voi käyttää suoraan pinnin numeroa: digitalRead(7)Nyt kun olette tallentaneet muuttujaan digitalPin1 numeron 7 ja käytätte muuttujaa koodissa, sille paikalle tulee aina muuttujaan tallennettu numero. Tämä on tärkeää ymmärtää muuttujista.