Controllo remoto via seriale

« Older   Newer »
 
  Share  
.
  1. laki05
     
    .
    Avatar

    infreddolito perso

    Group
    Member
    Posts
    16

    Status
    Offline
    Buongiorno a tutti,
    con l'obiettivo di gestire l'accensione e spegnimento da remoto con un sistema arduino creato appositamente, mi sono cimentato nell'implementazione del protocollo di comunicazione seriale messo a disposizione sulla scheda di potenza.
    la mia stufa è una Marocchi Rossana, clone della Nordika Extraflame Viviana, con la quale condivide la scheda di controllo Micronova, a parte alcune limitazioni lato firmware.
    Seguendo le preziose indicazioni rese disponibili da Uman in questo thread: https://stufapellet.forumcommunity.net/?t=53061907&st=45,
    ho creato un'interfaccia sperimentale basata su un MAX3232, come da disegno allegato

    interfacemax232


    il connettore a 4 poli presente sul retro della stufa è così cablato:
    1: GND
    2: comunicazione seriale
    3: +15V
    4: +5V

    connseriale

    La porta seriale RS232 deve essere settata a 1200bps, 8 bit di dato, nessuna parità e 2 bit di stop
    Per le prime prove può essere utilizzato un qualunque sw di terminale seriale, fra quelli free vi segnalo Realterm, compatibile con tutte le versioni Windows:
    rt1

    rt2

    rt3

    N.B:
    - molti dei componenti presenti sulla scheda di potenza sono posti a tensione di rete, quindi se il connettore seriale non è reso disponibile esternamente, prima di intervenire staccate il cavo di alimentazione
    - prima di collegare l'interfaccia, verificate con un tester la corrispondenza delle tensioni indicate

    Analizzando il dump dei banchi di memoria RAM ed EPROM, sono riuscito a mappare gran parte dei parametri di configurazione e delle informazioni di stato.
    I comandi di lettura sono così strutturati:
    - un byte per indicare il banco di memoria da leggere (0h per la RAM, 20h per la EPROM)
    - un byte per l'indirizzo da leggere (da 0h a FFh)
    la risposta è così composta:
    - un byte di CRC, come sommatoria fra i due byte di cui sopra ed il byte di valore restituito (vedi sotto), in modulo FFh
    - un byte contenente il valore richiesto

    La tabella che segue contiene tutte le informazioni che sono riuscito a mappare finora, non tutte sono riportate 'in chiaro' ma necessitano di una formula matematica per far corrispondere il valore letto via seriale con quello visibile a bordo macchina, più specificamente:
    [valore_stufa] = [ADD] + [RATIO] * [valore_memoria]

    Nota: Tutti i valori indicati in tabella, compresi gli indirizzi di memoria, sono espressi in decimale

    LOCAZIONI EPROM
    PARAM. IND. EPROM DESCRIZIONE ADD RATIO
    PG00 00 Intervallo pulizia 0 1
    PG01 01 Coclea accensione 0 25
    PG02 02 Coclea avviamento 0 25
    PG03 03 Coclea P1 0 25
    PG04 04 Coclea P5 0 25
    PG05 05 Fumi accensione 250 10
    PG06 06 Fumi avviamento 250 10
    PG07 07 Fumi P1 250 10
    PG08 08 Fumi P5 250 10
    PG09 09 Aria P1 60 5
    PG10 10 Aria P5 60 5
    PG11 11 Aria spegnimento 60 5
    PG12 12 Soglia aria 30 1
    PG13 13 Soglia compens. 30 1
    PG14 14 Delta T off 0 1
    PG15 15 Delta T on 0 1
    PF00 17 Tempo start 0 1
    PF01 18 Tempo accensione 0 1
    PF02 19 Tempo avviamento 0 1
    PF03 20 Precarica accensione 0 1
    PF04 21 Modula fumi 30 1
    PF05 22 Modula serbatoio 30 1
    PF06 23 Soglia 1 30 1
    PF07 24 Soglia 2 30 1
    PF08 25 Soglia on/off 30 1
    PF09 26 Cambio potenza 0 1
    PF10 27 Ritardo P1/P2 0 1
    PF11 28 Durata pulizia 0 1
    PF12 29 Fumi pulizia 250 10
    PF13 30 Coclea pulizia 0 25
    PF14 31 Pulizia esclusa 0 1
    PF15 32 Fumi avviamento 250 10
    PF16 33 Fumi spegnimento 250 10
    PF17 34 Fumi allarme 250 10
    PF18 35 Aria allarme 60 5
    PF19 36 Attesa fiamma 0 1
    PF20 37 Aspirazione attesa fiamma 250 10
    P100 54 Var coclea -45 5
    P101 55 Var aspirazione -45 5
    P102 56 Var flusso -45 5
    76 Crono abilitato 0 1
    77 Crono1 accensione [minuti] 0 10
    78 Crono1 spegnimento [minuti] 0 10
    79 Crono1 lunedì 0 1
    80 Crono1 martedì 0 1
    81 Crono1 mercoledì 0 1
    82 Crono1 giovedì 0 1
    83 Crono1 venderdì 0 1
    84 Crono1 sabato 0 1
    85 Crono1 domenica 0 1
    87 Crono2 accensione [minuti] 0 10
    88 Crono2 spegnimento [minuti] 0 10
    89 Crono2 lunedì 0 1
    90 Crono2 martedì 0 1
    91 Crono2 mercoledì 0 1
    92 Crono2 giovedì 0 1
    93 Crono2 venderdì 0 1
    94 Crono2 sabato 0 1
    95 Crono2 domenica 0 1
    97 Crono3 accensione [minuti] 0 10
    98 Crono3 spegnimento [minuti] 0 10
    99 Crono3 lunedì 0 1
    100 Crono3 martedì 0 1
    101 Crono3 mercoledì 0 1
    102 Crono3 giovedì 0 1
    103 Crono3 venderdì 0 1
    104 Crono3 sabato 0 1
    105 Crono3 domenica 0 1
    107 Crono4 accensione [minuti] 0 10
    108 Crono4 spegnimento [minuti] 0 10
    109 Crono4 lunedì 0 1
    110 Crono4 martedì 0 1
    111 Crono4 mercoledì 0 1
    112 Crono4 giovedì 0 1
    113 Crono4 venderdì 0 1
    114 Crono4 sabato 0 1
    115 Crono4 domenica 0 1

    INFORMAZIONI DI STATO
    PARAM. IND.MEM. DESCRIZIONE ADD RATIO
    RAM 01 Temperatura ambiente 0 2
    EPR 125 Temperatura impostata 0 1
    RAM 115 Temperatura aria aspirata 0 2
    RAM 90 Temperatura fumi 0 1
    RAM 13 Giri coclea 0 25
    RAM 55 Giri ventola fumi 250 10
    EPR 127 Potenza impostata 0 1
    RAM 101 Ora attuale 0 1
    RAM 102 Minuti attuali 0 1
    RAM 100 Giorno settimana 0 1
    RAM 103 Data 0 1
    RAM 104 Mese 0 1
    RAM 105 Anno 0 1
    RAM 33 Stato funzionamento 0 1
    (0 = spenta, 1/2=accensione, 3=avvio
    4=lavoro, 6=pul.finale)


    Gran parte di queste locazioni di memoria possono essere riscritte, al fine di poter realmente gestire la stufa da remoto, nonchè fare un backup/restore di tutti i parametri tecnici di configurazione.
    Il comando di scrittura è così composto:
    - un byte per indicare il banco di memoria da scrivere(80h per la RAM, A0h per la EPROM)
    - un byte per l'indirizzo da scrivere (da 0h a FFh)
    - un byte con il valore da scrivere
    - un byte di CRC, come sommatoria fra i tre byte di cui sopra

    In particolare la locazione 21h della RAM (in tabella indicata come RAM 33) consente di accendere e spegnere la stufa, inviando rispettivamente i comandi 80h 21h 01h A2h e 80h 21h 06h A7h

    Prima di passare definitivamente all'interfacciamento con un sistema Arduino, sto realizzando un sw per windows con cui acquisire, registrare e modificare tutti i parametri resi disponibili:
    stovectrl1


    Edited by laki05 - 15/3/2015, 08:37
     
    Top
    .
105 replies since 15/3/2015, 07:51   25654 views
  Share  
.