Micronova Modbus protocol converter for pellet stoves

This page describes in detail the operation of the Micronova / Modbus protocol converter for a pellet stove idea from RidculousLab.

Many pellet stoves on the market are equipped with a branded control unit Micronova, an Italian company leader in the production of customized electronic boards.

Having installed a home automation system at home, I thought of creating a Onewire-Modbus converter that would allow me to read the stove’s operating data.

My home-made home automation system is in fact based on a Raspberry Pi that communicates with various devices via an RS485 serial bus and Modbus protocol.

My pellet thermo stove is one Phebo Athena model. The 14.2 kW power and 11.5 kW of which are water-based and is equipped with a Micronova I023 control unit.

Purpose of the converter

The stove control unit has a onewire serial bus which uses a single conductor for data transmission. The protocol used by Micronova is a proprietary protocol and there is not much information about it. However, the manufacturing company makes available a software called Seraminet which allows the stove to be controlled and analyzed using a personal computer. This system is not suitable for integrating data into my home automation system. I therefore studied the Micronova protocol, partly by finding information on the network and partly by direct experimentation, in order to have enough information to build a suitable protocol converter.

Details of the protocol converter

The parameters of the Micronova bus are: speed 1200 bps – 8 bits – 2 stop bits – parity N. Instead, my home automation bus works at 19200 bps – 8 bits – 1 stop bit – parity N.

The protocol converter must therefore have 2 distinct serial ports. On the first one, he must read the data from the onewire bus. On the second it must behave like a Modbus slave and make the data read by the stove available.

To do this I created a small circuit governed by a PIC18F25K22 microcontroller which has two independent UART serial ports. Everything was mounted on a pre-drilled plate and installed near the Micronova control unit inside the stove casing.

RL - Onewire-modbus converter for Micronova -RidiculousLab

The protocol converter for the pellet stove with micronova control unit allows the reading of the instantaneous data and alarms of the stove. Theoretically it is also possible to change the operating parameters and carry out on / off or alarm reset commands. I preferred to limit the firmware to read only the data for security reasons. In fact, it is not clear to me the command writing mechanism and I would not have problems, after all we are always talking about a stove. In the case of alarms, I prefer to be physically present to check the actual problem. However, I have allowed remote switching on and off using the external contact for the thermostat, already provided by Micronova, which I manage via another unit of the home automation system. The Raspberry Pi, on the other hand, provides instantaneous and historical data on a web page published on the internet and raises the alarms via a Telegram bot.

RL - micronova stove data page -RidiculousLab

RL - micronova stove graphics page -RidiculousLab

Electrical schematics

The microcontroller, as known, works at TTL level so, on the serial with Modbus protocol, I had to add a MAX485 converter to adapt the electrical levels to the RS485. Stove side I had to use instead a transistor, driven by the processor, to divide the single onewire line into the Tx and Rx signals to be connected to the pic.

RL - Interface shcematic Micronova -RidiculousLab

The control unit also provides a 15V voltage on the connector which I used to power the circuit using a classic LM7805 voltage regulator.

A green LED indicates the communication between the converter and the stove while a yellow LED indicates the communication on the RS485 bus.

On board the protocol converter circuit for Micronova pellet stove I have provided a connector for the connection of the ICSP programmer for any further tests and modifications.

A small cable connects the circuit to the Micronova control unit via a pin strip. The RS485 bus is obviously connected to the home automation system.

RL - Connections to PCB Card Micronova i023 -RidiculousLab


The microcontroller reads the data from the stove cyclically. I thought of reading all the 255 addresses of the Micronova RAM sequentially even though I was unable to identify the function of many variables. See the mapping below. I discovered that the message displayed on the stove’s LCD display is also made available in ASCII format on the bus. Since the speed is only 1200 bsp, the reading of all the addresses is rather slow (30 sec) but it is not a problem because the data read are buffered in the pic. Reading via Modbus can therefore return data that is at most 30 seconds old. For simplicity, the only modbus function implemented is Function code 3, that is reading multiple registers. Using the converter, the stove data can therefore be read by any Modbus master on the 485 bus.

The firmware that I made for the protocol converter for pellet stove with micronova control unit is in c language and is written with IDE MPLAB X. The file is visible or downloadable at the link below:

Micronova Protocol

The protocol used by the Micronova control unit is quite simple and is based on two directives: Read (R) and Write (W).

READ-Transmission of data request to the stove

The reading directive is composed of 2 bytes, for example here is the request to read the water temperature:

0x00 – 0x03

Code indicates the location of the data reading memory
and precisely:

  • 0x00= RAM
  • 0x20= EEPROM

indicates the address of the requested variable from 0 to FF

Map Address RAM (I didn’t investigate EEPROM ).

Addr startAddr stop Description Unit Multiplier
0x00Internal cpu counter#1
0x01Room temperature°C 1/2
0x03Stove water temperature °C1
0x0DPellet loading activation time sec10
0x21Stove status * code1
0x34Current stove power # 1
0x37Smoke fan speed ** rpm10+ofs
0x3BStove water temperature like 0x03°C1
0x5A Flue gas temperature °C1
0x650x6BDate (second/day week/hour/minute/day/month/year)#1
0x8D0x9CDisplay messageAscii1

* State of the stove (address 0x21)

  • 0 = Off
  • 1= Start
  • 2 = Pellet loading
  • 3 = Ignition
  • 4 = Work
  • 5 = Brazier cleaning
  • 6 = Final cleaning
  • 7= Standby
  • 8= Pellet missing alarm
  • 9= Ignition failure alarm
  • 10=Undefined alarms (to be investigated)

** Smoke fan speed (address 0x37)
Take the maximum value of the spins and divide it by 255, the result is ofs.

READ-Receiving data requested by the stove

The stove responds with a two bytes:

0x03 – 0x12

Where Checksum is (CODE+ADDRESS) &FF
and Value is the value of the requested variable

WRITE-Transmission of values ​​to the stove (not tested!)

The writing directive is made up of 4 bytes, for example here is the request to switch on the stove, for switching off the value must be 0x06 (see stove status table):

0x80 – 0x21 – 0x01 – 0xA2

Code indicates the location of the data reading memory and may be valid:

  • 0x80= RAM
  • 0xA0= EEPROM

Address indicates the address of the variable concerned from 0 to FF
Value indicates the value to be written
Checksum is the sum (Code+Address+Value) &FF

WRITE-Reception value writing confirmation from the stove (not tested!)

The stove responds with a two bytes:

0x21 – 0x01

Modbus Protocol

The Modbus protocol implemented is the standard one (see tutorial section).

The Modbus variable mapping reflects the order of the Micronova RAM mapping but the addresses have been translated by 100. Furthermore, only the addresses that seemed useful were mapped, for I have only loaded the first 165 addresses on the buffer and not all the 255 available. The first variable available for reading is therefore the% MW100.

32 Responses

  1. Paciotti says:

    I have a Hydro stove and I can read main values from the memory. When I try to send the power ON command the stove switch on a relay, a fan start and the display correctly print ACC, but the pellet distribution doesn’t start. After the command I got wrong readings. To get the stove back to work I need a Force OFF and a start from the display.
    Is there a way to debug this issue? How can I find correct address and correct value to turn on my stove?
    Thanks for your help

    • ridiculouslab says:

      Hello. Do you have try to writw command in the Ram or in the eeprom. If not you must try both options. . I don t have tested command but only read values… RidiculousLab. Sorry for my english

    • ridiculouslab says:

      In the internet i have find command turn on 80h 21h 01h A2h. And command turn off 80h 21h 06h A7h
      Seem command are executed to write the ram…

  2. nik says:

    does anyone know the code to enter the settings?

  3. blairfancy says:

    Hi ,
    It seems that my stove use different protocol:
    1st: communication parameters are 19200bd instead of 1200
    2nd: Memory looks different (ie 3 kinds of message for read 0x21 0x25 and 0x0 and for write 0xA1)
    3rd: addresse mapping does not match (ie: temperature Set is at addr 0x62)

    My stove is from NobisFire model A10C light i use navel 2.0 for reverse engineering

  4. philibertc says:

    the fume temp reading for me was on 0x3E and not 0x5A (on one stove from 2013 and another from 2018).

    • ridiculouslab says:

      Hello. Good job. I will update the page with the information you have found as soon as possible. I’m glad you did it. obviously firmwares are not all the same. so you see the value even with the stove off? My stove is from around 2016

      • philibertc says:

        Yes, also when the stove is off.
        For my mqtt micronova_controller project, all the people who tested had to read on the same address as me.

        • philibertc says:

          By the way, your blog helped me a lot to know how to communicate with the stove, thanks a lot!
          Would you like to be quoted in the “Thanks” paragraph on my GitHub page?

          • ridiculouslab says:

            I’m glad to have been of help. If you think so, please quote me. a bit of advertising never hurts . tanks

  5. Philibert says:

    What is stove power ? The heating power (1,2,3,4,5) ?

  6. Philibert says:

    I tried lighting the stove (but without pellets).
    When it’s off, it returns 00 but when it’s on it returns 00 a few times but 50 (? the fumes temp is 22°C) most of the time.
    I will see this winter what I read when it is fully on.
    Ho provato ad accendere la stufa (ma senza pellet).
    Quando è spenta, restituisce 00 ma quando è accesa restituisce poche volte 00 ma 50 (? la temp dei fumi è 22°C) la maggior parte delle volte.
    Vedrò quest’inverno cosa leggo quando è completamente accesa.

    • ridiculouslab says:

      Ciao, se puoi leggere quel valore puoi leggere anche tutti gli altri, fai qualche tentativo, secondo me troverai il valore corretto su un altra locazione di memoria.

  7. Philibert says:

    When I write:
    0x00 0x5A
    I receive:
    0x5A 0x00
    while the flue gas temperature sensor reports 25°C. Is this because my stove is turned off? I have not tried turning it on because it is summer.

    • ridiculouslab says:

      Response with email

      • Philibert says:

        You respond via email?
        It didn’t work apparently…

        • RidiculousLab says:

          Sorry.. Hello
          I don t beleive the cause is​ stove turning off
          If diaplay indicate 25 degrees also the bus must be equal.
          I believe the problem is different firmware on microprocessor.
          You try send request for all codes (from 0 to FF)​ so you discover the variable correspondig with temeprature indicate on display..
          Sorry for my english…

          • Philibert says:

            Hello, thanks for your answer.
            I actually tried all the possibilities between 00 and FF. But nothing matches unfortunately.
            Ho effettivamente provato tutte le possibilità tra 00 e FF. Ma purtroppo niente corrisponde.

          • Philibert says:

            I don’t think it’s due to a different firmware because this control card is compatible with the micronova network control solution.
            I will test it with Serami. If I don’t find the reason, I’ll have to wait for winter 😐
            Non credo che sia dovuto a un firmware diverso perché questa scheda di controllo è compatibile con la soluzione di controllo di rete micronova.
            Farò un test con Serami. Se non trovo la ragione, dovrò aspettare l’inverno 😐

          • Philibert says:

            I will let you know.
            I will do some analysis with the logic analiser.

  8. ridiculouslab says:

    Let me know, Rob. Hello

  9. ridiculouslab says:

    Hi Rob,
    I understand that your problem is not a fault with the control unit but an incorrect configuration. As indicated in the manual, if you use the contact of the external thermostat you must deactivate the chrono function and set the SET temperature at 7 ° C. I don’t know if this is your problem, I hope I have been of help. Hi – RidculousLab

  10. Rob says:


    I’m having a problem with my EcoSpar Auriga 23Kw pellet boiler with MicroNova i023-5

    It starts normal but it not going to work but gives work modulate and after 2min it’s gives Wait Cooling.

    External thermo contacts are closed, chono is off, water and room temp is under setting and still it’s switch to work modulate.

    Can you help me with this problem, or can you help me getting a schematic from the board so I can search for broken components?


Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.