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.
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.
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.
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.
Firmware
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:
CODE- ADDRESS
0x00 – 0x03
Where:
Code indicates the location of the data reading memory
and precisely:
- 0x00= RAM
- 0x20= EEPROM
Address
indicates the address of the requested variable from 0 to FF
Map Address RAM (I didn’t investigate EEPROM ).
Addr start | Addr stop | Description | Unit | Multiplier |
0x00 | Internal cpu counter | # | 1 | |
0x01 | Room temperature | °C | 1/2 | |
0x03 | Stove water temperature | °C | 1 | |
0x0D | Pellet loading activation time | sec | 10 | |
0x21 | Stove status * | code | 1 | |
0x34 | Current stove power | # | 1 | |
0x37 | Smoke fan speed ** | rpm | 10+ofs | |
0x3B | Stove water temperature like 0x03 | °C | 1 | |
0x5A | Flue gas temperature | °C | 1 | |
0x65 | 0x6B | Date (second/day week/hour/minute/day/month/year) | # | 1 |
0x8D | 0x9C | Display message | Ascii | 1 |
* 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.
Rpm=(value*10)+ofs
READ-Receiving data requested by the stove
The stove responds with a two bytes:
CHECKSUM- VALUE
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):
CODE- ADDRESS – VALUE – CECKSUM
0x80 – 0x21 – 0x01 – 0xA2
Where:
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:
CHEKSUM – VALUE
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.
Hello
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
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
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…
does anyone know the code to enter the settings?
On my stove is A9
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
Hello. The model of the pcb card is identical?
I have no access to the board version but it is same pinout on serial connector
Finally got number from my retailer board has reference COD. T033_5
board also contains additional remote connector but protocol is another one at 4800bps
The brand pcb is micronova or not?
Yes brand Micronova
Hi Blairfancy,
I have a stove from Nobis too.
Do you find all the map address to read? If yes, is it possible for you to post it please?
Thank you so much in advance
Hello,
the fume temp reading for me was on 0x3E and not 0x5A (on one stove from 2013 and another from 2018).
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
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.
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?
I’m glad to have been of help. If you think so, please quote me. a bit of advertising never hurts . tanks
Hello,
What is stove power ? The heating power (1,2,3,4,5) ?
Sincerely,
philibertc
Power is 0x34
Hello,
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.
Bye.
_______________________
Ciao,
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.
Ciao.
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.
Purtroppo no, niente di corrispondente sugli altri indirizzi di memoria.
Ciao.
Hello,
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.
Response with email
You respond via email?
It didn’t work apparently…
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…
Hello
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.
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 😐
I will let you know.
I will do some analysis with the logic analiser.
Let me know, Rob. Hello
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
Hello,
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?
Rob