Arduino ersätter Nibe RCU-10?

Jag underhåller en Nibe Fighter 360P. Och till den kan man köpa en fjärrstyrningsenhet med webbgränssnitt och SMS-styrning. Tyvärr kostar den typ 10000:- och jag köpte pumpen begagnad för ungefär halva det priset. Efter lite googling hittade jag tråden PC-styrning av Bergvärmepump på Svenska Elektronikforumet. Signaturen FredRovers beskriver detaljerat hur kommunikationen fungerar mellan pumpen och RCU. Kan jag härma detta med min Arduino?

Hårdvaran som behövs är en Arduino ATmega 2560, eftersom jag behöver två serieportar varav en pratar med 9-bitar mot pumpen. Dessutom behövde jag ett RS485-interface. Sådana kostar typ en dollar på ebay. Om man inte har en Mega så går det säkert att modifiera biblioteket softserial så det fungerar med 9-bitarsord, men mig veterligen så är inte det gjort av någon.

Resultatet har hittills blivit att jag kommit halvvägs. Jag kan läsa vad pumpen skickar till, vad den tror är en, RCU. Jag har tyvärr inte lyckats med konststycket att skicka någon data till pumpen. Jag vet helt enkelt inte hur datan ska se ut. Så som FredRovers beskriver i inlägget verkar det som att man skickar data i samma format som man läser den. När jag provar så stannar kommunikationen redan när jag säger att jag har nåt att sända. För komma vidare behöver jag låna en riktig RCU några dar för att läsa av hur magin fungerar.

Pumpens egen programvara behöver vara version 2.x för att menyalternativet RCU ska finnas. Aktiverar man RCU (meny 9.1.3) utan att ha någon inkopplad så går menyerna tröögt då CPU väntar på ACKar från RCU, men pumpen verkar ändå fungera. Det går att uppgradera pumpens mjukvara. Värt att veta är att det finns ett modbus-protokoll som Nibe använder i nyare värmepumpar. Det är inte kompatibelt med det som 360P använder. RCU-10 passar till fler pumpar, men jag vet inte vilket protokoll de använder.

Inkoppling i Nibe F360p
Var försiktig! Värmepumpen är väääldigt bra att ha fungerande. Koppla inte in nåt utan att ha mätt ordentligt och förstått vad du gett dig in på först.
Det allra viktigaste är att ha samma jordpotential i båda ändar så man inte bränner något i själva inkopplingsögonblicket. Om du överväger att använda en laptop med batteridrift första gången du kopplar in dig så har du en sund syn på hur försiktig man bör vara. Jag är själv höggradigt klantig och har bränt ett 485-interface, men ännu inget i pumpen. Koppla helst in en permanent jordsladd mellan datorn/ardunon och värmepumpen så slipper du överraskningar.

Kontakten att koppla in sig på är en RJ-45. Den sitter i ena änden av den kedja som sammankopplar alla korten i pannan. I en större anläggning kopplar man ihop alla pumparna och låter en vara master och så låter man en RCU övervaka att allt funkar som det ska.

Nibe-RJ45_pinning Det här är preliminär info. Mät och kolla själv för säkerhets skull! De enda som behövs är egentligen A och B som är själva dataanslutningen, samt jord. Färgerna är de som ses i en vanlig nätverkssladd. Jag har aldrig använt 12V eller 5V från pumpen, så jag vet inte hur ren spänning man får eller hur hög belastning den tål. Inte heller vad som händer om man överbelastar.

arduinorcu1

Inkoppling i Arduinon
Som ses på bilden ovan så är det inte många sladdar att hålla reda på.
Jordpinnar är ofta en bristvara på i Arduino, men i det här fallet så är den största bristen en pålitlig jord. För att lösa det så plockade jag isär en sockerbit och lödde fast innehållet på sidan av USB-kontakten. Det tillsammans med en strypare gör att anslutningen mot pumpen blir stabil. Skulle något av stiften sen hoppa ur mellan Arduino och RS485-interfacet så ställer det inte till med nån skada. Kabellängd är inget problem. Jag körde först med 20 meter fyrtrådig telefonsladd.

RJ45-RS485-ArduinoMega_pinning Det här är preliminär info. Mät och kolla själv för säkerhets skull! På två kina-arduinosar så står det olika vilken pinne som är TX1 och RX1 av 18 och 19, så jag skriver bara vilka nummer jag har använt. Prova att byta plats mellan dem om det inte rullar igång.

Arduinoprogram
Det jag ’har på lager’ är hur mitt program såg ut innan jag gjorde om allt och gjorde så att en ESP8266 regelbundet skickar upp senaste minutens värden.
Och vad är utkomsten? En jättetråkig mellanslagsseparerad lista som uppdateras varje minut, samt att den visar när kompressorn startar och stängs av.
listexempel
Ladda ner programmet: NibeTest1.ino
Ladda exempel på logg: NibeLog_131016_02.txt

Testprogram för att se om allt är rätt kopplat. RCU behöver inte vara aktiverat (om du inte har en inkopplad), utan man ser anropen från CPU-kortet till de övriga korten.
Ladda ner: NibeDataDump.ino
Se exempel där RCU är aktiverat, men inte svarar: NibeDataDump_DT_160312.txt

Vad har jag det till?
diagramexempel
Jag har kopplat en ESP8266 till min ATMega2560 och låter den varje minut sända ett antal värden till en webbserver där det sparas i en databas. Även elmätaren gör samma sak. Sen kan jag kolla nuvarande värden på en enkel webbsida eller de senaste dygnens värden som i grafen i bilden ovanför med hjälp av HighSharts.

Todo:
Lägga upp kopplingsschemor
Kolla upp om någon av signalerna RS485DE eller RS485REinv ska inverteras (klart, ny version 160312!)
Lösa knuten med att jag inte lyckas sända kommandon till värmepumpen.
Mer?

5 svar på ”Arduino ersätter Nibe RCU-10?

  1. Hej igen,

    Nu har jag äntligen lagt lite tid på detta och fått det att fungera. Dock visar den lite skumma värden framförallt för utetemperaturen. Arduinon säger att det är 6553.20 när displayen på 360P säger -0.4.

    KompressorSekunder och kWs är 0 av någon anledning. Se outputen här http://www.sveden.org/media/log.txt

    Har du några idéer om vad som kan vara fel?

    Hur har det gått med att hitta ett sätt att t ex. ändra kurvlutning från Arduinon?

    Mvh Micke

  2. Jag håller också på med detta. Har ett vb.net program som läser data och skriver till en mysql databas. Jag håller också på att försöker skriva till pannan. Jag informerar om jag lyckas. 🙂

    /mike

Lämna ett svar