From 1dcacc15094baf6f33f6d888399f5d94cd407581 Mon Sep 17 00:00:00 2001 From: Constandachi Date: Thu, 31 Jul 2025 10:16:45 +0300 Subject: [PATCH 1/2] workshops_applied_systems_control: Add files Signed-off-by: Monica Constandachi Reviewed-by: Jorge Marques --- docs/learning/index.rst | 1 + .../workshops_applied_systems_control/1.jpg | 3 + .../workshops_applied_systems_control/2.png | 3 + .../Applied_systems_control.pptx | 3 + .../actuators.png | 3 + .../applied_systems_control_booklet.pdf | Bin 0 -> 131 bytes .../block_diagram.png | 3 + .../board_design.png | 3 + .../code1.jpg | 3 + .../workshops_applied_systems_control/hmi.jpg | 3 + .../index.rst | 391 ++++++++++++++++++ .../industrial.png | 3 + .../workshops_applied_systems_control/kit.png | 3 + .../on_off.png | 3 + .../workshops_applied_systems_control/pid.png | 3 + .../pid_1.png | 3 + .../pid_2.jpg | 3 + .../ping.png | 3 + .../workshops_applied_systems_control/plc.png | 3 + .../workshops_applied_systems_control/pwm.png | 3 + .../pwm_2.png | 3 + .../pwm_example.webp | Bin 0 -> 24622 bytes .../sensors.jpg | 3 + .../swiot.jpg | 3 + .../system.jpg | 3 + 25 files changed, 455 insertions(+) create mode 100644 docs/learning/workshops_applied_systems_control/1.jpg create mode 100644 docs/learning/workshops_applied_systems_control/2.png create mode 100644 docs/learning/workshops_applied_systems_control/Applied_systems_control.pptx create mode 100644 docs/learning/workshops_applied_systems_control/actuators.png create mode 100644 docs/learning/workshops_applied_systems_control/applied_systems_control_booklet.pdf create mode 100644 docs/learning/workshops_applied_systems_control/block_diagram.png create mode 100644 docs/learning/workshops_applied_systems_control/board_design.png create mode 100644 docs/learning/workshops_applied_systems_control/code1.jpg create mode 100644 docs/learning/workshops_applied_systems_control/hmi.jpg create mode 100644 docs/learning/workshops_applied_systems_control/index.rst create mode 100644 docs/learning/workshops_applied_systems_control/industrial.png create mode 100644 docs/learning/workshops_applied_systems_control/kit.png create mode 100644 docs/learning/workshops_applied_systems_control/on_off.png create mode 100644 docs/learning/workshops_applied_systems_control/pid.png create mode 100644 docs/learning/workshops_applied_systems_control/pid_1.png create mode 100644 docs/learning/workshops_applied_systems_control/pid_2.jpg create mode 100644 docs/learning/workshops_applied_systems_control/ping.png create mode 100644 docs/learning/workshops_applied_systems_control/plc.png create mode 100644 docs/learning/workshops_applied_systems_control/pwm.png create mode 100644 docs/learning/workshops_applied_systems_control/pwm_2.png create mode 100644 docs/learning/workshops_applied_systems_control/pwm_example.webp create mode 100644 docs/learning/workshops_applied_systems_control/sensors.jpg create mode 100644 docs/learning/workshops_applied_systems_control/swiot.jpg create mode 100644 docs/learning/workshops_applied_systems_control/system.jpg diff --git a/docs/learning/index.rst b/docs/learning/index.rst index 52bdda46e..41cef5d36 100644 --- a/docs/learning/index.rst +++ b/docs/learning/index.rst @@ -74,3 +74,4 @@ Academic Workshops workshops_introduction_to_electronics/index workshops_embedded_baremetal/index workshops_embedded_linux/index + workshops_applied_systems_control/index diff --git a/docs/learning/workshops_applied_systems_control/1.jpg b/docs/learning/workshops_applied_systems_control/1.jpg new file mode 100644 index 000000000..636e5f9d1 --- /dev/null +++ b/docs/learning/workshops_applied_systems_control/1.jpg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66f5b5e3dabbd4eea0948d6dbbed35487686ad85d394337e33253430d67d2080 +size 14853 diff --git a/docs/learning/workshops_applied_systems_control/2.png b/docs/learning/workshops_applied_systems_control/2.png new file mode 100644 index 000000000..a1f7d7b07 --- /dev/null +++ b/docs/learning/workshops_applied_systems_control/2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d03830b9d39161f926c7e93f1d8de2766377ff3e06af51c9eb66d359ecb7b04 +size 28734 diff --git a/docs/learning/workshops_applied_systems_control/Applied_systems_control.pptx b/docs/learning/workshops_applied_systems_control/Applied_systems_control.pptx new file mode 100644 index 000000000..31e35d057 --- /dev/null +++ b/docs/learning/workshops_applied_systems_control/Applied_systems_control.pptx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1752ab7768417d444c628784c1c406a33e81b415e2bc2b5bd7f66242cd69a237 +size 55658803 diff --git a/docs/learning/workshops_applied_systems_control/actuators.png b/docs/learning/workshops_applied_systems_control/actuators.png new file mode 100644 index 000000000..6abe78371 --- /dev/null +++ b/docs/learning/workshops_applied_systems_control/actuators.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37250dbb41b717e3b166fc81d5e813abe4d18b12f800f77fd0c749b6a396eabb +size 84239 diff --git a/docs/learning/workshops_applied_systems_control/applied_systems_control_booklet.pdf b/docs/learning/workshops_applied_systems_control/applied_systems_control_booklet.pdf new file mode 100644 index 0000000000000000000000000000000000000000..45140e9a2e8e893a0f281f85a1fbefb8ba74d8ef GIT binary patch literal 131 zcmWN?%MrpL5CG6SRnUNeh2@uS2)hU~DjC5XtX|*cUHqPXykuMJoV!x@zHW~?xBu;P zY-K#vJh`X~#ONev%f|T~*cR&og$hX{B?d#r#^^{Va{fqJM+i1%f=uMuM`n*z8$v`d NMa=$X8885%_yPK8Cqn=L literal 0 HcmV?d00001 diff --git a/docs/learning/workshops_applied_systems_control/block_diagram.png b/docs/learning/workshops_applied_systems_control/block_diagram.png new file mode 100644 index 000000000..2b77111e3 --- /dev/null +++ b/docs/learning/workshops_applied_systems_control/block_diagram.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:573214ff1188fe2058bd2bf3de8bb238c0a934d3207e2fd6318ca84d232d6b34 +size 218234 diff --git a/docs/learning/workshops_applied_systems_control/board_design.png b/docs/learning/workshops_applied_systems_control/board_design.png new file mode 100644 index 000000000..a201d03d7 --- /dev/null +++ b/docs/learning/workshops_applied_systems_control/board_design.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6672b10694feb088288bd6f4d71b688bddaf7f9ee31eb6cccea700b63eaabf95 +size 321322 diff --git a/docs/learning/workshops_applied_systems_control/code1.jpg b/docs/learning/workshops_applied_systems_control/code1.jpg new file mode 100644 index 000000000..d9267566a --- /dev/null +++ b/docs/learning/workshops_applied_systems_control/code1.jpg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d418da6f96fc679b239099efad733868f5ec8f088ddcce374e11b26badf06ee9 +size 41906 diff --git a/docs/learning/workshops_applied_systems_control/hmi.jpg b/docs/learning/workshops_applied_systems_control/hmi.jpg new file mode 100644 index 000000000..4911329b4 --- /dev/null +++ b/docs/learning/workshops_applied_systems_control/hmi.jpg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:90a298346e9f1953b7395d1b8776aaf89c3f7a0f32fe38d5389f6ab85941e3c1 +size 111177 diff --git a/docs/learning/workshops_applied_systems_control/index.rst b/docs/learning/workshops_applied_systems_control/index.rst new file mode 100644 index 000000000..8ab619767 --- /dev/null +++ b/docs/learning/workshops_applied_systems_control/index.rst @@ -0,0 +1,391 @@ +.. collection:: Applied Systems Control + :subtitle: Overview of industrial control and automation systems. + :image: industrial.png + :label: workshop + + Introduction to applied systems control, focusing on practical applications + and real-world scenarios. Participants will learn about various control + systems, their design and implementation. + + documentation: + - . + - solutions/reference-designs/ad-swiot1l-sl/index + +Applied Systems Control Workshop +================================ + +This workshop provides an introduction to applied systems control, focusing on +practical applications and real-world scenarios. Participants will learn about +various control systems, their design and implementation. + +Theoretical content +~~~~~~~~~~~~~~~~~~~ + +- Overview of industrial control and automation systems +- Introduction to PWM control +- Introduction to PID control +- AD-SWIOT1L-SL Board Overview + +.. image:: industrial.png + :width: 500 + :align: right + +Overview of industrial control and automation systems +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- Control systems such as computers, PLCs, and robots are utilized to manage + industrial processes. +- They enhance efficiency, quality, and safety, while lowering operational + costs. +- Common applications include automated assembly lines and process control in + refineries. +- An industrial control system is a group of mechanical and/or electronic + devices that manage other equipment or systems to control specific devices or + various process parameters, such as temperature, humidity, or flow. + +.. admonition:: Did you know? + + The first programmable logic controller (PLC) was invented in 1968 to + automate automotive assembly lines, revolutionizing industrial automation. + +**Examples of systems:** + +#. SCADA (Supervisory Control and Data Acquisition): Designed for monitoring + and controlling field devices (either locally or remotely). SCADA systems + collect, process, and visualize real-time data, and interact with sensors + through SCADA software. Data is typically displayed on an HMI (Human-Machine + Interface). + +#. PLC (Programmable Logic Controllers): Modular devices of various sizes that + include a microprocessor and a certain number of I/O channels, ranging from + dozens to hundreds. PLCs are a fundamental component of industrial systems. + +#. DCS (Distributed Control Systems): Similar in purpose to PLCs, DCSs control + and monitor industrial equipment. The main difference is that DCSs use + multiple controllers to distribute tasks across the entire system, while + PLCs typically have a single centralized controller, making PLCs suitable + for simpler control structures and well-defined tasks. + +#. PID: Will be discussed in more detail later. + +#. PAC (Programmable Automation Controller): Combines the features of a PLC and + a PC to provide more flexible and high-performance control. + +.. grid:: + :widths: 50% 50% + + .. image:: 1.jpg + :width: 300 + + .. image:: 2.png + :width: 350 + +Industrial automation components +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +#. Sensors: Devices that detect changes in the environment and convert them + into signals that can be read by a controller. Examples include temperature + sensors, pressure sensors, and flow meters. + +#. Actuators: Devices that convert control signals into physical actions, such + as motors, valves, and pumps. + + .. grid:: + :widths: 50% 50% + + .. image:: sensors.jpg + :width: 300 + + .. image:: actuators.png + :width: 400 + +#. Controllers: Devices that process input signals from sensors and send output + signals to actuators to control the system. Examples include PLCs, DCSs, and + PACs. + +#. Human-Machine Interface (HMI): A user interface that allows operators to + interact with the control system, monitor its status, and make adjustments + as needed. + +#. Communication protocols: Systems that enable data exchange between different + components of the control system, such as Ethernet, Modbus, and Profibus. + +#. Power supply: Provides the necessary electrical power to the control system components. + +#. Software: Programs that run on controllers and HMIs to implement control + algorithms, monitor system performance, and provide user interfaces. + +.. grid:: + :widths: 50% 50% + + .. image:: hmi.jpg + :width: 300 + + .. image:: plc.png + :width: 250 + +Common control strategies +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +#. PID (Proportional-Integral-Derivative): A widely used control strategy that + adjusts the output based on the error between the desired setpoint and the + measured process variable. PID controllers are effective for maintaining + stable control in various industrial applications. + + .. image:: pid.png + :width: 450 + :align: center + +#. Feed-forward control: A proactive control strategy that anticipates changes + in the process and adjusts the output accordingly, rather than reacting to + errors after they occur. + +#. Cascade control: A control strategy that uses multiple controllers in a + hierarchical structure to manage complex processes. Each controller operates + on a different level, allowing for more precise control and improved system + performance. + + .. image:: on_off.png + :width: 300 + :align: right + +#. ON/OFF control: A simple control strategy that switches the output between + two states (on and off) based on the process variable. This method is often + used in applications where precise control is not required, such as in + heating systems. + +**Introduction to PWM control** +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. image:: pwm.png + :width: 500 + :align: right + +Pulse Width Modulation (PWM) is a technique used to control the power delivered +to electrical devices by varying the width of the pulses in a signal. It is +commonly used in applications such as motor control, LED dimming, and heating +systems. +PWM works by switching a signal on and off at a high frequency, with the ratio +of the on time to the total cycle time (duty cycle) determining the average +power delivered to the load. By adjusting the duty cycle, the effective voltage +and current can be controlled, allowing for precise control of devices. + +**Applications of PWM control include:** + +- Motor speed control: By varying the duty cycle, the speed of DC motors can be + adjusted, allowing for smooth acceleration and deceleration. + +- LED dimming: PWM can be used to control the brightness of LEDs by adjusting + the duty cycle, providing energy-efficient lighting solutions. + +- Heating systems: PWM can be used to control the power delivered to heating + elements, allowing for precise temperature control in applications such as + ovens and industrial furnaces. + +.. image:: pwm_2.png + :width: 500 + :align: center + +Introduction to PID control +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +PID (Proportional-Integral-Derivative) control is a widely used control +strategy in industrial automation systems. It combines three control actions to +maintain a desired setpoint by adjusting the output based on the error between +the setpoint and the measured process variable. +PID control works by continuously calculating the error and applying a +correction based on three terms: + +.. image:: pid_1.png + :width: 500 + :align: center + +.. note:: + + **Did you know?** The PID control algorithm was first developed in the + early 20th century for automatic steering of ships—long before it became a + staple in industrial automation. + +#. Proportional (P): The proportional term produces an output that is + proportional to the current error. It provides a quick response to changes + in the process variable, but may lead to steady-state errors if used alone. + +#. Integral (I): The integral term accumulates the error over time and produces + an output that is proportional to the total accumulated error. It helps + eliminate steady-state errors by adjusting the output based on the history + of the error. + +#. Derivative (D): The derivative term predicts future errors based on the rate + of change of the error. It provides a damping effect, reducing overshoot and + improving system stability. + +PID control is widely used in various applications, including: + +- Temperature control: Maintaining a specific temperature in processes such as + chemical reactions, heating systems, and HVAC systems. + +- Speed control: Regulating the speed of motors in applications such as + conveyor systems, fans, and pumps. + +- Position control: Controlling the position of mechanical systems, such as + robotic arms and CNC machines + +.. image:: pid_2.jpg + :width: 550 + :align: center + + +AD-SWIOT1L-SL Board Overview +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +The AD-SWIOT1L-SL board is a versatile platform designed for industrial control +applications. It features a range of components that facilitate the +implementation of control strategies, including PWM and PID control. + +.. figure:: swiot.jpg + :alt: AD-SWIOT1L-SL board + :width: 400 + :align: center + + AD-SWIOT1L-SL board + +It includes: + +- 4 x software configurable IO channels +- Processing at the edge +- Built-in security +- 10BASE-T1L interface +- 10-Link expansion PMOD connector +- Field and SPE power +- Fully isolated design +- Industry standard form factor for DIN rail installation +- Open-source hardware design and software stack + +.. grid:: + :widths: 50% 50% + + .. figure:: block_diagram.png + :alt: AD-SWIOT1L-SL block diagram + + AD-SWIOT1L-SL Block Diagram + + .. figure:: board_design.png + :alt: AD-SWIOT1L-SL board design + + AD-SWIOT1L-SL Board Design + + +**Kit contents** + + +| 1 x 10BASE-T1L TO USB adapter board +| 1 x Profibus cable for single pair Ethernet (SPE) Connectivity +| 1 x USB 2.0 cable +| 1 x cable connector for external 24V power supply +| 1 x cable connector for channels connectivity + +.. figure:: kit.png + :alt: AD-SWIOT1L-SL kit contents + :width: 500 + :align: center + + AD-SWIOT1L-SL kit contents + +Hands-on activity +~~~~~~~~~~~~~~~~~~~~~ + +Participants will engage in hands-on activities to apply the theoretical +concepts learned. The activities will include: + +#. Booting your PC Linux + +#. Power the AD-SWIOT1L-SL board by plugging in the power supply. + +#. Connect the USB to T1L media converter to your PC and the AD-SWIOT1L-SL + board. After a short time, both link status LEDs(on the media converter and + the board) should be on. + +#. Testing the board connectivity + + - Open a terminal and run the command: ``ping 169.254.97.40`` This command + will rule out the host (PC) network configuration issues. + - If the ping command is not successful run ``sudo ip route add + 169.254.97.40 dev eth0`` to add a route to the board's IP address. + + .. image:: ping.png + :alt: Ping command output + :width: 500 + :align: center + +#. Clone the workshop repository: ``git clone https://github.com/constmonica/pyadi-iio`` + +#. Navigate to the cloned repository: ``cd pyadi-iio`` + +#. Checkout the workshop branch: ``git checkout swiot`` + +#. Go to the examples directory: ``cd examples/workshop`` + + .. image:: code1.jpg + :alt: Channel configuration code + :width: 600 + :align: center + + + .. figure:: system.jpg + :alt: System setup + :width: 600 + :align: center + + System setup + + +Slide Deck and Booklet +~~~~~~~~~~~~~~~~~~~~~~ + +Since this tutorial is also designed to be presented as a live, hands-on +workshop, a slide deck is provided here: + +.. admonition:: Download + + :download:`Applied Systems Control Slide Deck <../workshops_applied_systems_control/Applied_systems_control.pptx>` + +A complete booklet of the hands-on activity is also provided, either as a companion to +following the tutorial yourself: + +.. admonition:: Download + + :download:`Applied Systems Control Booklet <../workshops_applied_systems_control/applied_systems_control_booklet.pdf>` + +**Exercise 1: Power the RGB LED red, green and blue** + + - Open file exercise_2.py + - Use the connector with the RGB LED and plug it into the board. + - Write a for loop to power the LED red, green, and blue in sequence. + - Run your code and observe the colors change ``python3 exercise_2.py`` + +**Exercise 2: Adjust the brightness of an LED using a potentiometer** + + - Use the connector with a potentiometer and LED and plug it into the board. + - Open file exercise_3.py + - Assign the value of the potentiometer to the ADC channel + - Run your code.The LED brightness change as you adjust the potentiometer. + ``python3 exercise_3.py`` + +**Exercise 3: PID control loop of temperature using a PWM-controlled fan** + + - Use the connector with a fan and plug it into the board. + - Run the pid_control.py script and see how the PWM signal and speed adjust + based on temperature. ``python3 pid_control.py`` + - Make the ``pwm_output`` variable an input from the user and see how the + duty cycle affects fan speed. + + +Workshop Takeaways +~~~~~~~~~~~~~~~~~~ + +- Gained practical experience with industrial control systems and their components. +- Learned the fundamentals of PWM and PID control strategies and their real-world applications. +- Explored the AD-SWIOT1L-SL board and its capabilities for industrial automation. +- Developed hands-on skills in configuring hardware and running control algorithms. +- Understood the importance of sensors, actuators, controllers, and communication protocols in automation. +- Enhanced understanding of how modern industrial systems are designed, monitored, and controlled. +- Practiced troubleshooting connectivity and implementing control logic in Python. \ No newline at end of file diff --git a/docs/learning/workshops_applied_systems_control/industrial.png b/docs/learning/workshops_applied_systems_control/industrial.png new file mode 100644 index 000000000..4a2221415 --- /dev/null +++ b/docs/learning/workshops_applied_systems_control/industrial.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f8f7a9988a1107c389df04eaabcc75bfd48c251c564bacd7c5fe15ad9ac3cb5a +size 105814 diff --git a/docs/learning/workshops_applied_systems_control/kit.png b/docs/learning/workshops_applied_systems_control/kit.png new file mode 100644 index 000000000..9d73608f6 --- /dev/null +++ b/docs/learning/workshops_applied_systems_control/kit.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f3850617a8ba7414a9673ccb225f9eb842685f4d2e79472861cb9e833241388 +size 371982 diff --git a/docs/learning/workshops_applied_systems_control/on_off.png b/docs/learning/workshops_applied_systems_control/on_off.png new file mode 100644 index 000000000..a4a151159 --- /dev/null +++ b/docs/learning/workshops_applied_systems_control/on_off.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aebcd452e4961b40a7d8289b46ff2bd575524d776c12fb97302633dea7886b0c +size 21077 diff --git a/docs/learning/workshops_applied_systems_control/pid.png b/docs/learning/workshops_applied_systems_control/pid.png new file mode 100644 index 000000000..01362dfd4 --- /dev/null +++ b/docs/learning/workshops_applied_systems_control/pid.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac9b60fe69ccfe01a05f4a7a44823534c0ec2b5297ef95b6725afd97859be641 +size 60462 diff --git a/docs/learning/workshops_applied_systems_control/pid_1.png b/docs/learning/workshops_applied_systems_control/pid_1.png new file mode 100644 index 000000000..8f5adbfe4 --- /dev/null +++ b/docs/learning/workshops_applied_systems_control/pid_1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1232b9777747e94829c3750b2389812993e84507da058f183ddf4b858324a302 +size 46252 diff --git a/docs/learning/workshops_applied_systems_control/pid_2.jpg b/docs/learning/workshops_applied_systems_control/pid_2.jpg new file mode 100644 index 000000000..14ef4a33c --- /dev/null +++ b/docs/learning/workshops_applied_systems_control/pid_2.jpg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bba45672a370387ecc8b99be0250e78351dfeb67fd5c73111e3b19ecfb5c7f55 +size 20992 diff --git a/docs/learning/workshops_applied_systems_control/ping.png b/docs/learning/workshops_applied_systems_control/ping.png new file mode 100644 index 000000000..54ede74ca --- /dev/null +++ b/docs/learning/workshops_applied_systems_control/ping.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d8485279fdf5353fb757ea61e2fb9e840bf9e69001e2c064e9a50a316e80847 +size 59336 diff --git a/docs/learning/workshops_applied_systems_control/plc.png b/docs/learning/workshops_applied_systems_control/plc.png new file mode 100644 index 000000000..17fc4c1f0 --- /dev/null +++ b/docs/learning/workshops_applied_systems_control/plc.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:232689134be4120262df0a7b62bab990d4b1ab45c768bccee24d645866e918f8 +size 69099 diff --git a/docs/learning/workshops_applied_systems_control/pwm.png b/docs/learning/workshops_applied_systems_control/pwm.png new file mode 100644 index 000000000..18d295248 --- /dev/null +++ b/docs/learning/workshops_applied_systems_control/pwm.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:74b0ffe288fc48b780cd69a1fd7d4bdf669c0253858b901270ac035f4f7eefc5 +size 9058 diff --git a/docs/learning/workshops_applied_systems_control/pwm_2.png b/docs/learning/workshops_applied_systems_control/pwm_2.png new file mode 100644 index 000000000..4c8c5ac6b --- /dev/null +++ b/docs/learning/workshops_applied_systems_control/pwm_2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6acbe9d807c9bcfdad36c5756e411d857bafc5a28b4108c9d2ca73946512792 +size 5595 diff --git a/docs/learning/workshops_applied_systems_control/pwm_example.webp b/docs/learning/workshops_applied_systems_control/pwm_example.webp new file mode 100644 index 0000000000000000000000000000000000000000..eeef9bf58d8d9dcbd30bcd93f8996bdca1c4fcb1 GIT binary patch literal 24622 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�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 literal 0 HcmV?d00001 diff --git a/docs/learning/workshops_applied_systems_control/sensors.jpg b/docs/learning/workshops_applied_systems_control/sensors.jpg new file mode 100644 index 000000000..6113c24ad --- /dev/null +++ b/docs/learning/workshops_applied_systems_control/sensors.jpg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:703c566df33684e6d1d73799ca63b88a92baa8586c41a97603c1af4e8c9ca324 +size 70776 diff --git a/docs/learning/workshops_applied_systems_control/swiot.jpg b/docs/learning/workshops_applied_systems_control/swiot.jpg new file mode 100644 index 000000000..5ef7ce073 --- /dev/null +++ b/docs/learning/workshops_applied_systems_control/swiot.jpg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67a82804b9cf42be6c835813be8d89fbaa3ba823185f27e74e8b09b736342126 +size 41072 diff --git a/docs/learning/workshops_applied_systems_control/system.jpg b/docs/learning/workshops_applied_systems_control/system.jpg new file mode 100644 index 000000000..190ea36a6 --- /dev/null +++ b/docs/learning/workshops_applied_systems_control/system.jpg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:00d94be78ae061646b92ebebb99b753b45d1814b4946afa745f1c191c17af120 +size 107552 From 76c64bed9b191d0cd8176972bc4ec5ff0caa926d Mon Sep 17 00:00:00 2001 From: Jorge Marques Date: Thu, 9 Oct 2025 18:55:53 +0200 Subject: [PATCH 2/2] .vale: Extend accept list Signed-off-by: Jorge Marques --- .github/styles/config/vocabularies/Base/accept.txt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/styles/config/vocabularies/Base/accept.txt b/.github/styles/config/vocabularies/Base/accept.txt index c6c87f283..15a6d28d2 100644 --- a/.github/styles/config/vocabularies/Base/accept.txt +++ b/.github/styles/config/vocabularies/Base/accept.txt @@ -33,10 +33,14 @@ LED(s)? [Aa]dditional [Hh]ighspeed [Dd]efconfig +[Ss]etpoint Tx Rx MIMO(s)? +PLC(s)? +DCS(s)? +PAC(s)? Doherty PCIe Agilent @@ -47,6 +51,10 @@ Versal APIs DAC(s)? ADC(s)? +PWM(s)? +HMI(s)? +Profibus +Ethernet ns dBm