Departamento de Ingeniería de Sistemas y Automática Control of Mechatronic Systems with Matlab/Simulink Episode I: An introduction to real-time target programming By J. M. Gómez de Gabriel Master Oficial en Ingeniería Mecatrónica Modelado y Control de Sistemas Mecatrónicos y Robots Departamento de Ingeniería de Sistemas y Automática Contents 1. 2. 3. 4. 5. 6. 7. 8. Today’s goal Matlab/Simulink approaches Targets Installing target support Arduino targets Simulink blocks for Arduino programing Examples Hands-on project Master Oficial en Ingeniería Mecatrónica Modelado y Control de Sistemas Mecatrónicos y Robots Departamento de Ingeniería de Sistemas y Automática Automatic Photovoltaic Panel Orientation Master Oficial en Ingeniería Mecatrónica Modelado y Control de Sistemas Mecatrónicos y Robots Departamento de Ingeniería de Sistemas y Automática ... In our case: Master Oficial en Ingeniería Mecatrónica Modelado y Control de Sistemas Mecatrónicos y Robots Matlab vs Simulink approach • IO library and Matlab language running on the PC as the control process – The target is used as a remote I/O server – Easy debugging – Non real-time Departamento de Ingeniería de Sistemas y Automática • Simulink graphical model can generate C code for different real-time embedded targets. – – – – Standalone target Real-time Not so easy debugging Host/target architecture Master Oficial en Ingeniería Mecatrónica Modelado y Control de Sistemas Mecatrónicos y Robots Some Simulink Real-Time Targets • Things are getting harder for Mathworks: – Free open source OS and languages (linux, Python, …) – Embedded computing is evolving very fast Departamento de Ingeniería de Sistemas y Automática • Recently more popular: – – – – – – Arduino (Atmel AVR/Non OS) BeagleBoard (ARM/Linux/Android/Lots of I/O/Multi CPU) Gumstix Overo LEGO Mindstorms NXT PandaBoard (OMAP5/Linux) Raspberry Pi (ARM/GPU/Linux) • Any other: user definable Both PC and target C language compilers are needed (i.e. Visual Studio+Arduino IDE) Master Oficial en Ingeniería Mecatrónica Modelado y Control de Sistemas Mecatrónicos y Robots Matlab Support Packages Departamento de Ingeniería de Sistemas y Automática • Manual installation (unoffical libraries) • 2011 Automated • 2013b fully integrated • Please, help with the installation … Master Oficial en Ingeniería Mecatrónica Modelado y Control de Sistemas Mecatrónicos y Robots Supported arduino targets • Arduino UNO Departamento de Ingeniería de Sistemas y Automática • Mega 2560 • Nano • Leonardo not yet Master Oficial en Ingeniería Mecatrónica Modelado y Control de Sistemas Mecatrónicos y Robots Departamento de Ingeniería de Sistemas y Automática Arduino UNO Features: • Microcontroller: ATmega328 • Operating Voltage: 5V • Input Voltage:7-12V (6-20V limit) • Digital I/O Pins: 14 (of which 6 provide PWM output) • Analog Input Pins: 6 • DC Current per I/O Pin: 40 mA • DC Current for 3.3V Pin: 50 mA • Flash Memory: 32 KB (ATmega328) of which 0.5 KB used by bootloader • SRAM: 2 KB (ATmega328) • EEPROM: 1 KB (ATmega328) • Clock Speed16 MHz • UART-USB bridge (Atmega8) programmable • Bootloader • Easy to use IDE Master Oficial en Ingeniería Mecatrónica Modelado y Control de Sistemas Mecatrónicos y Robots Atmega328 Departamento de Ingeniería de Sistemas y Automática • • • • • Interrupts (INT0,INT1) I2C PWM ADC SPI Master Oficial en Ingeniería Mecatrónica Modelado y Control de Sistemas Mecatrónicos y Robots Departamento de Ingeniería de Sistemas y Automática Arduino Mega2560 • • • • • • • • • • Microcontroller: ATmega2560 (Atmel AVR family) Operating Voltage: 5V Input Voltage 7-12V (limits 6-20V) Digital I/O Pins: 54 (of which 15 provide PWM output) Analog Input Pins: 16 DC Current per I/O Pin40 mA (3.3V Pin: 50 mA) Flash Memory: 256 KB of which 8 KB used by bootloader SRAM: 8 KB EEPROM: 4 KB Clock Speed16 MHz Master Oficial en Ingeniería Mecatrónica Modelado y Control de Sistemas Mecatrónicos y Robots Atmega2560 Departamento de Ingeniería de Sistemas y Automática • Same type of peripherals • More I/O • More Ext Inter. • More memory • !! IMPORTANT !! More memory = automatic debugging possible under simulink Master Oficial en Ingeniería Mecatrónica Modelado y Control de Sistemas Mecatrónicos y Robots Departamento de Ingeniería de Sistemas y Automática Arduino Support in Simulink Master Oficial en Ingeniería Mecatrónica Modelado y Control de Sistemas Mecatrónicos y Robots Departamento de Ingeniería de Sistemas y Automática Finding the Arduino Blocks Master Oficial en Ingeniería Mecatrónica Modelado y Control de Sistemas Mecatrónicos y Robots Departamento de Ingeniería de Sistemas y Automática Arduino Digital Input Master Oficial en Ingeniería Mecatrónica Modelado y Control de Sistemas Mecatrónicos y Robots Departamento de Ingeniería de Sistemas y Automática Arduino Digital Output Master Oficial en Ingeniería Mecatrónica Modelado y Control de Sistemas Mecatrónicos y Robots Departamento de Ingeniería de Sistemas y Automática Arduino Analog Input Master Oficial en Ingeniería Mecatrónica Modelado y Control de Sistemas Mecatrónicos y Robots Departamento de Ingeniería de Sistemas y Automática Arduino PWM output (“analog output”) Master Oficial en Ingeniería Mecatrónica Modelado y Control de Sistemas Mecatrónicos y Robots Departamento de Ingeniería de Sistemas y Automática Arduino Servo Write Master Oficial en Ingeniería Mecatrónica Modelado y Control de Sistemas Mecatrónicos y Robots Departamento de Ingeniería de Sistemas y Automática Arduino Serial Receive Master Oficial en Ingeniería Mecatrónica Modelado y Control de Sistemas Mecatrónicos y Robots Departamento de Ingeniería de Sistemas y Automática Arduino Serial Transmit Master Oficial en Ingeniería Mecatrónica Modelado y Control de Sistemas Mecatrónicos y Robots Block Produces Zeros or Does Nothing in Simulation • If you simulate a model on your host computer without running it on your target hardware: – Input blocks produce zeros. – Output blocks do nothing. Departamento de Ingeniería de Sistemas y Automática • This is the expected behavior. For example, in a model, if you select Simulation > Mode > Normal and then select Simulation > Run, the following happens: – The sensor block and Digital Input block send zeros to the model. – The Digital Output block does nothing. • To see the blocks work normally, run your model on target hardware or use External mode. – To run the model on target hardware, select Tools > Run on Target Hardware > Prepare to Run. Then, click the Deploy to Hardware button. – To use External mode, select Simulation > Mode > External mode. Then, select Simulation > Run. Master Oficial en Ingeniería Mecatrónica Modelado y Control de Sistemas Mecatrónicos y Robots Departamento de Ingeniería de Sistemas y Automática Running model on the external hardware Master Oficial en Ingeniería Mecatrónica Modelado y Control de Sistemas Mecatrónicos y Robots Departamento de Ingeniería de Sistemas y Automática Run on target Hardware Parameters Master Oficial en Ingeniería Mecatrónica Modelado y Control de Sistemas Mecatrónicos y Robots Departamento de Ingeniería de Sistemas y Automática External mode (With Mega2560) • You can use External mode to tune parameters in, and monitor data from, your model while it is running on the Arduino Mega 2560 hardware (Not available with Arduino Uno). • External mode enables you to tune model parameters and evaluate the effects of different parameter values on the model results in real-time, in order to find the optimal values to achieve the desired performance. This process is called parameter tuning. • External mode accelerates parameter tuning because you do not have to re-run the model each time you change parameters. • External mode also lets you develop and validate your model using the actual data and hardware for which it is designed. This software-hardware interaction is not available solely by simulating a model. Master Oficial en Ingeniería Mecatrónica Modelado y Control de Sistemas Mecatrónicos y Robots External mode (II) • The model on the host computer as a user interface for interacting with the model running on the target hardware: Departamento de Ingeniería de Sistemas y Automática – When you open blocks and apply new parameter values on the host computer, External mode updates the corresponding values in the model running on the target hardware. – If your model contains blocks for viewing data, such as Scope or Display blocks, External mode sends the corresponding data from the target hardware to those blocks on the host computer. • • When you have finished tuning a model, you can disable External mode and run the tuned model on your hardware. Some limitations apply while you are using External mode: – Do not configure Serial Receive or Serial Transmit blocks in your model to use serial port 0. External mode uses serial port 0. – Do not use the following Arduino servo blocks: Standard Servo Read, Standard Servo Write, and Continuous Servo Write. Master Oficial en Ingeniería Mecatrónica Modelado y Control de Sistemas Mecatrónicos y Robots Departamento de Ingeniería de Sistemas y Automática Detecting Task Overruns Master Oficial en Ingeniería Mecatrónica Modelado y Control de Sistemas Mecatrónicos y Robots Departamento de Ingeniería de Sistemas y Automática Examples Master Oficial en Ingeniería Mecatrónica Modelado y Control de Sistemas Mecatrónicos y Robots Example: Led output with arduino UNO Departamento de Ingeniería de Sistemas y Automática • Connect a LED or use onboard led connected to Pin 13 Master Oficial en Ingeniería Mecatrónica Modelado y Control de Sistemas Mecatrónicos y Robots Departamento de Ingeniería de Sistemas y Automática Example: Commanding a standard servo Master Oficial en Ingeniería Mecatrónica Modelado y Control de Sistemas Mecatrónicos y Robots Departamento de Ingeniería de Sistemas y Automática Servo PPM signal Master Oficial en Ingeniería Mecatrónica Modelado y Control de Sistemas Mecatrónicos y Robots Departamento de Ingeniería de Sistemas y Automática More examples at Mathworks community Master Oficial en Ingeniería Mecatrónica Modelado y Control de Sistemas Mecatrónicos y Robots How to design Device drivers • You can build your own device drivers such as: – Incremental encoder quadrature decoding (Interrupts) – I2C – SPI Departamento de Ingeniería de Sistemas y Automática • Intermediate/advanced topic to be addressed in another seminar. Master Oficial en Ingeniería Mecatrónica Modelado y Control de Sistemas Mecatrónicos y Robots Class Project: Hands-on Departamento de Ingeniería de Sistemas y Automática • Use a photocell and a servo to control the orientation of a solar photovoltaic panel with the Arduino UNO. • Use the simulink example and implement a control law fot the panel orientation depending on the light intensity. Master Oficial en Ingeniería Mecatrónica Modelado y Control de Sistemas Mecatrónicos y Robots Photocell Departamento de Ingeniería de Sistemas y Automática • Choosing the pull-down resistor value (10K vs 1K). Master Oficial en Ingeniería Mecatrónica Modelado y Control de Sistemas Mecatrónicos y Robots Departamento de Ingeniería de Sistemas y Automática Links and references • General: www.mathworks.com • Simulink arduino support: http://www.mathworks.es/es/help/simulink/arduino.html • All about arduino: http://www.arduino.cc • How to design device drivers: http://www.mathworks.com/matlabcentral/fileexchange/39354device-drivers • Mathworks MakerZone Comunity: http://makerzone.mathworks.com/ • Using a photocell: http://learn.adafruit.com/photocells/using-a-photocell Master Oficial en Ingeniería Mecatrónica Modelado y Control de Sistemas Mecatrónicos y Robots