# ESC configuration APP (AMC Manager v1.1.0)

{% hint style="info" %}
AMC Manager is an application for setting up, managing and testing the ESC. The application is built on the Qt platform, and communication with the ESC takes place via a serial port. AMC Manager runs on the host PC (Win/Linux).
{% endhint %}

#### Download and run the application

* [Download](https://github.com/airvolute/DroneCore.Suite/tree/main/DroneCore.Suite/DroneCore.Power/Applications/AMC_manager) the up-to-date application version according to your host PC operating system
* Unpack archive
* Run application
  * For Linux Host, open the terminal in the unpacked folder and execute `./AMC_Manager`
  * For Windows PC, open the unpacked folder and run AMC\_Manager.exe

## Application manual

***

## Control Panel

<details>

<summary><strong>Status area</strong></summary>

![](https://341257526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkuuT7PXOBpck5wDlb6XM%2Fuploads%2Fgit-blob-d74f33c1ddca595351cbfef6b60e4dfa5850ef65%2Fimage%20\(22\).png?alt=media)

**Connection status**

* *Disconnected* - device is not connected to the app
* *Connected* - device is in service mode (motor identification is possible)
* *Running* - device is in operating mode
* *Flashing* - device is being updated

**Serial port status**

* *Name*
  * for Windows - `COM` port
  * for Linux - `tty` port
* *Select port* - no connection to serial port
  * Manual selector
  * Auto select with Alink
* *Connecting* - establishing communication with the serial port
* \*`COM`\***x** or `tty`**x** - connected to COM port (with number '**x**')

<div align="center"><img src="https://341257526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkuuT7PXOBpck5wDlb6XM%2Fuploads%2Fgit-blob-4b447a4f6f2a4d15862583775f3d13bebc65c66c%2Fimage%20(1)%20(1)%20(1).png?alt=media" alt=""></div>

**Device status**

* *No device* - no device is connected
* *Device* **x** - connected device with address '**x**'
* *Non-init device* - unconnected device in bootloader mode

**FW version**

* **x**.**y**.**z** - '**x**' - major version, '**y**' - mid version, '**z**' - minor version
* *Boot* - bootloader mode

<div align="center"><img src="https://341257526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkuuT7PXOBpck5wDlb6XM%2Fuploads%2Fgit-blob-fb5b740f8657b7871e111461d02f054621a3f8c3%2Fimage%20(2)%20(1).png?alt=media" alt=""></div>

</details>

<details>

<summary><strong>Setting area</strong></summary>

Tabs with settings, control and update are located in this area.

<div align="center"><img src="https://341257526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkuuT7PXOBpck5wDlb6XM%2Fuploads%2Fgit-blob-a537fd4109fe3f3cfc45d6d61345a95ded575472%2Fimage%20(26).png?alt=media" alt=""></div>

**ESC Params**

* Configuration of ESC parameters

**Motor Params**

* Configuration of motor parameters and motor identification

**Control**

* Testing the ESC and the motor through the app

**Firmware**

* ESC firmware update

</details>

<details>

<summary><strong>Sharing area</strong></summary>

This area is used to import and export the overall ESC settings to/from the motor. This area is **disabled** when the device is **disconnected**.

<div align="center"><img src="https://341257526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkuuT7PXOBpck5wDlb6XM%2Fuploads%2Fgit-blob-b61e7b16381ba8d88463856bbe6871c8c9d1350b%2Fimage%20(4)%20(1).png?alt=media" alt=""></div>

**Import params**

* Saving the image of the parameters of the ESC and motor to a file

**Export params**

* Upload the settings image with the parameters of the ESC and motor to the ESC from a file

</details>

## Operational Panel

### ESC Params

<details>

<summary><strong>PWM Input</strong></summary>

Setting the parameters of the input signal.

<figure><img src="https://341257526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkuuT7PXOBpck5wDlb6XM%2Fuploads%2Fgit-blob-03c82c5cc06f50fb487ef2989058e1bb8551e558%2Fimage%20(30).png?alt=media" alt=""><figcaption></figcaption></figure>

***

**Pwm Type**

* The effect of the signal on the one-way or two-way rotation of the motor
* Value: Unipolar or bipolar
* Predefined value = **Unipolar**

~~**Low Level**~~ *(not supported)*

~~**Center Level**~~ *(not supported)*

~~**High Level**~~ *(not supported)*

**Dead Zone**

* The initial part of the signal where the motor does not run
* Value = <5; 20>, Step = 1 %
* Predefined value = **5**

***

**Control Type**

* Desired quantity for control
* Value = Speed
* Predefined value = **Speed**

**Max Speed**

* Maximum motor revolutions for the upper input signal
* Value = <10; 40950>, Step = 10 RPM

***

**Analog Control** *(not supported)*

**Digital control** *(not supported)*

***

**Graph**

* Showing the speed range in relation to the standard control range

</details>

<details>

<summary><strong>Motion Parameters</strong></summary>

Setting parameters for adjusting the movement and dynamics of ESC

<div align="center"><figure><img src="https://341257526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkuuT7PXOBpck5wDlb6XM%2Fuploads%2Fgit-blob-fad04854265ec19601276b2cc982709cf8cdd184%2Fimage%20(32).png?alt=media" alt=""><figcaption></figcaption></figure></div>

**Reverse Direction**

* Changing the direction of motor movement
* Predefined value = **False**

**Device Address**

* Address of the ESC device
* Value = <0;3> or fixed (Determined by HW configuration)

**Time to leave**

* The time during which, in the event of a signal failure, it holds the last setpoint
* Value = <150; 2000>, Step = 50 ms
* Predefined value = **150**

**Controller Kp**

* Setting the proportional component of the controller
* Value = <0.0; 65.353>, Step = 0.001
* Predefined value = **1.0**

**Controller Kff**

* Setting the feed-forward component of the controller
* Value = <0.0; 65.353>, Step = 0.001
* Predefined value = **1.5**

</details>

<details>

<summary><strong>Data and errors</strong></summary>

Basic information from the ESC and handling errors of ESC

<div align="center"><img src="https://341257526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkuuT7PXOBpck5wDlb6XM%2Fuploads%2Fgit-blob-b4cd2cbc0b2b8542ce9fed7172f4e4cf25606b41%2Fimage%20(7)%20(1).png?alt=media" alt=""></div>

**Get Errors**

Read the structure of errors and warnings from the device

* **All Errors**
  * Every error and warning since the last cleaning, regardless of the power cycle
  * Contains:
    * Errors with the hexadecimal code
    * List of individual errors
    * Warnings with the hexadecimal code
    * List of individual warnings
* **Previous Errors**
  * Every error and warning from the previous power cycle
  * Contains:
    * Errors with the hexadecimal code
    * List of individual errors
    * Warnings with the hexadecimal code
    * List of individual warnings
* **Last Errors**
  * Every error and warning in the current power cycle
  * Contains:
    * Errors with the hexadecimal code
    * List of individual errors
    * Warnings with the hexadecimal code
    * List of individual warnings

**Clear Errors**

Clear only the category All Errors from the device

**Get Data**

Information about currents and temperatures from the last run

* Max Temp ESC - maximum temperature of ESC
* Max temp Motor - maximum temperature of the motor
* Avg current - average current during the run
* Max current - maximum current during the run

**Get Resist**

Information about total resistance and phase resistance

* Phase A - phase A resistance
* Phase B - phase B resistance
* Phase C - phase A resistance
* Global - total resistance

</details>

### Motor Params

<details>

<summary><strong>Motor selection</strong></summary>

* Motor control on the ESC is conditioned by motor identification
* Identification **must be** performed for each **motor type**
* Identified params can be applied to all motors of the same type

**New** **motor**

New **type** of motor

* Motor must be identified - Add motor

New **piece** of motor

* Unknown motor type (*new type of motor*)
  * Motor must be identified - Add motor
* Known motor type (*motor type has already been identified*)
  * Individual motors of the same type may have minimal differences in parameters
    * Normal use - Neglecting minimal params differences
      * Select from motor list - Motor list
    * Special use - Elimination of minimal params differences
      * Motor identification - Add motor

**Used** **motor**

Used locally (*this computer*)

* Select from motor list - Motor list

Get from another place or restore

* Load from file to motor list - Import motors

Share for other place or backup

* Save to file from motor list - Export motors

</details>

<details>

<summary><strong>Identified motor list</strong></summary>

Contains a list of user-identified motors and the management of this list.

<div align="center"><img src="https://341257526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkuuT7PXOBpck5wDlb6XM%2Fuploads%2Fgit-blob-8738088b9904c01c6e287b3214f683f00efc1cac%2Fimage%20(8)%20(1).png?alt=media" alt=""></div>

**Actual motor type**

* Selected name from the list
  * Sets the selected motor from the list to ESC as the actual motor
  * Non-existent motor is named `Unknown motor xx`

**Motor hours**

* Number of operating hours since the last motor change

**Motor list**

* List of identified and imported motors with creation time
* Motor name is local and user-defined
* Click on the header to sort the list

**Set motor**

* Setting a new actual engine from the list

**Rename motor**

* Rename the selected motor in the list

**Remove motor**

* Remove the selected motor from the list

**Info Motor**

* Information on motor identification parameters

**Import Motors**

* Imports motors from the file into the local database
* Merging options
  * *Overwrite* - Delete all motors in the list and use the new ones
  * *Append* - Add new ones to the list and use new ones in case of a name conflict
* File extension `.ms` (motor specification)

**Export Motors**

* Exporting motor from the local database to a file
* Options
  * *All* - Exports all motors from the list
  * *Selected* - Exports only a single selected motor (No selection = Disabled option)
* Contains: Motor Name, Creation Time and Motor Parameters
* File extension `.ms` (motor specification)

</details>

<details>

<summary><strong>Add motor</strong></summary>

Setting motor parameters to identify and enable this process

<div align="center"><img src="https://341257526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkuuT7PXOBpck5wDlb6XM%2Fuploads%2Fgit-blob-85a5cb9b089e1c2f82d62c682b4c315706469658%2Fimage%20(9)%20(1).png?alt=media" alt=""></div>

**Max current**

* Maximum continuous current in A according to the motor datasheet

**Kv**

* Motor velocity constant in rpm/V according to the motor datasheet

**LiPo cells**

* Motor operating voltage expressed in LiPo cells (Full cell voltage = 4.2V)
* Example - Battery type: **6S** => LiPo cells: **6**

**Pole pairs**

The number of pole pairs in the permanent magnet in the motor

* Example - **12P14N** => (use N number)/2 => Pole pairs: **7**
* Example - **10 poles** => poles/2 => Pole pairs: **5**
* Example - **11 pole pairs** => Pole pairs: **11**

**Identify motor**

* **Start** of the motor identification process with the **parameters defined above**

</details>

### Identification process

{% stepper %}
{% step %}
**Prepare identification**

* Fill motor params
* Identify motor

<div align="center"><img src="https://341257526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkuuT7PXOBpck5wDlb6XM%2Fuploads%2Fgit-blob-c793943d645129d224cc3a01cc062830aa052483%2Fimage%20(10)%20(1).png?alt=media" alt=""></div>
{% endstep %}

{% step %}
**Warning - Attention**

The identification process must be under constant surveillance during its entire process.

<div align="center"><img src="https://341257526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkuuT7PXOBpck5wDlb6XM%2Fuploads%2Fgit-blob-1441f287d213d2a564d9fbf656add58ad8b0430e%2Fimage%20(11)%20(1).png?alt=media" alt=""></div>
{% endstep %}

{% step %}
**Warning - No load motor**

The motor must be unloaded during process identification. Remove propellers, shaft, ...

<figure><img src="https://341257526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkuuT7PXOBpck5wDlb6XM%2Fuploads%2Fgit-blob-2d2dc142b2de4445a0414ccb50500e0c4a38e50f%2Fimage%20(12)%20(1).png?alt=media" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
**Warning - Steps of identification**

Details of individual identification steps

<div align="left"><figure><img src="https://341257526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkuuT7PXOBpck5wDlb6XM%2Fuploads%2Fgit-blob-fba2809d465068e1cfc40114d8b845eb1448f7b0%2Fimage%20(13).png?alt=media" alt=""><figcaption></figcaption></figure></div>
{% endstep %}

{% step %}
**Confirmation of readiness**

Confirm previous warnings

* Motor without load
* Full concentration
* Knowledge of all identification steps

Start identification

<div align="left"><img src="https://341257526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkuuT7PXOBpck5wDlb6XM%2Fuploads%2Fgit-blob-003c2a8fd85cf4268d079d1188a7f87a9d7f3727%2Fimage%20(14).png?alt=media" alt=""></div>
{% endstep %}

{% step %}
**Identification interface**

**Current step** - Name of current identification step

**Help** - Identification interruption in case of an error

**Warning label** (*default hidden*) - Detection of a possible problem during identification - Please interrupt identification

**Progress bar** - Progress in the current step

**Right behaviour** - Expected action in the current step

**Errors** - Errors that may occur in the current step

**Next step** - Information about the next step

**Cancel** - Identification interruption

<div align="left"><figure><img src="https://341257526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkuuT7PXOBpck5wDlb6XM%2Fuploads%2Fgit-blob-9a475a0b63291f7060fa7b2b2d06b8dc760b6a95%2Fimage%20(31).png?alt=media" alt=""><figcaption></figcaption></figure></div>
{% endstep %}

{% step %}
**No movement step**

Accelerates the motor from zero to constant speed

**Behavior**

* Stopped motor
* Production of high frequency noise

**Error**

* Stopped motor
  {% endstep %}

{% step %}
**Acceleration step**

Accelerates the motor from zero to constant speed

**Behavior**

* Spinning motor
* Motor speed increase
  {% endstep %}

{% step %}
**Variable speed step**

Performs measurements while the motor is running, causing speed fluctuations

**Behavior**

* Spinning motor
* Change in motor speed (increase and decrease), but not zero

**Error**

* Stopped motor
  {% endstep %}

{% step %}
**Deceleration step**

Decelerates the motor from constant speed to zero

**Behavior**

* Spinning motor
* Motor speed decrease
* Too short a stage
* May not display

**Errors**

* Stopped motor on start
* Spinning motor on end
  {% endstep %}

{% step %}
**Finish step**

Identification is complete

**Behavior**

* Stopped motor
* Completed identification

**Error**

* Spinning motor
  {% endstep %}

{% step %}
**Save motor**

* Fill motor name
* Save the motor list and set as the actual motor type
  {% endstep %}

{% step %}
**Error (in case of error)**

**Interrupt identification - no warning label**

Interruption without cause

* Cancel and update params
* Repeat identification with the same params

Step Acceleration - without increasing speed

* Probably bad params: Pole pairs or Kv
* Cancel and update params

Step Variable speed - motor stops spinning

* Probably bad params: Low value of Max current
* Cancel and update params

<div align="center"><img src="https://341257526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkuuT7PXOBpck5wDlb6XM%2Fuploads%2Fgit-blob-eb3b8f1d520c303e2f944ef9ac0c521e30804814%2Fimage%20(16).png?alt=media" alt=""></div>

**Interrupt identification - with a warning label**

Perform adjustment of internal params by self-diagnostics

* Correction of identification

Step Acceleration - without increasing speed

* Probably bad params: Pole pairs or Kv
* Cancel and update params

Step Variable speed - motor stops spinning

* Probably bad params: Low value of Max current
* Cancel and update params

<div align="center"><img src="https://341257526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkuuT7PXOBpck5wDlb6XM%2Fuploads%2Fgit-blob-677ad157116e98cef7f025fb44e9893d1fa94807%2Fimage%20(17).png?alt=media" alt=""></div>
{% endstep %}
{% endstepper %}

***

### Control

Control is used to verify the ESC control with the motor through the application.

* Permitting conditions
  * PWM Input in `Analog control`
  * Allow the device to switch to status `Running`

<details>

<summary><strong>Telemetry</strong></summary>

Displays telemetry data from the device.

![](https://341257526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkuuT7PXOBpck5wDlb6XM%2Fuploads%2Fgit-blob-aec93c6807c8aead6bf984964a1ed1169ed340a9%2Fimage%20\(18\).png?alt=media)

**Telemetry quantities**

* Speed - Mechanical motor speed
* Vs - Motor voltage
* Vdc - Supply ESC voltage
* Power - Motor power
* Torque - Motor torque
* Is - Motor current
* Pwm - Pwm duty of control signal
* Rs - Global resistance
* Flux - Motor magnetic flux
* Temp - ESC temperature

**Graph**

* Displays two quantities simultaneously
* The quantity is plotted continuously, but it can be stopped

</details>

<details>

<summary><strong>Control</strong></summary>

Motor control over the control range <-100%, 100%>

![](https://341257526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkuuT7PXOBpck5wDlb6XM%2Fuploads%2Fgit-blob-20be5c456c8b8da0da83fc63ac323bbfb55118e2%2Fimage%20\(19\).png?alt=media)

**Enable control**

* Allows you to start motor control

**Controller**

* Start point 0%
* Boundary points - -100%, 100%
* Increment - 1%

**Dead band**

* Dead zone in the range around the starting point
* Very low speeds can make the motor standstill

</details>

## Firmware

Firmware update or upload via bootloader

Check this link for up-to-date firmware version for the ESC: [Download link](https://github.com/airvolute/DroneCore.Suite/tree/main/DroneCore.Suite/DroneCore.Power/ESC_Firmware)

<div align="left"><img src="https://341257526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkuuT7PXOBpck5wDlb6XM%2Fuploads%2Fgit-blob-324c4203cc7d383c0fcabdd544d55c34ea6b31c7%2Fimage%20(20).png?alt=media" alt=""></div>

### Update connected device

The firmware on the connected device is being updated

{% stepper %}
{% step %}
**Check device status**

**Connected**

* Suitable condition for continuing the update

<div align="center"><img src="https://341257526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkuuT7PXOBpck5wDlb6XM%2Fuploads%2Fgit-blob-0f63cfb9472529bbc312a1c863e5a36b73456f06%2Fimage%20(21).png?alt=media" alt=""></div>

**Running**

* Perform a power cycle on the device
* Connect to the app

**Disconnected**

* With firmware
  * Power on the device
  * Connect to the app
* No firmware
  * Use Update via bootloader
    {% endstep %}

{% step %}
**Select the firmware file**

File with extension `.bin`
{% endstep %}

{% step %}
**Start update**

Press the `Update` button
{% endstep %}

{% step %}
**Updating**

Auto-connecting step

* Device is restarted
* Auto reconnect

Writing firmware step

* Write new Firmware to the ESC flash

![](https://341257526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkuuT7PXOBpck5wDlb6XM%2Fuploads%2Fgit-blob-b6460c2562ea8956e84169d13e69155b423d7753%2Fimage%20\(22\)%20\(1\)%20\(1\).png?alt=media)
{% endstep %}

{% step %}
**Successful update**

Start the device with new firmware

<figure><img src="https://341257526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkuuT7PXOBpck5wDlb6XM%2Fuploads%2Fgit-blob-d319f85f7f8a6721ee3f1604d51b62270075403e%2Fimage%20(27).png?alt=media" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}

***

### **Update via bootloader**

The device in bootloader mode is used for updating

{% stepper %}
{% step %}
**Check device state**

* Device must be powered off
* *Device controlled via esc\_configuration\_app in Jetson, the power off is achieved by the next (or first) step in the application*

<figure><img src="https://341257526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkuuT7PXOBpck5wDlb6XM%2Fuploads%2Fgit-blob-1d8d1951fbdacce2688a80a518f8b8cd22f3e4ea%2Fimage%20(24).png?alt=media" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
**Connected to Alink**

Connect device via Alink (Serial link)
{% endstep %}

{% step %}
**Select the firmware file**

File with extension `.bin`
{% endstep %}

{% step %}
**Start update**

Press the `Update` button
{% endstep %}

{% step %}
**Power on the device**

* Power on the device within 10 seconds
* *Device controlled via esc\_configuration\_app in Jetson, the power on is achieved by the next step in the application*
* Elapsed time is displayed by a progress bar

<figure><img src="https://341257526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkuuT7PXOBpck5wDlb6XM%2Fuploads%2Fgit-blob-eedb9c4631741a1bd18a2f7d38036cf222ab46ca%2Fimage%20(25).png?alt=media" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
**Updating**

Writing firmware step

* Write new Firmware to ESC flash

![](https://341257526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkuuT7PXOBpck5wDlb6XM%2Fuploads%2Fgit-blob-b6460c2562ea8956e84169d13e69155b423d7753%2Fimage%20\(26\).png?alt=media)
{% endstep %}

{% step %}
**Successful update**

Start device with new firmware

<figure><img src="https://341257526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkuuT7PXOBpck5wDlb6XM%2Fuploads%2Fgit-blob-d319f85f7f8a6721ee3f1604d51b62270075403e%2Fimage%20(27)%20(1).png?alt=media" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.airvolute.com/autopilots/dronecore-1/getting-started/motor-connection/amc_manager-1.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
