FiO Boards and RapidSTM32 Beginners Workshop www.aimagin.com Objective: Able to use FiO Boards and RapidSTM32 Blockset to perform "most common tasks" immediatley FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com What are microcontrollers? FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com 3GHz, 1TB HDD, 8MB RAM USB, Wifi, LAN Keyboard, Monitor, Mouse FiO Boards and RapidSTM32 Beginner's Workshop 100MHz, 1MB HDD (Flash), 64kB RAM UART, I2C, SPI, CAN, USB, LAN Buttons, LCD www.aimagin.com what? when? how? FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com what? when? how? FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Software FiO Boards and RapidSTM32 Beginner's Workshop + www.aimagin.com Minimum Requirements ...install in the order shown 1. Microsoft .NET Framework 3.5 or later Free download from http://www.microsoft.com/net 2. Matlab + Simulink + Real-Time Workshop + Real-Time Workshop Embedded Coder R2009a or later (R2011 or later Real-Time Workshop = Simulink Code, Real-Time Workshop Embedded Coder = Embedded Coder) 3. Keil RVMDK R4.13a or later Free download from https://www.keil.com/demo/eval/arm.htm 4. RapidSTM32 Blockset Free download from https://www.aimagin.com/download/ FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com http://aimagin.com/learn/index.php/Getting_Ready FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com You will learn to ... Implement a Low-Pass Butterworth Digital Filter Use PWM signal to control a servo motor Perform PIL Verification Use photocell (LDR) to acquire light data in realtime into Simulink Log data to microSD Generate code for Non FiO Board & Manually modify C Code Control external hardware from Simulink Use digital output to drive LEDs Display status on a character LCD Real-Time DAQ and data plots in Simulink FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Let's Begin FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Case studies: Design an automatic light switch controller. Auto OFF during the day FiO Boards and RapidSTM32 Beginner's Workshop Auto ON at night www.aimagin.com Photocell (LDR) Circuit Vin = 3.3V The brightness level relates to Vsense and Rphotocell R 2.2KOhm as follows: Vsense = Vin * Rphotocell / (Rphotocell+2200) Photocell (LDR) resistance Rphotocell varies as a function of brightness. FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Warning!!! FiO Boards ADC only accepts between 0 - 3.3V DC. Higher voltages will cause permanent damages to the system. FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com System Concept Acquire Real-Time Data into Simulink Target Host PC Plot Graphs ADC CH13 = Pin C3 USB (HID) FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Analog to Digital Converter (ADC) Analog Sensors (Pressure, Temperature , Distances, etc.) FiO Boards and RapidSTM32 Beginner's Workshop Voltage (03.3V) www.aimagin.com The circuit diagram 3.3VDC GND Vsense FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Target Simulink Model FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Commonly Used Steps Before Build • • Update Diagram Twice: Check sample time (Ts) of all blocks are correct. Set target in USB IAP Mode: Use request_productinfo('usb', 'name') command FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com USB In-Application Programming Mode FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Help Please help rapidstm32_blockset FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Host PC Simulink Model FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Run User Custom Program Mode FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Running the System FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Questions? • • • What voltage range is "Day"? What voltage range is "Night"? How would you design the "ON" / "OFF" algorithm? FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Running the System - Explain Night Threshold 2VDC Day FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com The "ON" / "OFF" algorithm threshold = 2; %volts LEDON = 1; LEDOFF = 0; if (vin>threshold) cmd = LEDON; else cmd = LEDOFF; end FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com System Concept Testing Algorithm Target Host PC ON/OFF Algorithm Plot Graphs + ON/OFF ADC CH13 = Pin C3 USB (HID) FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Host PC Simulink Model FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Running the System Vin Threshold 2VDC cmd FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com The Build Process Explain - 1 Source Files (*.c, *.h) Compiler Assembly Files (*.s) Assembler Assembly Files (*.s) Compile Object Files (*.o) Object / Library Files (*.o, *.lib, *.a) Linker Executable Files (*.hex / *.bin) Load/ Burn FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com The Build Process Explain - 2 Keil RVMDK Matlab/ Simulink Source Files (*.c, *.h) FiO / RapidSTM32 Compiler Assembly Files (*.s) Assembler Assembly Files (*.s) Compile Object Files (*.o) Object / Library Files (*.o, *.lib, *.a) Linker Executable Files (*.hex / *.bin) Load/ Burn FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com System Concept Turning LED ON / OFF from Simulink Target Host PC Algorithm Plot Graphs + ON/OFF ADC CH13 = Pin C3 ADC USB (HID) LED ON/OFF cmd FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Target Simulink Model FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Host PC Simulink Model FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Try the following simulation !!! FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Things to note 1. Communication Architecture Explain Native Simulink simulation is NOT real-time FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Things to note 2. Communication Architecture Explain Target Host Very Accurate Timing Poor Real-Time Performance FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com How to make Simulink simulation real-time? FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Poor Timing Very Accurate Timing Target Host RX RX 5 2 DO DO 6 3 TX FiO Boards and RapidSTM32 Beginner's Workshop 1 4 TX www.aimagin.com How to make Simulink simulation real-time? FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Play dumb Very Accurate Timing Target Host RX RX 5 2 DO DO 6 3 TX 1 4 TX Wait for correct time step FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Both target & host start in wait (RX) state. Target Host RX RX 5 2 DO DO 6 3 TX FiO Boards and RapidSTM32 Beginner's Workshop 1 4 TX www.aimagin.com Solution Target Host RX RX DO DO TX TX Force Output FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com communication architecture controls Real-Time Simulation FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Human Interface Device USB 63 bytes per data packet HID Protocol Blocks No special driver needed Same as Maximum 1,000 packets per second FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Limitations when using USB HID From Target -> Host maximum 1kHz FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Limitations when using USB HID Between Target <-> Host maximum 200Hz. FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Limitations when using USB HID USB HID packet is 63bytes maximum. FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com What happens when the photocell output is very noisy? Sensor affected (shadowed) by a tree or clound. FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com How would you solve this problem? FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Fourier Transform Time Domain FiO Boards and RapidSTM32 Beginner's Workshop Frequency Domain www.aimagin.com Simulation Study FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Simulation Results FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Fast changing (high frequency) signal component + Slow changing (low frequency) signal component Low frequency component Low Pass Filter High frequency component FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com System Concept Implementing Low Pass Filter FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com System Concept Adding Low Pass Filter Target Host PC Plot Graphs + ON/OFF ADC CH13 = Pin C3 ADC USB (HID) 2 LEDs ON/OFF cmd FiO Boards and RapidSTM32 Beginner's Workshop Lowpass FIlter ON/OFF Algorithm www.aimagin.com Target Simulink Model FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Host PC Simulink Model FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Running the System FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Advantages of designing and testing algorithm in the Host PC? Any one??? FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Answers: Fast 'n' Easy FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com How certain are you that the actual embedded system will perform exactly as simulated? FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com System Concept Processor in the Loop (PIL) Verification Explain Target Host PC Compare results ADC CH13 = Pin C3 ADC Lowpass FIlter FiO Boards and RapidSTM32 Beginner's Workshop Lowpass FIlter www.aimagin.com Target Simulink Model FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Host PC Simulink Model FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Running the System Why do we need to reset the target before running every time? Answer on the following slide. FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Answer to previous question To reset the initial condition of the filters on the target to the same state (zero) as on the host. FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com System Concept Stand-Alone System Implementation - LCD Toggle LED Display string FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Target Simulink Model FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Tips for using the LCD Block Select Action before output characters to "Do nothing" for none first line display. FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com System Concept Stand-Alone System Implementation LCD + Data Logger Log Data to Micro SD Card FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Target Simulink Model FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com The Challenge... Can you design an auto-tune (adaptive) ON/OFF algorithm? FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Adaptive Algorithm Solution FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com The Real-Time Block FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Non Real - Time FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com The Non - Real Time Simultion Simulation Do Something FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Try the same simulation with the Real-Time Block (The Real-Time Block Explain) FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com The Real Time Block No Correct time? Yes Do Something FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com System Concept Driving an RC Servo Target Host PC Drive Servo Motor Add a Real-Time Block USB (HID) %Duty Cycle Display % Duty Cycle Slider Gain User Interface FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com How does an RC servo work? 20msec = 50Hz 10deg 10% Duty Cycle 80deg 40% Duty Cycle FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Target Simulink Model FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Host PC Simulink Model FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Can you help find the range of %Duty Cycle for correct operation? Degrees % Duty Cycle Minimum Maximum FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com The Sample Time FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com CTRL + J Base Sample Time FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Multi-rate Single Tasking FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com How to allow users to input angles in degrees instead of %DC? FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Advanced "How To" www.aimagin.com/learn/index.php/Advanced_"How_to " FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Manually Modify the generated C Code FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Where is the generated C code? FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com model.mdl model_rapidstm32 folder header1.h source1.c FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com model_rapidstm32 folder stm32f10x_hwdrvlib.h Hardware Driver Code stm32f10x_hwdrvlib.c model.h Algorithms model.c FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com How to Set up Keil RVMDK? www.aimagin.com/learn/index.php/Advanced_"How_to" FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com Manually modifying C code allows applications with ... No Blocks Non - FiO Boards Mass Products FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com FiO and RapidSTM32 is for ... Rapid prototyping Complex algorithm made easy FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com http://www.aimagin.com/learn/ http://www.aimagin.com/forum/ https://www.facebook.com/groups/fiousers/ http://www.youtube.com/rapidstm32 https://www.facebook.com/fioboard help@aimagin.com FiO Boards and RapidSTM32 Beginner's Workshop www.aimagin.com For more information please visit www.aimagin.com