This is the MLX90324 Magnetic Hall Effect Monolithic Touchless Rotation Sensor developed by MELEXIS Semiconductor. This MLX90324 is a sensor that uses its signature called TriaXis Hall Technology means that it uses a magnetic force to drive this sensor. moreover, a conventional planar Hall technology is only sensitive to the flux density applied to the chip surface however, this sensor is also sensitive to flux density applied parallel to the chip surface. this will be obtained through an integrated magneto-concentration (IMC) which is deposited to the CMOS as an additional back-end.
The MLX90324 is only sensitive to the flux density complanar at the chip surface. This will allow the MLX90324 to manage the correct magnetic circuit to decode the absolute rotating angular position from 0 to 360 degrees enabling this chip to be a next-generation of non-contact rotary position sensor or potentiometer this design is very crucial to automotive and industrial and marine applications. The MLX90324 produces an output signal proportional to the decoded angle this output is selectable between Analog and SENT or SAE-j2716 protocol. For more technical detail and further readings please refer to the datasheet below.
Requirements
- Arduino IDE | PlatformIO
- Test Boards :
- Note: The Diagram below is using ESPRESSIF ESP32-VROOM-32D (please refer to your MCU’s respective pin-outs & bus configuration)
- MLX90324 Rotary Position Sensor
- TS78L05CX Voltage Regulator /Alternative SOT-23 5v Regulator
- Resistors (See below diagram for required value & alternatives package)
- Capacitor(See below diagram for required value & alternatives package)
Wiring Diagram / Schematics
Sketch Source Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
const int AXISREAD = 34; //GPIO 34 (Analog ADC1_CH6) int AXISVAL = 0; void setup() { Serial.begin(115200); Serial.print("14CORE | MLX90324 Test Code"); Serial.print("Initializing please wait.........."); delay(2000); } void loop() { potValue = analogRead(AXISREAD); Serial.println(AXISVAL); delay(500); } |
MicroPython Source Code
1 2 3 4 5 6 7 8 9 |
from machine import Pin, ADC from time import sleep AXIS = ADC(0) //Set pin ADC 34 while True: AXISVAL = AXIS.read() print(AXISVAL) sleep(0.1) |
Java Source Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
@Override public double getValue(Pin pin) { // the getMode() will validate the pin exists with the hasPin() function PinMode mode = getMode(pin); // handle analog input reading for Odroid boards if (mode == PinMode.ANALOG_INPUT) { // read latest analog input value from WiringPi // we need to re-address the pin for Odroid boards (analog_address = assigned_pin_address - AIN_ADDRESS_OFFSET) double value = com.pi4j.wiringpi.Gpio.analogRead(pin.getAddress() - AIN_ADDRESS_OFFSET); // cache latest analog input value getPinCache(pin).setAnalogValue(value); // return latest analog input value return value; } return super.getValue(pin); } |
PCB Milling / Gerber
- Download PCB Milling File | MLX90324
- Download 14CORE-MLX90324 Schematics | JPG
- Download Gerber Viewer | Windows | Linux