
This lesson will introduce you to the concept of Model Based Design.
This lesson will get you familiar with Simulink interface by building a model of DC motor control.
In this lesson we continue the development of the closed control loop of the DC motor
In this lesson you will learn how to configure Simulink models for code generation.
In this lesson you will learn how to integrate the code you generated from your model using embedded coder with handwritten code that defines your digital pins, then you will deploy the code on the target hardware.
Apply model based development to deploy code on the ESP32 development board using PlatformIO, adapting pin definitions and migrating from STM32 and Arduino with minimal changes.
This lesson will introduce you to a simple implementation of a directional lights system.
This lessons is about reading and handling analog signals.
Use the percent calculation module to control a dc motor's speed with pulse width modulation via a motor driver, while direction follows polarity and boolean logic in a Simulink model.
Learn to measure distance with an ultrasonic sensor using trigger and echo pins, calculate travel time, and display distance in centimeters via a Simulink Arduino model.
Learn to implement an infrared obstacle detection sensor in Simulink, using Stateflow to drive an led for a defined time when an object is detected.
Learn how a rotary encoder uses two signals A and B to determine position and rotation direction, then implement detection in Simulink with a data dictionary and enumerated rotation direction.
Implement a rotation-based counter in Simulink that increments on clockwise rotation, decrements on anti-clockwise rotation, and preserves the value when idle, using a switch-case block, enum constants, and action subsystems.
Use Simulink hardware support package for Arduino to generate and deploy code to an Arduino Uno, using two inputs and two outputs with analog and digital blocks on pins 8–11.
Compare atomic subsystems and function-call subsystems in model based design, exploring reusable code, scheduling with a rate scheduler, and choosing the approach that best fits project needs.
Model Based Design: to be MBD Engineer
We will dive into the world of Model Based Design and Embedded Systems, explore the entire software development life cycle.
Initiate the process by comprehending the requirements, transforming them into models, generate code from models, integrate codes and deploy on hardware.
Throughout this course, we will guide you systematically in the creation of embedded systems projects and leveraging the power of the model based approach with Simulink.
You’ll gain expertise in constructing models tailored for code generation, deploying this code seamlessly onto microcontrollers, and conducting real-world hardware testing.
Furthermore, we will provide you with a comprehensive introduction to the essential Simulink blocks that are frequently utilized in embedded software projects within industries such as automotive.
In addition, you will learn the common design concepts in industry such as implementation of counters, debouncing algorithm and other topics.
Learn how to interface different sensors, design models to use data from them and to control different actuators.
This course will build your knowledge step by step and prepare you to start your journey as model based design engineer in industries such automotive, aerospace and robotics by building real embedded systems projects starting from basic examples to more complex designs.
This course will teach you how to handle the following sensors and actuators using model based design techniques:
Modelling using multiple Simulink blocks such as:
Math blocks, Logic blocks
PID controller, Inputs and outputs blocks,
If/else block, Switch Case blocks, Merge block
Atomic subsystems, Enabled subsystem
Truth Tables
Stateflow chart
Implement commonly used algorithm in automotive and other industries such as Counters and Denouncing algorithm
Generate C Code and Deploy on Micro-Controller Target [Ex: Arduino, STM32 and ESP32]
Digital inputs and outputs (Buttons and LEDs)
Analog signals (Potentiometer)
Combine digital and analog signals in a control algorithm to control motor speed
LDR
Ultrasonic Sensor
Infrared Obstacle Avoidance Sensor
Rotary Encoder
Simulink Support Package for Arduino
In each lesson we will learn a new design technique and introduce you to multiple ways of building the same functionality to enhance your modeling skills and deploying .
Course Updates:
[April 2025]
New Lesson in Questions and Answers section [ Atomic vs Function Caller Subsystem]
[Jan 2025]
New lesson on deploying generated code on STM32 uC
New lesson on deploying generated code on ESP32