CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE’RIA... · Motor Reductor GHM-03 291 RPM Figura.3.22....

142
TREBALL FINAL DE GRAU MEMÒRIA CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE Universitat Politècnica de Catalunya (UPC) GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA AUTOR: SERGI RECUERO CÓRDOBA DIRECTOR: ANTONI ESCOBET CANAL MAIG 2015

Transcript of CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE’RIA... · Motor Reductor GHM-03 291 RPM Figura.3.22....

TREBALL FINAL DE GRAU

MEMÒRIA

CONTROL DE LA PLATAFORMA

ROBÒTICA ISENSE Universitat Politècnica de Catalunya (UPC)

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

AUTOR: SERGI RECUERO CÓRDOBA

DIRECTOR: ANTONI ESCOBET CANAL

MAIG 2015

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 2 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

RESUM

El següent treball de fi de grau l’ha elaborat en Sergi Recuero Córdoba, un estudiant

d’enginyeria Electrònica Industrial i Automàtica de l’Escola Politècnica Superior d’Enginyeria de

Manresa (EPSEM). El tutor del present treball és l’Antoni Escobet Canal, professor del

Departament. Eng. Disseny i Programació de Sistemes Electrònics.

L’objectiu principal del projecte és la programació i el control de la plataforma robòtica i-sense

des d’un ordinador. Per tal d’arribar aconseguir aquest objectiu primer ens hem hagut de

familiaritzar amb el Kit STM32F4Discovery i amb el seu corresponent MCU. Llavors s’ha escollit

que el programa de disseny del codi sigui el Simulink, ja que disposa d’una elevada velocitat

d’adquisició de dades i ens serà més fàcil arribar a supervisar totes les tasques del robot. La

transmissió de dades entre el robot i l’ordinador es farà a través de la UART de la placa.

L’aplicació desenvolupada ens permet connectar i rebre les dades de l’acceleròmetre, enviar

consignes de velocitat als motors per realitzar diverses trajectòries i rebre dades de velocitat i

posició dels codificadors a temps real.

Inicialment per la realització del projecte final de grau i la memòria tècnica, s’ha planificat un

pla de treball enumerant les diferents tasques a realitzar per assolir l’objectiu principal. Un cop

estudiats els diferents conceptes, s’ha buscat per diversos camins quines eren les millors

opcions per resoldre el problema plantejat. Calia aprendre a programar la placa des de l’entorn

de treball del simulink, així com també el funcionament dels seus perifèrics i dels blocs

necessaris per la transmissió de dades.

Finalment s’ha posat a prova el funcionament del projecte supervisat per un ordinador i ha

estat un èxit, ja que es transmeten les consignes i es reben les dades de posició i velocitat

correctament. Això ha estat important per observar la resposta del sistema i arribar a fer un

disseny teòric d’un controlador pels motors DC.

La present memòria s’entrega juntament amb els programes de l’acceleròmetre i dels motors.

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 3 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

OVERVIEW

This final degree has been developed by Sergi Recuero Córdoba, a student of Electronic and

Automatic Industrial Engineering of the School of Engineering of Manresa (EPSEM). This

project has been tutored by is Antoni Escobet Canal, teacher of the Department. Eng. Design

and Programming Electronic Systems.

The main objective of the project is program and control the i-sense robotic platform from a

computer. To achieve this goal, first of all we had to get familiar with the STM32F4DISCOVERY

Kit and their corresponding MCU. Later we have chosen that the program design of the code is

Simulink, because it has a high speed data acquisition and will be easier to oversee all the tasks

of the robot. Data transmission between the robot and the computer will be through the

UART. The developed application allows us to connect and receive data from the

accelerometer, send reference speed to the motors and receive their speed and position in

real time.

Initially for the project and final project technical report, planned a work plan listing the

various tasks to achieve the main objective. Having stated the different concepts, has sought

various ways what were the best solutions to solve the problem. We had learned to program

the board with the Simulink environment, as well as the operation of peripherals and the

required blocs for data transmission.

Finally we tested the operation of the project overseen by a computer and has been a success,

because the speed references are transmitted and received position and velocity correctly.

This has been important to observe the response of the system and get a theoretical design of

DC motors controller.

This report is delivered along with the programs of the accelerometer and motors.

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 4 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

ÍNDEX

1. INTRODUCCIÓ ........................................................................................................................13

1.1 MOTIUS D’ELECCIÓ DEL TFG .............................................................................................13

1.2 DEFINICIÓ GENERAL DEL PROJECTE ..................................................................................14

1.3 OBJECTIUS ........................................................................................................................14

1.4 CALENDARI DE TREBALL ...................................................................................................14

1.4.1 Fites i tasques ............................................................................................................15

1.5 RECURSOS PROJECTE ........................................................................................................16

1.5.1 Maquinari ..................................................................................................................16

1.5.2 Programari .................................................................................................................16

2. ELS ROBOTS OMNIDIRECCIONALS ..........................................................................................17

2.1 TIPUS DE RODES ...............................................................................................................18

2.1.1 Rodes convencionals .................................................................................................18

2.1.2 Rodes especials .........................................................................................................20

2.2 TIPUS D’ESTRUCTURES .....................................................................................................22

2.2.1 Omnidireccional de tres rodes ..................................................................................22

2.2.2 Omnidireccional de 4 rodes omnidireccionals ...........................................................22

2.2.3 Omnidireccional de quatre rodes omnidireccionals orientables ...............................23

2.2.4 Omnidireccional de quatre rodes Mecanum .............................................................23

3. PLATAFORMA ROBÒTICA ISENSE............................................................................................24

3.1 STM32F4DISCOVERY ........................................................................................................26

3.1.1 Introducció ................................................................................................................26

3.1.2 Característiques .........................................................................................................26

3.1.3 Maquinari i disposició ................................................................................................27

3.1.4 Microcontrolador STM32F407VGT6 ..........................................................................29

3.1.5 ST-LINK/V2 .................................................................................................................45

3.2 EVAL6207N .......................................................................................................................47

3.2.1 Components ..............................................................................................................47

3.2.3 Consideracions ..........................................................................................................49

3.3 STEVAL-ISA101V1 .............................................................................................................50

3.3.1 Característiques .........................................................................................................50

3.3.2 Descripció ..................................................................................................................50

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 5 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

3.4 RODA OMNIDIRECCIONAL 4" ...........................................................................................51

3.5 MOTOR REDUCTOR GHM-03 7.2VDC 30:1 291 RPM ........................................................52

3.5.1 Especificacions...........................................................................................................52

3.5.2 Corba de potència .....................................................................................................52

3.5.3 Dimensions ................................................................................................................52

3.6 CODIFICADOR QUADRATURA EASY ROLLER 300 CPR .......................................................53

3.6.1 Descripció ..................................................................................................................53

3.6.3 Components ..............................................................................................................53

3.6.4 Especificacions elèctriques ........................................................................................54

3.6.5 Especificacions mecàniques ......................................................................................54

3.6.6 Connexions elèctriques .............................................................................................54

3.6.7 Instruccions de muntatge ..........................................................................................55

3.6.8 Funcionament ...........................................................................................................56

3.7 BATERIA SLA 12V 1.2AH ...................................................................................................59

4. INTRODUCCIÓ A MATLAB I SIMULINK ....................................................................................60

4.1 MATLAB ............................................................................................................................60

4.2 SIMULINK .........................................................................................................................63

4.2.1 Característiques bàsiques ..........................................................................................63

4.2.2 Com arrencar Simulink ..............................................................................................63

4.2.3 Llibreria Simulink .......................................................................................................64

4.2.4 Waijung Blockset .......................................................................................................64

4.2.5 Exemple bàsic ............................................................................................................67

5. aMG USB CONVERTER ............................................................................................................72

5.1. DESCRIPCIÓ .....................................................................................................................72

5.2. APLICACIONS ...................................................................................................................72

5.3. EXEMPLES D’APLICACIONS: .............................................................................................72

5.4. BLOC DE SUPORT AMB MATLAB/SIMULINK ....................................................................74

5.5 INSTAL·LACIÓ DEL CONTROLADOR USB PER AL XIP FTDI ..................................................75

5.6 CONFIGURACIÓ DEL DISPOSITIU PER I2C, SPI, UART I GPIO .............................................77

6. COMUNICACIÓ VIA UART .......................................................................................................80

6.1. UART SETUP ....................................................................................................................80

6.1.1 Què hi podem configurar? .........................................................................................80

6.1.2 Quan utilitzarem aquest bloc?...................................................................................82

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 6 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

6.1.3 Com funciona aquest bloc? .......................................................................................82

6.2. UART Rx ...........................................................................................................................83

6.2.1 Rebre paquet binari ...................................................................................................84

6.2.2 Rebre paquet Ascii .....................................................................................................86

6.2.3 Rebre paquet ascii/string buffer ................................................................................88

6.2.4 Quan utilitzarem aquest bloc?...................................................................................89

6.2.5 Com funciona aquest bloc? .......................................................................................89

6.3. UART Tx ...........................................................................................................................89

6.3.1 Transmetre un paquet binari .....................................................................................90

6.3.2 Transmetre un paquet ascii .......................................................................................92

6.3.3 Transmetre paquet ascii/string buffer .......................................................................93

6.3.4 Quan utilitzarem aquest bloc?...................................................................................95

6.3.5 Com funciona aquest bloc? .......................................................................................95

6.4. EXEMPLE BÀSIC UART ......................................................................................................95

6.4.1 Model Target .............................................................................................................96

6.4.2 Model Host ................................................................................................................96

6.4.3 Connexions ................................................................................................................97

7. ACCELERÒMETRE ...................................................................................................................98

7.1 INTRODUCCIÓ ..................................................................................................................98

7.2 DIAGRAMA DE BLOCS I DESCRIPCIÓ DELS PINS ................................................................98

7.3 MODES D’OPERACIÓ ........................................................................................................99

7.4 SERIAL PERIPHERAL INTERFACE (SPI) ................................................................................99

7.5 SPI MATLAB/SIMULINK ...................................................................................................105

7.5.1 “SPI Master Setup“ ..................................................................................................105

7.5.2 “SPI Master Read/Write“ .........................................................................................108

7.6 REGISTRE DE CONTROL 4 (CTRL_REG4 20h) ...................................................................109

7.7 REGISTRE DE CONTROL 6 (CTRL_REG6 25h) ...................................................................109

7.8 PROGRAMA ....................................................................................................................110

7.8.1 Acceleròmetre Target ..............................................................................................110

7.8.1 Acceleròmetre Host .................................................................................................114

8. MOTORS ...............................................................................................................................116

8.1 CONNEXIÓ DELS MOTORS ..............................................................................................116

8.1.1 Distribució de pins ...................................................................................................116

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 7 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

8.1.2 Codificadors .............................................................................................................116

8.1.3 Justificació de les connexions ..................................................................................116

8.1.4 Funcions dels pins seleccionats ...............................................................................116

8.2 BLOC PWM .....................................................................................................................117

8.2.1 Què hi podem configurar? .......................................................................................118

8.2.2 Utilització.................................................................................................................118

8.2.3 Funcionament .........................................................................................................119

8.3 BLOC DE LECTURA DELS CODIFICADORS ........................................................................120

8.3.1 Què hi podem configurar? .......................................................................................121

8.3.2 Utilització.................................................................................................................121

8.3.3 Exemple ...................................................................................................................122

8.4 PROGRAMA ....................................................................................................................124

8.4.1 Motors Target ..........................................................................................................124

8.4.2 Motors Host ............................................................................................................126

8.5 RESULTATS .....................................................................................................................131

8.6 ESTUDI PWM ..................................................................................................................133

9. DISSENY DEL CONTROLADOR DE VELOCITAT EN UN MOTOR DC .........................................136

10. CONCLUSIONS ....................................................................................................................141

11. BIBLIOGRAFIA .....................................................................................................................141

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 8 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

ÍNDEX DE FIGURES I TAULES

1. Introducció

Taula.1.1. Calendari de treball

2. Els robots omnidireccionals

Figura.2.1. Estructura robot omnidireccional de tres rodes

Figura.2.2. Muntacàrregues omnidireccional

Figura.2.3. Tipus de rodes convencionals

Figura.2.4. Possibles configuracions de rodes convencionals

Figura.2.5. Descomposició de les velocitats en cada tipus de roda

Figura.2.6. Rodes universals. (a) Roda simple, (b) Roda doble, (c) Roda alternada

Figura.2.7. Roda omnidireccional del tipus Mecanum i descomposició de la força que fa el

motor sobre la roda

Figura.2.8. Roda en forma esfèrica

Figura.2.9. Estructura del robot omnidireccional de 3 rodes

Figura.2.10. Estructura del robot omnidireccional de 4 rodes

Figura.2.11. Estructura del robot omnidireccional de 4 rodes orientables

Figura.2.12. Estructura del robot omnidireccional de 4 rodes Mecanum (Omni-2)

3. Plataforma Robòtica iSense

Figura.3.1. Localització Parts electròniques de la plataforma robòtica iSense

Figura.3.2. Localització Parts mecàniques de la plataforma Robòtia iSense

Figura.3.3. Placa STM32F4Discovery

Figura.3.4. Diagrama de blocs del maquinari

Figura.3.5. Disposició superior de la placa STM32F4

Figura.3.6. Disposició de fons de la placa STM32F4

Figura.3.7. MCU STM32F407VGT6

Figura.3.8. Diagrama de blocs de l’STM32F407VGT6

Figura.3.9. Interfície de l’STM32CubeMX

Figura.3.10. Selecció del nostre MCU en el programa STM32CubeMX

Figura.3.11. Pinout del MCU STM32407VGT6

Figura.3.12. Funció que ens genera un codi C d’inicialització amb l’STM32CubeMx

Figura.3.13. Configuració típica de l’STM32F4DISCOVERY

Figura.3.14. Connexions STM32F4DISCOVERY

Figura.3.15. Connexions ST-Link

Figura.3.16. EVAL6207N

Figura.3.17. Obtenció d’un voltatge variable a través de la sortida PWM d’un MCU

Figura.3.18. Localització components EVAL6207N

Figura.3.19. STEVAL-ISA101V1

Figura.3.20. Roda omnidireccional 4"

Figura.3.21. Motor Reductor GHM-03 291 RPM

Figura.3.22. Corba potència motor reductor

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 9 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Figura.3.23. Dimensions motor reductor

Figura.3.24. ENC300 KIT

Figura.3.25. ENC300 acoblat al motor

Figura.3.26. Col·locació de la base del codificador

Figura.3.27. Col·locació del disc codificador 300 CPR

Figura 3.28. Components d’un codificador òptic

Figura.3.29. Senyals A i B d’un codificador en quadratura

Figura.3.30. Model simplificat d’un comptador

Figura.3.31. Pins d’un codificador incremental

Figura.3.32. Codificació X1

Figura.3.33. Codificació X2

Figura.3.34. Codificació X4

Figura.3.35. Bateria adjunta a la base del robot

Taula.3.1. Parts electròniques del robot

Taula.3.2. Parts mecàniques del robot

Taula.3.3. Descripció dels pins del MCU vs les funcions a la placa

Taula.3.4. Estats dels ponts

Taula.3.5. Connector CN2 (SWD)

Taula.3.6. Components EVAL6207N

Taula.3.7. Especificacions roda omnidireccional 4"

Taula.3.8. Especificacions Motor Reductor

Taula.3.9. Components del KIT ENC300

Taula.3.10. Especificacions elèctriques del codificador

Taula.3.11. Especificacions mecàniques del codificador

Taula.3.12. Especificacions bateria 12V

4. Introducció a Matlab i Simulink

Figura.4.1. Organització finestres Matlab

Figura.4.2. Exemple funció plot Matlab

Figura.4.3. Començar un projecte simulink

Figura.4.4. Llibreria de simulink

Figura.4.5. Descàrrega del paquet de waijung

Figura.4.6. Arxius descàrrega de waijung

Figura.4.7. Codi instal·lació waijung

Figura.4.8. Estat instal·lació correcta waijung

Figura.4.9. Llibreria waijung blockset

Figura.4.10. Model exemple control LEDs

Figura.4.11. Connexions dels blocs

Figura.4.12. Compilació i transmissió del programa a la placa

Figura.4.13. Pas 1 (LED3)

Figura.4.14. Pas 2 (LED5)

Figura.4.15. Pas 3 (LED6)

Figura.4.16. Pas 4 (LED4)

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 10 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Taula.4.1. Emmagatzemar arxius Matlab

Taula.4.2. Carregar arxius Matlab

Taula.4.3. Pins LEDs STM32F4

5. aMG usb converter

Figura.5.1. aMG USB Converter N

Figura.5.2. Comunicació entre un PC i dos dispositius SPI/I2C/UART

Figura.5.3. Comunicació entre un PC i un dispositiu SPI/I2C/UART amb 8 Pins GPIO

Figura.5.4. Comunicació entre un PC i la placa FiO a través de l’SPI

Figura.5.5. Blocs de suport del convertidor amb Simulink

Figura.5.6. Visualització dels ports (COM & LPT)

Figura.5.7. Activació del VCP

Figura.5.8. Accés a les propietats del port sèrie USB

Figura.5.9. Fixació del temps de latència

Figura.5.10. Configuració dels canals del dispositiu aMG USB Converter – N

Figura.5.11. Configuració per I2C

Figura.5.12. Configuració per SPI

Figura.5.13. Configuració per UART

Figura.5.14. Configuració per GPIO

Taula.5.1. Descripció dels blocs disponibles a la llibreria del convertidor

6. Comunicació via UART

Figura.6.1. UART setup

Figura.6.2. Configuració bloc UART Setup

Figura.6.3. UART Rx amb bloqueig

Figura.6.4. UART Rx sense bloqueig

Figura.6.5. Configuració bloc UART Rx rebent paquet ascii

Figura.6.6. Configuració bloc UART Rx rebent paquet ascii/string buffer

Figura.6.7. UART Tx

Figura.6.8. Configuració bloc UART Tx enviant paquet binari

Figura.6.9. Configuració bloc UART Tx enviant paquet ascii

Figura.6.10. Configuració bloc UART Tx enviant paquet ascii/string buffer

Figura.6.11. Programa Target UART

Figura.6.12. Programa Host UART

Figura.6.13. Connexions UART-Convertidor

Taula.6.1. Opcions de configuració del bloc UART setup

Taula.6.2. Opcions de configuració del bloc UART Rx amb paquet binari

Taula.6.3. Opcions de configuració del bloc UART Rx amb paquet ascii

Taula.6.4. Opcions de configuració del bloc UART Rx amb paquet ascii/string buffer

Taula.6.5. Opcions de configuració del bloc UART Tx amb paquet binari

Taula.6.6. Opcions de configuració del bloc UART Tx amb paquet ascii

Taula.6.7. Opcions de configuració del bloc UART Tx amb paquet ascii/string buffer

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 11 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

7. Acceleròmetre

Figura.7.2. Descripció PINS LIS3DSH

Figura.7.1. Diagrama de blocs LIS3DSH

Figura.7.3. Estructura d’una comunicació SPI

Figura.7.4. Senyals polaritat rellotge baixa sense retard

Figura.7.5. Senyals polaritat rellotge baixa amb retard

Figura.7.6. Senyals polaritat rellotge alta sense retard

Figura.7.7. Senyals polaritat rellotge alta amb retard

Figura.7.8. SPI Lectura i Escriptura

Figura.7.9. SPI Escriptura

Figura.7.10. SPI Escriptura bytes múltiples

Figura.7.11. SPI Lectura

Figura.7.12. SPI Lectura bytes múltiples

Figura.7.13. SPI Master Setup

Figura.7.14. Configuració bloc SPI Master Setup

Figura.7.15. SPI Master Read/Write

Figura.7.16. Configuració bloc SPI Master Read/Write

Figura.7.17. Acceleròmetre Target

Figura.7.18. Inicialització LIS302DL

Figura.7.19. Escriptura sobre el registre de control 4

Figura.7.20. Escriptura sobre el registre de control 6

Figura.7.21. Configuració dels Pins SPI

Figura.7.22. Lectura LIS302DL

Figura.7.23. Acceleròmetre Host

Figura.7.24. Posicions eixos (A), (B) i (C)

Figura.7.25. Gràfics eixos x,y i z

Taula.7.1. Selecció modes d’operació

Taula.7.2. Opcions de configuració del bloc SPI Master Setup

Taula.7.3. Opcions de configuració del bloc SPI Master Read/Write

Taula.7.4. Bits del registre de control 4

Taula.7.5. Descripció del registre de control 4

Taula.7.6. Bits del registre de control 6

Taula.7.7. Descripció del registre de control 6

8. Motors

Figura.8.1. Bloc PWM

Figura.8.2. Configuració bloc PWM

Figura.8.3. Bloc “Encoder Read”

Figura.8.4. Configuració bloc “Encoder Read”

Figura.8.5. Model “Target” exemple

Figura.8.6. Model “Host” exemple

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 12 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Figura.8.7. Connexions necessàries en l’exemple

Figura.8.8. PWM i direcció Target Motors

Figura.8.9. Funció control velocitat

Figura.8.10. Codificadors Target Motors

Figura.8.11. Configuració i consignes vel. Host

Figura.8.12. Host motor 1

Figura.8.13. Host motor 2

Figura.8.14. Host motor 3

Figura.8.15. Host motor 4

Figura.8.16. Funció càlcul velocitat

Figura.8.17. Funció conversió PPR a RPM

Figura.8.18. Funció posició absoluta codificadors

Figura.8.19. Gràfiques PWM, velocitat i posició a 100 Hz

Figura.8.20. Gràfiques PWM, velocitat i posició a 1 kHz

Figura.8.21. Vout amb període PWM 0.02 segons

Figura.8.22. Velocitat amb període PWM 0.02 segons

Figura.8.23. Vout amb període PWM 0.005 segons

Figura.8.24. Velocitat amb període PWM 0.005 segons

Figura.8.25. Vout amb període PWM 0.002 segons

Figura.8.26. Velocitat amb període PWM 0.002 segons

Taula.8.1. Distribució dels pins dels motors

Taula.8.2. Distribució dels pins dels codificadors

Taula.8.3. Funcions pins de PWM

Taula.8.4. Funcions pins de direcció del motor

Taula.8.5. Funcions pins dels codificadors

Taula.8.6. Relació entre els temporitzadors i els canal de PWM

9. Disseny del controlador de velocitat en un motor DC

Figura.9.1. Model Target

Figura.9.2. Model Host

Figura.9.3. Entrada Graó del sistema

Figura.9.4. Resposta al graó en llaç obert

Figura.9.5. Entrada graó i resposta del motor

Figura.9.6. Paràmetres del mètode de Ziegler-Nichols

Figura.9.7. Càlcul dels paràmetres en el mètode de Ziegler-Nichols

Figura.9.8. Formules del mètode de Ziegler-Nichols

Figura.9.9. Paràmetres del controlador

Figura.9.10. Esquema del control d’un motor DC en llaç tancat

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 13 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

1. INTRODUCCIÓ

La paraula robot va ser utilitzada per primera vegada a l’any 1921 per l’escriptor txec Karel

Capek, quan estrenava al teatre nacional de Praga la seva obra Rossum’s Universal Robot

(R.U.R). El seu origen prové de la paraula eslava robota, que es refereix al treball realitzat de

manera forçada.

Els experts asseguren que els robots són difícils de definir i que es realment complicat donar

una definició universalment acceptada, és per això, que a continuació en resumeixo algunes de

les més rellevants:

Màquina controlada per un ordinador i programada per moure’s, manipular objectes i

realitzar treballs de manera autònoma al mateix temps que interacciona amb el seu

entorn.

Enginy mecànic controlat electrònicament, capaç de moure’s i executar de forma

automàtica accions diverses, tot seguint un programa establert.

Un robot es un agent artificial, mecànic o virtual.

El projecte està enfocat a realitzar el control d’un robot mòbil omnidireccional, desenvolupat

per STMicroelectronics, a través d’un ordinador o un dispositiu mòbil.

Aquest tipus de robots són cada vegada més populars degut a la seva gran mobilitat, fet que

els permet aconseguir una agilitat superior per moure’s fins a qualsevol posició i assolir

simultàniament qualsevol orientació desitjada.

Aquesta condició d’omnidireccional es deu a que la disposició de les rodes ofereixen al robot

tres graus de llibertat en el pla. Així un vehicle omnidireccional es capaç de poder executar

moviments en qualsevol de les tres direccions, i és a partir d’aquí que sorgeixen una gran

quantitat d’aplicacions per aquests robots en àmbits industrials, acadèmics, etc.

1.1 MOTIUS D’ELECCIÓ DEL TFG

El motiu per el qual vaig escollir aquest tema del treball de final de grau ha estat degut el meu

interès cap als robots i cap al control de processos automatitzats de tot tipus. Aquestes

aficions ja em venien des de petit però s’han vist augmentades durant aquests quatre anys de

carrera. A part d’aquest interès més personal també m’interessava gaudir d’una experiència

més pràctica dels coneixements adquirits al llarg de la carrera, ja que durant aquests mesos de

treball en el projecte m’han permès adquirir molts coneixements en l’àmbit del control de

robots.

També trobava molt interessant el tema perquè es pot adaptar perfectament a molts sistemes

industrials i quotidians, ja que penso que en un futur proper, la majoria de processos estaran

governats per robots.

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 14 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

1.2 DEFINICIÓ GENERAL DEL PROJECTE

El projecte es centrarà en el control de la plataforma robòtica i-Sense, que es troba dins el

projecte complert d’un robot mòbil omnidireccional, desenvolupada per STMicroelectronics en

el marc del projecte europeu i-Sense. Es vol fer la programació del kit STM32F407 per poder

arribar a controlar el robot des d’un ordinador.

1.3 OBJECTIUS

L’objectiu principal del projecte és la creació d’un programa amb MATLAB per tal de

programar i supervisar les tasques desenvolupades pel robot i-Sense. A part d’aquest objectiu

principal s’hauran de tenir en compte una sèrie d’objectius secundaris que són els següents:

Estudi del kit STM32F407

Estudi del Microcontrolador STM32F407VGT6 (Funcions dels pins i característiques)

Creació dels programes amb Matlab Simulink i detecció de la targeta.

Programa Acceleròmetre

Comunicació placa – ordinador (PC) a través de la UART

Programa control motors i encoders

Escrit de la memòria tècnica

Revisió i millora de la memòria tècnica

Entrega del treball de final de grau

1.4 CALENDARI DE TREBALL

Fita Data finalització

Hores dedicades

Recerca d’informació 15/09/14 60

Estudi del kit STM32F407 i aprenentatge de funcionament del software i firmware per desenvolupar una aplicació a la placa

1/10/14 45

Estudi del MCU STM32F407VGT6. Funcions pins i característiques

15/10/14 30

Instal·lació Matlab i començar a desenvolupar els primers programes amb la targeta del kit

22/10/14 30

Definir comunicació placa – PC a través de la UART amb un convertidor

25/11/14 10

Programa de comunicació amb l’acceleròmetre de 3 eixos LIS302DL

15/01/15 70

Programació,control i supervisió dels quatre motors i encoders

08/04/15 150

Escrit de la memòria tècnica 10/05/15 200

Revisió i millora de la memòria tècnica 14/05/15 20

Entrega del treball final de grau 15/05/15 2 Taula.1.1. Calendari de treball

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 15 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

1.4.1 Fites i tasques

Tal i com podem observar en l’apartat anterior (taula 1) el treball s’ha desglossat en 10 tasques

diferents. A continuació és detallarà en què consisteix cada una d’elles.

En el primer apartat de recerca d’informació s’ha fet una recerca en pàgines web i alguns

llibres sobre sistemes de control construïts amb la placa STM32F407. Hem vist que hi havia

diversos programes de treball, una opció era treballar amb el programari lliure uvision5

proporcionat per KEIL amb codi C+, i l’altre era treballar amb un programa de pagament com

és el MATLAB. S’ha arribat a la conclusió que el més pràctic i que ens anava millor per assolir

els objectius, és el MATLAB amb l’ajuda del Simulink.

La segona fita consisteix en realitzar un estudi del kit STM32F407. Això es tradueix en aprendre

les seves característiques, el seu funcionament, la localització de tots els seus components, els

requisits mínims per desenvolupar qualsevol aplicació a la placa. Per realitzar això es va accedir

als manuals proporcionats pel fabricant ST.

Un cop ja hem après el funcionament de la placa, la següent fita, és centrar-nos en l’estudi del

microcontrolador STM32F407VGT6. Necessitem saber les funcions de cada pin i tenir-les

resumides en una taula. Aquesta serà una de les tasques més importants tal i com veurem en

els apartats següents.

La següent tasca és la instal·lació del programa MATLAB R2013 a l’ordinador i llavors també

instal·larem la targeta que ens proporciona l’empresa Aimagin, per treballar amb la nostra

placa des del simulink. Dins d’aquesta targeta hi ha tots els blocs necessaris per a les

comunicacions, configurar qualsevol perifèric de la placa i també hi ha l’opció d’acoblar-hi

diferents mòduls.

Un cop finalitzada la fita anterior, és desenvoluparà la comunicació entre el robot i l’ordinador.

Per dur a terme aquesta fita s’ha utilitzat la UART disponible a la placa i també ha sigut

necessari un mòdul convertidor de USB a UART amb velocitat de transmissió d’alta velocitat.

Aquesta tasca és una de les més importants ja que es necessita varis paràmetres de

configuració per poder comunicar ambdós dispositius la placa i el PC.

Una vegada assolida la fita de comunicació entre el robot i el PC, ja es poden desenvolupar els

programaris de l’acceleròmetre i els motors. El programa de l’acceleròmetre ens permetrà

tenir una comunicació amb ell, rebre les dades de l’acceleració en els tres eixos X,Y i Z i

actualitzar-les quan es produeixi algun canvi.

En el programa de control dels motors, nosaltres donarem una consigna de velocitat i direcció,

i rebrem dels codificadors la seva posició i velocitat en cada instant. A partir d’aquí

s’implementarà un controlador que ens permetrà mantenir constant la velocitat.

Al finalitzar la part pràctica s’ha de fer una memòria tècnica del projecte on quedaran reflectits

els càlculs, tota la informació, les dades i els programes creats.

Per últim només quedarà la correcció i millora de la memòria per a elaborar un bon projecte.

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 16 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

1.5 RECURSOS PROJECTE

Per a dur a terme el treball final de grau s’ha necessitat de diversos equips, instruments i

programes. A continuació es detallen:

1.5.1 Maquinari

Els dispositius i maquinari necessaris per la elaboració del projecte són:

ROBOT ISENSE: Robot omnidireccional sobre el qual farem el control. Concretament el

que s’utilitzarà en aquest projecte ha estat fabricat per treballadors del departament

d’Enginyeria de Disseny i Programació de Sistemes Electrònics de l’Escola Politècnica

Superior d’Enginyeria de Manresa.

KIT STM32F4-DISCOVERY: Placa sobre la qual es realitza la programació del robot i que

s’encarregarà de tot el control.

Convertidor aMG USB CONVERTER: Dispositiu necessari per poder tenir una

comunicació entre el robot i el PC. És d’alta velocitat i ens permet la comunicació entre

un PC i fins a dos dispositius SPI/I2C/UART.

PC amb windows (2000, XP, Vista, 7): Necessitem d’un ordinador per transferir els

programes a la placa i també per poder rebre, enviar i visualitzar les dades del robot.

Cable USB A to Mini-B: S’utilitza per alimentar la placa (a través del connector USB

CN1) des del PC i permet que ens connectem a l’ST-LINK/V2 per a la depuració i

programació.

Cable USB A to Micro-B: S’utilitza per connectar la placa (a través del connector USB

CN5) com a dispositiu USB del PC amfitrió.

1.5.2 Programari

Els programes necessaris per a la elaboració del projecte són:

MATLAB: Aquest programa servirà, mitjançant la seva eina Simulink, per desenvolupar

els programes de control del robot i fer una representació de les dades rebudes.

STM32CubeMX: Aquest programa servirà per veure la configuració dels pins del MCU.

STM32 ST-LINK Utility: Aquest programa servirà per transmetre els programes a la

placa.

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 17 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

2. ELS ROBOTS OMNIDIRECCIONALS

L’ús dels robots de forma quotidiana ha anat avançant molt ràpidament en els últims anys. A

dia d’avui s’han vist desenvolupats diferents tipus de robots mòbils que els podem classificar

en tres categories: propulsió mitjançant rodes, flotants i caminants.

Dins de la categoria de robots amb rodes, s’han desenvolupat diferents variants en funció de

l’ús i l’ambient. Per exemple, s’han utilitzat les configuracions similars a un automòbil de

quatre rodes convencionals. Aquestes rodes aporten dos graus de llibertat al robot, fet que no

li permet realitzar desplaçaments laterals, i per tant, les possibles trajectòries a realitzar

queden molt limitades, sobretot en ambients petits i amb obstacles.

Com a millora del disseny anterior han sorgit altres configuracions de rodes que permeten

ampliar el rang de trajectòries realitzables. En aquest sentit s’han desenvolupat diferents

configuracions possibles amb diferents tipus de rodes convencionals, però s’ha vist de la

necessitat d’utilitzar rodes especials disposades en configuracions determinades, com per

exemple la de la figura 2.1 , per aconseguir realitzar desplaçaments omnidireccionals.

Figura.2.1. Estructura robot omnidireccional de tres rodes

Els robots omnidireccionals disposen d’avantatges davant dels no omnidireccionals. Es

defineixen robots omnidireccionals els que gaudeixen d’una mobilitat en qualsevol direcció,

des d’un punt arbitrari en un pla sense la necessitat de rotar prèviament al principi del

desplaçament. Aquesta condició d’omnidireccional es deu a que la disposició de les rodes

aporten al robot tres graus de llibertat en el pla.

El fet que un vehicle omnidireccional sigui capaç de realitzar moviments en qualsevol de les

tres components ens aporta una gran quantitat d’aplicacions industrials, acadèmiques, etc.

Figura.2.2. Muntacàrregues omnidireccional

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 18 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

2.1 TIPUS DE RODES

Una de les principals característiques dels robots omnidireccionals són les rodes. Aquestes han

de permetre que el robot es desplaci en qualsevol direcció sense una rotació prèvia i també

realitzar trajectòries compostes simultàniament per un desplaçament i una rotació del robot,

de tal manera que pugui arribar al seu destí amb un angle desitjat.

Tot seguit es realitzarà una descripció dels tipus de rodes que hi ha per poder realitzar

trajectòries omnidireccionals, així com també els avantatges i desavantatges de cada tipus.

S’explicaran dos tipus de rodes:

Les rodes convencionals: Aquestes no ens aporten una component passiva però ens

permeten realitzar desplaçaments omnidireccionals tal i com s’explica a l’apartat

2.1.1.

Les rodes especials: Aquestes a través de la seva construcció si que aporten una

component passiva que ens permet obtenir desplaçaments omnidireccionals

directament. S’expliquen a l’apartat 2.1.2.

2.1.1 Rodes convencionals

Les rodes convencionals es troben fixades a un eix que mitjançant la seva rotació ens permetrà

obtenir la posició desitjada del robot en cada moment. Es classifiquen en diferents tipus

segons la posició de l’eix de rotació respecte la roda: (a) Forward Offset Steered, (b)

Convencional simple i (c) Lateral offset steered.

Figura.2.3. Tipus de rodes convencionals

Aquest tipus de rodes no són definides com a omnidireccionals tenint en compte la seva

naturalesa (cap d’elles ens aporta una component passiva), però si que diferents

configuracions d’un conjunt de rodes ens permeten realitzar desplaçaments omnidireccionals.

Les principals configuracions que podem trobar i que es mostren a la figura 2.4 són les

següents: (a) dos rodes tipus automòbil i una tercera roda convencional, (b) dos rodes

convencionals i dos punts de recolzament o (c) tres rodes convencionals.

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 19 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Figura.2.4. Possibles configuracions de rodes convencionals

A partir d’observar la figura 2.3 es dedueix que per la utilització d’aquest tipus de roda es

necessiten dos motors per cada una d’elles: un per fer girar la roda i desplaçar el robot, i l’altre

per realitzar la rotació de la roda i posicionar-la en el sentit del desplaçament.

Aquest fet de tenir dos motors diferents per girar la roda i rotar-la ens limita alguns

moviments. Si observem la figura 2.5, en el primer tipus de roda (a) la convencional simple,

només és possible realitzar desplaçaments en la direcció de la velocitat de la roda (Vw), i per

tant l’eix de rotació només pot moure’s en la direcció del desplaçament.

Les rodes de tipus (b) lateral offset steered permeten que l’eix roti sobre el punt de contacte

entre la roda i el terra. Encara que, degut a que les velocitats de l’eix (Vs) i de la roda (Vw)

coincideixen en la seva direcció, no es possible moure l’eix en qualsevol direcció sense primer

posicionar-lo correctament.

Per últim les rodes convencionals de tipus (c) forward offset steered permeten que l’eix de

rotació es pugui moure en qualsevol direcció sense haver posicionat prèviament la roda. Això

és degut a que la direcció de la velocitat de l’eix (Vs) i de la roda (Vw) són perpendiculars. Així,

la composició de les velocitats de cada roda permet obtenir un vector velocitat (V) en

qualsevol direcció.

Figura.2.5. Descomposició de les velocitats en cada tipus de roda

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 20 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

2.1.2 Rodes especials

Les rodes especials es basen en la idea de tenir una component activa que dóna tracció en una

direcció i una component passiva que la dóna en una altre direcció. Dins d’aquesta categoria

els tipus més coneguts que hi podem trobar són: rodes universals, rodes mecanum i per últim

rodes esfèriques.

Les rodes universals gaudeixen de rodets ubicats a la perifèria de la roda principal que aporten

una component passiva addicional a l’activa que ja ens aporta la roda. A continuació, la figura

2.6 ens mostra aquests components.

Figura.2.6. Rodes universals. (a) Roda simple, (b) Roda doble, (c) Roda alternada

Les característiques que es poden identificar d’aquest tipus de roda són les següents:

Capacitat de càrrega limitada per l’únic punt de contacte entre la roda i la superfície

sobre la que es desplaça.

Disseny simple. Una configuració de com a mínim tres rodes d’aquest tipus permet

obtenir qualsevol direcció de trajectòria de forma instantània, no és necessària una

rotació per posicionar les rodes.

Radi de la roda variable

Fricció baixa. Degut a que aquestes rodes no necessiten ser rotades per posicionar-les

tenint en compte la direcció de la trajectòria, la fricció que genera és únicament la del

rodet que es trobi en contacte.

Bona sensibilitat a la superfície. És a dir, bona capacitat de la roda a l’hora de realitzar

una trajectòria correctament en superfícies no uniformes.

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 21 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Les rodes mecanum són semblants a les mostrades a la figura 2.6 amb la diferència que els

rodets tenen una rotació d’un cert angle, en general de 45˚, respecte de la circumferència

exterior de la roda.

Degut a la disposició dels rodets a la roda principal, la força produïda sobre la roda produeix

una altre força sobre la superfície que es descompon en dos vectors de força: un perpendicular

a l’eix del rodet i el segon paral·lel a l’eix del rodet.

Figura.2.7. Roda omnidireccional del tipus Mecanum i descomposició de la força que fa el motor sobre la roda

Les característiques que es poden identificar d’aquest tipus de roda són les següents:

Capacitat de càrrega reduïda. La capacitat de càrrega d’aquest tipus de roda és baixa

considerant les mateixes raons que en les rodes universals.

Disseny complert. Encara que només sigui necessari un motor per roda, el disseny de

la roda és complex considerant l’angle entre els rodets i la roda principal.

Radi de la roda constant. La disposició dels rodets es realitza de manera que el

contacte amb la superfície sigui constant.

Fricció baixa. La força de fricció és baixa considerant les mateixes raons que en les

rodes de tipus universal.

Bona sensibilitat a la superfície. És a dir, bona capacitat de la roda a l’hora de realitzar

una trajectòria correctament en superfícies no uniformes.

Les rodes esfèriques (figura 2.8) són impulsades a través de motors els quals

mitjançant una fricció apliquen una força sobre l’esfera. El clar avantatge d’aquest

disseny és que permet mobilitat en totes les direccions, però la principal desavantatge

és que és necessària una gran potència sobre els motors per aconseguir la fricció

necessària en alguns casos.

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 22 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Figura.2.8. Roda en forma esfèrica

2.2 TIPUS D’ESTRUCTURES

En el món acadèmic i industrial s’han estudiat diferents estructures de robots

omnidireccionals, de diferents quantitats de rodes i disposició, dels quals els més rellevants es

descriuran a continuació.

2.2.1 Omnidireccional de tres rodes

Aquesta estructura consisteix en tres rodes omnidireccionals col·locades en forma de triangle.

Disposa de l’avantatge que el control és senzill, ja que per cada velocitat desitjada del robot

només existeix una única combinació en les velocitats de les rodes (a diferència dels robots

omnidireccionals de més de tres rodes). Una determinada combinació de velocitats en les

rodes determina una única velocitat del vehicle.

Figura.2.9. Estructura del robot omnidireccional de 3 rodes

2.2.2 Omnidireccional de 4 rodes omnidireccionals

Aquesta estructura consisteix en una aproximació semblant al de tres rodes però té l’avantatge

de que disposa de redundància, per tant, per aconseguir qualsevol moviment en el pla

existeixen varies combinacions de velocitats possibles.

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 23 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Figura.2.10. Estructura del robot omnidireccional de 4 rodes

2.2.3 Omnidireccional de quatre rodes omnidireccionals orientables

Les rodes d’aquest model tenen tres graus de llibertat i presenta l’avantatge que compta amb

un sistema de transmissió contínua-variable (Continuouslu-Variable Transmition ó CVT)

respecte el de quatre rodes fixes. Aquest sistema proporciona al robot un ús més eficient dels

motors, ja que augmenta el seu rang de velocitats.

2.2.4 Omnidireccional de quatre rodes Mecanum

Aquest model anomenat Omni-2 utilitza les rodes Mecanum vistes anteriorment. Té una

suspensió individual amb un amortidor a cada roda, això ens permet navegar per terrenys poc

llisos ja que aquests amortidors mantenen les rodes sempre en contacte amb el terra. Aquest

tipus de robots són molt vàlids en aplicacions que es requereixi extrema maniobrabilitat.

Figura.2.11. Estructura del robot

omnidireccional de 4 rodes orientables

Figura.2.12. Estructura del robot omnidireccional de 4 rodes Mecanum (Omni-2)

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 24 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

3. PLATAFORMA ROBÒTICA ISENSE

La plataforma robòtica iSense és el projecte complert d’un robot mòbil omnidireccional

desenvolupat per STMicroelectronics en el marc del projecte europeu i-Sense. La missió

d’aquest projecte europeu és desenvolupar mètodes intel·ligents de processament de dades

per fer un anàlisis, de tal manera que es puguin detectar errors, preveure’ls i prendre decisions

en un futur proper.

La plataforma consisteix en un conjunt d’agents intel·ligents integrat a un sistema de sensors,

actuadors i amb un control de realimentació per fer el sistema més sòlid, adaptable i tolerant a

fallades dels sensors o actuadors. El prototip podrà ser validat pel domini d’una aplicació d’un

edifici intel·ligent, però la formulació, les eines i la metodologia seran transferibles a altres

dominis d’aplicació com ara xarxes de distribució d’aigua i de transmissió de potència.

A continuació podem observar les diferents parts mecàniques i electròniques que formen part

de la plataforma robòtica i la quantitat amb la que es troben:

PARTS ELECTRÒNIQUES (PCB)

Nom Descripció Quantitat

STM32F4Discovery Ens permet descobrir les característiques del STM32F4 i desenvolupar aplicacions.

1

EVAL6207N Ens permet fer el control dels motors mitjançant un senyal PWM i dos bits de direcció.

2

STEVAL-ISA101V1 Basat en L5973D, un regulador de commutació monolítica amb 2 ADC i una capacitat de tensió de sortida entre 1.235-36 V.

2

Taula.3.1. Parts electròniques del robot

PARTS MECÀNIQUES

Nom Descripció Quantitat

4 " Omni-Directional Wheel

Rodes omnidireccionals que roden cap endavant com rodes normals, però també llisquen de costat gairebé sense fricció.

4

GHM-03 Motoriduttore

7.2vdc 30:1 291rpm

Motor petit però poderós, especialment dissenyat per funcionar a velocitats baixes. Encaixa perfectament amb robots de mida petita.

4

300 CPR Encoder Kit Codificador de 300 CPR (Comptes per revolució) que s’utilitza per a sistemes de control de posició i mesuraments de velocitat i d’acceleració.

4

Sealed Lead Acid Battery 12V 1.2AH

Bateria capaç d’aportar un voltatge nominal de 12 V i amb una capacitat de corrent de càrrega màxima de 0.36 A.

1

Taula.3.2. Parts mecàniques del robot

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 25 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

La distribució dels components electrònics a la plataforma és la següent (figura 3.1): les rodes

estan orientades paral·lelament dues a dues per tal de poder gaudir d’una mobilitat en

qualsevol direcció del pla; la placa STM32F4Discovery es troba al centre de la base i l’STEVAL-

ISA101V1, que mitjançant la seva tensió de sortida ens dóna l’alimentació, es situa just a sobre.

Les dues plaques que ens permeten fer el control dels motors (EVAL2607N – 1 i EVAL2607N –

2) estan col·locades a banda i banda de la placa, i per una millor organització dels cables en els

pins l’EVAL2607N-1 controla els motors de les rodes 1 i 4 i l’EVAL2607N-2 controla els de les

rodes 2 i 3.

Per últim, just al davant de la roda 4, hi ha un panell de subministrament de potència que és

per on s’engegarà el robot i també per on podrem carregar la bateria que es troba a la part

inferior de la plataforma.

Figura.3.1. Localització Parts electròniques de la plataforma robòtica iSense

En la distribució dels components mecànics (figura 3.2) hi trobem les quatre rodes governades

per quatre motors reductors diferents i quatre codificadors de quadratura de 300 CPR

acoblats a cada motor, els quals ens donaran informació de la posició i direcció en cada instant

de temps.

Figura.3.2. Localització Parts mecàniques de la plataforma Robòtia iSense

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 26 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

3.1 STM32F4DISCOVERY

3.1.1 Introducció

La placa STM32F4Discovery ens ajuda a descobrir les característiques de la línia

STM32F407/417 i poder desenvolupar aplicacions fàcilment. Inclou tot el necessari tant per als

usuaris principiants com els més experimentats per familiaritzar-se ràpidament.

Incorpora l’ST-LINK / V2, una eina de programació i depuració del microcontrolador, un

acceleròmetre digital, un micròfon digital, un DAC d’àudio amb controlador d’altaveu integrat

de classe D, LEDs, dos botons polsadors i un connector USB OTG micro-AB.

3.1.2 Característiques

La placa STM32F4DISCOVERY ens ofereix les següents característiques:

Microcontrolador STM32F407VGT6 amb Nucli

ARM Cortex-M4F 32 bits, 1 MB Flash, 192 KB de

RAM en un paquet LQFP100

Porta un ST-LINK/V2 incorporat amb selector

per utlitzar el kit com un ST-LINK/V2

independent (amb connector SWD per a la

programació i depuració)

Font d'alimentació de la placa: a través del bus

USB o d'una tensió d'alimentació de 5 V

externa

Aplicació de la font d’alimentació externa: 3V i

5V

LIS302DL o LIS3DSH ST MEMS: acceleròmetre

de 3 eixos

MP45DT02, ST MEMS sensor d'àudio, micròfon

digital omnidireccional

CS43L22, DAC d'àudio amb controlador

d'altaveu de la classe D integrat

8 LEDs:

LD1 (vermell/verd) per la comunicació

per USB

LD2 (vermell) per els 3,3 V de potència

Quatre LEDs d’usuari: LD3 (taronja), LD4 (verd), LD5 (vermell) i LD6 (blau)

2 USB OTG LEDs LD7 (verd) VBus i LD8 (vermell) sobrecorrent.

Dos polsadors (usuari i reset)

USB OTG amb connector micro-AB

Capçalera d'extensió en els pins LQFP100 per gaudir d’una connexió ràpida amb la

placa prototip i que sigui fàcil de provar.

Figura.3.3. Placa STM32F4Discovery

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 27 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

3.1.3 Maquinari i disposició

La placa STM32F4Discovery està dissenyada al voltant del microcontrolador STM32F407VGT6

en un paquet LQFP de 100 pins.

La figura 3.4 ens il·lustra les connexions que existeixen entre l’STM32F407VGT6 i els seus

perifèrics (STLINK/V2, polsadors, LEDs, Audio DAC, USB, ST MEMS acceleròmetre, ST MEMS

micròfon i connectors).

Les figures 3.5 i 3.6 ens ajuden a localitzar totes aquestes característiques a la placa

STM32F4Discovery.

Figura.3.4. Diagrama de blocs del maquinari

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 28 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Figura.3.5. Disposició superior de la placa STM32F4

Nota: El pin 1 de CN2, CN3, JP1, i dels connectors P1 i P2 estan indicats mitjançant un quadre

Figura.3.6. Disposició de fons de la placa STM32F4

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 29 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

3.1.4 Microcontrolador STM32F407VGT6

És un MCU de la família ARM Cortex-M4 de 32 bits que disposa de fins a 1 MB de memòria

Flash/192+4 KB de RAM, USB OTG HS/FS, Ethernet, 17 TIMs, 3 ADCs, 15 interfícies i una

càmera.

Figura.3.7. MCU STM32F407VGT6

Els avantatges que ens proporciona són els següents:

168 MHz /210 DMIPS Cortex-M4 amb cicle únic DSP MAC i una unitat de coma flotant

que ens permet:

Execució d’algoritmes de control

Disposar de més característiques possibles per les seves aplicacions

Millor facilitat d’ús

Millor eficiència de codi

Millor temps del mercat

Eliminació de l’escala i la saturació

Suport més fàcil per les eines de llenguatge

Dissenyat per un rendiment alt i transferències de dades ultra-ràpides; ART

acceleròmetre, 32 bits, 7 capes de matrius de bus AHB amb 7 mestres i 8 esclaus

incloent 2 blocs de SRAM, Multi controladors de DMA: 2 de propòsit general, 1 per

USB HS, 1 per Ethernet, 1 bloc de SRAM dedicat al nucli.

Excel·lent eficiència energètica: Consum d’energia dinàmica ultra baixa. El regulador

de voltatge amb capacitat d’escalar la potència ens proporciona: una major flexibilitat

per reduir el consum d’energia en aplicacions que requereixen un processament ràpid

i un rendiment de baixa potència quan funciona a baixa tensió o en una bateria

recarregable.

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 30 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Màxima integració: Fins a 1 Mbyte de memòria Flash del xip, 192 Kbytes de SRAM,

reset del circuit, RCs interns, PLLs, paquet WLCSP disponible, ofereix més

característiques en aplicacions amb limitacions d’espai.

Perifèrics superiors i innovadors que ofereixen noves possibilitats per connectar i

comunicar dades a alta velocitat i una major precisió gràcies a l’alta resolució.

La figura 3.8 ens mostra el diagrama de blocs del MCU i les seves connexions cap a l’exterior.

Figura.3.8. Diagrama de blocs de l’STM32F407VGT6

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 31 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

STMCub™ és una original iniciativa desenvolupada per l’empresa STMicroelectronics per

facilitar la vida dels programadors mitjançant una reducció d’esforços, temps i cost.

STM32Cube inclou el programa STM32CubeMX, mitjançant el qual, nosaltres, podem observar

el dispositiu perifèric que hi ha connectat a cada pin del microcontrolador i la seva funció. El

programa també ens permet generar un codi C d’inicialització utilitzant assistents gràfics.

Figura.3.9. Interfície de l’STM32CubeMX

Quan creem un projecte nou, el programa ens demana que seleccionem el nostre tipus de

MCU o placa de la que disposem. Per tant, seleccionarem el nostre kit, que en aquest cas és

l’STM32F4DISCOVERY i que porta incorporat el MCU STM32F407VGT6.

Figura.3.10. Selecció del nostre MCU en el programa STM32CubeMX

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 32 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Aleshores, automàticament el programa ens dirigeix a una pantalla on hi ha la configuració de

tots els pins del MCU (figura 3.11) i on nosaltres podrem observar a quin dels perifèrics

disponibles de la placa està connectat cadascun d’ells i quina funció realitza o pot realitzar.

Figura.3.11. Pinout del MCU STM32407VGT6

A la figura anterior, com a exemple, s’ha seleccionat el pin PD12 i veiem que aquest està

associat al LED 4 de color verd de la placa mitjançant una funció de propòsit general de sortida.

STM32CubeMx també ens permet generar un codi C d’inicialització sobre el qual nosaltres

podrem escriure a sobre el nostre codi utilitzant només els perifèrics que ens interessin en

cada cas (figura 3.12). Nosaltres, però, no utilitzarem aquesta funció ja que treballarem amb el

Simulink i serà ell mateix el que ens generi el codi C a partir d’un conjunt de blocs.

Figura.3.12. Funció que ens genera un codi C d’inicialització amb l’STM32CubeMx

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 33 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

A partir d’analitzar la figura 3.11 podem fer un resum construint la següent taula, on per cada

pin del MCU agrupem la seva funció principal, altres possibles funcions que pot realitzar i la

funció dins la placa.

MCU pin Funció a la placa

Funció principal

Funcions Alternatives

LQFP

100

CS43L2

2

MP

45DT02

LIS302DL o

LIS3DSH

Pu

sh B

utto

n

LED

SWD

USB

OSC

Free I/O

Po

wer su

pp

ly

CN

5

CN

2

P1

P2

BOOT0 VPP 94 - - - - - - - - - - - - - 21

NRST - 14 - - -

RESET

-

NR

ST

- - - - - 5 6 -

PA0-WKUP

USART2_CTS/ USART4_TX/ ETH_MII_CRS/ TIM2_CH1_ETR/ TIM5_CH1/ TIM8_ETR/ ADC123_INO/ WKUP

23 - - -

USER

- - - - - - - - 12 -

PA1

USART2_RTS/ USART4_RX/ ETH_RMII_REF_CLK/ ETH_MII_RX_CLK/ TIM5_CH2/ TIMM2_CH2/ ADC123_IN1/

24 - - - - - - - - - - - - 11 -

PA2

USART2_TX/ TIM5_CH3/ TIM9_CH1/ TIM2_CH3/ ETH_MDIO/ ADC123_IN2

25 - - - - - - - - - - - - 14 -

PA3

USART2_RX/ TIM5_CH4/ TIM9_CH2/ TIM2_CH4/ OTG_HS_SOF/ ETH_MII_COL/ ADC123_IN3

26 - - - - - - - - - - - - 13 -

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 34 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

MCU pin Funció a la placa

Funció principal

Funcions Alternatives

LQFP

100

CS43L2

2

MP

45DT02

LIS302DL o

LIS3DSH

Pu

sh B

utto

n

LED

SWD

USB

OSC

Free I/O

Po

wer su

pp

ly

CN

5

CN

2

P1

P2

PA4

SPI1_NSS/ SPI3_NSS/ USART2_CK/ DSMI_HSYNC/ OTG_HS_SOF/ I2S3_WS/ ADC12_IN4/ DAC1_OUT

29 LR

CK

/AIN

1x - - - - - - - - - - - 16 -

PA5

SPI1_SCK/ OTG_HS_ULPI_CK/ TIM2_CH1_ETR/ TIM8_CHIN/ ADC12_IN5/ DAC2_OUT

30 - -

SCL/SP

C

- - - - - - - - - 15 -

PA6

SPI_MISO/ TIM8_BKIN/ TIM13_CH1/ DCMI_PIXCLK/ TIM3_CH1/ TIM1_BKIN/ ADC12_IN6

31 - -

SDO

- - - - - - - - - 18 -

PA7

SPI1_MOSI/ TIM8_CH1N/ TIM14_CH1TIM3_CH2/ ETH_MII_RX_DV/ TIM1_CH1N/ RMII_CRS_DV/ ADC12_IN7

32 - -

SDA

/SDI/SD

O

- - - - - - - - - 17 -

PA8

MCO1/ USART1_CK/ TIM1_CH1/ ISC3_SCL/ OTG_FS_SOF

67 - - - - - - - - - - - - - 43

PA9

USART1_TX/ TIM1_CH2/ I2C3_SMBA/ DCMI_DO/ OTG_FS_VBUS

68 - - -

GR

EEN

-

VB

US

- - - - 1 - - 44

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 35 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

MCU pin Funció a la placa

Funció principal

Funcions Alternatives

LQFP

100

CS43L2

2

MP

45DT02

LIS302DL o

LIS3DSH

Pu

sh B

utto

n

LED

SWD

USB

OSC

Free I/O

Po

wer su

pp

ly

CN

5

CN

2

P1

P2

PA10

USART1_RX/ TIM1_CH3/ OTG_FS_ID/ DCMI_D1

69 - - - - - -

ID - - - 4 - - 41

PA11

USART1_CTS/ CAN1_RX/ TIM1_CH4/ OTG_FS_DM

70 - - - - - -

DM

- - - 2 - - -

PA12

USART1_RTS/ CAN1_TX/ TIM1_ETR/ OTG_FS_DP

71 - - - - - -

DP

- - - 3 - - -

PA13 JTMS-SWDIO 72 - - - - -

SWD

IO

- - - - - 4 - 42

PA14 JTCK-SWCLK 76 - - - - -

SWC

LK

- - - - - 2 - 39

PA15

JTDI/ SPI3_NSS/ I2S3_WS/ TIM2_CH1_ETR/ SPI1_NSS

77 - - - - - - - - - - - - - 40

PB0

TIM3_CH3/ TIM8_CH2N/ OTG_HS_ULPI_D1/ ETH_MII_RXD2/ TIM1_CH2N/ ADC12_IN8

35 - - - - - - - - - - - - 22 -

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 36 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

MCU pin Funció a la placa

Funció principal

Funcions Alternatives

LQFP

100

CS43L2

2

MP

45DT02

LIS302DL o

LIS3DSH

Pu

sh B

utto

n

LED

SWD

USB

OSC

Free I/O

Po

wer su

pp

ly

CN

5

CN

2

P1

P2

PB1

TIM3_CH4/ TIM8_CH3N/ OTG_HS_ULPI_D2/ ETH_MII_RXD3/ OTG_HS_INTN/ TIM1_CH3N/ ADC12_IN9

36 - - - - - - - - - - - - 21 -

PB2 - 37 - - - - - - - - - - - - 24 -

PB3

JTDO/ TRACESWO/ SPI3_SCK/ I2S3_SCK/ TIM2_CH2/ SPI1_SCK

89 - - - - -

SWO

- - - - - 6 - 28

PB4

NJTRST/ SPI3_MISO/ TIM3_CH1/ SPI1_MISO/ I2S3ext_SD

90 - - - - - - - - - - - - - 25

PB5

I2C1_SMBA/ CAN2_RX/ OTG_HS_ULPI_D7/ ETH_PPS_OUT/ TIM3_CH2/ SPI1_MOSI/ SPI3_MOSI/ DCMI_D10/ I2S3_SD

91 - - - - - - - - - - - - - 26

PB6

I2C1_SCL/ TIM4_CH1/ CAN2_TX/ OTG_FS_INTN/ DCMI_D5/ USART1_TX

92

SCL - - - - - - - - - - - - 23

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 37 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

MCU pin Funció a la placa

Funció principal

Funcions Alternatives

LQFP

100

CS43L2

2

MP

45DT02

LIS302DL o

LIS3DSH

Pu

sh B

utto

n

LED

SWD

USB

OSC

Free I/O

Po

wer su

pp

ly

CN

5

CN

2

P1

P2

PB7

I2C1_SDA/ FSMC_NL/ DCMI_VSYNC/ USART1_RX/ TIM4_CH2

93 - - - - - - - - - - - - - 24

PB8

TIM4_CH3/ SDIO_D4/ TIM10_CH1/ DCMI_D6/ OTG_FS_SCL/ ETH_MII_TXD3/ I2C1_SCL/ CAN1_RX

95 - - - - - - - - - - - - - 19

PB9

SPI2_NSS/ I2S2_WS/ TIM4_CH4/ TIM11_CH1/ OTG_FS_SDA/ SDIO_D5/ DCMI_D7/ I2C1_SDA/ CAN1_TX

96

SDA

- - - - - - - - - - - - 20

PB10

SPI2_SCK/ I2S2_CK/ I2C2_SCL/ USART3_TX/ OTG_HS_ULPI_D3/ ETH_MII_RX_ER/ OTG_HS_SCL/ TIM2_CH3

47 -

CLK

- - - - - - - - - - 34 -

PB11

I2C2_SDA/ USART3_RX/ OTG_HS_ULPI_D4/ ETH_RMII_TX_EN/ ETH_MII_TX_EN/ OTG_HS_SDA/ TIM2_CH4

48 - - - - - - - - - - - - 35 -

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 38 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

MCU pin Funció a la placa

Funció principal

Funcions Alternatives

LQFP

100

CS43L2

2

MP

45DT02

LIS302DL o

LIS3DSH

Pu

sh B

utto

n

LED

SWD

USB

OSC

Free I/O

Po

wer su

pp

ly

CN

5

CN

2

P1

P2

PB12

SPI2_NSS/ I2S2_WS/ I2C2_SMBA/ USART3_CK/ TIM1_BKIN/ CAN2_RX/ OTG_HS_ULPI_D5/ ETH_RMII_TXD0/ ETH_MII_TXD0/ OTG_HS_ID

51 - - - - - - - - - - - - 36 -

PB13

SPI2_SCK/ I2S2_CK/ USART3_CTS/ TIM1_CH1N/ CAN2_TX/ OTG_HS_ULPI_D6/ ETH_RMII_TXD1/ ETH_MII_TXD1/ OTG_HS_VBUS

52 - - - - - - - - - - - - 37 -

PB14

SPI2_MISO/ TIM1_CH2N/ TIM12_CH1/ OTG_HS_DMUSART3_RTS TIM8_CH2N/ I2S2ext_SD

53 - - - - - - - - - - - - 38 -

PB15

SPI2_MOSI/ I2S2_SD/ TIM1_CH3N/ TIM8_CH3N/ TIM12_CH2/ OTG_HS_DP

54 - - - - - - - - - - - - 39 -

PC0 OTG_HS_ULPI_STP/ ADC123_IN10

15 - - - - - -

Po

werO

n

- - - - - 8 -

PC1 ETH_MDC/ ADC123_IN11

16 - - - - - - - - - - - - 7 -

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 39 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

MCU pin Funció a la placa

Funció principal

Funcions Alternatives

LQFP

100

CS43L2

2

MP

45DT02

LIS302DL o

LIS3DSH

Pu

sh B

utto

n

LED

SWD

USB

OSC

Free I/O

Po

wer su

pp

ly

CN

5

CN

2

P1

P2

PC2

SPI2_MISO/ OTG_HS_ULPI_DIR/ TH_MII_TXD2/ I2S2ext_SD/ ADC123_IN12

17 - - - - - - - - - - - - 10 -

PC3

SPI2_MOSI/ I2S2_SD/ OTG_HS_ULPI_NXT/ ETH_MII_TX_CLK/ ADC123_IN13

18 -

DO

UT/A

IN4x

- - - - - - - - - - 9 -

PC4 ETH_RMII_RX_D0/ ETH_MII_RX_D0/ ADC12_IN14

33 - - - - - - - - - - - - 20 -

PC5 ETH_RMII_RX_D1/ ETH_MII_RX_D1/ ADC12_IN15

34 - - - - - - - - - - - - 19 -

PC6

I2S2_MCK/ TIM8_CH1/ SDIO_D6/ USART6_TX/ DCMI_D0/ TIM3_CH1

63 - - - - - - - - - - - - - 47

PC7

I2S3_MCK/ TIM8_CH2/ SDIO_D7/ USART6_RX/ DCMI_D1/ TIM3_CH2

64

MC

LK

- - - - - - - - - - - - 48

PC8

TIM8_CH3/ SDIO_D0/ TIM3_CH3/ USART6_CK/ DCMI_D2

65 - - - - - - - - - - - - - 45

PC9

I2S_CKIN/ MCO2/ TIM8_CH4/ SDIO_D1/ I2C3_SDA/ DCMI_D3/ TIM3_CH4

66 - - - - - - - - - - - - - 46

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 40 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

MCU pin Funció a la placa

Funció principal

Funcions Alternatives

LQFP

100

CS43L2

2

MP

45DT02

LIS302DL o

LIS3DSH

Pu

sh B

utto

n

LED

SWD

USB

OSC

Free I/O

Po

wer su

pp

ly

CN

5

CN

2

P1

P2

PC10

SPI3_SCK/ I2S3_CK/ UART4_TX/ SDIO_D2/ DCMI_D8/ USART3_TX

78

SCLK

- - - - - - - - - - - - 37

PC11

UART4_RX/ SPI3_MISO/ SDIO_D3/ DCMI_D4/ USART3_RX/ I2S3ext_SD

79 - - - - - - - - - - - - - 38

PC12

UART5_TX/ SDIO_CK/ DCMI_D9/ SPI3_MOSI/ I2S3_SD/ USART3_CK

80

SDIN

- - - - - - - - - - - - 35

PC13 RTC_AF1 7 - - - - - - - - - - - - - 12

PC14 OSC32_IN 8 - - - - - - -

OSC

32_IN

- - - - - 9

PC15 OSC32_OUT 9 - - - - - - -

OSC

32_OU

T

- - - - - 10

PD0 FSMC_D2/ CAN1_RX

81 - - - - - - - - - - - - - 36

PD1 FSMC_D3/ CAN1_TX

82 - - - - - - - - - - - - - 33

PD2 TIM3_ETR/ UART5_RXSDIO_CMD/ DCMI_D11

83 - - - - - - - - - - - - - 34

PD3 FSMC_CLK/ USART2_CTS

84 - - - - - - - - - - - - - 31

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 41 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

MCU pin Funció a la placa

Funció principal

Funcions Alternatives

LQFP

100

CS43L2

2

MP

45DT02

LIS302DL o

LIS3DSH

Pu

sh B

utto

n

LED

SWD

USB

OSC

Free I/O

Po

wer su

pp

ly

CN

5

CN

2

P1

P2

PD4 FSMC_NOE/ USART2_RTS

85

RESET

- - - - - - - - - - - - 32

PD5 FSMC_NWE/ USART2_TX

86 - - - -

RED

-

OverC

urrem

t

- - - - - - 29

PD6 FSMC_NWAIT/ USART2_RX

87 - - - - - - - - - - - - - 30

PD7 USART2_CK/ FSMC_NE1/ FSMC_NCE2

88 - - - - - - - - - - - - - 27

PD8 FSMC_D13/ USART3_TX

55 - - - - - - - - - - - - 40 -

PD9 FSMC_D14/ USART3_RX

56 - - - - - - - - - - - - 41 -

PD10 FSMC_D15/ USART3_CK

57 - - - - - - - - - - - - 42 -

PD11 FSMC_A16/ USART3_CTS

58 - - - - - - - - - - - - 43 -

PD12 FSMC_A17/ TIM4_CH1/ USART3_RTS

59 - - - -

GR

EEN

- - - - - - - 44 -

PD13 FSMC_A18/ TIM4_CH2

60 - - - -

OR

AN

GE

- - - - - - - 45 -

PD14 FSMC_D0/ TIM4_CH3

61 - - - -

RED

- - - - - - - 46 -

PD15 FSMC_D1/ TIM4_CH4

62 - - - -

BLU

E

- - - - - - - 47 -

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 42 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

MCU pin Funció a la placa

Funció principal

Funcions Alternatives

LQFP

100

CS43L2

2

MP

45DT02

LIS302DL o

LIS3DSH

Pu

sh B

utto

n

LED

SWD

USB

OSC

Free I/O

Po

wer su

pp

ly

CN

5

CN

2

P1

P2

PE0 TIM4_ETR/ FSMC_NBL0/ DCMI_D2

97 - - IN

T1

- - - - - - - - - - 17

PE1 FSMC_NBL1/ DCMI_D3

98 - -

INT2

- - - - - - - - - - 18

PE2 TRACECLK/ FSMC_A23/ ETH_MII_TXD3

1 - - - - - - - - - - - - - 15

PE3 TRACED0/ FSMC_A19

2 - -

CS_I2C

/SPI

- - - - - - - - - - 16

PE4 TRACED1/ FSMC_A20/ DCMI_D4

3 - - - - - - - - - - - - - 13

PE5

TRACED2/ FSMC_A21/ TIM9_CH1/ DCMI_D6

4 - - - - - - - - - - - - - 14

PE6

TRACED3/ FSMC_A22/ TIM9_CH2/ DCMI_D7

5 - - - - - - - - - - - - - 11

PE7 FSMC_D4/ TIM1_ETR

38 - - - - - - - - - - - - 25 -

PE8 FSMC_D5/ TIM1_CH1N

39 - - - - - - - - - - - - 26 -

PE9 FSMC_D6/ TIM1_CH1

40 - - - - - - - - - - - - 27 -

PE10 FSMC_D7/ TIM1_CH2N

41 - - - - - - - - - - - - 28 -

PE11 FSMC_D8/ TIM1_CH2

42 - - - - - - - - - - - - 29 -

PE12 FSMC_D9/ TIM1_CH3N

43 - - - - - - - - - - - - 30 -

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 43 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

MCU pin Funció a la placa

Funció principal

Funcions Alternatives

LQFP

100

CS43L2

2

MP

45DT02

LIS302DL o

LIS3DSH

Pu

sh B

utto

n

LED

SWD

USB

OSC

Free I/O

Po

wer su

pp

ly

CN

5

CN

2

P1

P2

PE13 FSMC_D10/ TIM1_CH3

44 - - - - - - - - - - - - 31 -

PE14 FSMC_D11/ TIM1_CH4

45 - - - - - - - - - - - - 32 -

PE15 FSMC_D12/ TIM1_BKIN

46 - - - - - - - - - - - - 33 -

PH0 OSC_IN 12 - - - - - - -

OSC

_IN

- - - - - 7

PH1 OSC_OUT 13 - - - - - - -

OSC

_OU

T

- - - - - 8

- - - - - - - - - - - -

5V - - - 3

- - - - - - - - - - - -

5V - - - 4

- - - - - - - - - - - -

3V - - - 5

- - - - - - - - - - - -

3V - - - 6

- - - - - - - - - - - -

VD

D

- - 3 -

- - - - - - - - - - - -

VD

D

- - 4 -

- - - - - - - - - - - -

VD

D

- - - 22

- - - - - - - -

GN

D

GN

D

- -

GN

D

5 3 1 -

- - - - - - - - - - - -

GN

D

- - 2 -

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 44 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

MCU pin Funció a la placa

Funció principal

Funcions Alternatives

LQFP

100

CS43L2

2

MP

45DT02

LIS302DL o

LIS3DSH

Pu

sh B

utto

n

LED

SWD

USB

OSC

Free I/O

Po

wer su

pp

ly

CN

5

CN

2

P1

P2

- - - - - - - - - - - -

GN

D

- - 2 -

- - - - - - - - - - - -

GN

D

- - 5 -

- - - - - - - - - - - -

GN

D

- - 23 -

- - - - - - - - - - - -

GN

D

- - 49 -

- - - - - - - - - - - -

GN

D

- - 50 -

- - - - - - - - - - - -

GN

D

- - - 1

- - - - - - - - - - - -

GN

D

- - - 2

- - - - - - - - - - - -

GN

D

- - - 49

- - - - - - - - - - - -

GN

D

- - - 50

Taula.3.3. Descripció dels pins del MCU vs les funcions a la placa

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 45 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

3.1.5 ST-LINK/V2

L’eina de programació i depuració ST-LINK/V2 ja ens ve integrada a la placa

STM32F4DISCOVERY i la podrem utilitzar de dues maneres diferents d’acord amb els estats

dels ponts (veure Taula 3.4):

Programar / depurar el MCU a la placa.

Programar / depurar el MCU en una placa d’aplicació externa mitjançant un cable

connectat al connector CN2.

Els requeriments bàsics per poder accedir a realitzar la programació de la placa són un cable

USB del tipus A to mini B, un ordinador amb Windows XP, Vista o 7 i qualsevol eina de

desenvolupament de programari d’algun fabricant que sigui compatible amb la placa. A la

figura 3.13 s’anomenen els recomanats per el fabricant ST.

Figura.3.13. Configuració típica de l’STM32F4DISCOVERY

Estat del pont Descripció

CN3 ON Funcions de l’ST-LINK/V2 habilitades per fer la programació a través de la placa (defecte).

CN3 OFF Funcions de l’ST-LINK/V2 habilitades per fer la programació a través del connector extern CN2.

Taula.3.4. Estats dels ponts

En el primer cas, per utilitzar l’ST-LINK/V2 per programar o depurar l’STM32F4 a través de la

placa, només hem de connectar els dos ponts al connector CN3, tal i com podem observar a la

figura 3.14 en color vermell, però sense utilitzar el connector CN2 ja que això ens podria

pertorbar la comunicació amb l’STM32F407VGT6 de la STM32F4DISCOVERY.

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 46 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Figura.3.14. Connexions STM32F4DISCOVERY

En canvi en el segon cas, per utilitzar l’ST-LINK/V2 per programar o depurar l’STM32F4 a través

d’una aplicació externa, simplement hem de treure els dos ponts del connector CN3, tal i com

es mostra a la figura 3.15, i seguidament connectar l’aplicació al connector de depuració CN2

d’acord amb la Taula 3.5.

Nota: SB11 ha d’estar OFF si s’utilitza el pin 5 del CN2 a l’aplicació externa.

Pin CN2 Designació

1 VDD_TARGET VDD de l’aplicació

2 SWCLK SWD rellotge

3 GND Massa

4 SWDIO SWD dades entrada/sortida

5 NRST Reset del MCU

6 SWO Reservat Taula.3.5. Connector CN2 (SWD)

Figura.3.15. Connexions ST-Link

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 47 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

3.2 EVAL6207N

Aquesta placa és utilitzada per governar els quatre motors del robot i ens proporciona uns

connectors externs per a la tensió d’alimentació, una referència externa de 5V per les entrades

lògiques, quatre sortides per al motor i un connector de 34 pins per al control de les principals

funcions de la placa a través d’un MCU extern o de l'eina PractiSPIN. Aquesta eina connectada

a l’EVAL6207N pot impulsar motors de corrent continu i càrregues inductives, alhora que

també ens permet fer ajustaments de voltatge i del corrent de sortida.

Figura.3.16. EVAL6207N

3.2.1 Components

La llista dels components de la placa és la següent:

Nom Descripció Nom Descripció

CN1, CN2, CN3, CN4 Connector 2 pols JP1 Pont 3 pins

CN5 Connector 34 pols JP2,JP3 Pont 2 pins

C1 220nF/100V R1 100Ω

C2 220nF/100V R2 3.17kΩ, 0.6W

C3 100uF/63V R3,R4 4.7kΩ

C4 10nF/100V R5,R16 20kΩ

C5 10uF/16V R6,R7 100kΩ

C6,C7 100nF R8,R17 2.2kΩ, 0.4W

C8,C9 68nF R9 to R14 1Ω, 0.4W

C10,C11 820pF R18,R15 5kΩ

D1,D2 Díode 1N4148 U1 L6205N

D3 BZX79C5V1 5.1V Zener U2 L6506 Taula.3.6. Components EVAL6207N

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 48 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

R15 i R18 fixen la tensió de referència per separat per als dos ponts, mentre que R8, R17 i

C8,C9 són filtres passa baixos per proporcionar una tensió de referència per una sortida PWM

d’un MCU.

R6,R7 i C10,C11 s’utilitzen per establir el temps d’apagada dels dos canals de la IC.

Es recomana tenir tancats els ponts JP2 I JP3 com a mesura de protecció.

La tensió de 5V per les entrades lògiques i les referències (VrefA i VrefB) s’obté de R2, D3.

Depenent de la tensió d’alimentació, el valor de la resistència R2 s’ha de canviar per tal de

garantir una correcta polarització de D3.

El pont JP1 ens permet triar si volem la tensió de 5V de la xarxa de díodes Zener interns o bé

del pin 11 del connector CN5 (un MCU extern ens pot proporcionar 5V a la placa d’avaluació).

També podem utilitzar el connector CN2 per proporcionar una tensió de 5V als circuits externs

de la placa (en aquest cas R2,D3 ha d’estar desconnectat).

3.2.2 Funcionament

L’EVAL6207N té dues entrades analògiques, VrefA i VrefB, que ens permeten controlar el valor

pic del corrent del motor a través dels circuits de PWM integrats a la placa. Tal i com podem

veure a l’esquema elèctric de l’annex, la senyal de PWM ens entra a la placa través dels pins

ENA i ENB. En el cas en que el corrent existent superi els límits establerts pels pins IsenseA i

IsenseB s’atura el funcionament.

Una tensió de referència fixa es pot aconseguir fàcilment a través d’un divisor en un carril de

tensió de 5V (pot ser la que ens subministra el MCU o la resta de l’aplicació) i també hi ha

l’opció d’aconseguir una tensió variable sense l’ús d’un DAC. Ho podem fer passant per un

filtre passa baixos la sortida PWM de qualsevol MCU (observar figura 3.17).

Suposant que els canvis de sortida PWM són de 0 a 5V, la tensió resultant es pot calcular amb

la fórmula següent:

On DuC correspon al duty-cycle de la sortida PWM del MCU.

Figura.3.17. Obtenció d’un voltatge variable a través de la sortida PWM d’un MCU

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 49 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

3.2.3 Consideracions

Figura.3.18. Localització components EVAL6207N

Algunes consideracions importants a tenir en compte a l’hora de la posada en funcionament

de la placa són les següents:

JP1: Col·locar el pont a la posició INT si volem utilitzar la targeta PractiSPIN ST7.

C6,C7: Canvi recomanat a 5,6nF per una millor protecció de sobrecorrent.

R3.R4: Canvi recomanat a 100K per una millor protecció de sobrecorrent.

R15,R18: Estableix el corrent màxim que es pot obtenir a través de PractiSPIN.

R2: Canvi recomanat al valor adequat (depenent de la tensió d’alimentació) per

obtenir 5V a través del D3.

JP2,JP3: Tancar-los per una millor protecció de sobrecorrent.

3.2.4 Configuració

S’han de configurar els següents valors a la placa EVAL6207N:

1. Actualitzacions de components:

a. Per garantir una protecció segura de sobrecorrent:

i. Canviar C6 i C7 a 5.6nF

ii. Canviar R3 i R4 A 100KΩ

b. Per assegurar que estem subministrant 5V, R2 pot ser que s’hagi de modificar.

El mínim valor que pot tenir és (Vs-5)/(0.03+I) Ω.

2. JP1: Pont a la posició INT per habilitar el subministrament de 5Vdc de la placa.

3. JP2, JP3: Col·locar el pont JP2 i JP3 per assegurar un ritme adequat de protecció de

sobrecorrent.

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 50 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

4. R15, R18: Ajustar els potenciòmetres d’ajust multi-voltes totalment cap a la dreta.

5. R6, R7: Ajustar els potenciòmetres d’ajust multi-voltes fins a la meitat del seu rang. Per

aquí s’ajustarà el temps d’apagada del cicle i es podrà afinar mentre observem el

corrent del motor en un oscil·loscopi.

6. Connexions del motor: Connectar les bobines del motor a CN3 i CN4. Per al

funcionament amb dos motors de corrent continu, un motor està connectat a cada

connector.

7. Font d’alimentació: Connectar de 12 a 48Vdc a CN1 (El positiu a Vin i el negatiu a

GND).

8. JP1, JP2 i R18: Col·locar els ponts JP1 i JP2 a la banda esquerra. Això es fonamental ja

que un corrent excessiu al motor pot resultar de la col·locació d’aquests dos ponts.

Ajustar el potenciòmetre R18 fins aproximadament al 50%.

3.3 STEVAL-ISA101V1

3.3.1 Característiques

Vin : 4-36 V

Vout: 1.235-36 V

Corrent de sortida: 2 A DC

Freqüència interna de commutació

de l’oscil·lador: 250 kHz

Protecció contra curtcircuits

Inhibició i apagat tèrmic

Compatible amb RoHS

3.3.2 Descripció

Aquesta placa STEVAL-ISA101V1 és l’encarregada de distribuir la potència cap a

l’STM32F4DISCOVERY i està basada amb l’L5973D, un regulador de commutació monolítica

amb 2 ADC i una capacitat de tensió de sortida entre 1.235-36V.

La tensió d’entrada de funcionament oscil·la entre 4 i 36 V. El dispositiu es basa en la

tecnologia BCD5. L’element de potència que porta incorporat és un transistor PMOS de

manera que l’etapa d’excitació no requereix cap condensador d’arrencada i el cicle de treball

pot ser de fins al 100%. Un oscil·lador intern fixa la freqüència de commutació de 250 kHz. Un

pin de sincronització està disponible quan es requereix una freqüència de tall més alta (fins a

700 kHz).

Figura.3.19. STEVAL-ISA101V1

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 51 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

La protecció pols per pols del corrent i una funció de limitació automàtica de la freqüència

ajuden a garantir una protecció eficaç contra qualsevol curtcircuit.

3.4 RODA OMNIDIRECCIONAL 4"

El robot i-Sense incorpora aquest tipus de rodes omnidireccionals del fabricant VexRobotix.

Són capaces de rodar cap endavant com una roda normal, però també tenen l’avantatge que

llisquen de costat gairebé sense fricció (sense derrapar a les corbes) gràcies als rodets que

incorpora en tot el seu perímetre exterior. Són rodes especialment recomanades per robots els

quals és important que girin amb suavitat.

Els rodets que incorpora la roda omnidireccional en tot el seu perímetre de la circumferència,

ens ajuden a que no s’arrossegui de banda i rodi suaument en tot moment. Això es important

ja que es necessita molta menys energia per moure’l.

A continuació es resumeixen les seves especificacions:

Característica Descripció

Contingut del kit (1) Roda Omnidireccional 4"

(2) Guia del fabricant

Compatibilitat Eixos de transmissió (0.125" barra quadrada)

Tipus de material Roda: Plàstic ABS

Rodet: Goma suau sobre plàstic ABS

Mida Diàmetre: 4.000" (101.6mm) Amplada: 1.125" (28.6mm)

Pes 0.232 lbs (105 grams) Taula.3.7. Especificacions roda omnidireccional 4"

Figura.3.20. Roda omnidireccional 4"

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 52 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

3.5 MOTOR REDUCTOR GHM-03 7.2VDC 30:1 291 RPM

3.5.1 Especificacions

Tipus: HN-GH35GMB

Model: HN-GH7.2-2414T - 30:1

Característica Descripció

Pes 119.63 g

Reducció 30:1

Esforç de torsió 3.91 kg-cm

Longitud (motor i reductor) 4.37 cm

Longitud eix 2.26 cm

Diàmetre (motor i reductor) 3.68 cm

Diàmetre eix 6 mm

Corrent (a 7.2V sense càrrega) 200 mA

Corrent (a 7.2 V eix bloquejat) 3.80 A Taula.3.8. Especificacions Motor Reductor

3.5.2 Corba de potència

Figura.3.22. Corba potència motor reductor

3.5.3 Dimensions

Figura.3.23. Dimensions motor reductor

Figura.3.21. Motor Reductor GHM-03 291 RPM

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 53 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

3.6 CODIFICADOR QUADRATURA EASY ROLLER 300 CPR

3.6.1 Descripció

Codificador de 300 CPR (Comptes per revolució) que s’utilitza per a sistemes de control de

posició i mesuraments de velocitat i d’acceleració. Quan s’utilitza amb l’M12V200 (motor

estandard Easy Roller) el nombre de CPR és de 9000.

3.6.2 Característiques

Codificador nivell 300CPR TTL

Baix cost, fàcil muntatge

Totes les eines i cablejat van inclosos

És compatible amb el controlador de posició Motion Mind (PN: MOTM_1)

3.6.3 Components

Quantitat Nom Descripció

1 ENCODER PCB Base del codificador i PCB

1 ENCODER COVER Coberta de plàstic negre

1 ENCODER DISC Disc codificador 300 CPR

2 W1-ENC Cinta doble cara i volandera

1 WIRE1-ENC Cables de colors dels 4 conductors Taula.3.9. Components del KIT ENC300

Figura.3.24. ENC300 KIT

Figura.3.25. ENC300 acoblat al motor

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 54 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

3.6.4 Especificacions elèctriques

Característica Valor Unitats

Tensió de funcionament 4.5-5.5 V

Corrent 15-30 mA

Temperatura -10-85 ˚C

Freqüència 30 KHz

Pull-ups interns 3.3 KΩ

Velocitat eix 9000 RPM Taula.3.10. Especificacions elèctriques del codificador

3.6.5 Especificacions mecàniques

Característica Valor Unitats

Mida de l’eix 2 mm

Joc d’eix +/-0.5 mm

Longitud d’eix 7.25-9.95 mm

Color Negre -

Tècnica de muntatge Adhesiu -

Radi 21.6 mm Taula.3.11. Especificacions mecàniques del codificador

3.6.6 Connexions elèctriques

Les connexions elèctriques dels codificadors

amb el kit STM32F4-Discovery són les següents:

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 55 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

3.6.7 Instruccions de muntatge

PAS 1: Exposar l’adhesiu en ambdós costats de la volandera de doble cara d’escuma 1/16’’ i

col·locar-la a la part posterior del motor de manera que l’eix posterior del motor passi a través

del centre de la volandera d’escuma. Enganxar l’adhesiu a la part inferior del conjunt de PCB

mitjançant l’eliminació de la coberta de paper.

Figura.3.26. Col·locació de la base del codificador

PAS 2: Assegurar-se de no ratllar o fer malbé el disc codificador. Cal col·locar-lo amb el patró

cap avall en l’eix motor posterior i utilitzar només la pressió necessària per acoblar-lo. A

continuació posem la carcassa d’alumini amb les retallades per la IC i el connector del conjunt

PCB. Llavors farem lliscar el disc codificador pel buit fins arribar al seu punt correcte (quan

trobem els reblons de plàstic).

Figura.3.27. Col·locació del disc codificador 300 CPR

PAS 3: Col·locar la coberta del codificador de plàstic sobre la base del codificador i prémer la

tapa cap avall fins que les orelles de la base encaixin amb els enganxalls de retenció de la

coberta. Es recomana prémer fort les orelles per assegurar que s’encaixen bé. Per últim,

connectarem els cables al connector que hi ha en la coberta del codificador.

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 56 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

3.6.8 Funcionament

Un codificador és un dispositiu electromecànic que pot mesurar moviment o posició. La

majoria d’ells utilitzen sensors òptics per proporcionar senyals elèctriques en forma de tren

d’impulsos, els quals es podran traduir en moviment, direcció o posició.

Els codificadors rotatius s’utilitzen per mesurar el moviment de rotació d’un eix. En la figura

3.28 es mostren els components principals d’un codificador giratori, que consisteix en un díode

emissor de llum (LED), un disc i un detector de llum. El disc, que està acoblat a l’eix de rotació,

té patrons de sectors opacs i transparents codificats en ell. Quan gira el disc, els segments

opacs bloquegen la llum i els transparents la deixen passar. Això ens genera els polsos d’una

forma de ona quadrada, la qual podrà ser interpretada com a posició o moviment.

Figura 3.28. Components d’un codificador òptic

Un codificador que ens fes arribar una simple sèrie de polsos no seria útil perquè no podria

indicar la direcció de rotació. Quan utilitzem dues pistes codificades amb sectors de posició

desfasats 90˚(figura 2) es pot indicar tant la posició com la direcció de rotació mitjançant els

dos canals de sortida del codificador de quadratura. Per exemple, si es produeix primer un pols

en A i llavors en B, el disc està girant en sentit horari. Si té lloc primer un pols en B i després en

A, el disc està girant en el sentit invers de les agulles del rellotge. Per tant, si es monitoritza

tant el número de polsos com la fase relativa que hi ha entre les senyals A i B, es pot fer un

seguiment de la posició i la direcció de rotació.

Figura.3.29. Senyals A i B d’un codificador en quadratura

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 57 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Alguns codificadors de quadratura també inclouen un tercer canal de sortida – anomenat zero

o senyal de referència – que subministra un únic pols per revolució. Es pot utilitzar aquest únic

pols per la determinació precisa d’una posició de referència. En la majoria dels codificadors

aquesta senyal s’anomena Z-Terminal o índex.

Amb els codificadors incrementals només es poden mesurar els canvis en la posició (a partir

dels quals es pot determinar la velocitat i l’acceleració), però no és possible determinar la

posició absoluta d’un objecte. El codificador capaç d’això és el codificador absolut, que té

l’avantatge que es pot adaptar, de manera que la roda del codificador giri una volta en

correspondència amb la longitud total del desplaçament de la màquina.

Per realitzar les mesures d’un codificador, es necessita un component electrònic bàsic

anomenat comptador. Basat en les seves diverses entrades, un comptador bàsic emet un valor

que representa el número de flancs (transicions de nivell baix a nivell alt a la forma d’ona)

comptats. La majoria de comptadors tenen tres entrades rellevants – la porta (gate), la font

(source) i amunt/avall (up/down). El comptador compta els esdeveniments registrats en

l’entrada de la font (source) i, depenent de l’estat de la línea “up/down”, augmenta o

disminueix el comptador. Per exemple, si la línea “up/down” està a nivell alt el comptador

l’augmenta , i si està a nivell baix la disminueix. La figura 3.30 mostra una versió simplificada

d’un comptador.

Figura.3.30. Model simplificat d’un comptador

Un codificador disposa normalment de cinc cables que són necessaris per la seva connexió als

motors. Es poden utilitzar aquests cables per subministrar energia al codificador i llegir les

senyals A, B i Z. La figura 4 ens mostra una taula típica dels pins d’un codificador incremental.

Figura.3.31. Pins d’un codificador incremental

Tenint en compte el comptador descrit anteriorment, la senyal A es connectaria al terminal

font (source), que es la senyal en la que es comptaran els polsos. La senyal B al terminal

“up/down” i les senyals de +5Vcc i terra es poden connectar a qualsevol font d’alimentació.

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 58 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

El procés per el qual els flancs que s’han comptat es converteixen en posició depèn del tipus de

codificació utilitzat. Hi ha tres tipus bàsics de codificació: X1, X2 I X4.

Codificació X1

Quan el pols en el canal A es produeix abans que en el B, l’augment es produeix pel flanc de

pujada del canal A. Quan el pols en el canal B es produeix abans que el canal A, el decrement

es produeix per el flanc de baixada del canal A.

Figura.3.32. Codificació X1

Codificació X2

El mateix comportament té lloc amb la codificació X2, excepte que els augments i decrements

del comptador es produeixen amb cada flanc del canal A. Cada cicle es tradueix en dos

augments o dos decrements.

Figura.3.33. Codificació X2

Codificació X4

El comptador augmenta o disminueix de forma similar amb cada flanc dels canals A i B

depenent de si els polsos es produeixen en un canal abans que l’altre. Cada cicle es tradueix en

quatre increments o decrements. Amb aquesta codificació aconseguim més resolució.

Figura.3.34. Codificació X4

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 59 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Una vegada establert el tipus de codificació i que ja s’han comptat els impulsos, la conversió a

una posició és qüestió d’utilitzar una de les següents formules:

Posició en moviments rotatius

La quantitat de rotació és:

On N: número de polsos generats per el codificador per cada gir de l’eix

x: tipus de codificació

Posició en moviments lineals

La quantitat de desplaçament és:

On PPI: polsos per polzada (paràmetre específic per cada codificador)

3.7 BATERIA SLA 12V 1.2AH

Bateria de 12V que ens dóna alimentació a tot el robot. Es pot carregar a 14.1V amb una font

d’alimentació acoblada al connector, que el trobem en el panell de subministrament de

potència de la plataforma, però sobretot limitant que el corrent de càrrega no sobrepassi els

0.36A.

A continuació es resumeixen algunes de les seves característiques més importants:

Característica Valor Voltatge nominal 12 V Capacitat nominal 1.2 Ah, 1200 mAh

Màxim corrent de càrrega 0.36 A Màxim corrent de descàrrega 18 A max

Dimensions (LxWxH) 97mm x 43mm x 52mm Pes 590 g

Terminal T1 Taula.3.12. Especificacions bateria 12V

Figura.3.35. Bateria adjunta a la base del robot

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 60 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

4. INTRODUCCIÓ A MATLAB I SIMULINK

4.1 MATLAB

Matlab és un programa de gran acceptació en enginyeria destinat a realitzar càlculs tècnics,

científics i de propòsit general. En ell s’integren operacions de càlcul, visualització i

programació, on la interacció amb l’usuari es fa a través d’una notació matemàtica clàssica.

Els usos i aplicacions típics de Matlab són els següents:

Matemàtiques i càlculs

Desenvolupament d’algoritmes

Adquisició de dades

Modelat, simulació i prototip

Anàlisi i processament de dades

Gràfics científics i d’enginyeria

Desenvolupament d’aplicacions

Matlab consta de cinc parts fonamentals:

1. Entorn de desenvolupament. Es tracta d’un conjunt d’utilitats que permeten l’ús de

funcions Matlab i fitxers en general. Moltes d’aquestes utilitats són interfícies

gràfiques d’usuari. Inclou l’espai de treball de Matlab i la finestra de comandes.

2. La llibreria de funcions matemàtiques Matlab. Es tracta d’un ampli conjunt

d’algoritmes de càlcul que comprèn des de les funcions més bàsiques com la suma,

sinus o cosinus fins a funcions més complexes com la inversió de matrius, el càlcul

d’autovalors o les transformades de Fourier.

3. Gràfics. Matlab disposa d’un conjunt d’utilitats destinades a visualitzar vectors i

matrius en forma de gràfics. Existeix una gran quantitat de possibilitats per ajustar

l’aspecte dels gràfics.

4. Interfície d’aplicació de Matlab (API). Consisteix en una llibreria que permet escriure

programes executables independents en C i altres llenguatges, accedint, mitjançant

DLLs, a les utilitats de càlcul matricial de Matlab.

La gestió de complements de Matlab es realitza mitjançant els toolbox. Un toolbox de Matlab

és un conjunt de funcions i algoritmes de càlcul especialitzats en una àrea de coneixements

concrets com pot ser: tractament de senyals, teoria de sistemes, etc.

En el nostre cas del kit STM32F4DISCOVERY el propi fabricant és l’encarregat de proporcionar

les funcions de la placa i els seus perifèrics mitjançant paquets de llibreries que ens podem

descarregar.

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 61 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

La figura 4.1 ens mostra l’organització per defecte de finestres que ens trobem quan

arrenquem Matlab per primera vegada. Les finestres que hi apareixen són:

1. Estructura del directori en el que ens trobem.

2. Història de funcions teclejades en el passat.

3. Finestra d’edició de programes Matlab (que s’escriuen en un llenguatge propi de

Matlab i s’emmagatzemen en fitxers .m).

4. Línia d’entrada de comandes de Matlab.

5. Espai de treball on s’emmagatzemen les variables

Matlab permet emmagatzemar en un fitxer les variables de l’espai de treball. Aquesta funció

l’utilitzarem en el treball per guardar les dades, poder visualitzar-les amb un gràfic i ajustar-les.

L’ordre que s’utilitza es save, que es pot utilitzar de diferents formes. A la taula 4.1 en podem

veure un resum:

Ordre Operació realitzada

Save Crea l’arxiu de nom matlab.mat a la carpeta actual. Aquest arxiu conté totes les variables que existeixin en aquell moment a l’entorn Matlab.

Save nomarxiu Crea l’arxiu de nom nomarxiu.mat a la carpeta actual. Aquest arxiu conté totes les variables que existeixin en aquell moment a l’entorn Matlab.

Save nomarxiu x y z Aquest arxiu conté únicament les variables x, y i z.

Taula.4.1. Emmagatzemar arxius Matlab

1

2 3 4

5

Figura.4.1. Organització finestres Matlab

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 62 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Per recuperar les variables emmagatzemades en un fitxer prèviament creat ens ajudarem de la

funció load. La taula 4.2 ens il·lustra tres operacions típiques de recuperació de dades:

Ordre Operació realitzada

load Llegeix totes les variables de l’arxiu de nom matlab.mat de la carpeta actual. Si alguna de les variables té un nom que coincideix amb una altre que ja existeix dins el Matlab, es produirà la destrucció de la variable existent per deixar lloc a la nova variable.

load nomarxiu Igual que en el cas anterior però es llegeix l’arxiu nomarxiu.mat de la carpeta actual.

load nomarxiu x y z Igual que en el cas anterior però llegeix únicament les variables x, y i z.

Taula.4.2. Carregar arxius Matlab

L’altre funció que també utilitzarem de Matlab és el plot. A partir de les variables que tinguem

ja emmagatzemades, utilitzarem un plot per poder visualitzar-les en un gràfic, ajustar el seu

aspecte i calcular les variables que necessitem. A la figura 4.2 en podem veure un exemple:

L’ordre dels paràmetres és important.

Visualitzar una malla.

Etiqueta eix x.

Etiqueta eix y.

Figura.4.2. Exemple funció plot Matlab

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 63 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

4.2 SIMULINK

Simulink és l’eina principal amb la qual es desenvoluparan els programes d’aquest projecte. A

continuació s’expliquen les seves característiques bàsiques, com construir un model, com fer la

simulació, com transferir els programes a la placa i algun exemple bàsic.

4.2.1 Característiques bàsiques

Simulink és un paquet de software per modelar, simular i analitzar sistemes dinàmics.

Principalment, es tracta d’un entorn de treball gràfic, en el que s’especifiquen les parts d’un

sistema i la seva interconnexió en forma de diagrames de blocs. A més de les seves capacitats

de simulació que disposa, també convé destacar que conté còmodes utilitats de visualització i

emmagatzematge dels resultats obtinguts durant la simulació.

En resum, les característiques principals d’aquest entorn són:

Presentació del sistema com una interconnexió de blocs elementals.

Cada bloc porta associat un model matemàtic que representa la seva relació

entrada/sortida.

Àmplia capacitat de simulació dels sistemes.

Fàcil visualització dels resultats.

4.2.2 Com arrencar Simulink

Existeixen diferents maneres de començar un projecte amb simulink, la més senzilla és teclejar

des de la finestra de comandes de Matlab:

>> simulink

També es possible accedir al programa des de la pestanya New/Simulink model de la barra de

Matlab, tal i com es mostra a la figura 4.3.

Figura.4.3. Començar un projecte simulink

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 64 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

4.2.3 Llibreria Simulink

Per accedir a la llibreria de Simulink hem de fer clic dins de la icona Library browser del menú

principal i se’ns obrirà una finestra com la que es mostra a la figura 4.4. En aquesta finestra es

mostren totes les llibreries que tenim disponibles. Cada una d’elles conté blocs elementals

amb els que podrem construir diferents sistemes. En funció de la instal·lació concreta que

seleccionem de simulink, el nombre de llibreries podrà ser més gran o menys.

Figura.4.4. Llibreria de simulink

4.2.4 Waijung Blockset

Waijung és una família de conjunts de blocs de Simulink utilitzada perquè generi fàcilment i

automàticament codi C dels seus models de simulació. Gràcies aquest sistema podrem

treballar en el projecte les aplicacions de la placa STM32F4 amb conjunts de blocs de simulink.

Waijung ha estat dissenyat per donar suport a la família STM32F4 i proporciona una llibreria

amb tots els blocs dels perifèrics que disposem a la placa i també blocs de mòduls que podem

afegir.

Els avantatges que ens proporciona són els següents:

Permet mesurar fàcilment el temps d’execució dels programes en temps real.

Flexibilitat a l’hora de definir diferents punts de captura de temps.

Fàcil compilació, generació del codi C i descàrrega del programa a la placa.

Fàcil detecció errors.

Elevada velocitat d’adquisició de dades en temps real i fàcil visualització.

Configuració de la targeta simple i altament flexible.

Permet fer un bon seguiment de programa.

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 65 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Per instal·lar el conjunt de blocs i afegir-los a la nostra llibreria de simulink, primer de tot

haurem de descarregar el paquet des de la seva pàgina web.

Figura.4.5. Descàrrega del paquet de waijung

Una vegada finalitzada la descàrrega, extraiem el paquet d’instal·lació descarregat en el

directori desitjat del nostre PC. Aquest serà el directori arrel del conjunt d’arxius de waijung,

encara que es pot extreure i executar des de qualsevol altre directori del PC. Es recomana

extreure a un directori en el qual és tingui accés d’escriptura complert.

Figura.4.6. Arxius descàrrega de waijung

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 66 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Per iniciar la instal·lació del paquet farem doble clic sobre l’arxiu de codi de Matlab

install_waijung.m, tot seguit s’obrirà el codi amb l’editor de programes de Matlab i clicarem

damunt la icona run perquè comenci, tal i com es mostra a la figura 4.7.

És important que ens trobem com a administrador del PC.

Figura.4.7. Codi instal·lació waijung

Després d’una instal·lació correcta, la finestra d’ordres del Matlab ens ha d’informar del

següent:

Figura.4.8. Estat instal·lació correcta waijung

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 67 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Una vegada finalitzada la instal·lació i quan tornem a obrir la llibreria de simulink, podrem

observar l’aparició d’una nova llibreria anomenada waijung blockset (figura 4.9), la qual serà

l’encarregada de proporcionar tot el conjunt de blocs referents a la targeta STM32F4 i els seus

mòduls exteriors.

Figura.4.9. Llibreria waijung blockset

4.2.5 Exemple bàsic

Com a exemple, crearem un model que ens permeti fer el control de 4 LEDs repetidament.

Encendrem i apagarem els següents LEDs amb una seqüència de 200ms per cada estat.

El funcionament és el següent:

Estat1: LED1 ON, tots els altres OFF

Estat2: LED2 ON, tots els altres OFF

Estat3: LED3 ON, tots els altres OFF

Estat4: LED4 ON, tots els altres OFF

Repetició de tots els estats

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 68 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Primer pas: creació del model

Des de la finestra "simulink Library browser", farem clic sobre el botó "create a new model" i

automàticament s’obrirà una finestra en blanc que serà la finestra de disseny per al nostre

model.

Segon pas: Introducció de blocs en el model

Els elements s’introdueixen fent un arrossegament amb el ratolí des de la finestra que conté el

llistat de tots els blocs fins a la finestra de disseny. En el nostre cas necessitarem els següents

blocs:

Dins de la categoria Device configuration de waijung blockset, el bloc Target Setup.

Utilitzem aquest element per fer la configuració de la targeta STM32F4 en un model

simulink.

Dins de la categoria Sources de Simulink, el bloc Counter Free-Running.

Aquest bloc és un comptador que es desborda de nou a zero després d’assolir el valor

màxim possible per a un número especificat de bits.

Dins de la categoria Logic and bit operations de Simulink, el bloc bitwise AND.

Aquest bloc realitza bit a bit a l’entrada la funció especificada, en aquest cas una AND.

Dins de la categoria Logic and bit operations de Simulink, el bloc Compare to

constant.

Utilitzem aquest bloc per comparar un valor amb una constant. La sortida de les dades

pot ser de tipus booleà o de 8 bits.

Dins de la categoria On-chip peripherals/IO de waijung blockset, el bloc Digital

Output.

Aquest bloc ens implementa un mòdul de sortida digital en els pins que seleccionem.

Una vegada introduïts aquests models, la finestra de disseny ens presenta un aspecte com el

de la figura 4.10.

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 69 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Figura.4.10. Model exemple control LEDs

Tercer pas: Modificació dels paràmetres dels blocs introduïts

Tots els blocs de simulink ens permeten una certa configuració. En particular d’aquest cas el

bloc corresponent a la configuració de la targeta configurarem el compilador (MDK-ARM), el

MCU (STM32F407VG LQFP 100; STM32F4 DISCOVERY) i el temps de mostreig a 0.01 segons. Al

bloc del comptador establirem el nombre de bits a 2, ja que volem controlar quatre LEDs i així

obtindrem quatre combinacions de bits diferents, i el temps de mostreig a 0.2 segons. Pel que

fa referència als blocs de les constants modificarem el valor de la constant d’acord amb els

quatre estats diferents i que la sortida sigui del tipus booleà. Per últim el bloc de les sortides

digitals també l’establirem a un temps de mostreig de 0.2 segons i seleccionarem els pins

d’acord a les connexions en les que es troben els quatre LEDs.

Pin LED

PD12 GREEN LD4

PD13 ORANGE LD3

PD14 RED LD5

PD15 BLUE LD6 Taula.4.3. Pins LEDs STM32F4

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 70 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Quart pas: Interconnexió dels elements

Una vegada situats els elements a la finestra de disseny, és necessari establir les connexions

entre ells. Per connectar dos elements hem de fer un arrossegament amb el ratolí des de la

sortida d’un d’ells fins a l’entrada de l’element que li correspon. Una vegada establertes les

connexions necessàries en el nostre sistema, haurem d’obtenir un resultat com el que es

mostra a la figura 4.11.

Figura.4.11. Connexions dels blocs

Cinquè pas: Llançament del programa a la placa i comprovació dels resultats

Farem clic sobre l’icona Build Model de simulink, o bé CTRL+B, i ens apareixerà la finestra que

es mostra a la figura 4.12. A la imatge podem observar el procés complet de transmissió del

model a la placa STM32F4 en el que s’han de realitzar els següents passos:

Nota: El color verd damunt de cada bloc indica que el procés s’ha completat correctament.

Generació del codi font

Generació dels paquet del codi font

Compilació del codi font

Connexió amb la targeta STM32F4

Descàrrega i verificació

Targeta en funcionament

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 71 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Figura.4.12. Compilació i transmissió del programa a la placa

Els resultats d’aquesta seqüència d’exemple es mostren a continuació en les figures

4.13,4.14,4.15 i 4.16 on entre cada una d’elles hi ha una transmissió de temps de 0.2 segons.

Figura.4.13. Pas 1 (LED3) Figura.4.14. Pas 2 (LED5)

Figura.4.15. Pas 3 (LED6)

Figura.4.16. Pas 4 (LED4)

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 72 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

5. aMG USB CONVERTER

En aquest projecte per tal de poder establir una comunicació amb el robot ens ajudarem d’un

convertidor d’USB del pc a la UART de la placa, que ens permetrà transmetre les consignes de

velocitat i direcció als motors i rebre la posició i direcció dels codificadors en cada instant.

5.1. DESCRIPCIÓ

Alta velocitat (480MHz) USB

Permet la comunicació entre un PC amb fins a dos

dispositius SPI/I2C/UART

Permet la comunicació entre un PC i un dispositiu

SPI/I2C/UART amb 8 pins GPIO addicionals.

Permet la comunicació entre un PC i la placa FiO

(fins a 2 kHz en llaç obert, 1 kHz amb circuit tancat

HIL simulació).

5.2. APLICACIONS

Convertidor de USB a UART amb alta velocitat de transmissió (Fins a 12 MBauds).

Convertidor de USB a I2C.

Convertidor de USB a SPI.

Convertidor de USB a GPIO.

FiO cap a l’adquisició de dades d’alta velocitat del Simulink, fins a 2 kHz (depenent de

la velocitat del PC).

FiO cap a un bucle tancat de Simulink, fins a 1 kHz (depenent de la velocitat del pc).

5.3. EXEMPLES D’APLICACIONS:

Exemple 1:

Figura.5.1. aMG USB Converter N

Figura.5.2. Comunicació entre un PC i dos dispositius SPI/I2C/UART

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 73 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Exemple 2:

Exemple 3:

Figura.5.3. Comunicació entre un PC i un dispositiu SPI/I2C/UART amb 8 Pins GPIO

Figura.5.4. Comunicació entre un PC i la placa FiO a través de l’SPI

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 74 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

5.4. BLOC DE SUPORT AMB MATLAB/SIMULINK

Mòdul Nom del bloc Descripció

I2C master MPSSE_I2C ReadWrite Lectura i escriptura I2C

SPI master MPSSE_SPI ReadWrite Comunicació SPI amb el dispositiu

esclau.

COM Rx/Tx Host_COM_Configuration Configuració del bloc COM

COM Rx/Tx

Host_COM_Tx

Transmissió de dades al port COM.

Es requereix el bloc:

Host_COM_Configuration

COM Rx/Tx

Host_COM_Rx

Recepció de dades al port COM.

Es requereix el bloc:

Host_COM_Configuration

GPIO GPIO_In Lectura de l’entrada digital del

port especificat

GPIO GPIO_Out Envia la sortida digital al pin

especificat.

Fast serial isolated Host_HSS_Read Llegeix les dades de FiO

Fast serial isolated Host_HSS_Write Escriu les dades cap a FiO

Taula.5.1. Descripció dels blocs disponibles a la llibreria del convertidor

Figura.5.5. Blocs de suport del convertidor amb Simulink

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 75 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

5.5 INSTAL·LACIÓ DEL CONTROLADOR USB PER AL XIP FTDI

1. Descarregar els controladors VCP des de la pàgina web de FTDIChip.

2. Seguir la guia d’instal·lació del controlador.

3. Configurar els ports

1. Obrir el “Device Manager”. Per fer-ho ens dirigim a: “Control panel” “System”

“Hardware” “Device Manager”. A la secció dels ports (COM & LPT) ens apareixeran

dos ports COM més disponibles, tal i com es mostra a la figura següent:

Figura.5.6. Visualització dels ports (COM & LPT)

2. En el cas que observem que el port COM no ens apareix després de connectar el

convertidor d’USB a UART serà probablement que hem instal·lat el controlador D2XX

en lloc del VCP. Necessitarem activar el VCP per la selecció del node i ho farem de la

següent manera: “Universal Serial Bus Controllers” “USB Serial Converter A/B”

“Properties”. A la nova finestra que apareixerà seleccionarem la pestanya “Advanced”

“VCP Load”.

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 76 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

3. Per tal de gaudir de la comunicació de dades d’alta velocitat, seleccionarem "Fix

latency issue for aMG USB Converter-N".

Figura.5.7. Activació del VCP

Figura.5.8. Accés a les propietats del port sèrie USB

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 77 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

5.6 CONFIGURACIÓ DEL DISPOSITIU PER I2C, SPI, UART I GPIO

1. Mode de configuració per el mode normal (I2C, SPI, UART i GPIO)

Figura.5.10. Configuració dels canals del dispositiu aMG USB Converter - N

Figura.5.9. Fixació del temps de latència

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 78 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

2. I2C definició dels pins

Figura.5.11. Configuració per I2C

3. SPI definició dels pins

Figura.5.12. Configuració per SPI

4. UART definició dels pins

Figura.5.13. Configuració per UART

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 79 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

5. GPIO definició dels pins

Figura.5.14. Configuració per GPIO

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 80 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

6. COMUNICACIÓ VIA UART El tipus de comunicació seleccionada entre el PC i el robot que s’utilitzarà en tots els

programes realitzats en aquest projecte és la comunicació via UART.

6.1. UART SETUP

El bloc de configuració de la UART es troba en el navegador del simulink cercant: "Waijung

Blockset" -> "STM32F4 Target" -> "On-chip Peripherals" -> "UART".

El bloc ens apareixerà de la següent forma:

Figura.6.1. UART setup

6.1.1 Què hi podem configurar?

Figura.6.2. Configuració bloc UART Setup

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 81 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Element de configuració

Opció seleccionada/Valor Descripció

UART Module 1|2|3|4|5|6 Seleccionar el mòdul UART/USART per la configuració.

Baud rate (bps) Valor de configuració de la velocitat de comunicació Example: 9600,115200 or 1000000

Per el mòdul 1 i el mòdul 6 es pot configurar fins a 10.5Mbps i per els altres mòduls 2,3,4,5 fins a 5.25Mbps.

Data bits 8 8 bits de dades. Parity None | Odd | Even Selecció del bit de paritat

Stop bit 0.5 | 1 | 1.5 | 2 Selecció del bit d’stop Tx Pin Configuració del pin de transmissió

(Tx). O seleccionarem “Not used” per desactivar el Tx del mòdul seleccionat.

El senyal UART es transmetrà a un altre dispositiu a través del pin seleccionat.

Rx Pin Configuració del pin de transmissió (Rx). O seleccionarem “Not used” per desactivar el Rx del mòdul seleccionat.

El senyal UART serà rebut des de un altre dispositiu al pin seleccionat.

Hardware flow control

None|RTS|CTS|RTS/CTS Aquesta configuració només està disponible per als mòduls 1,2,3 i 6. Per al mòdul 4 i 5, aquesta opció s’ajustarà automàticament a None. None: per desactivar el control de flux per maquinari. - RTS: Habilitar l’RTS per al control de flux per maquinari. - CTS: Habilitar el CTS per al control de flux per maquinari. -RTS/CTS: Per activar els dos (RTS i CTS) per al control de flux per maquinari.

HWflow control, CTS Pin

Configuració del pin de transmissió (CTS).

El senyal de sortida CTS pot ser configurat per controlar el pin seleccionat.

HW flow control, RTS Pin

Configuració del pin de transmissió (RTS).

El senyal d’entrada RTS es pot configurar per rebre pel pin seleccionat.

Advance options Seleccionat / Desseleccionat Aquesta opció és per habilitar la configuració avançada, incloent la mida del buffer de memòria.

Rx buffer size 16|32|64|128|256|512|1024|2048 Selecció de la mida del buffer per la recepció (Rx). La mida ha d’estar en un nombre de 2^N i ha de ser superior a la longitud del paquet.

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 82 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Exemple: Per rebre un paquet Rx amb una longitud de 90 bytes, El buffer de Rx es pot configurar a 128 o més alt.

Tx buffer size 16|32|64|128|256|512|1024|2048 És similar que l’anterior, la mida ha d’estar en un nombre de 2^N i ha de ser més gran que la llargada del paquet enviat.

Taula.6.1. Opcions de configuració del bloc UART setup

6.1.2 Quan utilitzarem aquest bloc?

Aquest bloc ha de ser col·locat dins un model de Simulink, per activar i configurar el mòdul

UART que és necessita quan volem enviar o rebre dades d’un dispositiu extern.

6.1.3 Com funciona aquest bloc?

La configuració d’aquest bloc es dur a terme de la següent manera:

1. Habilitar el rellotge GPIO utilitzat per Tx, Rx, RTS i CTS.

2. Configurar una reassignació de pins per Tx, Rx, RTS i CTS.

3. Habilitar el rellotge del mòdul per seleccionar entre UART/USART.

4. Configurar els paràmetres per al mòdul de comunicació.

5. Habilitar el rellotge DMA.

6. Configuració de la transferència DMA PER Tx i Rx.

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 83 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

6.2. UART Rx

“Blocking mode”:

Figura.6.3. UART Rx amb bloqueig

“Non – blocking mode”:

Figura.6.4. UART Rx sense bloqueig

Existeixen dos tipus de configuració diferents per aquest bloc que són una comunicació en

mode bloqueig i l’altre sense. La diferència entre un i altre és que quan rebem dades des d’un

bloc UART Rx sense bloqueig, aquestes podran ser processades en un subsistema on

s’utilitzarà el senyal “READY” per habilitar-lo.

Aquest port “READY” pot tenir dos valors de sortida:

Un valor de 1 quan un nou paquet de dades està disponible.

Un valor de 0 quan un nou paquet de dades no està disponible.

En canvi, quan rebem dades des d’un bloc UART Rx amb bloqueig, no necessitarem de cap

senyal addicional que ens habiliti cap subsistema i una vegada s’hagi completat tot el paquet,

podrem actuar directament sobre les dades en qualsevol altre bloc. Així amb aquest mode és

com es treballaran tots els programes d’aquest projecte i per tant només s’explicarà aquest, ja

que l’altre és igual només afegint la línia del port “READY”.

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 84 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

6.2.1 Rebre paquet binari

Aquest és el mode de configuració per utilitzar el bloc UART Rx rebent un paquet binari.

Figura.6.5. Configuració bloc UART Rx rebent paquet binari

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 85 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Element de configuració

Opció seleccionada/Valor Descripció

UART Module 1|2|3|4|5|6 Seleccionar el mòdul UART/USART per rebre les dades de Rx.

Transfer mode Blocking | Non-Blocking

Blocking: El procés de la CPU esperarà dades fins a completar el paquet rebut. Llavors sortirà del bloc Rx per continuar executant l’altre bloc. Aquesta manera es adequada per al processament de temps real amb HIL. Non block: Aquesta configuració funciona de forma asincrònica (interrupció de programari). La sortida del bloc Rx cridarà a la funció d’un subsistema.

Packet mode Binary|Ascii|String Buffer

Nota: Aquesta configuració és amb “binari”.

Binary: Aquest bloc només acceptarà el paquet que contingui dades binàries. En ell s’especificarà la capçalera, el format de dades i la terminació d’un paquet a rebre. Ascii: Aquest bloc només acceptarà el paquet que contingui dades ascii (string) amb el format sscanf. El bloc crearà el port de sortida corresponent amb el format sscanf%. String Buffer: Aquest bloc rep les dades d’una cadena de caràcters i els emmagatzema en un espai de memòria intermèdia sense processar el paquet.

Header Especifica el model d’encapçalament o de paquet

a rebre.

Exemple: Si un paquet conté 2 bytes d’encapçalament,

[0x7E 0x7E].

Aquesta capçalera s’utilitza per a la sincronització de paquets. El bloc buscarà la capçalera i una vegada la trobi i correspongui llavors els següents bytes es processaran.

Number of data port, type DOUBLE

Nombre de tipus de dades “double” al paquet.

1 port de dades es combinarà amb 8bytes del paquet.

Number of data port, type SINGLE

Nombre de tipus de dades “single” al paquet.

1 port de dades es combinarà amb 4bytes del paquet.

Number of data port, type INT8

Nombre de tipus de dades “int8” al paquet.

1 port de dades es combinarà amb 1byte del paquet.

Number of data port, type UINT8

Nombre de tipus de dades “uint8” al paquet.

1 port de dades es combinarà amb 1byte del paquet.

Number of data port, type int16

Nombre de tipus de dades “int16” al paquet.

1 port de dades es combinarà amb 2bytes del paquet.

Number of data port, type uint16

Nombre de tipus de dades “uint16” al paquet.

1 port de dades es combinarà amb 2bytes del paquet.

Number of data port, type int32

Nombre de tipus de dades

“int32” al paquet.

1 port de dades es combinarà amb 4bytes del paquet.

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 86 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Number of data port, type uint32

Nombre de tipus de dades “uint32” al paquet.

1 port de dades es combinarà amb 4bytes del paquet.

Terminator Especifica el patró (model) de terminació dels paquets a

rebre.

Exemple: Si un paquet conté 2bytes d’una terminació,

[0x03 0x03]

Aquesta terminació s’utilitza per a la validació de paquets, una vegada que la capçalera es correspon i es reben tots els tipus de dades, els següents bytes seran de terminació. Si la terminació no correspon, el bloc rebutjarà els bytes anteriors (capçalera i dades), i continuarà la recerca d’un nou paquet.

Sample time (sec) Configuració del temps de mostreig

Taula.6.2. Opcions de configuració del bloc UART Rx amb paquet binari

6.2.2 Rebre paquet Ascii

Aquest és el mode de configuració per utilitzar el bloc UART Rx rebent un paquet “Ascii”.

Figura.6.5. Configuració bloc UART Rx rebent paquet ascii

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 87 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Element de configuració

Opció seleccionada/Valor Descripció

UART Module 1|2|3|4|5|6 Seleccionar el mòdul UART/USART per rebre les dades de Rx.

Transfer mode Blocking | Non-Blocking

Nota: Aquest mode de configuració és per bloqueig.

Blocking: El procés de la CPU esperarà dades fins a completar el paquet rebut. Llavors sortirà del bloc Rx per continuar executant l’altre bloc. Aquesta manera es adequada per al processament de temps real amb HIL. Non block: Aquesta configuració funciona de forma asincrònica (interrupció de programari o bé a través d’una contesta). La sortida del bloc Rx cridarà a la funció d’un subsistema.

Packet mode Binary|Ascii|String Buffer

Nota: Aquesta configuració és amb “ascii”.

Binary: Aquest bloc només acceptarà el paquet que contingui dades binàries. En ell s’especificarà la capçalera, el format de dades i la terminació d’un paquet a rebre. No s’acceptarà el paquet que contingui un encapçalat o una terminació no vàlides. Ascii: Aquest bloc només acceptarà el paquet que contingui dades ascii (string) amb el format sscanf. El bloc crearà el port de sortida corresponent amb el format sscanf%. String Buffer: Aquest bloc rep les dades d’una cadena de caràcters i els emmagatzema en un espai de memòria intermèdia sense processar el paquet.

Format Patró de format ascii

Exemple: “Valor=%d”

Formats específics:

%u, %i, %d, %o, %x : tipus “uint32”.

%e, %g, %f : tipus “single”.

%s:tipus “string”. La sortida quedarà limitada però a 127 caràcters màxim.

%c: tipus “int8”. Terminator LF|CR|CRLF La terminació en mode ascii és fa servir per

detectar el final d’un paquet. El bloc continuarà rebent dades, les emmagatzemarà a la memòria i al mateix temps detectarà la terminació. Una vegada l’hagi trobat i comprovat, el bloc interpretarà la funció sscanf per extreure el valor en un paquet.

Sample Time (sec)

Configuració del temps de mostreig

Taula.6.3. Opcions de configuració del bloc UART Rx amb paquet ascii

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 88 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

6.2.3 Rebre paquet ascii/string buffer

Aquest és el mode de configuració per utilitzar el bloc UART rebent un paquet “Ascii”. El

paquet rebut s’emmagatzemarà en un “string buffer”.

Figura.6.6. Configuració bloc UART Rx rebent paquet ascii/string buffer

Element de configuració

Opció seleccionada/Valor Descripció

UART Module 1|2|3|4|5|6 Seleccionar el mòdul UART/USART per rebre les dades de Rx.

Transfer mode Bocking | Non-Blocking

Nota: Aquest mode de configuració és per bloqueig.

Blocking: El procés de la CPU esperarà dades fins a completar el paquet rebut. Llavors sortirà del bloc Rx per continuar executant l’altre bloc. Aquesta manera es adequada per al processament de temps real amb HIL. Non block: Aquesta configuració funciona de forma asincrònica (interrupció de programari). La sortida del bloc Rx cridarà a la funció d’un subsistema.

Packet mode Binary|Ascii|String Buffer

Nota: Aquesta configuració és amb “string buffer”.

Binary: Aquest bloc només acceptarà el paquet que contingui dades binàries. En ell s’especificarà la capçalera, el format de dades i la terminació d’un paquet a rebre. No s’acceptarà el paquet que contingui un encapçalat o una terminació no vàlides.

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 89 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Ascii: Aquest bloc només acceptarà el paquet que contingui dades ascii (string) amb el format sscanf. El bloc crearà el port de sortida corresponent amb el format sscanf%. String Buffer: Aquest bloc rep les dades d’una cadena de caràcters i els emmagatzema en un espai de memòria intermèdia sense processar el paquet.

Buffer Seleccionar un nom per l’espai de memòria

intermèdia on es guardarà el paquet rebut.

El nom de la memòria intermèdia estarà disponible per seleccionar-lo quan s’eliminin les dades volàtils d’emmagatzematge del bloc amb la configuració del tipus “string”.

Terminator LF|CR|CRLF La terminació en mode ascii s’utilitza per detectar el final d’un paquet. El bloc continuarà rebent dades ascii, les emmagatzemarà a la memòria intermèdia i al mateix temps detectarà la terminació. Una vegada l’hagi trobat i comprovat, el bloc copiarà el paquet a la memòria de cadena especificada.

Sample Time (sec)

Configuració del temps de mostreig

Taula.6.4. Opcions de configuració del bloc UART Rx amb paquet ascii/string buffer

6.2.4 Quan utilitzarem aquest bloc?

Utilitzarem aquest bloc per rebre dades quan l’aplicació necessita comunicar-se amb un

dispositiu a través del protocol UART.

6.2.5 Com funciona aquest bloc?

El bloc obtindrà les dades de la memòria del mòdul UART Rx i després processarà el

paquet. Mitjançant l’ús de la funció DMA, els bytes rebuts s’emmagatzemaran en un

“buffer” de forma automàtica, mentre la CPU estarà ocupada amb un altre bloc en el

mateix interval de temps sense perdre bytes.

6.3. UART Tx

Aparició d’aquest bloc dins el simulink:

Figura.6.7. UART Tx

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 90 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

6.3.1 Transmetre un paquet binari

Aquesta és la configuració per utilitzar el bloc UART Tx en mode “bloqueig” per transmetre un

paquet “Binari”.

Figura.6.8. Configuració bloc UART Tx enviant paquet binari

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 91 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Element de configuració

Opció seleccionada/Valor Descripció

UART Module 1|2|3|4|5|6 Seleccionar el mòdul UART/USART per rebre les dades de Rx.

Transfer mode Bocking | Non-Blocking

Nota: Aquest mode de configuració és per bloqueig.

Blocking: El bloc esperarà fins que hi hagi tots els bytes en el paquet de transmissió abans d’anar cap al següent procés. Non block: Després d’escriure les dades en el paquet de transmissió, el bloc no esperarà a que acabi la transferència. La transmissió de paquets serà manejada per el mòdul DMA.

Packet mode Binary|Ascii|String Buffer

Nota: Aquesta configuració és amb “binari”.

Binary: Aquest mode transfereix el paquet binari. Ascii: Aquest bloc generarà un paquet de memòria intermèdia ASCII usant sprintf. Les dades d’entrada al port són el paràmetre per sprintf corresponent al especificador de format. String Buffer: El bloc transmet dades provinents de la memòria intermèdia de la cadena.

Header Especifica el model d’encapçalament o de paquet

a enviar.

Exemple: Si un paquet conté 2 bytes d’encapçalament,

[0x7E 0x7E].

S’escriuen els bytes d’encapçalament per especificar el començament del paquet.

Number of data port, type DOUBLE

Nombre de tipus de dades “double” al paquet de

transmissió.

1 port de dades s’extraurà a 8bytes del paquet de transmissió.

Number of data port, type SINGLE

Nombre de tipus de dades “single” al paquet de

transmissió.

1 port de dades s’extraurà a 4bytes del paquet de transmissió.

Number of data port, type INT8

Nombre de tipus de dades “int8” al paquet de

transmissió.

1 port de dades s’extraurà a 1byte del paquet de transmissió.

Number of data port, type UINT8

Nombre de tipus de dades “uint8” al paquet de

transmissió.

1 port de dades s’extraurà a 1byte del paquet de transmissió.

Number of data port, type int16

Nombre de tipus de dades “int16” al paquet de

transmissió.

1 port de dades s’extraurà a 2bytes del paquet de transmissió.

Number of data port, type uint16

Nombre de tipus de dades “uint16” al paquet de

transmissió.

1 port de dades s’extraurà a 2bytes del paquet de transmissió.

Number of data port, type int32

Nombre de tipus de dades

“int32” al paquet de transmissió.

1 port de dades s’extraurà a 4bytes del paquet de transmissió.

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 92 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Number of data port, type uint32

Nombre de tipus de dades “uint32” al paquet de

transmissió.

1 port de dades s’extraurà a 4bytes del paquet de transmissió.

Terminator Especifica el patró (model) de terminació dels paquets a

transmetre.

Exemple: Si un paquet conté 2bytes d’una terminació,

[0x03 0x03]

S’utilitzen els bytes de terminació per especificar el final d’un paquet.

Sample time (sec) Configuració del temps de mostreig

Taula.6.5. Opcions de configuració del bloc UART Tx amb paquet binari

6.3.2 Transmetre un paquet ascii

Aquesta és la configuració per utilitzar el bloc UART Tx en mode “bloqueig” per transmetre un

paquet “Ascii”.

Figura.6.9. Configuració bloc UART Tx enviant paquet ascii

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 93 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Element de configuració

Opció seleccionada/Valor Descripció

UART Module 1|2|3|4|5|6 Seleccionar el mòdul UART/USART per rebre les dades de Rx.

Transfer mode Bocking | Non-Blocking

Nota: Aquest mode de configuració és per bloqueig.

Blocking: El bloc esperarà fins que hi hagi tots els bytes en el paquet de transmissió abans d’anar cap al següent procés. Non block: Després d’escriure les dades en el paquet de transmissió, el bloc no esperarà a que acabi la transferència. La transmissió de paquets serà manejada per el mòdul DMA.

Packet mode Binary|Ascii|String Buffer

Nota: Aquesta configuració és amb “ascii”.

Binary: Aquest mode transfereix el paquet binari. Ascii: Aquest bloc generarà un paquet de memòria intermèdia ASCII usant sprintf. Les dades d’entrada al port són el paràmetre per sprintf corresponent al especificador de format. String Buffer: El bloc transmet dades provinents de la memòria intermèdia de la cadena.

Format Patró de format ascii per sscanf.

Exemple: “Valor=%d”

Formats específics:

%u, %i, %d, %o, %x : tipus “uint32”.

%e, %g, %f : tipus “single”.

%s:tipus “string”. La sortida quedarà limitada però a 127 caràcters màxim.

%c: tipus “int8”. Terminator LF|CR|CRLF

(Específica el model de terminació del paquet a

rebre).

La terminació en mode ascii és fa servir per detectar el final d’un paquet.

Sample Time (sec)

Configuració del temps de mostreig

Taula.6.6. Opcions de configuració del bloc UART Tx amb paquet ascii

6.3.3 Transmetre paquet ascii/string buffer

Aquesta és la configuració per utilitzar el bloc UART Tx en mode “bloqueig” per transmetre un

paquet “Ascii”.

El paquet transmès prové d’un “string buffer”.

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 94 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Figura.6.10. Configuració bloc UART Tx enviant paquet ascii/string buffer

Element de configuració

Opció seleccionada/Valor Descripció

UART Module 1|2|3|4|5|6 Seleccionar el mòdul UART/USART per rebre les dades de Rx.

Transfer mode Bocking | Non-Blocking

Nota: Aquest mode de configuració és per bloqueig.

Blocking: El bloc esperarà fins que hi hagi tots els bytes en el paquet de transmissió abans d’anar cap al següent procés. Non block: Després d’escriure les dades en el paquet de transmissió, el bloc no esperarà a que acabi la transferència. La transmissió de paquets serà manejada per el mòdul DMA.

Packet mode Binary|Ascii|String Buffer

Nota: Aquesta configuració és amb “string buffer”.

Binary: Aquest mode transfereix el paquet binari. Ascii: Aquest bloc generarà un paquet de memòria intermèdia ASCII usant sprintf. Les dades d’entrada al port són el paràmetre per sprintf corresponent al especificador de format. String Buffer: El bloc transmet dades provinents de la memòria intermèdia de la cadena.

Buffer

Seleccionar un nom per l’espai de memòria

El nom de la memòria intermèdia estarà disponible per seleccionar-lo quan s’eliminin

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 95 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

intermèdia que es transmet les dades volàtils d’emmagatzematge del bloc amb la configuració del tipus “string”.

Terminator LF|CR|CRLF

(Específica el model de terminació del paquet a

rebre).

La terminació en mode ascii s’utilitza per detectar el final d’un paquet.

Sample Time (sec)

Configuració del temps de mostreig

Taula.6.7. Opcions de configuració del bloc UART Tx amb paquet ascii/string buffer

6.3.4 Quan utilitzarem aquest bloc?

Utilitzarem aquest bloc per transmetre dades quan l’aplicació necessita comunicar-se amb

un dispositiu a través del protocol UART.

6.3.5 Com funciona aquest bloc?

El bloc utilitza la memòria intermèdia DMA del mòdul UART especificat per manejar la

transmissió d’informació.

6.4. EXEMPLE BÀSIC UART

A continuació s’ha dissenyat un programa d’exemple en el que es pot observar de manera

clara i concisa el funcionament d’una transmissió d’informació via UART entre el kit STM32F4 i

el PC. Hi ha dos programes diferents, un que correspon a la targeta (STM32F4DISCOVERY) i

l’altre que correspon al PC. El nostre objectiu és establir una comunicació a temps real entre

els dos.

El sistema treballa a 100 Hz. És a dir, s’introdueix un temps de mostreig de 0.01 segons a la

targeta (a través del seu bloc de configuració), i de -1 a tots els altres blocs. D’aquesta manera,

s’aconsegueix que tots els blocs del programa carreguin el mateix temps de mostreig de la

targeta.

El valor de la consigna del “host” s’envia mitjançant el mòdul “Host Serial Tx” cap a la placa

“target”, on la rep el mòdul “UART3 Rx” i depenent del seu valor realitzarà el següent:

Consigna >=0 → LED5 ON

Consigna <0 → LED5 OFF

A la figura 6.12 s’observen les connexions necessàries entre la placa i el convertidor. En aquest

cas, com que l’únic que es realitza és una transmissió d’informació del PC a la placa, només

seran necessàries dues connexions:

STM32F4DISCOVERY CONVERTIDOR USB-UART

GND GND

UART3_Rx (PD9) Tx (canal A) Taula.6.8. Connexions entre la placa i el convertidor

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 96 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

6.4.1 Model Target

6.4.2 Model Host

Figura.6.12. Programa Host UART

Figura.6.11. Programa Target UART

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 97 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

6.4.3 Connexions

Figura.6.13. Connexions UART-Convertidor

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 98 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

7. ACCELERÒMETRE

7.1 INTRODUCCIÓ

L’LIS3DSH és un dispositiu integrat al kit STM32F4 que ens permet conèixer l’acceleració lineal

en 3 eixos (x,y i z). Disposa d’escales de selecció per l’usuari de ± 2 g / ± 4g / ± 6 g / ± 8g / ± 16g

i és capaç de mesurar acceleracions amb una freqüència de dades de sortida de 3,125 Hz fins a

1,6 kHz.

Es comunica i envia les dades al MCU central de la placa a través d’una interfície SPI (“Serial

Peripheral Interface).

S’ha considerat important el fet d’arribar a conèixer l’acceleració lineal del robot en el pla, ja

que ens permetrà tenir un coneixement més detallat de tots els seus moviments.

7.2 DIAGRAMA DE BLOCS I DESCRIPCIÓ DELS PINS

Diagrama de blocs:

Figura.7.1. Diagrama de blocs LIS3DSH

Descripció dels pins:

Figura.7.2. Descripció PINS LIS3DSH

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 99 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

7.3 MODES D’OPERACIÓ

L’acceleròmetre disposa de 2 modes d’operació diferents que són els següents:

“Power-down mode” (Valor per defecte després de l’arrencada) : Quan el dispositiu es

troba en aquest mode d’apagada, gairebé tots els blocs interns es desconnecten per

reduir al mínim el consum d’energia. Les interfícies digitals (I2C i SPI) segueixen actives

per permetre la comunicació amb el dispositiu. El contingut dels registres de

configuració es conserva i els registres de dades de sortida no s’actualitzen.

“Normal mode” : En mode normal, les dades es generen a la velocitat seleccionada a

través dels bits ODR. Existeixen nou configuracions diferents a través d’aquests bits,

que van de 3.125 Hz a 1600 Hz.

Els bits “output data rate” (ODR) , Zen, Yen i Xen del registre quatre de control (CTRL_REG4)

són utilitzats per seleccionar els diferents modes d’operació:

ODR3 ODR2 ODR1 ODR0 Selecció ODR

0 0 0 0 Power-down

0 0 0 1 3.125 Hz

0 0 1 0 6.25 Hz

0 0 1 1 12.5 Hz

0 1 0 0 25 Hz

0 1 0 1 50 Hz

0 1 1 0 100 Hz

0 1 1 1 400 Hz

1 0 0 0 800 Hz

0 0 0 1 1600 Hz Taula.7.1. Selecció modes d’operació

7.4 SERIAL PERIPHERAL INTERFACE (SPI)

El bus SPI (Serial peripheral interface) és un estàndard de comunicacions, utilitzat

principalment per a la transferència de dades entre circuits integrats en equips electrònics.

Amb aquest bus es pot controlar qualsevol dispositiu electrònic digital que accepti un flux de

bits sèrie regulat per un rellotge.

El protocol té una línia de rellotge, una línia de dades entrants, una línia de dades sortints i una

línia de “xip select”, que s’encarrega d’activar o desactivar el mòdul de comunicacions del

dispositiu amb què es desitja comunicar-se.

Figura.7.3. Estructura d’una comunicació SPI

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 100 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

El SPI és un protocol síncron. La sincronització i la transmissió de dades entre emissor i

receptor(mestre/esclau) es realitza utilitzant aquests 4 senyals:

SCLK (Clock) : És el pols del rellotge que marca la sincronització. A cada pols es llegeix o

s’envia un bit.

MOSI (Màster Output Slave Input): Sortida de dades del mestre i entrada de dades a

l’esclau.

MISO (Màster Input Slave Output): Sortida de dades de l’esclau i entrada al màster.

SS/Select: Per seleccionar un esclau, o perquè el mestre li comuniqui a l’esclau que

s’activi.

La cadena de bits s’envia de manera síncrona amb els polsos del rellotge, és a dir, amb cada

pols el màster envia un bit. Perquè comenci la transmissió el màster baixa el senyal “SS/Select”

a zero, amb això el dispositiu esclau s’activa i comença la transmissió, amb un pols de rellotge

al mateix temps que el primer bit és llegit. Els polsos de rellotge poden estar programats de

manera que la transmissió del bit es realitzi de quatre maneres diferents:

1. Amb el flanc de pujada sense retard.

2. Amb el flanc de pujada amb retard.

3. Amb el flanc de baixada sense retard.

4. Amb el flanc de baixada amb retard.

A continuació s’explica cada una de les quatre configuracions anteriors:

Aquesta configuració del rellotge per capturar una dada vàlida, ha de seguir l’especificació del

dispositiu esclau.

1. Polaritat rellotge baixa, fase del rellotge 1er flanc (CPOL_Low/CPHA_1Edge)

Aquesta configuració de bits de dades es capturada al primer flanc del rellotge. Aquest primer

flanc del rellotge puja.

Figura.7.4. Senyals polaritat rellotge baixa sense retard

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 101 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

2. Polaritat rellotge baixa, fase del rellotge 2n flanc (CPOL_Low/CPHA_2Edge)

Aquesta configuració de bits de dades es capturada al segon flanc del rellotge. Aquest segon

flanc del rellotge baixa.

Figura.7.5. Senyals polaritat rellotge baixa amb retard

3. Polaritat rellotge alta, fase del rellotge 1er flanc (CPOL_High/CPHA_1Edge)

Aquesta configuració de bits de dades es capturada al primer flanc del rellotge. Aquest primer

flanc del rellotge baixa.

Figura.7.6. Senyals polaritat rellotge alta sense retard

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 102 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

4. Polaritat rellotge alta, fase del rellotge 2n flanc (CPOL_High/CPHA_2Edge)

Aquesta configuració de bits de dades es capturada al segon flanc del rellotge. Aquest segon

flanc del rellotge puja.

Figura.7.7. Senyals polaritat rellotge alta amb retard

En el cas de la comunicació SPI entre l’acceleròmetre LIS3DSH i el MCU STM32F407VGT6, el

primer resulta ser el dispositiu esclau i el segon el mestre. Tot seguit s’expliquen els tres

protocols existents per arribar a transmetre dades entre aquests dos dispositius.

SPI lectura i escriptura

Figura.7.8. SPI Lectura i Escriptura

CS és el port sèrie habilitat i està controlat pel dispositiu mestre de l’SPI. Es col·loca a nivell

baix en l’inici de la transmissió i torna a nivell alt al final. SPC és el rellotge del port sèrie i està

controlat pel dispositiu mestre SPI. S’atura a nivell alt quan el CS també és alt (no hi ha

transmissió). SDI i SDO són respectivament, l’entrada de dades del port sèrie i de sortida.

Aquestes línies són impulsades durant el flanc de baixada de l’SPC i són capturades durant el

flanc de pujada de l’SPC.

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 103 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Els comandaments, tant pel registre de lectura com el d’escriptura, es composen de 16 polsos

de rellotge o en múltiples de 8 en cas de fer una lectura/escriptura de bytes múltiples.

Bit 0: Bit RW. Quan és 0, les dades d’entrada DI(7:0) s’escriuen al dispositiu. Quan és 1,

les dades de sortida es llegeixen del dispositiu.

Bits 1-7: Direcció de les adreces AD(6:0).

Bits 8-15: Dades entrada DI (7:0). Aquestes són les dades que s’escriuen al dispositiu.

Primer el MSB (bit més significatiu).

Bits 8-15: Dades sortida DO (7:0). Aquestes són les dades que es llegeixen del

dispositiu. Primer el MSB (bit més significatiu).

En accessos de lectura/escriptura de bytes múltiples, s’afegeixen altres blocs de 8 períodes de

rellotge. Quan el bit ADD_INC (CTRL_REG6) és 0, la direcció utilitzada per llegir/escriure les

dades segueix sent la mateixa per cada bloc. Però quan el bit ADD_INC és 1, la direcció

utilitzada per llegir/escriure les dades s’incrementa en cada bloc. La funció i comportament

dels bits SDI i SDO romanen sense canvis.

SPI Escriptura

Figura.7.9. SPI Escriptura

Bit 0: Bit d’escriptura (“WRITE”). El valor és 0.

Bit 1-7: Bits d’adreces AD(6:0).

Bit 8-15: Dades entrada DI(7:0). Aquestes són les dades que s’escriuen al dispositiu.

Bit 16: Dada DI(...-8). Dada que s’afegeix en l’escriptura de múltiples bytes.

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 104 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Figura.7.10. SPI Escriptura bytes múltiples

SPI Lectura

Figura.7.11. SPI Lectura

Bit 0: Bit de lectura (“READ”). El valor és 1.

Bit 1-7: Bits d’adreces AD(6:0).

Bit 8-15: Dades sortida DO(7:0). Aquestes són les dades que es llegeixen del dispositiu.

Bit 16: Dada DO(...-8). Dada que s’afegeix en l’escriptura de múltiples bytes.

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 105 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Figura.7.12. SPI Lectura bytes múltiples

7.5 SPI MATLAB/SIMULINK

7.5.1 “SPI Master Setup“

El bloc de configuració SPI es troba en el navegador del simulink cercant: "Waijung Blockset" -

> "STM32F4 Target" -> "On-chip Peripherals" -> "SPI".

El bloc ens apareixerà de la següent forma:

Figura.7.13. SPI Master Setup

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 106 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Què hi podem configurar?

Figura.7.14. Configuració bloc SPI Master Setup

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 107 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Element de configuració

Opció seleccionada/Valor Descripció

SPI Module 1|2|3 Seleccionar el mòdul SPI per la configuració. Direction Full-Duplex | Half-Duplex_Tx

| Half-Duplex_Rx Full-Duplex: Utilitzarem aquest mode quan necessitem enviar i rebre dades al mateix temps. Half-Duplex_Tx: Aquest mode es només per transmetre dades cap a l’esclau. El pin MISO (Rx) quedarà disponible per altres funcions. Half-Duplex_Rx: Aquest mode es només per rebre dades de l’esclau. El pin MOSIO (Tx) quedarà disponible per altres funcions.

Data Format 8 bit/FirstBit_MSB | 8 bit/FirstBit_LSB |

16 bit/FirstBit_MSB | 16 bit/FirstBit_LSB |

Especificació del format de dades

Baud rate prescaler

2|4|8|16|32|64|128|256 Configuració relacionada amb la velocitat del rellotge SPI.

Baud rate (Hz) Seleccionar la velocitat del rellotge SPI

Aquesta velocitat del rellotge dependrà del mòdul SPI utilitzat. SPI1: Rellotge PCLK2, 84MHz (max). Amb un pre-escalat de 2,4,...,256. La velocitat del rellotge SPI pot ser: 42MHz, 21MHz, 10.5MHz, 5.25MHz, 2.625MHz, 1.3125MHz, 0.65625MHz i 0.328125MHz respectivament. SPI2 i SPI3: 42MHz (max). La velocitat del rellotge SPI pot ser: 21 MHz, 10.5MHz,... respectivament.

Clock polarity (CPOL)/Clock phase (CPHA)

CPOL_Low/ CPHA_1Edge | CPOL_Low/CPHA_2Edge | CPOL_High/CPHA_1Edge | CPOL_High/CPHA_2Edge |

Polaritat i configuració de la fase del rellotge.

Slave/chip select mode

Software | Hardware | Custom

Seleccionar el senyal de control NSS a través del hardware o del software (manual).

Soft slave/chip select port

A|B|C|D|E|F|G|H|I Seleccionar un port per al software NSS, aquesta configuració estarà disponible quan el mode NSS sigui per software.

Soft slave/chip select pin

0|1|2|3|4|5|6|7|8| 9|10|11|12|13|14|15

Seleccionar un pin per al software NSS.

Slave/chip select pin

Depenent del paquet de pins del MCU

Selecció de pin de NSS quan utilitzem NSS en mode hardware.

SCLK pin Depenent del paquet de pins del MCU

Selecció de pin per SCLK.

MISO pin Depenent del paquet de pins del MCU

Selecció de pin per MISO.

MOSI pin Depenent del paquet de pins del MCU

Selecció de pin per MOSI.

Taula.7.2. Opcions de configuració del bloc SPI Master Setup

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 108 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

7.5.2 “SPI Master Read/Write“

El bloc de configuració SPI es troba en el navegador del simulink cercant: "Waijung Blockset" -

> "STM32F4 Target" -> "On-chip Peripherals" -> "SPI".

El bloc ens apareixerà de la següent forma:

Figura.7.15. SPI Master Read/Write

Què hi podem configurar?

Figura.7.16. Configuració bloc SPI Master Read/Write

Element de configuració

Opció seleccionada/Valor Descripció

SPI Module 1|2|3 Especifica el mòdul SPI per transmetre o rebre dades.

Data Read/Write count

Nombre de dades per llegir o escriure

Nombre de ports de dades en el bloc.

Sample time (sec) -1 o especificar-lo Especifica el temps de mostra del bloc. Taula.7.3. Opcions de configuració del bloc SPI Master Read/Write

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 109 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

7.6 REGISTRE DE CONTROL 4 (CTRL_REG4 20h)

Bit b7 b6 b5 b4 b3 b2 b1 b0

Nom ODR3 ODR2 ODR1 ODR0 BDU ZEN YEN XEN

Defecte 0 0 0 0 0 1 1 1 Taula.7.4. Bits del registre de control 4

Nom bit Descripció

ODR [3:0] Selecció de la velocitat de transmissió de dades. Valor per defecte: 0h

BDU

Actualització del bloc de dades. Valor per defecte: 0 0: Actualització continua 1: El registre de sortida no s’actualitza fins que els bits MSB i LSB no s’hagin llegit.

Zen Valor per defecte: 1 1: Eix-Z habilitat 0: Eix-Z inhabilitat

Yen Valor per defecte: 1 1: Eix-Y habilitat 0: Eix-Y inhabilitat

Xen Valor per defecte: 1 1: Eix-X habilitat 0: Eix-X inhabilitat

Taula.7.5. Descripció del registre de control 4

7.7 REGISTRE DE CONTROL 6 (CTRL_REG6 25h)

Bit b7 b6 b5 b4 b3 b2 b1 b0

Nom BOOT FIFO_EN WTM_EN ADD_INC P1_EMPTY P1_WTM P1_OVERRUN P2_BOOT

Defecte 0 0 0 0 0 1 1 1 Taula.7.6. Bits del registre de control 6

Nom bit Descripció

BOOT Força el reinici. Actiu per nivell alt

FIFO_EN Habilitació FIFO. Valor per defecte: 0 (0:inhabilitat; 1:habilitat)

WTM_EN Habilitació “watermark” . Valor per defecte: 0

ADD_INC El registre d’adreces s’incrementa automàticament durant un accés de bytes múltiples amb una interfície sèrie (I2C o SPI). (0: inhabilitat; 1:habilitat)

P1_EMPTY Habilitar indicació de buit de la FIFO al pin INT1. Valor per defecte: 0 (0: inhabilitat; 1:habilitat)

P1_WTM Interrupció FIFO “watermark” al pin INT1. Valor per defecte: 0 (0: inhabilitat; 1:habilitat)

P1_OVERRUN Interrupció de desbordament FIFO al pin INT1. Valor per defecte:0 (0: inhabilitat; 1:habilitat)

P2_BOOT Interrupció d’arrencada al pin INT2. Valor per defecte: 0 (0: inhabilitat; 1:habilitat)

Taula.7.7. Descripció del registre de control 6

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 110 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

7.8 PROGRAMA

7.8.1 Acceleròmetre Target

Figura.7.17. Acceleròmetre Target

El programa de la targeta, tal i com es pot observar a l’anterior figura 7.17, està dividit en tres

parts diferents. Una primera d’inicialització, una segona de lectura de les dades de

l’acceleròmetre i l’última de transmissió de dades cap al PC (Host) per tal de tenir un control a

temps real.

En la primera part és on s’inicialitzen les variables i on es mira en tot moment quan hi ha dades

noves d’acceleració disponibles. En el moment que n’hi hagi s’ens habilitarà la segona part,

que és on llegirem les dades d’acceleració dels diferents registres. Ja per últim es farà la

transmissió de les dades cap al PC (Host) per poder visualitzar-les.

La configuració de l’SPI s’ha fet amb el mode “Full-Duplex” ja que volem enviar i rebre dades al

mateix temps.

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 111 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Les comandes a enviar per la interfície SPI tenen el següent format:

Wr0: Primer byte que s’envia. És l’adreça i les opcions que es volen:

Bit 7: R/W (1: Lectura / 0: Escriptura)

Bit 6:0 : Adreça del registre

Wr1: Si volem fer una lectura aquest valor serà 0. Si volem fer una escriptura, aquest

valor serà el que volem escriure al registre.

En el nostre cas, primer de tot fem una lectura del registre de control 4 i si el que llegim és

diferent del que nosaltres volem, es reprograma a través del bloc d’escriptura sobre el registre

4 (20h). Per llegir-lo escrivim a Wr0: 1010 0000 (A0h) = (80h or 20h) i a Wr1: 0, i per escriure’l

en el cas que s’hagi de reprogramar escrivim a Wr0: 0010 0000 (20h) i a Wr1 el valor a

programar que és 0111 0111 (77h).

També programem el registre de control 6 (25h). Per fer-ho escrivim a Wr1: 0001 0000 (10h)

que és per activar el increment automàtic de les adreces en accessos múltiples.

El bloc “bitwise OR” és una tècnica molt eficient d’emmagatzemar un nombre de valors

booleans utilitzant tan poca memòria com sigui possible. Amb el bloc “bitwise XOR” el que fem

és una comparació de bits, sent 1 si els bits són diferents i 0 si són iguals.

El valor que llegim del registre de control 4 el comparem amb el valor 77h, si són diferents el

bloc “bitwise XOR” ens dóna un 1 i s’activen els blocs de reprogramació. Però en el cas que

Figura.7.18. Inicialització LIS302DL

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 112 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

siguin iguals ens dóna un 0 i això combinat amb el bit d’estat ens activa el port READY, que ens

habilita el següent subsistema de lectura dels valors.

Figura.7.19. Escriptura sobre el registre de control 4

Figura.7.20. Escriptura sobre el registre de control 6

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 113 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Figura.7.21. Configuració dels Pins SPI

Dins el mòdul de lectura de l’acceleròmetre llegirem 6 valors. Escrivim a Wr0: 80h (per dir que

volem fer una lectura) or 28h (adreça del primer registre que llegim). Com que volem fer 6

lectures, a cada una que fem s’incrementa automàticament l’adreça coincidint amb un accés

de bytes múltiples. A Rd1 hi haurà la part baixa de les X (OUT_X_L), a Rd2: OUT_X_H, a Rd3:

OUT_Y_L, a Rd4: OUT_Y_H, a Rd5: OUT_Z_L i a Rd6: OUT_Z_H.

Totes aquestes dades s’envien a través del bloc de transmissió de la UART cap al PC (Host).

Figura.7.22. Lectura LIS302DL

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 114 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

7.8.1 Acceleròmetre Host

En el “host” del PC rebem les lectures de l’acceleròmetre en els seus tres eixos (X,Y i Z). La

velocitat de transmissió de les dades és de 0.02 segons. Només ens quedem amb la part alta

de les dades de cada eix, ja que s’ha provat de concatenar la part alta amb la part baixa però el

sistema resultava ser molt inestable i era difícil d’obtenir uns valors mitjanament acceptables.

Per acabar d’ajustar els valors dels 3 eixos amb els de la gravetat s’ha utilitzat un guany petit

(0.151).

Com a exemple de bon funcionament, s’ha col·locat la placa que conté l’acceleròmetre en tres

posicions diferents:

A) De manera que l’acceleració de l’eix de les Z correspongui a la gravetat.

B) manera que l’acceleració de l’eix de les Y correspongui a la gravetat.

C) De manera que l’acceleració de l’eix de les X correspongui a la gravetat.

Figura.7.23. Acceleròmetre Host

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 115 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Figura.7.25. Gràfics eixos x,y i z

Observant la figura 7.25, es poden veure els diferents canvis produïts entre les diferents

posicions. En primer lloc és l’eix de les Z el que adquireix l’acceleració de la gravetat (9.81) i

tots els altres a 0, en segon lloc és l’eix de les Y el que està sotmès a l’acceleració de la gravetat

i per últim l’eix de les X.

Amb aquest programa serem capaços de detectar acceleracions en qualsevol de les tres

direccions (X,Y I Z) i visualitzar-les. S’ha de dir, però, que un acceleròmetre es un dispositiu

molt sensible i amb qualsevol petit canvi o soroll se’n veurà afectat.

Figura.7.24. Posicions eixos (A), (B) i (C)

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 116 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

8. MOTORS

8.1 CONNEXIÓ DELS MOTORS

X_En: És el PWM

In1 i In2: Direcció del motor

8.1.1 Distribució de pins

Motor 1 Motor 2 Motor 3 Motor 4

HB1_EN PB8 HB2_EN PE6 HB3_EN PE5 HB4_EN PB9

HB1_In1 PD6 HB2_In1 PE8 HB3_In1 PB1 HB4_In1 PC15

HB1_In2 PD5 HB2_In2 PE7 HB3_In2 PB0 HB4_In2 PC14 Taula.8.1. Distribució dels pins dels motors

8.1.2 Codificadors

Motor 1 Motor 2 Motor 3 Motor 4

ENC1_A PC7 ENC2_A PB7 ENC3_A PB5 ENC4_A PB3

ENC1_B PC6 ENC2_B PB6 ENC3_B PB4 ENC4_B PA5 Taula.8.2. Distribució dels pins dels codificadors

8.1.3 Justificació de les connexions

La senyal PWM ha d’anar connectada a un pin del tipus I/O en el qual hi hagi

disponible la funció de temporitzador (TIM).

També he observat que per una millor agrupació de pins, les senyals de PWM dels

motors que es troben de costat en la distribució a la plataforma, es connecten 2 a 2 al

mateix temporitzador i cada un amb un canal diferent, utilitzant d’aquesta forma

només 2 timers. Excepte en el cas que utilitzem el timer 10 i el timer 11, ja que

cadascú d’ells només té 1 canal.

Els codificadors per interpretar les dades també utilitzaran un temporitzador

incorporat al kit STM32F4. Per un canal ens donaran la direcció de rotació i en l’altre la

posició de cada gir. En les connexions d’aquest cas, he observat que els dos canals

existents per cada motor van connectats a dos canals diferents però del mateix

temporitzador.

8.1.4 Funcions dels pins seleccionats

PWM (HBx_En)

Nom pin Funció Motor

PB8 Timer 4, canal 3 / Timer 10, canal 1 1

PB9 Timer 4, canal 4 / Timer 11, canal 1 4

PE5 Timer 9, canal 1 3

PE6 Timer 9, canal 2 2 Taula.8.3. Funcions pins de PWM

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 117 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Direcció del motor

In1 In2

Nom pin Funció Nom pin Funció Motor

PD6 Eventout

PD5 Eventout

1

PE8 PE7 2

PB1 PB0 3

PD15 PC14 4 Taula.8.4. Funcions pins de direcció del motor

Encoders

Enc_A Enc_B

Nom pin Funció Nom pin Funció Motor

PC7 Timer 8, canal 2/Timer 3, canal 2

PC6 Timer 8, canal 1/Timer 3, canal 1

1

PB7 Timer 4, canal 2 PB6 Timer 4, canal 1 2

PB5 Timer 3, canal 2 PB4 Timer 3, canal 1 3

PB3 Timer 2, canal 2 PA5 Timer 2, canal 1 4 Taula.8.5. Funcions pins dels codificadors

8.2 BLOC PWM

El bloc de generació del PWM que ens controlarà els motors es troba en el navegador del

simulink cercant: "Waijung Blockset" -> "STM32F4 Target" -> "On-chip Peripherals" -> "TIM".

El bloc ens apareixerà de la següent forma:

Figura.8.1. Bloc PWM

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 118 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

8.2.1 Què hi podem configurar?

8.2.2 Utilització

Farem servir aquest bloc per generar les senyals PWM (“Pulse Width Modulation”) que ens

governaran els motors. S’hi apliquen les següents condicions:

1. Fins a un nombre màxim de 4 senyals PWM (canals) es poden generar per

temporitzador.

2. Cada temporitzador té un comptador de 16 bits que ens determina el període del

PWM.

3. El període PWM no el podrem canviar durant el temps d’execució.

A la taula següent hi ha un llistat dels temporitzadors disponibles i els seus canals de PWM

associats als pins corresponents del MCU.

Figura.8.2. Configuració bloc PWM

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 119 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

TIMER CANAL STM32F407VG TIMER CANAL STM32F407VG

1 1 PE9 5 1

1 1 PA8 5 2 PA1

1 2 PE11 5 2

1 2 PA9 5 3 PA2

1 3 PE13 5 3

1 3 PA10 5 4 PA3

1 4 PE14 5 4

1 4 PA11 8 1 PC6

2 2 PB3 8 1

2 3 PA2 8 2 PC7

2 3 PB10 8 2

2 4 PA3 8 3 PC8

2 4 PB11 8 3

3 1 PA6 8 4 PC9

3 1 PC6 8 4

3 1 PB4 9 1 PE5

3 2 PA7 9 1 PA2

3 2 PC7 9 2 PE6

3 2 PB5 9 2 PA3

3 3 PB0 10 1

3 3 PC8 10 1 PB8

3 4 PB1 11 1

3 4 PC9 11 1 PB9

4 1 PD12 12 1

4 1 PB6 12 1 PB14

4 2 PD13 12 2

4 2 PB7 12 2 PB15

4 3 PD14 13 1

4 3 PB8 13 1 PA6

4 4 PD15 14 1

4 4 PB9 14 1 PA7

5 1 PA0 Taula.8.6. Relació entre els temporitzadors i els canal de PWM

8.2.3 Funcionament

Aquest bloc accepta un cicle de treball d’entrada (Duty cycle %) entre 0-100.

La freqüència del senyal PWM està determinada pel valor TIMx_ARR i el cicle de treball està

determinat pel valor TIMx_CCRx. El rellotge del temporitzador es calcula de la següent forma:

TIMx_CLK = HCLK/APBxPrescaler

On TIM2,3,4,5,6,7,12,13,14 utilitzen APB1 i TIM1,8,9,10,11 utilitzen APB2.

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 120 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

El valor de recàrrega automàtic del temporitzador (TIMx_ARR) que determina el període de

PWM per cada temporitzador es calcula a partir de:

TIMx_ARR = (TIMx_CounterClock * PWM_period) – 1

On TIMx_CounterClock = TIMX_CLK / (TIMx_Prescaler + 1).

La targeta STM32F4 busca el TIMx_ARR més adequat, utilitzant automàticament les següents

limitacions:

1. TIMx_Prescaler <= 65535

2. TIMx_ARR ha d’estar tan a prop d’un nombre enter com sigui possible, és a dir, min

(TIMx_ARR – floor(TIMx_ARR)).

El cicle de treball es calcula a partir de:

TIMx_CCRx = TIMx_ARR * (Duty cicle / 100)

8.3 BLOC DE LECTURA DELS CODIFICADORS

El bloc de lectura dels codificadors que hi ha associats als motors es troba en el navegador del

simulink cercant: "Waijung Blockset" -> "STM32F4 Target" -> "On-chip Peripherals" -> "TIM".

El bloc ens apareixerà de la següent forma:

Figura.8.3. Bloc “Encoder Read”

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 121 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

8.3.1 Què hi podem configurar?

Figura.8.4. Configuració bloc “Encoder Read”

8.3.2 Utilització

“Output direction” (uint32): És la direcció de la rotació ja sigui 0 o 1.

“Output position (count)” (uint32): És un comptador del nombre de flancs dels senyals de

sortida del codificador per qualsevol dels canals A i B. El descodificador està configurat per

contar cada flanc ascendent o descendent dels dos canals A i B (4X) o (2X) si és només un

canal.

Per exemple: El nostre codificador té 9000 polsos per revolució (PPR) i si els dos canals són

seleccionats, la conta màxima que tindrem serà de 3,6 x 104 per revolució.

La funció “Encoder Read” utilitza un temporitzador incorporat al kit STM32F4 per interpretar

les dades del codificador. Els pins disponibles per qualsevol dels canals A o B, dependrà del

MCU que seleccionem i del temporitzador.

El comptador de posició del codificador comptarà:

De 0 a (PPR x 4)-1 quan s’utilitzin els canals A i B.

De 0 a (PPR x 2)-1 quan s’utilitzi només un canal (A o B).

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 122 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

8.3.3 Exemple

El model de la targeta d’aquest exemple està configurat per:

1. Llegir el canal dels codificadors A i B utilitzant els pins A8 i E11 respectivament.

2. Transmetre el paquet de dades binàries a la UART a través del pin B6 i cap al

convertidor d’USB.

3. Configurem el mode Host per llegir les dades del convertidor USB-UART i poder

visualitzar el paquet binari rebut a la pantalla i a la trama.

A cada gir del motor, la posició i la direcció s’actualitzen i es mostren a la pantalla del PC.

Figura.8.5. Model “Target” exemple

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 123 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Figura.8.6. Model “Host” exemple

Figura.8.7. Connexions necessàries en l’exemple

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 124 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

8.4 PROGRAMA

8.4.1 Motors Target

Figura.8.8. PWM i direcció Target Motors

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 125 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Primer de tot hem configurat la targeta amb el nostre MCU de la placa (STM32F407VG) i s’ha seleccionat un temps de mostreig de 0.01 segons. Els pins que utilitzarem per rebre i transmetre les dades per la UART són el PD8 i PD9.

Tindrem dues consignes de velocitat, una pel motor 1 i 3 i l’altre pel 2 i 4, ja que les rodes

estan aparellades dues a dues per tal de poder moure’s en totes direccions. A mesura que

rebem aquestes consignes del cicle del pwm per la UART_Rx, entraran dins el següent bloc de

control (és el mateix per les dues consignes):

Figura.8.9. Funció control velocitat

En el cas que la consigna de PWM d’entrada sigui més gran que zero, s’assigna als bits de

direccionament del motor la direcció per anar endavant que nosaltres hem triat. En canvi si la

consigna de PWM és un valor negatiu, llavors la direcció del motor és la contrària. El PWM de

sortida d’aquesta funció sempre serà un valor positiu, i es connecta cap als blocs de PWM de

cada motor per així poder-los controlar (taula 8.3). Els bits de sortida In1 i In2 es connecten

cap als pins de direcció dels motors (taula 8.4).

Els blocs de lectura dels codificadors (figura 8.10) es configuren seguin els pins establerts a la

taula 8.5 i es transmet la direcció i la posició de cada un a través de la UART_TX.

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 126 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Figura.8.10. Codificadors Target Motors

8.4.2 Motors Host

Figura.8.11. Configuració i consignes vel. Host

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 127 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

En la configuració del “host” seleccionem el port que s’utilitza per la transmissió de la

informació i també el temps de mostreig del model, que serà el mateix que el de la targeta de

la placa, cada 0.01 segons. A través de dos blocs “Slider gains” ens podrem desplaçar i fixar el

valor de les consignes de velocitat que enviarem a través del “Host Serial Tx”. Una fa referència

als motors 1 i 3, i l’altre als motors 4 i 2. D’aquesta manera podrem aconseguir realitzar

moviments rectilinis en el pla.

MOTOR 1

MOTOR 2

Figura.8.12. Host motor 1

Figura.8.13. Host motor 2

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 128 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

MOTOR 3

MOTOR 4

Figura.8.14. Host motor 3

Figura.8.15. Host motor 4

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 129 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

En el model “host” dels motors s’hi poden diferenciar clarament dues parts: una de càlcul de

velocitat de la roda i l’altre de càlcul de la posició acumulada dels codificadors.

Quan rebem les dades de direcció i posició dels codificadors dels motors pel “Host Serial Rx”,

aquestes entraran dins la funció de càlcul de velocitat amb un codi tal com el de la figura 8.14.

En aquest bloc es determinarà la velocitat del motor a través de la diferència entre el valor real

de posició i el valor de memòria (al qual hi apliquem un retard d’1). L’ordre dels operands

dependrà de la direcció del motor, ja que volem la velocitat en tot moment positiva. A cada

final de volta del codificador existeix un instant de temps en que el valor real és molt més petit

que la memòria, llavors sumem la conta màxima de posició del codificador (36000 PPR) al valor

de memòria per obtenir un valor coherent.

Figura.8.16. Funció càlcul velocitat

Al sortir d’aquest bloc disposem de la velocitat en polsos per revolució (PPR) i realitzem la conversió a revolucions per minut (RPM) per obtenir velocitat angular a través de la funció de la figura següent:

Figura.8.17. Funció conversió PPR a RPM

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 130 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Per acumular la posició dels codificadors ens ajudem de la funció que s’observa a la figura

8.16. En aquest codi, si el valor de posició actual (u1) és diferent de l’últim valor de posició que

s’ha llegit (u3), dependrà de la direcció del motor que es sumi o es resti el valor a la variable

d’acumulació (u2). En el cas que el valor de posició actual (u1) coincideixi amb l’últim valor de

posició llegit (u3), la variable d’acumulació (u2) no variarà. Al final del codi es guarda a la

variable de retard u4 l’últim valor de posició llegit (u1).

Figura.8.18. Funció posició absoluta codificadors

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 131 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

8.5 RESULTATS

S’ha escollit el motor 3 per visualitzar els resultats, ja que per tots els altres és el mateix, i

s’han aconseguit les següents respostes amb una freqüència de mostreig de 100 Hz:

Primer de tot enviem una consigna de PWM de 20, quan la roda ja funciona de manera estable

augmentem la consigna fins a 47 de manera que es pugui apreciar aquests canvis de velocitat a

la segona gràfica. A prop del segon 17 tornem augmentar la consigna fins al valor màxim de

100 i al segon 24 es realitza un canvi de direcció del motor, introduint un valor de consigna

negatiu.

Mentre hem estat introduint valors de consigna positius cap als motors, s’han anat sumant els

valors de posició dels codificadors a cada volta. Però quan s’ha fet el canvi de direcció els

valors s’han restat de la posició absoluta que s’havia aconseguit. Aquest canvi es pot observar

a l’última gràfica de la figura 8.17.

Es pot observar que en la lectura de la velocitat ens surten uns pics que fan el sistema una

mica inestable. Això es deu a algunes possibles irregularitats en els sensors i també al fet

d’estar modificant les consignes de PWM durant l’execució del programa.

Figura.8.19. Gràfiques PWM, velocitat i posició a 100 Hz

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 132 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Per intentar eliminar el problema dels pics anteriors i arribar a observar una resposta més neta

de la velocitat dels motors, s’ha augmentat el temps de mostreig del programa fins a 1kHz. Les

respostes que s’han aconseguit són les següents:

Figura.8.20. Gràfiques PWM, velocitat i posició a 1 kHz

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 133 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

8.6 ESTUDI PWM

Per tal d’ajustar el millor possible la senyal de PWM i gaudir d’un rang de valors bons en

proporció a la resposta de velocitat del motor, s’ha realitzat el següent estudi. A partir de

diferents valors del període del PWM, s’ha observat en tot el rang quina és la tensió de sortida

cap als motors (Vout) i la velocitat. D’aquesta manera podrem observar quin és el període amb

el qual s’aconsegueix el millor ajust.

Període PWM = 0.02 segons

Vout en funció PWM

Figura.8.21. Vout amb període PWM 0.02 segons

Velocitat (rpm) en funció PWM

Figura.8.22. Velocitat amb període PWM 0.02 segons

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 134 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Període PWM = 0.005 segons

Vout en funció PWM

Figura.8.23. Vout amb període PWM 0.005 segons

Velocitat (rpm) en funció PWM

Figura.8.24. Velocitat amb període PWM 0.005 segons

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 135 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Període PWM = 0.002 segons

Vout en funció PWM

Figura.8.25. Vout amb període PWM 0.002 segons

Velocitat (rpm) en funció PWM

Figura.8.26. Velocitat amb període PWM 0.002 segons

Realitzant aquest estudi s’ha pogut arribar a la conclusió que el període de PWM que ens

genera un millor rang de velocitats és el primer (0.02 segons). Si analitzem les respostes de

velocitat i tensió en valors de PWM baixos es pot veure que és el que ens dóna una resposta

més proporcional ja que els dos últims de seguida passen de 0 a 470 rpm amb un canvi de

PWM de 10 unitats.

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 136 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

9. DISSENY DEL CONTROLADOR DE VELOCITAT EN UN MOTOR DC Per tal de dissenyar un controlador en un motor DC ens cal poder arribar a visualitzar bé la

seva resposta davant una entrada graó. Per aconseguir això, s’ha dissenyat un programa en

què la lectura de la velocitat dels codificadors es farà amb una freqüència de 1kHz (0.001

segons). Dins aquest programa s’ha mirat de simplificar al màxim les tasques del PC (“Host”)

per poder arribar a treballar a la velocitat desitjada.

Depenent del valor de consigna de PWM que donem al graó ens variarà el temps de resposta,

ja que amb un PWM baix la tensió cap als motors també és més baixa i li costarà més temps

arribar a estabilitzar-se. És per aquest motiu, que en el programa de disseny del controlador

treballarem amb el màxim valor de PWM (100) i també perquè volem arribar a visualitzar la

resposta més ràpida possible. Amb aquest disseny tots els altres valors de PWM ja ens hi

quedaran adaptats.

Figura.9.1. Model Target

Figura.9.2. Model Host

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 137 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Guardarem les dades del “scope” a l’entorn de treball del Matlab a través de la variable

velocitat. A continuació carreguem aquesta variable i fem un plot per veure la representació

dels valors obtinguts:

Figura.9.3. Entrada Graó del sistema

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 138 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Ara ja hem obtingut la resposta del sistema en llaç obert davant una entrada graó i anirem a

calcular els paràmetres del propi controlador mitjançant el mètode empíric de Ziegler-Nichols.

Amb aquest mètode no és té la necessitat de conèixer les equacions de la planta o del sistema

controlat sinó que el càlcul dels paràmetres es fa mitjançant una regla de sintonització basada

en la resposta graó de la planta, tal i com veurem a continuació.

Figura.9.4. Resposta al graó en llaç obert

Figura.9.5. Entrada graó i resposta del motor

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 139 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Càlcul dels paràmetres en la resposta

Figura.9.6. Paràmetres del mètode de Ziegler-Nichols

t0 = 1 seg.

t1 = 1.114 seg.

t2 = 1.454 seg.

Y0 = 0

y∞ = 498

Figura.9.7. Càlcul dels paràmetres en el mètode de Ziegler-Nichols

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 140 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

A continuació es calculen els paràmetres del model a través de les formules de la figura 9.7:

Els paràmetres del controlador proposats per Ziegler i Nichols a partir de la corba de reacció,

es determinen a partir del quadre de la figura 9.8. En el nostre cas del motor DC he optat per

provar un control del tipus proporcional-Integral (PI) que penso que funcionarà bé per ajudar a

disminuir l’error en estat estacionari entre la velocitat llegida i la consigna (“set point”).

Figura.9.9. Paràmetres del controlador

Figura.9.8. Formules del mètode de Ziegler-Nichols

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 141 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

Ara que ja tenim els paràmetres de sintonització del controlador podem dibuixar com quedaria

el disseny del control d’un motor DC en llaç tancat (figura 9.10).

Figura.9.10. Esquema del control d’un motor DC en llaç tancat

10. CONCLUSIONS

Les valoracions del projecte de final de grau són molt positives, ja que durant tot el procés he

pogut ampliar molt tots els coneixements obtinguts durant la carrera pel fet d’aprendre

maneres noves de programació, de supervisió i de control. A part de tot aquest enriquiment

personal que ha suposat l’elaboració d’aquest projecte, he pogut practicar molt en el

laboratori per arribar a ajustar el millor possible tots els paràmetres del disseny.

També penso que el fet d’haver treballat amb un robot integrat a un sistema de sensors,

actuadors i amb un control hem servirà molt en el meu futur ja que la formulació, les eines i la

metodologia d’aquest treball són transferibles a molts altres camps.

Desitjo que aquest projecte pugui ser continuat algun dia per alguna de les futures promocions

de la universitat, perquè el material utilitzat pertany a la universitat i per tant, amb l’ajuda

d’aquest document i dels programes creats es pugui arribar a ampliar creant per exemple una

comunicació amb el PC sense cables o controlant el dispositiu des d’un dispositiu mòbil o

tablet.

11. BIBLIOGRAFIA

Waijung Blockset [on line]. 2015 [Darrera visita: 3 Març de 2015]. Disponible a: http://

http://www.waijung.aimagin.com/

LIS3DSH Application note [on line]. 2014 [Darrera visita: 10 Febrer de 2015]. Disponible

a:http://www.st.com/web/en/resource/technical/document/application_note/DM000

26768.pdf

CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE

Pàgina 142 de 142

SERGI RECUERO CÓRDOBA

GRAU EN ENGINYERIA ELECTRÒNICA INDUSTRIAL I AUTOMÀTICA

i-Sense Robotic Platform [on line]. 2015 [Darrera visita: 15 Abril de 2015]. Disponible a:

http://sourceforge.net/p/isenseroboticplatform/wiki/Assembly%20Guide/

aMG USB Converter – N [on line]. 2014 [Darrera visita: 10 de Març de 2015].

Disponible a:http://www.aimagin.com/amg-usb-converter-n.html

300 CPR ENCODER [on line]. 2014 [Darrera visita: 18 de Abril de 2015]. Disponible a:

http://www.solutions-cubed.com/products-page/accessory/encoder-300

Quadrature digital signals [on line]. 2014 [Darrera visita: 15 de Abril de 2015].

Disponible a: http://granitedevices.com/wiki/Quadrature

EVAL6207N [on line]. 2015 [Darrera visita: 10 de Maig de 2015]. Disponible a:

http://www.st.com/web/en/catalog/tools/PF152185

How to use logic and PWM signal to control motor speed and direction [on line]. 2015

[Darrera visita: 28 de Març de 2015]. Disponible a:

http://www.aimagin.com/learn/index.php?title=How_to_use_logic_and_PWM_signal

_to_control_motor_speed_and_direction&oldid=3674