TER Atienza Pongnot 2019 / Mbed 2 deprecated Carte_Moteur_test_asservissement_1M

Dependencies:   mbed 7366_lib TLE5206_lib

main.cpp

Committer:
natienza
Date:
2019-02-12
Revision:
2:486bb9b6bd78
Parent:
0:509b29d50fcb
Child:
3:737ac9c24ca5

File content as of revision 2:486bb9b6bd78:

//Includes
#include "mbed.h"
#include "7366_lib.h"
#include "TLE5206_lib.h"

// Liaison SPI avec les compteurs 
#define SPI_SCLK PA_5 //A4
#define SPI_MISO PA_6 //A5
#define SPI_MOSI PA_7 //A6
#define SPI_CS3 PA_0//A0
#define SPI_CS2 PA_1
#define SPI_CS1 PA_3

// Vers le pont en H
#define H1_IN1 PA_9  //D1 - PWM1/2
#define H1_IN2 PA_10 //D0 - PWM1/3
#define H2_IN1 PA_8  //D9 - PWM1/1
#define H2_IN2 PB_7  //D4 - PWM17/1
#define H3_IN1 PB_6  //D5 - PWM16/1
#define H3_IN2 PA_4  //A3 - PWM3/2

#define DECOUP_HACH 50 //us - 20 000 kHz pour les oreilles
#define PERIODE_AFF 500 //ms
#define PERIODE_ASSERV 50 //ms

Serial pc(USBTX,USBRX);
Timer timer;
DigitalOut myled(LED3);

SPI_7366 compt1(SPI_MOSI, SPI_MISO, SPI_SCLK,SPI_CS1);
SPI_7366 compt2(SPI_MOSI, SPI_MISO, SPI_SCLK,SPI_CS2);
SPI_7366 compt3(SPI_MOSI, SPI_MISO, SPI_SCLK,SPI_CS3);

TLE5206 moteur1(H1_IN1,H1_IN2);
TLE5206 moteur2(H2_IN1,H2_IN2);
TLE5206 moteur3(H3_IN1,H3_IN2);

int main() {

    //setup
    compt1.setup();
    compt2.setup();
    compt3.setup();
    
    moteur1.setup(DECOUP_HACH);
    moteur2.setup(DECOUP_HACH);
    moteur3.setup(DECOUP_HACH);
    
    moteur1.write(-0.4);
    moteur2.write(-0.7);
    moteur3.write(0.7);
    
    timer.start();
    
    //variables
    int32_t position = 0;
    int32_t consigne = (1<<15);
    int32_t erreur = 0;
    float gain = 0.0001;
    uint32_t seuilAffichage = PERIODE_AFF;
    uint32_t seuilAsserv = PERIODE_ASSERV;
    
    // Loop
    while(1) {
        
        if (timer.read_ms() > seuilAffichage){
            position = compt2.read_value();
            seuilAffichage += PERIODE_AFF;
            pc.printf("valeur lue :  %d \n\r", position);
            myled = !myled;
        }
        if (timer.read_ms() > seuilAsserv){
            seuilAsserv += PERIODE_ASSERV;
            erreur = compt2.read_value() - consigne;
            moteur2.write(gain * erreur);
       }
    }
}