magneticrotary4  2.0.0.0
Main Page

Magnetic Rotary 4 click

Magnetic Rotary 4 Click is a compact add-on board for accurate magnet-position sensing. This board features the AS5047D, an SPI-configurable high-resolution rotary position sensor for fast absolute angle measurement over a full 360-degree range from ams AG. The AS5047D is equipped with revolutionary integrated dynamic angle error compensation (DAECâ„¢) with almost 0 latency and offers a robust design that suppresses the influence of any homogenous external stray magnetic field. It also comes with an onboard header reserved for incremental and commutation signals of their respective A/B/I and U/V/W signals alongside embedded self-diagnostics, including magnetic field strength, lost magnet, and other related diagnostic features.

click Product page


Click library

  • Author : Stefan Filipovic
  • Date : Jun 2022.
  • Type : SPI type

Software Support

We provide a library for the Magnetic Rotary 4 Click as well as a demo application (example), developed using MikroElektronika compilers. The demo can run on all the main MikroElektronika development boards.

Package can be downloaded/installed directly from NECTO Studio Package Manager(recommended way), downloaded from our LibStock™ or found on Mikroe github account.

Library Description

This library contains API for Magnetic Rotary 4 Click driver.

Standard key functions :

Example key functions :

Example Description

This example demonstrates the use of Magnetic Rotary 4 click board by reading and displaying the magnet (potentiometer) angular position in degrees.

The demo application is composed of two sections :

Application Init

Initializes the driver, sets the rotation direction, and calibrates the sensor for potentiometer zero position.

void application_init ( void )
{
log_cfg_t log_cfg;
magneticrotary4_cfg_t magneticrotary4_cfg;
LOG_MAP_USB_UART( log_cfg );
log_init( &logger, &log_cfg );
log_info( &logger, " Application Init " );
// Click initialization.
magneticrotary4_cfg_setup( &magneticrotary4_cfg );
MAGNETICROTARY4_MAP_MIKROBUS( magneticrotary4_cfg, MIKROBUS_1 );
if ( SPI_MASTER_ERROR == magneticrotary4_init( &magneticrotary4, &magneticrotary4_cfg ) )
{
log_error( &logger, " Communication init." );
for ( ; ; );
}
{
log_error( &logger, " Set rotation direction." );
for ( ; ; );
}
{
log_error( &logger, " Calibrate zero position." );
for ( ; ; );
}
log_info( &logger, " Application Task " );
}

Application Task

Reads the magnet (potentiometer) angular position in degrees every 100ms and displays the results on the USB UART.

void application_task ( void )
{
float angle;
if ( MAGNETICROTARY4_OK == magneticrotary4_get_angle ( &magneticrotary4, &angle ) )
{
log_printf( &logger, " Angle: %.1f degrees\r\n\n", angle );
Delay_ms ( 100 );
}
}

The full application code, and ready to use projects can be installed directly from NECTO Studio Package Manager(recommended way), downloaded from our LibStock™ or found on Mikroe github account.

Other Mikroe Libraries used in the example:

  • MikroSDK.Board
  • MikroSDK.Log
  • Click.MagneticRotary4

Additional notes and informations

Depending on the development board you are using, you may need USB UART click, USB UART 2 Click or RS232 Click to connect to your PC, for development systems with no UART to USB interface available on the board. UART terminal is available in all MikroElektronika compilers.


MAGNETICROTARY4_DIRECTION_CW
#define MAGNETICROTARY4_DIRECTION_CW
Magnetic Rotary 4 rotation direction values.
Definition: magneticrotary4.h:116
magneticrotary4_cfg_setup
void magneticrotary4_cfg_setup(magneticrotary4_cfg_t *cfg)
Magnetic Rotary 4 configuration object setup function.
MAGNETICROTARY4_OK
@ MAGNETICROTARY4_OK
Definition: magneticrotary4.h:193
magneticrotary4_t
Magnetic Rotary 4 Click context object.
Definition: magneticrotary4.h:160
magneticrotary4_cfg_t
Magnetic Rotary 4 Click configuration object.
Definition: magneticrotary4.h:173
application_task
void application_task(void)
Definition: main.c:72
magneticrotary4_set_rotation_direction
err_t magneticrotary4_set_rotation_direction(magneticrotary4_t *ctx, uint8_t direction)
Magnetic Rotary 4 set rotation direction function.
magneticrotary4_init
err_t magneticrotary4_init(magneticrotary4_t *ctx, magneticrotary4_cfg_t *cfg)
Magnetic Rotary 4 initialization function.
magneticrotary4_get_angle
err_t magneticrotary4_get_angle(magneticrotary4_t *ctx, float *angle)
Magnetic Rotary 4 get angle function.
magneticrotary4_calibrate_zero_position
err_t magneticrotary4_calibrate_zero_position(magneticrotary4_t *ctx)
Magnetic Rotary 4 calibrate zero position function.
application_init
void application_init(void)
Definition: main.c:30
MAGNETICROTARY4_ERROR
@ MAGNETICROTARY4_ERROR
Definition: magneticrotary4.h:194
MAGNETICROTARY4_MAP_MIKROBUS
#define MAGNETICROTARY4_MAP_MIKROBUS(cfg, mikrobus)
MikroBUS pin mapping.
Definition: magneticrotary4.h:146