From 54c8525fe6e28538e1f02be81eee44f7f61bf500 Mon Sep 17 00:00:00 2001 From: Will Barber Date: Tue, 2 Apr 2024 20:01:51 +0100 Subject: [PATCH 1/2] Update LED meanings for current firmware --- docs/kit/hardware/motor-board.md | 10 ++++++---- docs/kit/hardware/power-board.md | 4 +++- docs/kit/hardware/servo-board.md | 22 ++++++++-------------- 3 files changed, 17 insertions(+), 19 deletions(-) diff --git a/docs/kit/hardware/motor-board.md b/docs/kit/hardware/motor-board.md index 3e5fb7e8..d9eb2952 100644 --- a/docs/kit/hardware/motor-board.md +++ b/docs/kit/hardware/motor-board.md @@ -10,6 +10,8 @@ The boards pictured above is an early prototype and may differ from the current boards, it is only used to display the locations of the LEDs. +The motor board contains an isolation barrier to avoid ground loops. This means power must be provided to the 12V input and USB. The USB only powers up the USB-serial adapter and not the microcontroller, as such without 12V power, the USB port will appear but will respond to any communication. + ## Motor Board LEDs - A (DS1/DS6 - green/red) @@ -19,13 +21,13 @@ - green is lit when there is 12V present in the correct polarity on 12V input - red is lit when the 12V input has incorrect polarity - C (DS2 - red) - - toggled by the ADC interrupt, this should be fast enough that the LED is not visibly while the firmware is running normally. + - lit when the motor 1 driver has detected a fault. This is probably short-to-VCC or short-to-GND. - D (DS3 - blue) - - currently unused, inaccessible over USB. + - lit when the motor 1 is drawing over 5 amps (50% load) - E (DS4 - red) - - currently unused, inaccessible over USB. + - lit when the motor 2 driver has detected a fault. This is probably short-to-VCC or short-to-GND. - F (DS5 - blue) - - currently unused, inaccessible over USB. + - lit when the motor 2 is drawing over 5 amps (50% load) - G/H (DS9 - red/blue) - blue is lit when motor 1 is set to move forward - red is lit when motor 1 is set to move backward diff --git a/docs/kit/hardware/power-board.md b/docs/kit/hardware/power-board.md index 57d2ada0..daef72d1 100644 --- a/docs/kit/hardware/power-board.md +++ b/docs/kit/hardware/power-board.md @@ -6,13 +6,15 @@ The boards pictured above is an early prototype and may differ from the current boards, it is only used to display the locations of the LEDs. +The fan on the power board is temperature controlled so will not spin until the board is detected to be above 40°C. + ## Power Board LEDs - DS1 - red/green - green is lit when the board is powered on and not in undervoltage-lockout (9.6V falling threshold, 11.1V rising threshold), this is connected to the 3.3V regulator so shows it is functional. - red is flashed when the battery reaches a soft undervoltage-lockout (10.2V). - DS2 - green - - lit when the 5V output is enabled and functional, this is connected to the 5V regulator output. The 5V is enabled whenever the board is powered on and not in any undervoltage-lockout or overcurrent situation. The 5V rail current is not currently monitored so this light going off without the whole board turning of means the regulator has been overloaded (4.2A typical). + - lit when the 5V output is enabled and functional, this is connected to the 5V regulator output. - DS3-8 - red/green - green is lit when an output is enabled, this is connected to the rail so shows the actual state of the output. - red is lit when the port exceeds its current limit, which is latching. diff --git a/docs/kit/hardware/servo-board.md b/docs/kit/hardware/servo-board.md index d73ae07a..ed3f7d0d 100644 --- a/docs/kit/hardware/servo-board.md +++ b/docs/kit/hardware/servo-board.md @@ -6,28 +6,22 @@ The boards pictured above is an early prototype and may differ from the current boards, it is only used to display the locations of the LEDs. +The servo board contains an isolation barrier to avoid ground loops. This means power must be provided to the 12V input (J4) and USB. The USB powers up the microcontroller so the board can be connected to without 12V present. The 12V then drives an isolated output expander that controls the servos and a high current regulator that provides 5V for the servo power. This will only power servos 1-8. + +To use servos 9-12 power is applied to the AUX header. This power is applied to the servos directly so **do not apply 12V to the AUX header when using 5V servos**. + ## Servo Board LEDs - DS1 - green - lit when 5V is present from either the USB or UART header, this is connected to the 3.3V regulator output so shows it is functional as well. - DS2-9 - blue - - currently unused, inaccessible over USB. + - lit when the corresponding servo is enabled. Setting the servo to any position will enable them. These will light even when the 12V power is not present. - DS10 - red/blue - blue is lit as soon as the firmware finishes initialisation. - - red is lit while the I2C interrupt routine to set the servo outputs is running. + - red is lit while I2C communications are failing. This occurs while 12V is not present. - DS11-14 - blue - - currently unused, inaccessible over USB. + - lit when the corresponding servo is enabled. Setting the servo to any position will enable them. These will light even when the aux power is not present. - DS15 - green - lit when 12V is present and the correct polarity, this is connected to the 5.5V SMPS output so shows it is functional as well. If the 12V input is wired backward this will not light. - DS16 - green - - lit when either an input is provided to the auxiliary header or the 5V regulator is linked to the power output for the top 4 servos. __NOTE__ The firmware is hard-coded to enable this link, __do not attach a power source to the auxiliary header__. - -## Pink LED of Death "PLOD" Bug - -When the 12V input is removed, the I2C interrupt routine will hang indefinitely, even after the input is restored. - -In this situation, both the red and blue components of DS10 will turn on, which appears as a pink colour (despite actually being separate red and blue). The USB will also lock up, manifesting as `Pipe Error` in Python stack traces if the code tries to access the board. - -This situation will occur after every run of code on the robot as the 12V outputs on the power board are disabled when code exits. If the pink colour appears before their code has completed then there is an issue with the 12V input. - -There is a workaround in the kit software that attempts to mitigate the impacts of this bug, called [Servohack](../../software/#servohack). \ No newline at end of file + - lit when an input is provided to the auxiliary header. From ec14ea88a0915ebb6e3e6878d5b4c6ab60262fce Mon Sep 17 00:00:00 2001 From: Will Barber Date: Tue, 2 Apr 2024 21:49:38 +0100 Subject: [PATCH 2/2] Update docs/kit/hardware/motor-board.md Co-authored-by: Jake Howard --- docs/kit/hardware/motor-board.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/kit/hardware/motor-board.md b/docs/kit/hardware/motor-board.md index d9eb2952..9a4c9f65 100644 --- a/docs/kit/hardware/motor-board.md +++ b/docs/kit/hardware/motor-board.md @@ -10,7 +10,7 @@ The boards pictured above is an early prototype and may differ from the current boards, it is only used to display the locations of the LEDs. -The motor board contains an isolation barrier to avoid ground loops. This means power must be provided to the 12V input and USB. The USB only powers up the USB-serial adapter and not the microcontroller, as such without 12V power, the USB port will appear but will respond to any communication. +The motor board contains an isolation barrier to avoid ground loops. This means power must be provided to the 12V input and USB. The USB only powers up the USB-serial adapter and not the microcontroller, as such without 12V power, the USB port will appear but will not respond to any communication. ## Motor Board LEDs