RC PWM signaalin konvertointi arduinolla askelmoottoriohjaimen STEP ja DIR signaaliksi

Liittynyt
15.06.2017
Viestejä
31
Pitäisi saada muutettua rc pwm 1-2 ms signaali askelmoottoriohjaimen ymmärtämään muotoon, eli step (askel) ja dir (suunta) signaaleiksi. Siten, että 1000 µs pwm signaali pyörittää askelmoottoria suurimmalla nopeudella vastapäivään ja vastaavasti 2000 µs signaali pyörittäisi askelmoottoria suurimmalla nopeudella myötäpäivään. 1500 µs eli keskikohta pysäyttäisi stepperin. Näillä spekseillä osaisin koodin itsekin vääntää, mutta stepperin nopeuden pitäisi muuttua portaattomasti niin, että esim. 1250 µs pwm signaali pyörittäisi stepperiä puolella nopeudella vastapäivään (suunnat saan tietenkin vaihdettua, mutta näin periaatteessa).

Osaan koodata arduinolle tuon pwm signaalin lukemisen (keskeytyksen kanssa), mutta en keksi millään, miten sen saisi muutettua portaattomaksi stepperin nopeustiedoksi, eli step signaalin taajuudeksi. Suuntasignaali dir onnistuisi minultakin vaikka koodarin peukalo on keskellä kämmentä.

Edit: (poistettu)
 
Viimeksi muokattu:
Kyllä yritin stepperikirjastolla ja ilman, mutta tilasin jo uuden moottorin projektiin. Stepperi ei oikein muutenkaan soveltunut käyttööni ja nyt on tulossa BLDC moottori. Saan ajettua sitä valmiilla RC käyttöön tehdyllä nopeudensäätimellä (ESC). Stepperiä olisi ollut vaikea saada käymään yhtä pehmeästi ja äänettömästi.

Nyt menee vähän ohi keskustelualueen aiheen:
Eli tarkoitus on rakentaa autopilotti veneeseen Raspberry Pi kortilla toimivalla avoimen lähdekoodin Pypilot autopilottisoftalla. Siinä raspiin on yhdistetty arduino sarjaportilla, joka toimii peräsintä kääntävän moottorin ohjaimena. Arduinosta saa ulos PWM signaalin moottorin nopeudensäätimelle ESC:lle. Arduinon lähdekoodi: pypilot/pypilot

Vanha moottori:

Uusi moottori + alennusvaihde:

Kuva peräsintä kääntävästä toimilaitteesta:
IMG_20200617_184034_4.jpg
 
Viimeksi muokattu:
Osaan koodata arduinolle tuon pwm signaalin lukemisen (keskeytyksen kanssa), mutta en keksi millään, miten sen saisi muutettua portaattomaksi stepperin nopeustiedoksi, eli step signaalin taajuudeksi. Suuntasignaali dir onnistuisi minultakin vaikka koodarin peukalo on keskellä kämmentä.

Seuraavaa kertaa varten:
Kun luet rc pwm:n niin saat varmaan tuloksena pulssin pituuden/jonkun laskurin arvon toteutustavasta riippuen. Sen mukaan tiedät myös mikä arvo pitäisi olla keskiasennossa.
Paikan saa kun vähentää luetusta arvosta keskikohtaa vastaavan arvon, etumerkki kertoo kumpaan suuntaan ja abs() kuinka paljon.
Eroarvon mukaan säädetään sitten avr:n timerin taajuutta jolla ohjattaisiin moottorin steppiä.
Arduino- softaa kirjoitettaessa ei saa käyttää timer0 koska arduinoframe käyttää jo sitä. Ja halutuista taajuuksista riippuen pitää ehkä muuttaa matkan varrella timerin jakajaa että tulee siisti taajuuskäyrä.

Käytetyn avr- piirin manuaali ja timer1- kirjaston koodi auttaa.

Olen samaa mieltä että askelmoottori ei ehkä ole tuohon käyttöön paras vaihtoehto.
Toisaalta en myöskään laittaisi rc- käyttöön tarkoitettua nopeudensäädintä mihinkään missä on ihmisiä kyydissä...
 
Kiitos ohjeista! Pitää opiskella lisää

Toisaalta en myöskään laittaisi rc- käyttöön tarkoitettua nopeudensäädintä mihinkään missä on ihmisiä kyydissä...

Sen toimintavarmuudella ei ole turvallisuuden kannalta paljon väliä, koska autopilottia valvotaan tässä käytössä kokoajan ja sen saa ohitettua nopeasti.

oDrive näyttäisi lyhyen tutustumisen jälkeen sopivan avoimen silmukan rc pwm käyttöön
 

Statistiikka

Viestiketjuista
261 700
Viestejä
4 544 584
Jäsenet
74 831
Uusin jäsen
Panasonic

Hinta.fi

Back
Ylös Bottom