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 και επιταχυνσιόμετρου.

  • Έλεγχος κίνησης του dc κινητήρα του FLIGHT board μέσω επιταχυνσιόμετρου.

    Σε αυτή την εφαρμογή θα ασχοληθούμε με τον χειρισμό του dc κινητήρα του multi-applications board της FLIGHT electronics. Για να ελέγξουμε τον κινητήρα πρέπει αρχικά να βάλουμε τον διακόπτη SW2 2 στη θέση motor. Τα υπόλοιπα δεν μας επηρεάζουν σε οποιαδήποτε κατάσταση τους. Αφού γίνει αυτό πρέπει να συνδέσουμε το board της STM στα bits 6,7 του port B του FLIGHT. Όταν δεχτεί λογικό “1” σε ένα από τα δύο bits ο κινητήρας θα εκκινήσει δεξιόστροφα αν αυτό είναι το 6ο και αριστερόστροφα αν αυτό είναι το 7ο. Συνδέουμε το 6ο bit με το κόκκινο led του STM και το 7ο με το πράσινο. Θα χρησιμοποιήσουμε το επιταχυνσιόμετρο ώστε όταν αντιληφθεί κίνηση στον χ άξονα να ανάβει ανάλογα την κίνηση το κόκκινο ή το πράσινο led. Όταν στρέψουμε την πλακέτα του STM το επιταχυνσιόμετρο θα αντιληφθεί κίνηση στον χ όταν στραφεί δεξιά με αποτέλεσμα να ανάψει το κόκκινο led και αρχίσει δεξιόστροφη κίνηση στον κινητήρα και στον χ’ όταν στραφεί αριστερά με αποτέλεσμα να ανάψει το πράσινο led και να αλλάξει η φορά περιστροφής ,από δεξιόστροφη αριστερόστροφη. Όταν η πλακέτα είναι σταθερή επιστρέφουμε στην αρχική κατάσταση.

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

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

    /*

    *

    * Keil project gia to LIS302DL h to LIS3DSH accelerometer sto STM32F4-Discovery board

    * *

    * @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

    *

    * Sthn energopoihsh, an to STM32F4-Discovery board exei to accelerometer LIS302DL,

    * ta LED_GREEN kai LED_RED tha anapsoun gia 2 deuterolepta,

    * An exei to accelerometer LIS3DSH ,

    * ta LED_BLUE kai LED_ORANGE tha anapsoun gia 2 deuterolepta.

    * * An anapsoun ola ta led mazi,shmainei pws uparxei kapoio error.

    */

    /* Eisagwgh kuriwn modules */

    #include "stm32f4xx.h"

    /* Eisagwgh biblithikwn */

    #include "defines.h"

    #include "tm_stm32f4_disco.h"

    #include "tm_stm32f4_delay.h"

    #include "tm_stm32f4_lis302dl_lis3dsh.h"

     /* Dedomena gia to Accelerometer */

    TM_LIS302DL_LIS3DSH_t Axes_Data;

     int main(void) {

    /* Energopoihsh susthmatos */

    SystemInit();

    /* Energopoihsh tou delay */

    TM_DELAY_Init();

    /* Energopoihsh twn LEDs */

    TM_DISCO_LedInit();

    /* Entopise thn katallhlh suskeuh */

    if (TM_LIS302DL_LIS3DSH_Detect() == TM_LIS302DL_LIS3DSH_Device_LIS302DL) {

    /* Anapse ta GREEN kai RED */

    TM_DISCO_LedOn(LED_GREEN | LED_RED);

    /* Energopoihse to LIS302DL */

    TM_LIS302DL_LIS3DSH_Init(TM_LIS302DL_Sensitivity_2_3G, TM_LIS302DL_Filter_2Hz);

    } else if (TM_LIS302DL_LIS3DSH_Detect() == TM_LIS302DL_LIS3DSH_Device_LIS3DSH) {

    /* Alliws anapse ta BLUE kai ORANGE */

    TM_DISCO_LedOn(LED_BLUE | LED_ORANGE);

    /* Energopoihse to LIS3DSH */

    TM_LIS302DL_LIS3DSH_Init(TM_LIS3DSH_Sensitivity_2G, TM_LIS3DSH_Filter_800Hz);

    } else {

    /* Alliws,h suskeuh den anagnwrizetai */

    /* Anapse ola ta leds */

    TM_DISCO_LedOn(LED_GREEN | LED_RED | LED_BLUE | LED_ORANGE);

    /* Atermwn broxos */

    while (1);

    }

    /* Delay gia 2 deuterolepta */

    Delayms(2000);

    TM_DISCO_LedOff(LED_ALL);

    while (1) {

    /* Anagnwsh twn dedomenwn stous aksones tou accelerometer */

    TM_LIS302DL_LIS3DSH_ReadAxes(&Axes_Data);

    /* Elegxos tou X aksona.

    An einai pros ta deksia tote tha anavei to kokkino led

    kai to motor tha ekkinei deksiostrofa */

    if (Axes_Data.X > 200) {

    TM_DISCO_LedOn(LED_RED);

    }

    /* Elegxos tou X aksona.

    An einai pros ta aristera tote tha anavei to prasino led

    kai to motor tha ekkinei aristerostrofa */

    if (Axes_Data.X < -200){

    TM_DISCO_LedOn(LED_GREEN);

    }

    /* Otan dn metakinoume to board,ta leds na paremenoun svhsta*/

    TM_DISCO_LedOff(LED_ALL);

    }

    }

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



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

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

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

    Labview File