diff --git a/source/car/electronics_embedded_systems/embedded_modules/embedded_modules.rst b/source/car/electronics_embedded_systems/embedded_modules/embedded_modules.rst index 3ca73f9..f9f2b91 100644 --- a/source/car/electronics_embedded_systems/embedded_modules/embedded_modules.rst +++ b/source/car/electronics_embedded_systems/embedded_modules/embedded_modules.rst @@ -786,54 +786,44 @@ Real-life Tests Kicad tests with mosfet | + ----- -Digital Potentiometer DS3502U+ +Curtis speed controller ----- -This circuit can enable manual o automatic regulation of velocity with a digital potentiometer of 10k. We are powering the potentiometer with 12 Volts, to modulate velocity we used the inputs A,B,W , in the terminal A or B will be entering 10V and the result will be going to the Wiper W and eventually will go to J3 from curtis controller. - -* Meaning of pins: - - +----------+-----------------------------------------------+ - | Pins | Meaning | - +----------+-----------------------------------------------+ - | Pot | Connected to GPIO of STM32 to switch motor. | - +----------+-----------------------------------------------+ - | J2E | This signal is connected to Curtis controller | - | | J2 , it has 10 Volts. | - +----------+-----------------------------------------------+ - | WiperPot | If we decide to use manual control, this | - | | signal will first be sent to our car's 5K | - | | pedal and then be connected to our J3 Curtis | - | | controller, which is how velocity is | - | | manually modulated. | - +----------+-----------------------------------------------+ - | J3 | The modulated signal will come from the wiper | - | | (W) and be connected straight to J3 Curtis | - | | Controller if we opt to employ | - | | the autonomous mode. | - +----------+-----------------------------------------------+ +Curtis speed controller is a device used for high precission motor speed control applications in electric vehicles. +This controller modulates speed based on the low current entries J1, J2 and J3. - -.. figure:: /images/electronics_embedded/throttle_module/12_pot.png +.. figure:: /images/electronics_embedded/throttle_module/curtis_speed_controller.png :align: center :alt: stm32 schematic :figclass: align-center :width: 600px - Digital Potentiometer schematic - + Curtis speed controller pins | -.. figure:: /images/electronics_embedded/throttle_module/13_pot_general_view.png - :align: center - :alt: stm32 schematic - :figclass: align-center - :width: 600px - Throttle module in general diagram + +----------+-------------------------------------------------+ + | Pins | Description | + +----------+-------------------------------------------------+ + | J1 | Keyswitch, not used in this module | + +----------+-------------------------------------------------+ + | J2 | Wire 1 of 2-wire throttle. Must be connected to | + | | Potentiometer High or ITS Throttle terminal. | + +----------+-------------------------------------------------+ + | J3 | Wire 2 of 2-wire throttle. Must be connected to | + | | Potentiometer wiper, ITS Low terminal. | + +----------+-------------------------------------------------+ -| +----- +Digital Potentiometer +----- +This circuit can enable manual o automatic regulation of velocity with a digital potentiometer of 10k. We are powering the potentiometer with 12 Volts, to modulate velocity we used the inputs A,B,W , in the terminal A or B will be entering 10V and the result will be going to the Wiper W and eventually will go to J3 from curtis controller. + +DS3502U+ +-------- +This was the original potentiometer used for autonomous mode control. However, this is not the main one anymore. Although the main potentiometer is :ref:`MCP45HVX1 `, the circuit and logic behind works basically the same way. -* Pin description Digital potentiometer: +* Pin description of DS3502U+ potentiometer: .. figure:: /images/electronics_embedded/throttle_module/14_pot_pins.png :align: center @@ -841,8 +831,7 @@ This circuit can enable manual o automatic regulation of velocity with a digital :figclass: align-center :width: 600px - Digital potentiometer pin description - + DS3502U+ potentiometer pin description | @@ -866,7 +855,7 @@ This circuit can enable manual o automatic regulation of velocity with a digital | SDA | SDA | +----------+----------------+ -* Digital Potentiometer datasheet: +* DS3502U+ Potentiometer datasheet: .. figure:: /images/electronics_embedded/throttle_module/15_pot_max_values.png :align: center @@ -874,31 +863,184 @@ This circuit can enable manual o automatic regulation of velocity with a digital :figclass: align-center :width: 600px - Digital potentiometer maximum ratings + DDS3502U+ potentiometer maximum ratings | +.. _MCP45HVX1: +MCP45HVX1 +-------- +It is the main digital potentiometer of the Throttle module. It works almost the same way than the DS3502U, but it includes some extra pins and another feautres. - +----------+-------------------------------+ - | Pins | Digital Potentiometer | STM32 | - +----------+-------------------------------+ - | SCL | SCL | SPB6 | - +----------+-------------------------------+ - | SDA | SDA | PB7 | - +----------+-------------------------------+ +This potentiometer also comunicates with the STM32 via I2C to modify or read the registers. + +.. figure:: /images/electronics_embedded/throttle_module/IC_pot_view.png + :align: center + :alt: stm32 schematic + :figclass: align-center + :width: 700px + + MCP45HVX1 potentiometer pin view -* STM32 datasheet: +| -.. figure:: /images/electronics_embedded/throttle_module/16_datasheet_stm32.png + +.. figure:: /images/electronics_embedded/throttle_module/IC_pot_circuitView.png :align: center :alt: stm32 schematic :figclass: align-center :width: 600px - STM32 Pin description I2C + MCP45HVX1 circuit view | + +* Pin description of MCP45HVX1: + +.. figure:: /images/electronics_embedded/throttle_module/MCP45HVX1_pin_description.png + :align: center + :alt: stm32 schematic + :figclass: align-center + :width: 600px + + MCP45HVX1 potentiometer pin view + +| + +.. _MCP45HVX1_Programming: +Programming the MCP45HVX1 +-------- +The development of the functions related to the control of this device is performed inside **mcp45hvx1.c** +inside the throttle module STM32 project. + +.. figure:: /images/electronics_embedded/throttle_module/Throttle_mcp45hvx1_init.png + :align: center + :alt: stm32 schematic + :figclass: align-center + :width: 530px + + mcp45HVX1.c device initialization + +| + +At first, there is the definition of I2C address of potentiometer (**pot_address**), the TCON register (Terminal Control) +that consists of 4 bits, and allows the developer which terminals (PA0, PW0, PB0) are going to be enabled and used for the +circuit. Also, it is defined the **enable_potentiometer** and finally the name of the I2C handler (**hi2c1**) configured in the project. + +In **initialize_devices** it determines if the connection with the potentiometer has been established. If this is performed +successfully, then the potentiometer is enabled. + +.. figure:: /images/electronics_embedded/throttle_module/Throttle_mcp45hvx1_beginPot.png + :align: center + :alt: stm32 schematic + :figclass: align-center + :width: 580px + + mcp45HVX1.c begin potentiometer function + +| + +**begin_pot** is the function where the initialization is completed. If the potentiometer is enabled, it starts setting the +wiper register with the initial value with the direction **0b00** + +Then, the pin **WLAT** (wiper latch) is setted to LOW. As shown in the pin description, this allows the direct update of the +wiper value. When it is HIGH, the new value received by the I2C message is first stored in the shift register. This feature +allows the user to connect the wiper update using external events. For this implementation, this pin is only set once on LOW +and used as a reset. + +After that, the **SHDN** pin is set to HIGH. Its functionality is basically to be an enable for the potentiometer terminals. + +Finally, it is called **defaultTCON** that configures the Terminal Control register. + +.. figure:: /images/electronics_embedded/throttle_module/Throttle_mcp45hvx1_writeWiper.png + :align: center + :alt: stm32 schematic + :figclass: align-center + :width: 700px + + mcp45HVX1.c write wiper function + +| + +The **writeWiper** function is used to update the value of the wiper calling **write_register** function on the 00 address. + +.. figure:: /images/electronics_embedded/throttle_module/Throttle_mcp45hvx1_writeRegister.png + :align: center + :alt: stm32 schematic + :figclass: align-center + :width: 700px + + mcp45HVX1.c write register and send command functions + +| + +Two of the most important functios are **send_command** and **write_register**. + +**write_register** is in charge of write the register of a given address calling send_command with the command parameter +of **0b00** which is used to indicate a writing operation. + +**send_command** receive and address, a command which is a int, the data to be sent and the data size. Basically, this +function executes all the logic needed to create the I2C message that will be sent to the potentiometer. + +The **writeWiper** function is used to update the value of the wiper calling **write_register** function on the 00 address. + +.. figure:: /images/electronics_embedded/throttle_module/Throttle_mcp45hvx1_defaultTCON.png + :align: center + :alt: stm32 schematic + :figclass: align-center + :width: 230px + + mcp45HVX1.c default terminal control register initialization + +| + +As mentioned before, the **defaultTCON** function is used to set the bits of the TCON register, and calls the function +that writes it as write_wiper function does. This register is not being modified because the +right terminal is directly conected to the relay circuit using a solder jumper. + +.. _digiPot: +Digital potentiometer pin description. +-------- + + +----------+-------------------------------------------------------------------------------------------+ + | Pins | Meaning | + +----------+-------------------------------------------------------------------------------------------+ + | Pot | Connected to GPIO of STM32 to switch motor. | + +----------+-------------------------------------------------------------------------------------------+ + | J2E | This signal is connected to Curtis controller J2 , it has 10 Volts. When is manual mode, | + | | | + | | it's connected to WiperPot, and to Digital pot terminals in autonomous mode | + +----------+-------------------------------------------------------------------------------------------+ + | WiperPot | Used for manual control, this signal corresponds to the HIGH terminal of manual pedal | + | | | + | | potentiometer acoording to Curtis controller documentation. | + +----------+-------------------------------------------------------------------------------------------+ + | J3 | The modulated signal will come from the wiper (W) and be connected straight to J3 | + | | | + | | CurtisController. This is also connected to the wiper terminal of the manual pedal | + +----------+-------------------------------------------------------------------------------------------+ + + +.. figure:: /images/electronics_embedded/throttle_module/digital_potentiometer_circuit_oct_2023.png + :align: center + :alt: stm32 schematic + :figclass: align-center + :width: 800px + + Digital Potentiometer schematic + +| +.. figure:: /images/electronics_embedded/throttle_module/13_pot_general_view.png + :align: center + :alt: stm32 schematic + :figclass: align-center + :width: 600px + + Throttle module in general diagram + +| + ----- Why A0 and A1 is connected to GND? ----- @@ -969,6 +1111,299 @@ Tests with Digital Pot X9c103s 10k and Pot5k Manual test with 5k potentiometer | +----------------- +Throttle module STM32 Programming +----------------- +On this section we will describe the most important pieces of the code running on the STM32 inside the Throttle module. + +Pin definition +-------------- + +.. figure:: /images/electronics_embedded/throttle_module/STM_Throttle_PINs.png + :align: center + :alt: stm32 schematic + :figclass: align-center + :width: 650px + + STM32 Throttle module pin definition. +| + +* Pin description: + ++---------+------------+------------------------------------------------------------------------------+ +| Pins | Name | Description | ++---------+------------+------------------------------------------------------------------------------+ +| PA6 | WLAT | Wiper Latch of the potentiometer. Used as a reset. Set during initialization | ++---------+------------+------------------------------------------------------------------------------+ +| PA7 | SHDN | Shutdown pin of potentiometer. Used as enable. Set during initialization | ++---------+------------+------------------------------------------------------------------------------+ +| PA9 | Pot | Pin used for changing the input of the Curtis Speed Controller: manual mode | +| | | | +| | | with 5k pedal or autonomous mode with digital potentiometer | ++---------+------------+------------------------------------------------------------------------------+ +| PA10 | RelayMotor | Pin used to change the state of the motor relay (:ref:`see more `) | ++---------+------------+------------------------------------------------------------------------------+ +| PA11 | CAN1_RX | Pin assigned to CAN RX channel | ++---------+------------+------------------------------------------------------------------------------+ +| PA12 | CAN1_TX | Pin assigned to CAN TX channel | ++---------+------------+------------------------------------------------------------------------------+ +| PB6 | I2C1_SCL | Clock of I2C interface for the digital potentiometer | ++---------+------------+------------------------------------------------------------------------------+ +| PB7 | I2C1_SDA | Data channel of I2C interface for the digital potentiometer | ++---------+------------+------------------------------------------------------------------------------+ +| PA3 | hand_brake | Input pin for the hand_brake signal | ++---------+------------+------------------------------------------------------------------------------+ + +main.c +------ +The main file is in charge of calling all the initialization of ports, devices, interfaces and tasks to +be excecuted. + +.. figure:: /images/electronics_embedded/throttle_module/Throttle_main_initializations.png + :align: center + :alt: stm32 schematic + :figclass: align-center + :width: 440px + + main.c initialization + +| + +It starts with the initializaton of canlib with ID **VANTTEC_CAN_ID_THROTTLE_TX** to declare the +message transceiver id, after that, it initializes the functionality of transmission and reception of +CAN messages, and the basic tasks of receive, send, reed and hanlde the message queue. + +As show before, **initialize_devices** and **begin_pot** do the initial setup for the digital potentiometer. + +Then, it initializes the proper tasks of the throttle as **init_requirements_task** where there are the +functions that hanldes the basic requirement signals as emergency stop, reverse, etc.; manipulating the values +of the RX messages. On the other hand, **init_throttle_tasks** there are tasks that update the values of the pins, +read the hand brake input and control the digital potentiometer. + +Throttle tasks +-------------- + +.. figure:: /images/electronics_embedded/throttle_module/Throttle_throttleTask_init.png + :align: center + :alt: stm32 schematic + :figclass: align-center + :width: 680px + + Throttle tasks initialization + +| + +This function creates all the threads for each task to perfom the control of Throttle module: + +* Manage and update the potentiometer. +* Enable the motor. +* Switch of drive mode. +* Reading of hand brake input. + +.. figure:: /images/electronics_embedded/throttle_module/Throttle_throttleTask_pot.png + :align: center + :alt: stm32 schematic + :figclass: align-center + :width: 800px + + Potentiometer task + +| + +**pot task** is in charge of receive the messages of the CAN device id of **VANTTEC_CAN_ID_THROTTLE_RX**, +and message id **0x05** (this is the one assigned to messages of digital pot value). The data is stored on +**pot_data** variable. + +In the excecution loop, it performs the logic to update the digital potentiometer. If it is a different value +from the last one, checks if it is above the maximum permitted value, in case of true, then it sets the value +to be the maximun. Also, it checks if it is 0, and then corrects it to 01. Finally, it updates the wiper calling +**writeWiper** and updates the last data variable. + +.. figure:: /images/electronics_embedded/throttle_module/Throttle_throttleTask_motor.png + :align: center + :alt: stm32 schematic + :figclass: align-center + :width: 800px + + Motor enable task + +| + +In the **motor_task**, it will subscribe the messages of the CAN device id of **VANTTEC_CAN_ID_THROTTLE_RX**, +and message id **0x06** (this is the one assigned to messages of motor signal). The data is stored on +**motor_data** variable. + +In the excecution loop the task will check if motor_data is 1, in this case it will write a HIGH on the +RelayMotor pin to activate the relay. In any other case it will write a LOW and return the Relay to default. + +When the relay is activated, the motor is energized directly (this is used for autonomous mode). +If it is on default/common-closed state, the motor will only be powered when the driver press the manual pedal +and activates the pedal swtich (this is used for manual mode). + +.. figure:: /images/electronics_embedded/throttle_module/Throttle_throttleTask_mode.png + :align: center + :alt: stm32 schematic + :figclass: align-center + :width: 800px + + Drive mode task + +| + +The **mode_task** is very similar to the motor_task in terms of logic, becuase it subscribes a CAN message and based +on that entry it decides when to set the output pin (**Pot_pin**). +In this case, the tasks receives the messages from **VANTTEC_CAN_ID_THROTTLE_RX**, and message id **0x07** (this is the +one assigned to messages of drive mode signal). + +When mode data is 1 it means that autonomous mode is set and then writes HIGH in Pot and actives the potentiometer relay +so J2E receives the value from the digital potentiometer terminals. In any other case, the pin is set to LOW and the +relay will be on default/common-closed state so J2E switches to the high terminal of the pedal potentiometer (wiperPot on the circuit). + +.. figure:: /images/electronics_embedded/throttle_module/Throttle_throttleTask_brake.png + :align: center + :alt: stm32 schematic + :figclass: align-center + :width: 800px + + Hand brake input task + +| + +In **brake_task**, the function reads the status of the input pin of brake (**hand_brake**) to check if it has been activated. + +If the brake status is different from previous one and the brake is activated (brake_status = 1), then, it sets the digital +potentiometer value to 0 (which means setting speed to 0), it chages ti manual mode seding a 0 with the +message id of **0x07** (drive mode message), and deactivate the motor relay sending a 0 with the message id of **0x06** (motor data message). + +For any case, it sends the the updated brake data in can message. Remember that for transmission this module uses +**VANTTEC_CAN_ID_THROTTLE_TX** and with message id of **VANTTEC_CAN_ID_FRENO_MANUAL** + +**NOTE:** the action of sending the new values is done with **update_table**, a function in canlib module that given a devide id, +and message id, update the values on the CAN message table, sending the new data. + +Requirement tasks +----------------- + +This functions are inside ThrottleVantec/Core/Src/requirements.c + +.. figure:: /images/electronics_embedded/throttle_module/Throttle_requirement_init.png + :align: center + :alt: stm32 schematic + :figclass: align-center + :width: 800px + + Requirements task initialization + +| + +This function creates all the threads for each tasks that covers the expected requirements of the car, such as: + +* Emergency stop. +* Switch to autonomous/manual mode. +* Reverse. +* Hand brake activation. +* Driver fault signal. + +This functions are inside ThrottleVantec/Core/Src/requirements.c + +.. figure:: /images/electronics_embedded/throttle_module/Throttle_requirement_emergencystop.png + :align: center + :alt: stm32 schematic + :figclass: align-center + :width: 800px + + Emergency stop task + +| + +In **emergencystop_task** the function susbscribes to the emergency stop signal messages from the device +**VANTTEC_CAN_ID_GENERAl_TX** (basically the central unit) with message id of **VANTTEC_CAN_ID_ESTOP**. + +If a 1 is received, then the emergency stop signal is activated so the function perfoms the logic to stop the car, +similar to what was done on hand_brake task: + +Set speed to 0, updating the value on the message id **0x05** (potentiometer value), set a LOW on the RelayMotor pin +sending a 0 with the message id of **0x06**, and toggle to manual mode sending a 0 with the message id **0x07**. Remember +all these value are sent with **VANTTEC_CAN_ID_THROTTLE_RX** device id + +Finally, the function also updates the value of **VANTTEC_CAN_ID_ESTOP** meessage with a 0 to indicate that the action +has been performed. + +.. figure:: /images/electronics_embedded/throttle_module/Throttle_requirement_drivemode.png + :align: center + :alt: stm32 schematic + :figclass: align-center + :width: 800px + + Drive mode requirement task + +| + +In **drivemode_task** the function susbscribes to the emergency stop signal messages from the device +**VANTTEC_CAN_ID_GENERAl_TX** (basically the central unit) with message id of **VANTTEC_CAN_ID_DRIVE_MODE**. If a 1 +is received then the autonomous mode is set, in case to be 0, it is set the manual mode. + +For autonomous mode, the function sends a 1 with the message id of 0x07 (remember mode_task). Then updates +the initial potentiometer value of 2 with the message id 0x05 (remember pot_task) and finally sends a 1 with +the message id 0x06 to energize the accelerator directly. + +In case that it receives a 0, then it set up the manual mode in a very similar way as the hand brake and emergency +stop tasks *****. + +For any of these cases, the function updates the **VANTTEC_CAN_ID_DRIVE_MODE** message to acknowledge the action has been performed + +***NOTE:** remember that when motorRelay pin is set to LOW does not mean the accelerator +does not receive current, but it is only energized when manual pedal swith is pressed. + +.. figure:: /images/electronics_embedded/throttle_module/Throttle_requirement_reverse.png + :align: center + :alt: stm32 schematic + :figclass: align-center + :width: 800px + + Reverse mode requirement task + +| + +In **drivemode_task** the function susbscribes to the emergency stop signal messages from the device +**VANTTEC_CAN_ID_GENERAl_TX** (basically the central unit) with message id of **VANTTEC_CAN_ID_REVERSE**. + +If a 1 is received then the reverse is active and it will set potentiometer value to 0 and set manual mode the same way has been +done on brake task, drivemode task, etc. This is because reverse is only handled manually. + +When it has finished it updates the value of **VANTTEC_CAN_ID_REVERSE** message to 0 as an acknowledge. + +.. figure:: /images/electronics_embedded/throttle_module/Throttle_requirement_frenomanual.png + :align: center + :alt: stm32 schematic + :figclass: align-center + :width: 800px + + Hand brake requirement task + +| + +In **frenomanual_task** no further actions are needed because all the logic related to hand brake handling it is being +performed by brake_task inside the Throttle tasks. + +.. figure:: /images/electronics_embedded/throttle_module/Throttle_requirement_driverfault.png + :align: center + :alt: stm32 schematic + :figclass: align-center + :width: 800px + + Driver fault requirement task + +| + +In **drivemode_task** the function susbscribes to the emergency stop signal messages from the device +**VANTTEC_CAN_ID_STEPPER_TX** with message id of **VANTTEC_CAN_ID_DRIVER_FAULT**. + +The principles are the same as in emergencystop_task. The function checks if the received value is 1 (indicating that there is driver fault). +In that case, it will excecute the same routine of setting potentiometer value to 0 and changing to manual mode that has been explained before. + +Once it has finished, then updates the **VANTTEC_CAN_ID_DRIVER_FAULT** message with 0 as an acknowledge. + ----- References diff --git a/source/images/electronics_embedded/throttle_module/IC_pot.png b/source/images/electronics_embedded/throttle_module/IC_pot.png new file mode 100644 index 0000000..b2103c4 Binary files /dev/null and b/source/images/electronics_embedded/throttle_module/IC_pot.png differ diff --git a/source/images/electronics_embedded/throttle_module/IC_pot_circuitView.png b/source/images/electronics_embedded/throttle_module/IC_pot_circuitView.png new file mode 100644 index 0000000..94229e8 Binary files /dev/null and b/source/images/electronics_embedded/throttle_module/IC_pot_circuitView.png differ diff --git a/source/images/electronics_embedded/throttle_module/IC_pot_view.png b/source/images/electronics_embedded/throttle_module/IC_pot_view.png new file mode 100644 index 0000000..d737c08 Binary files /dev/null and b/source/images/electronics_embedded/throttle_module/IC_pot_view.png differ diff --git a/source/images/electronics_embedded/throttle_module/MCP45HVX1_pin_description.png b/source/images/electronics_embedded/throttle_module/MCP45HVX1_pin_description.png new file mode 100644 index 0000000..c0d0b4e Binary files /dev/null and b/source/images/electronics_embedded/throttle_module/MCP45HVX1_pin_description.png differ diff --git a/source/images/electronics_embedded/throttle_module/STM_Throttle_PINs.png b/source/images/electronics_embedded/throttle_module/STM_Throttle_PINs.png new file mode 100644 index 0000000..de5a66e Binary files /dev/null and b/source/images/electronics_embedded/throttle_module/STM_Throttle_PINs.png differ diff --git a/source/images/electronics_embedded/throttle_module/Throttle_main_initializations.png b/source/images/electronics_embedded/throttle_module/Throttle_main_initializations.png new file mode 100644 index 0000000..2415fd3 Binary files /dev/null and b/source/images/electronics_embedded/throttle_module/Throttle_main_initializations.png differ diff --git a/source/images/electronics_embedded/throttle_module/Throttle_mcp45hvx1_beginPot.png b/source/images/electronics_embedded/throttle_module/Throttle_mcp45hvx1_beginPot.png new file mode 100644 index 0000000..95daace Binary files /dev/null and b/source/images/electronics_embedded/throttle_module/Throttle_mcp45hvx1_beginPot.png differ diff --git a/source/images/electronics_embedded/throttle_module/Throttle_mcp45hvx1_defaultTCON.png b/source/images/electronics_embedded/throttle_module/Throttle_mcp45hvx1_defaultTCON.png new file mode 100644 index 0000000..9bfbb4b Binary files /dev/null and b/source/images/electronics_embedded/throttle_module/Throttle_mcp45hvx1_defaultTCON.png differ diff --git a/source/images/electronics_embedded/throttle_module/Throttle_mcp45hvx1_init.png b/source/images/electronics_embedded/throttle_module/Throttle_mcp45hvx1_init.png new file mode 100644 index 0000000..fecba04 Binary files /dev/null and b/source/images/electronics_embedded/throttle_module/Throttle_mcp45hvx1_init.png differ diff --git a/source/images/electronics_embedded/throttle_module/Throttle_mcp45hvx1_writeRegister.png b/source/images/electronics_embedded/throttle_module/Throttle_mcp45hvx1_writeRegister.png new file mode 100644 index 0000000..d8149e7 Binary files /dev/null and b/source/images/electronics_embedded/throttle_module/Throttle_mcp45hvx1_writeRegister.png differ diff --git a/source/images/electronics_embedded/throttle_module/Throttle_mcp45hvx1_writeWiper.png b/source/images/electronics_embedded/throttle_module/Throttle_mcp45hvx1_writeWiper.png new file mode 100644 index 0000000..2a3dd4a Binary files /dev/null and b/source/images/electronics_embedded/throttle_module/Throttle_mcp45hvx1_writeWiper.png differ diff --git a/source/images/electronics_embedded/throttle_module/Throttle_requirement_drivemode.png b/source/images/electronics_embedded/throttle_module/Throttle_requirement_drivemode.png new file mode 100644 index 0000000..d1c7def Binary files /dev/null and b/source/images/electronics_embedded/throttle_module/Throttle_requirement_drivemode.png differ diff --git a/source/images/electronics_embedded/throttle_module/Throttle_requirement_driverfault.png b/source/images/electronics_embedded/throttle_module/Throttle_requirement_driverfault.png new file mode 100644 index 0000000..a857709 Binary files /dev/null and b/source/images/electronics_embedded/throttle_module/Throttle_requirement_driverfault.png differ diff --git a/source/images/electronics_embedded/throttle_module/Throttle_requirement_emergencystop.png b/source/images/electronics_embedded/throttle_module/Throttle_requirement_emergencystop.png new file mode 100644 index 0000000..03f9807 Binary files /dev/null and b/source/images/electronics_embedded/throttle_module/Throttle_requirement_emergencystop.png differ diff --git a/source/images/electronics_embedded/throttle_module/Throttle_requirement_frenomanual.png b/source/images/electronics_embedded/throttle_module/Throttle_requirement_frenomanual.png new file mode 100644 index 0000000..e8bcbe7 Binary files /dev/null and b/source/images/electronics_embedded/throttle_module/Throttle_requirement_frenomanual.png differ diff --git a/source/images/electronics_embedded/throttle_module/Throttle_requirement_init.png b/source/images/electronics_embedded/throttle_module/Throttle_requirement_init.png new file mode 100644 index 0000000..c866e69 Binary files /dev/null and b/source/images/electronics_embedded/throttle_module/Throttle_requirement_init.png differ diff --git a/source/images/electronics_embedded/throttle_module/Throttle_requirement_reverse.png b/source/images/electronics_embedded/throttle_module/Throttle_requirement_reverse.png new file mode 100644 index 0000000..f0eabb3 Binary files /dev/null and b/source/images/electronics_embedded/throttle_module/Throttle_requirement_reverse.png differ diff --git a/source/images/electronics_embedded/throttle_module/Throttle_throttleTask_brake.png b/source/images/electronics_embedded/throttle_module/Throttle_throttleTask_brake.png new file mode 100644 index 0000000..c184531 Binary files /dev/null and b/source/images/electronics_embedded/throttle_module/Throttle_throttleTask_brake.png differ diff --git a/source/images/electronics_embedded/throttle_module/Throttle_throttleTask_init.png b/source/images/electronics_embedded/throttle_module/Throttle_throttleTask_init.png new file mode 100644 index 0000000..0b40a8d Binary files /dev/null and b/source/images/electronics_embedded/throttle_module/Throttle_throttleTask_init.png differ diff --git a/source/images/electronics_embedded/throttle_module/Throttle_throttleTask_mode.png b/source/images/electronics_embedded/throttle_module/Throttle_throttleTask_mode.png new file mode 100644 index 0000000..d1ecb50 Binary files /dev/null and b/source/images/electronics_embedded/throttle_module/Throttle_throttleTask_mode.png differ diff --git a/source/images/electronics_embedded/throttle_module/Throttle_throttleTask_motor.png b/source/images/electronics_embedded/throttle_module/Throttle_throttleTask_motor.png new file mode 100644 index 0000000..d098924 Binary files /dev/null and b/source/images/electronics_embedded/throttle_module/Throttle_throttleTask_motor.png differ diff --git a/source/images/electronics_embedded/throttle_module/Throttle_throttleTask_pot.png b/source/images/electronics_embedded/throttle_module/Throttle_throttleTask_pot.png new file mode 100644 index 0000000..737cae4 Binary files /dev/null and b/source/images/electronics_embedded/throttle_module/Throttle_throttleTask_pot.png differ diff --git a/source/images/electronics_embedded/throttle_module/curtis_speed_controller.png b/source/images/electronics_embedded/throttle_module/curtis_speed_controller.png new file mode 100644 index 0000000..8d2b3e9 Binary files /dev/null and b/source/images/electronics_embedded/throttle_module/curtis_speed_controller.png differ diff --git a/source/images/electronics_embedded/throttle_module/digital_potentiometer_circuit_oct_2023.png b/source/images/electronics_embedded/throttle_module/digital_potentiometer_circuit_oct_2023.png new file mode 100644 index 0000000..dcf6883 Binary files /dev/null and b/source/images/electronics_embedded/throttle_module/digital_potentiometer_circuit_oct_2023.png differ