Libraire pour la controler le module DRV8825
Dependents: AresCDFMainCode_capteur_US AresCDFMainCode_us2 AresCDFMainCode
Diff: DRV8825.cpp
- Revision:
- 8:f461cf45d0b1
- Parent:
- 6:12fa3864b532
--- a/DRV8825.cpp Sun Jul 12 13:19:09 2020 +0000 +++ b/DRV8825.cpp Tue Jul 14 09:30:48 2020 +0000 @@ -10,6 +10,8 @@ m_dir = new DigitalOut(PC_6); m_step = new FastPWM(PC_8); m_step->write(0.50); + m_rayon = 10; + m_pas = 200; m_en->write(STOP); } @@ -24,9 +26,29 @@ m_en = new DigitalOut(en); m_dir = new DigitalOut(dir); m_step = new FastPWM(step); + m_rayon = 100; + m_pas = 200; m_step->write(0.50); m_en->write(STOP); } +/** + * @brief Initialisation du modul avec des paramètres choisis + * @param en : pin En + * @param dir : pin Dir + * @param step : pin Step + * @param r : rayon de la roue (en mm) + * @param pas : nombre de pas + */ +DRV8825::DRV8825(PinName en, PinName dir, PinName step, float r, unsigned int pas){ + m_en = new DigitalOut(en); + m_dir = new DigitalOut(dir); + m_step = new FastPWM(step); + m_rayon = r; + m_pas = pas; + m_step->write(0.50); + m_en->write(STOP); +} + /** * @brief Permet d'affecter une directions à notre module @@ -45,10 +67,25 @@ } /** - * @brief Permet de définir la vitesse du moteur pas à pas - * @param ms : le temps en millis milliseconds + * @brief Permet de définir la vitesse de rotation du moteur pas à pas (RPM) + * @param vitesse : la vitesse que l'on souhaite atteindre */ -void DRV8825::move(unsigned int ms){ - m_step->period_ms(ms); +void DRV8825::moveRotSpeed(float vitesse){ + vitesse= vitesse /M_TO_S; + float t = 1/(m_pas*vitesse); + m_step->period_us(t*E6); m_step->write(0.50); } + + +/** + * @brief Permet de définir la vitesse linéaire du moteur pas à pas (m/s) + * @param vitesse : la vitesse que l'on souhaite atteindre + */ +void DRV8825::moveLinSpeed(float vitesse){ + + vitesse= vitesse*E3; + float t = (2*PI*m_rayon)/(m_pas*vitesse); + m_step->period_us(t*E6); + m_step->write(0.50); +}