Loading...

STM32F4G (ARM University Program Lab-in-a-Box)

Το STM32F4G προσφέρθηκε δωρεάν στα πλαίσια του ARM University Program Lab-in-a-Box. Το STM32F4G περιέχει έναν ισχυρό επεξεργαστή arm των 32bit,στατική ram και flash μνήμη. Επίσης έχει τη δυνατότητα σύνδεσης πολλών περιφεριακών.Παρακάτω θα παραθέσουμε μερικές εφαρμογές υλοποιημένες πάνω στον stm32f4 σε συνδυασμό με την πλακέτα της flight electronics.

Παρακάτω παραθέτουμε 6 εφαρμογές που έχουν υλοποιηθεί με τον Stm32f4G και το Flight board.

Η σχεδίαση των εφαρμογών έγινε από τους φοιτητές Μούλιο Γρηγόρη, Μώκο Σωτήρη και Λιάγκο Παντελή σε συνεργασία τον Δρ. Τοπάλη Ευάγγελο.

  • Χειρισμός κίνησης των LEDs με το κουμπί USER του board.
  • Αλλαγή φορά περιστροφής και ταχύτητας των LED με το κουμπί USER.
  • Αλλαγή φοράς και ταχύτητας περιστροφής των LED μέσω του επιταχυνσιόμετρου.
  • Έλεγχος κίνησης του motor του FLIGHT board μέσω του κουμπιού USER του STM.
  • Έλεγχος κίνησης του dc κινητήρα του FLIGHT board μέσω επιταχυνσιόμετρου.
  • Έλεγχος στροφών του dc κινητήρα του FLIGHT board μέσω PWM και επιταχυνσιόμετρου.

  • Αλλαγή φορά περιστροφής και ταχύτητας των LED με το κουμπί USER.

    Σε αυτή την εφαρμογή θα ασχοληθούμε με την αλλαγή συμπεριφοράς των LEDs ανάλογα με τα πατήματα του κουμπιού USER. Τα πατήματα του κουμπιού θα τα θέσουμε σε έναν μετρητή(counter) και ανάλογα με την τιμή του μετρητή αυτού θα αλλάζει η συμπεριφορά των LEDs. Αν ο μετρητής έχει την τιμή 1(counter=1) τότε τα LEDs θα ανάβουν διαδοχικά δεξιόστροφα, ενώ αν αποκτήσει την τιμή 2 θα συνεχίσουν να ανάβουν δεξιόστροφα αλλά θα είναι πιο γρήγορη η διαδοχή τους. Αν πατηθεί τρίτη φορά το κουμπί, άρα ο μετρητής γίνει ίσος με 3, θα αλλάξει η φορά περιστροφής των LEDs. Αν πατηθεί τέταρτη φορά, θα συνεχίσουν με την ίδια φορά περιστροφής αλλά η ταχύτητα της διαδοχής θα γίνει ίση με την αρχική.

    Το flowcharts της εφαρμογής.

    Ο κώδικας στην εφαρμογή του keil θα είναι ο εξής.

    /**

    * Keil project gia LEDS kai BUTTON

    * * Prin ksekinhsete, epilekste to katallhlo target, sta deksia ths epiloghs "Load"

    *

    * @ide Keil uVision 5

    * @packs STM32F4xx Keil packs version 2.2.0 or greater required

    * @stdperiph STM32F4xx Standard peripheral drivers version 1.4.0 or greater required

    */

    /* Eisagwgh twn kuriwn modules */

    #include "stm32f4xx.h"

    /* Eisagwgh twn bibliothikwn */

    #include "defines.h"

    #include "tm_stm32f4_delay.h"

    #include "tm_stm32f4_disco.h"

     int main(void) {

    /* arxikopoihsh tou metrhth */

    int counter=0;

    /* arxikopoihsh tou susthmatos */

    SystemInit();

    /* arxikopoihsh twn leds sto board */

    TM_DISCO_LedInit();

    /* arxikopoihsh tou Delay */

    TM_DELAY_Init ();

    /* arxikopoihsh tou koumpiou User sto board */

    TM_DISCO_ButtonInit();

    while(1) {

    /* an patithei to koumpi aukshse to counter */

    if (TM_DISCO_ButtonPressed())

    counter++;

    /* an to counter=1 deksiostrofh diadoxh led */

    if (counter==1){

    TM_DISCO_LedOn(LED_RED);

    TM_DISCO_LedOff(LED_ORANGE);

    Delayms(500);

    TM_DISCO_LedOn(LED_BLUE);

    TM_DISCO_LedOff(LED_RED);

    Delayms(500);

    TM_DISCO_LedOn(LED_GREEN);

    TM_DISCO_LedOff(LED_BLUE);

    Delayms(500);

    TM_DISCO_LedOn(LED_ORANGE);

    TM_DISCO_LedOff(LED_GREEN);

    Delayms(300);    

    }

    /* an to counter=2 tha ginei pio grhgorh deksiostrofh diadoxh */

    else if (counter==2){

    TM_DISCO_LedOn(LED_RED);

    TM_DISCO_LedOff(LED_ORANGE);

    Delayms(200);

    TM_DISCO_LedOn(LED_BLUE);

    TM_DISCO_LedOff(LED_RED);

    Delayms(200);

    TM_DISCO_LedOn(LED_GREEN);

    TM_DISCO_LedOff(LED_BLUE);

    Delayms(200);

    TM_DISCO_LedOn(LED_ORANGE);

    TM_DISCO_LedOff(LED_GREEN);  

      }

    /* an to counter=3 allagh fora peristrofhs me thn idia taxuthta */

    else if (counter==3){

    TM_DISCO_LedOn(LED_RED);

    TM_DISCO_LedOff(LED_BLUE);

    Delayms(200);

    TM_DISCO_LedOn(LED_ORANGE);

    TM_DISCO_LedOff(LED_RED);

    Delayms(200);

    TM_DISCO_LedOn(LED_GREEN);

    TM_DISCO_LedOff(LED_ORANGE);

    Delayms(200);

    TM_DISCO_LedOn(LED_BLUE);

    TM_DISCO_LedOff(LED_GREEN);  

    }

    /* an to counter=4 aristerostrofh diadoxh me thn arxikh taxuthta */

    else if (counter==4){

    TM_DISCO_LedOn(LED_RED);

    TM_DISCO_LedOff(LED_BLUE);

    Delayms(500);

    TM_DISCO_LedOn(LED_ORANGE);

    TM_DISCO_LedOff(LED_RED);

    Delayms(500);

    TM_DISCO_LedOn(LED_GREEN);

    TM_DISCO_LedOff(LED_ORANGE);

    Delayms(500);

    TM_DISCO_LedOn(LED_BLUE);

    TM_DISCO_LedOff(LED_GREEN);

    Delayms(300);    

    }

    /* alliws ta led paramenoun svhsta */

    else TM_DISCO_LedOff(LED_ALL);

    Delayms(200);  

    }

    }

    Στο βίντεο φαίνεται η λειτουργία της πλακέτας με τον παραπάνω κώδικα.



    Η εικόνα στο πρόγραμμα Labview όπου έχει οπτικοποιηθεί η πλακέτα stm32f4g είναι η εξής.

    Στο πρόγραμμα Labview η εικόνα του block diagramm θα είναι η εξής.

    Υπάρχει και η δυνατότητα λήψης του αρχείου του προγράμματος Labview από τον παρακάτω σύνδεσμο.

    Labview File