CONTROL DE LA PLATAFORMA ROBÒTICA ISENSE’RIA... · Motor Reductor GHM-03 291 RPM Figura.3.22....
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