.. _architecture_survey: ====== Survey ====== Here are some embedded control system projects. Motor Controllers ================= SimpleFOC --------- Simple framework based on Arduino that emphasize on simplicity. Motor is controled in a while loop that; 1. First acquires sensor data such as phase current from ADC or position/speed sensor. 2. Then caculates the PWM duty cycles. 3. Finally, applies the PWM duty cycles to each phase. `SimpleFOC code `_ ST Motor Workbench ------------------ Interrupt-based loops with sensor data acquired in the control loop. The hardware is optimized for motor control, so the software can be simple. `ST motor control course: FOC library about interrupt `_ Spinner ------- Motor controller based on Zephyr as a proof of concept project. For STM32 implementation (currently the only one available), it uses Zephyr's `Direct ISR `_ for; * Phase current sampling using ADC [#]_. * Hall effect encoder using timer [#]_. PWM duty cycle is calcuated and set in the current sampling loop [#]_. References ~~~~~~~~~~ * `Spinner Documentation `_ * `Spinner GitHub `_ .. [#] `Spinner current sampling source code `_ .. [#] `Spinner hall effect sensor source code `_ .. [#] `currsmp_configure() API reference `_ that sets current regulation callback. Vechicle Controllers ==================== CogniPilot - Cerebri -------------------- Publisher/subscriber model. `GitHub: CogniPilot/cerebri `_ Flight Controllers ================== ArduPilot --------- .. image:: https://ardupilot.org/dev/_images/copter-architecture.png :alt: ArduPilot Architecture :align: center :width: 100% `ArduPilot code overview `_ PX4 --- .. image:: https://docs.px4.io/main/assets/PX4_Architecture.BOZwmjrc.svg :alt: PX4 Architecture :align: center :width: 100% `Software architecture `_ 3D Printers =========== Marlin ------ `Code structure `_ Kilpper ------- `Kilpper code overview `_ Zephyr projects =============== List of Zephyr applications and frameworks: `awesome Zephyr `_ Popular Zephyr projects: * `ZMK Firmware `_ * `ZSWatch `_