Porta Seriale Superior Cleo

Remote Control System

« Older   Newer »
 
  Share  
.
  1. videolab
     
    .

    User deleted


    Ciao Uman, ben ritrovato, rinnovo i complimenti per il lavoro fatto.
    Per quanto riguarda l'interfaccia optoisolata, io non sono riuscito a farla funzionare, il mio pc portatile tramite la porta RS232/PCMCIA non riesce ad alimentare in modo corretto gli optoisolatori, con il risultato che riuscivo ad inviare i comandi alla stufa (80 58 52 2A) ottenedo l'aumento di potenza, ma alla richiesta 00 5A non ricevevo risposta.
    Quindi ho dovuto usare il MAX232.
    Visto che sicuramente il tuo lavoro vero è legato al mondo della programmazione, ti chiedevo cosa hai utilizzato per per programmare il PIC (mplab e c per esempio) e se hai voglia di condividere il codice che hai scritto, nel mio caso più per studio che per implementarlo, visto che i miei studi sul C e sui pic non sono sicuramente avanzati come i tuoi.
    Altra cosa io non ho ben capito il calcolo del checksum se per cortesia puoi fare qualche esempio dettagliato.
    Al momento nei miei esperimenti domenicali sono riuscito solo a mappare alcuni settori delle RAM e della EEPROM con l'aiuto di Milos.
    Ora vorrei portare queste prime conoscienze sul mio PIC.
    Saluti a tutti, buon proseguimento.
     
    Top
    .
  2.  
    .
    Avatar

    infreddolito perso

    Group
    Member
    Posts
    54
    Location
    Valle Camonica

    Status
    Offline
    CITAZIONE (videolab @ 26/1/2015, 11:59) 
    Altra cosa io non ho ben capito il calcolo del checksum se per cortesia puoi fare qualche esempio dettagliato.

    Riporto una formula Excel copiata da un altro post (che stranamente non riesco più a trovare sul forum):

    =DECIMALE.HEX(SE(HEX.DECIMALE(A3)+HEX.DECIMALE(B3)+HEX.DECIMALE(C3)>=256;HEX.DECIMALE(A3)+HEX.DECIMALE(B3)+HEX.DECIMALE(C3)-256; HEX.DECIMALE(A3)+HEX.DECIMALE(B3)+HEX.DECIMALE(C3)))

    nelle caselle A3, B3, C3 metti rispettivamente
    comando, posizione, valore

    Edited by bmwmilos - 26/1/2015, 12:07
     
    Top
    .
  3. Uman
     
    .

    User deleted


    Salve.
    Rispondo a videolab:

    Mi dispiace che l'interfaccia che hai costruita seguendo lo schema che ho proposto non funzioni.
    Ecco qualche indicazione per risolvere il problema.
    Il percorso del segnale verso la scheda della stufa non presenta criticita': la tensione positiva presente su RS232 TX, tramite l'optoisolatore U2, porta a "0V" il segnale TX/RX che e' "pullappato" sia all'intermo della scheda che da R5 (che potremmo anche non montare) e R8+U1, D9 protegge l'ingresso della scheda da eventuali tensioni negative o superiori a 5V.
    Affinche' il segnale in uscita dalla scheda generi un corretto livello sulla linea RS232 devono essere presenti, ai capi dei condensatori elettrolitici C7 e C8, le tensioni +v232(positivo di C7) e -v232(negativo di C8) rispettivamente circa +7/8 e -7/8 volts riferiti a RS232 GND.
    Tali tensioni sono fornite dalle linee DTR e RTS con il contributo di TX, se queste linee a causa di settaggi "hardware" o "software" non sono tenute a potenziali opposti la alimentazione non risulta adeguata.
    Un segnale a "0V" su TX/RX tramite U1 porta a +V232 il segnale RS232-RX (che normalmente e' renuto a -V232 da R10) ma Q1 deve essere in conduzione (condizione vera se il segnale RS232-TX e' negativo, stato di riposo).
    C1, R3 e D11 generano un prolungamento del periodo di azione della cancellazione dell'eco durante la trasmissione verso la scheda.
    Per i diodi consiglio di usare tipi a bassa caduta (schottky) anche se il mio prototipo funziona con normali 1M4448.
    Gli optoisolatori devono essere abbastanza veloci e con un fattore di trasferimento decente, sul mio esemplare ho montato i primi che mi sono venuti nelle mani: sono degli SFH628A-3.
    Dopo aver verificato le corrette tensioni puoi provare il funzionamento della ricezione escludendo la cancellazione dell'eco ponticellando emettitore e collettore di Q1, un difetto sul pilotaggio del transistor puo' bloccare il segnale verso RS232-RX.
    La programmazione di microprocessori non e' la mia attivita' ma una inevitabile conseguenza della mia passione sfrenata per tutto cio' che e' legato al passaggio di elettroni.
    A cinue anni gia' facevo l'impianto elettrico nel presepe con le lampadine a pisello, fili e interruttori di recupero e le batterie da 3v mezze esaurite ex F.F.S.S. che mi portava mio padre.
    Negli anni delle scuole medie costruivo amplificatori, oscillatori, ricevitori radio ets. usando i pochi schemi disponibili, i componenti smontati dalle vecchie radio fornite da parenti e vicini e i KITS Philips (non oso pensare quanto avra' faticato e speso mio padre per procurarmeli. ! 1968).
    Il primo crono-termostato per la caldaia a gasolio (per restare in tema) lo ho costruito decine di anni fa con logiche TTL e transistors, il secondo usando un processore INTEL 8048, il terzo con un MICROCHIP PIC16F877 quello attuale usa un MICROCHIP PIC18F46K80 (ottimo perche' ho potuto montarlo sui c.s. che avevo fatto per gli 16F877).
    Il mio lavoro e' comunue collegato al settore, mi occupo della riparzione di strumentazione professionale da laboratorio.
    Per i processori MICROCHIP utilizzo il linguaggio C (dove serve velocita' e compattezza integro con routines in assemnler) e il compilatore HI-TECH (e' piu' efficiente di quello associato a MPLAB).
    Scrivo i programmi con tanta passione e amore per i dettagli che ne sono talmente geloso da tenerli solo per me, comunque sono sempre disponibile a fornire aiuto.
    Consiglio comunque tutti ad impegnarsi al massimo per ottenere i risultati con le proprie forze, la soddisfazione e' talmente appagante da far dimenticare ogni sforzo.
    Come gia' spiegato nell'intervento dell'8 dicembre 2014, la checksum utilizzata e' semplicemente la somma (modulo 256) degli alti byte del "pacchetto".
    La scheda della stufa accetta la modifica delle variabili con comandi composti da quattro bytes:
    by1: codice di scrittura + selezione dell'area di memoria: 0x80 per RAM, 0xA0 per EEPROM
    by2: indirizzo
    by3: nuovo valore
    by4: checksum = 8_bits_meno_significativi di (by1+by2+by3)

    In risposta ai comandi sia di lettura che di scrittura la scheda trasmette due bytes:
    by1: checksum = area+indirizzo+valore, area (0x00 per RAM, 0x20 per EEPROM) e indirizzo sono quelli dell'ultimo comando ricevuto, (anche se non e' indispensabile consiglio di verificarla)
    by2: valore attuale

    Per la programmazione del PIC: ricordati di settare l'uart a 1200bits/sec, dato=9bits(TX9=1,RX9=1), parita'=MARK(TX9D=1) e di gestire trasmissione e ricezione su interrupt.

    Buon lavoro.
     
    Top
    .
  4. videolab
     
    .

    User deleted


    Ciao Uman, ben riletto con piacere !
    Dal mio post precedente ad oggi sono andato un pò avanti e a pezzi sto cercando di realizzare i vari blocchi del codice.
    Per quanto riguarda l'uart ho utilizzato il bit 9 come primo bit stop proprio per avere un protocollo 1200 8 N 2
    Per quanto riguarda la trasmissione avevo pensato anche io di gestire tx e rx tramite interrupt.
    Una domanda tu leggi un valore alla volta per interrupt, oppure ad ogni interrupt controlli tutti i valori di stato ?

    Per certi versi versi ci occupiamo di settori analoghi, io mi occupo della riparazione di apparecchi consumer i tv [;-)} mentre la programmazione in C e pic sono interessi successivi, che ho imparato da autodidatta... con il grosso handicap di non avere alle spalle una solida base della conoscienza delle inglese... alla scuola media ci hanno fatto studiare il francese, e alle superiori un inglese tendente al genovese..... finite le superiori ho cominciato a lavorare e quindi fine degli studi.
    Saluti alla prossima, e se hai il tempo fatti vedere più spesso
     
    Top
    .
  5.  
    .
    Avatar

    piccola fiammiferaia

    Group
    Simpatizzante
    Posts
    303
    Location
    TS

    Status
    Anonymous
    (per i moderatori: mi sono accorto che invece di rispondere avevo apero un nuovo topic. Potete cancellarlo?)

    Salve a tutti, è da un po' che vi seguo e da dicembre che questo topic è tra i miei preferiti :-) Volevo interfacciare la mia Lucrezia Idro ad un raspberry tramite la seriale, come da voi indicato ma con l'interfaccia "manuale" (USB-TTL). Oggi finalmente la bambina più piccola mi ha concesso qualche ora per sperimentare, ma purtroppo mi sono arenato.
    La Lucrezia ha un connettore 4 poli sul retro, che porta i contatti della seriale (connettore a 4 poli nel centro della metà inferiore della scheda, in ogni caso quello marcato come '29' sugli schemi elettrici). Ho collegato il rasp tramite un convertitore USB-TTL (e il solito diodo) ma nulla di fatto: è come se non ricevesse i comandi. Ovviamente ho fatto (quasi) tutte le prove del caso: ho cambiato convertitore (con queste cose cinesi non si sa mai), cambiato il cavo ed ho usato uno spezzone lungo mezzo metro di Cat6, ho anche provato a collegare un pc invece del rasp con due fili lunghi meno di 20cm. Ma niente: mandando i comandi (da linux con cutecom) vedo l'echo ma la stufa non risponde.
    Ho pensato anche che la seriale fosse disabilitata, ma dal menù vedo che è 'on'. Però se la metto 'off' smette di funzionare il telecomando della stufa.
    Ho provato anche con parametri di connessione diversi (1200,8,N,1 / 1200,8,N,2 / 9600,8,N,1 / 9600,8,N,2 / ...) ma nulla (mentre almeno qualche garbage me lo sarei aspettato, se fosse un problema di parametri di connessione).
    Un'ipotesi che non ho verificato è che non sia interrotto il cavetto che va dalla scheda al connettore sul retro.
    Voi avete qualche idea?
    Grazie!
     
    Top
    .
  6. videolab
     
    .

    User deleted


    Procurati un tester e misura le tensioni che rilevi sul connettore della stufa.
    Come riferimento di massa per fare le misure puoi usare il telaio della stufa, dovrebbe essere a GND, ad ogni modo il segnale di GND lo hai su uno dei due estremi dello spinotto.
    Sul segnale RX/TX dovresti avere 5V, mentre la VCC è circa 15V.
    Sulla Melinda guardandola da dietro GND è il primo a destra, poi c'è TX/RX, poi VCC e l'ultimo a sinistra è non collegato.
     
    Top
    .
  7.  
    .
    Avatar

    piccola fiammiferaia

    Group
    Simpatizzante
    Posts
    303
    Location
    TS

    Status
    Anonymous
    Grazie videolab, ok. Hai ragione, il GND è a destra. Pensa che qualche settimana fa avevo aperto la parete della stufa e seguito i fili e avrei giurato che fosse a sinistra. Questi sono i risultati del fare le cose "quando si ha tempo" :-(
    Ho provato a ricollegare ma comunque non funziona, ma devo ricontrollare tutto e a questo punto cambiare anche l'adattatore USB-TTL perché avendo ieri provato alla rovescia significa che gli ho sparato 15v sul TX/RX :-( Maledizione a me che non ho controllato! Per fortuna di questi adattatori ne avevo comperati 10 dalla cina a 2 euro l'uno per fare giochini con i DS18B20 :-)
    Grazie e vi faccio sapere se vado avanti!
     
    Top
    .
  8.  
    .
    Avatar

    piccola fiammiferaia

    Group
    Simpatizzante
    Posts
    303
    Location
    TS

    Status
    Anonymous
    Fatto, funziona :-) super grazie! Per oggi ho finito il tempo a disposizione, ma in futuro vedo come sfruttare meglio la cosa :-)
     
    Top
    .
  9.  
    .
    Avatar

    piccola fiammiferaia

    Group
    Simpatizzante
    Posts
    303
    Location
    TS

    Status
    Anonymous
    Ho fatto un po' di prove, ma alcune locazioni di quelle che avete indicato non corrispondono sulla mia lucrezia lcd. Ad esempio la temperatura impostata non è in EEPROM 0x7d ma in EEPROM 0x0c e modificando il valore effettivamente comando la stufa. Non sono però riuscito a trovare una copia di questo valore in RAM.
    Non ho trovato nemmeno il valore della potenza in uso.

    Devo farmi un programmino che mi faciliti la comprensione della RAM e della EEPROM, non potendo usare il SeramiNet (non ho neanche windows :-) ).

    Qualcuno ha trovato altre locazioni e si riconosce in 0x0C per la temperatura impostata?

    Intanto vedo di graficare qualche cosa, per fare grafici tipo questo (dove adesso ci sono i valori - imprecisi - dei sensori che ho messo su mandata e ritorno dell'acqua) per capire che cosa combina la stufa quando non sono a casa:

    image

    P.S: lo so che dovrei dire modello scheda e versione FW, ma dovrei ritogliere il fianco della stufa. La versione del FW a memoria è 00, ma aspetto che si spenga per controllare.
     
    Top
    .
  10. alexenergy
     
    .

    User deleted


    Salve a tutti,

    ho una termocamino a pellet piazzetta e vorrei provare a connettermi, lo scopo è quello di creare un'interfaccia web con arduino di controllo/gestione.

    Per prima cosa vorrei realizzare il cavo di connessione con il PC per iniziare ad analizzare i parametri, magari utilizzando seraminet.
    Quello che non ho ben capito è quale degli schemi proposti mi permette l'utilizzo del software e quale invece solo test seriali...

    Ciao e grazie a tutti
     
    Top
    .
  11.  
    .
    Avatar

    Napalm

    Group
    Member
    Posts
    5,523
    Location
    Rijeka,Croazia

    Status
    Anonymous
    rotra, la Lucrezia ha una scheda diversa ( 512 ) da quella usata su stufe e termostufe Extraflame ( 575 ) e di conseguenza indirizzi RAM e EPROM sono diversi. Percio devi perdere un po di tempo per trovarli
     
    Top
    .
  12.  
    .
    Avatar

    piccola fiammiferaia

    Group
    Simpatizzante
    Posts
    303
    Location
    TS

    Status
    Anonymous
    Ciao a tutti,

    1) Grazie Milos, mi hai risparmiato di smontare il fianco della stufa per la centesima volta :-) cosa che con una bambina di 8 mesi in braccio è alquanto complicata ;-)

    2) Ho recuperato i parametri che mi servono (temperatura e potenza, corrente e impostata, ...) abbastanza facilmente con un programmino in python. Il risultato è per il momento questo:

    image

    realizzato raccogliendo i dati a intervalli di 1 minuto e messi in carbon-cache sul raspberry e graficati con Graphite, che permette di fare i grafici dinamicamente selezionando e deselezionando i sensori da plottare. Ho anche un'altra interfaccia, sempre web, carina che si chiama Graphana e utilizza gli stessi dati ma in più spostandosi con il puntatore del mouse su una curva indica qual'era esattamente il valore in quel momento. Considerato che il raspberry costa ormai 30 euro e l'interfaccia USB-TTL 2 euro, direi che non posso lamentarmi :-)

    In ogni caso non ho fatto tutto questo per gongolarmi di un grafico ma per risolvere due problemi, a cui forse qualcuno sa rispondermi (il comportamento credo che sia indipendente dal modello di stufa idro). Premesso che la stufa idro va a uno scambiatore di calore a piastre (dopo aver passato la valvola anticondensa) e quindi la quantità di acqua nel circuito direttamente collegato alla stufa è piccola, i "problemi" sono:

    1) dopo la notte, ad esempio alle 02.30 circa nell'immagine, la stufa idro parte e l'acqua ha una temperatura bassa. Succede che se la T impostata è meno di 70°, la stufa (non sempre) va in H-Off o Allarme no flusso. Il motivo, secondo me, è sempre lo stesso: scalda l'acqua, ma essendo poca sale troppo di temperatura e supera i 70° per più di 10 minuti oppure la stufa si accorge in tempo e diminuisce la potenza. Ma diminuendo la potenza e portandola a 1 (nella scala 1-16) basta un po' di vento che entra in canna fumaria e va in allarme no flusso. Quindi la mia idea era di fare in modo che la stufa in accensione abbia una T impostata di 70° e poi dopo 30 minuti di lavoro "si spinga" verso i 65°, più che sufficienti per il mio impianto (specie con questi ultimi inverni miti). Visto che la T-Fumi è > 100° anche a T-H2O di 65° credo che problemi di condensa non dovrei averne. Viceversa, il fatto che va in errore (per H-Off o No flusso), fa raffreddare ripetutamente stufa e fumi con maggiore consumo di pellet e condensa in avvio.

    2) la stufa è collegata a un termostato ambiente, che stacca a 19°. Però, almeno la mia versione di SW, quando va in STDBY la spegne. Il CAT mi ha detto che dev'esserci l'opzione per dire che si deve portare alla temperatura minima, ma di fatto questa opzione non c'è (al prossimo controllo annuale il CAT verificherà di persona, in ogni caso). Quindi l'idea era di implementarla, collegando il temostato ambiente al raspberry e far dare i comandi di portarsi in potenza 1 alla stufa. I grafici saranno utili per capire se T-Fumi resterà decente (se la valvola anticondensa farà il suo, in teoria)

    3) la mia casa è grande e energivora, però i consumi di pellet variano moltissimo se T-H2O impostata è 70° o 65°. Per contro nelle giornate in cui fa veramente freddo, l'abitazione è più confortevole se T-H2O è impostata a 70°. Quindi l'idea è di impostare automaticamente T-H2O in funzione della temperatura esterna (facendo passare un DS18B20 all'esterno attraverso il foro di ventilazione che c'è nel muro). In fondo le caldaie a gas/gasolio hanno la possibilità di modularsi in base ad una sonda esterna.

    4) ultimo "problema" non dovuto alla stufa ma al termostato ambiente che è "ignorante". Anzitutto lo scarto tra spegnimento è di 1°, e succede che in determinate giornate si spegne e accende a intervalli di 30-40 minuti. Quindi vorrei rendere la cosa più "furba" dicendo alla stufa che non si deve riaccendere se è passata meno di un'ora dallo spegnimento. In totale, nella giornata, dovrei avere meno accensioni. Inoltre il termostato "non sa" tenere in considerazione che cosa farà nei prossimi 30 minuti (e non sono riuscito a trovare un termostato che lo faccia). Quindi se alla sera la temperatura in casa è sotto i 18.5° lui fa partire la stufa anche se dopo 15 minuti la spegnerà perché di notte la T ambiente impostata è di 18°.

    Vi sarò grato se mi segnalate eventuali ca***te nei miei ragionamenti :-)

    ciao

    r.
     
    Top
    .
  13.  
    .
    Avatar

    Napalm

    Group
    Member
    Posts
    5,523
    Location
    Rijeka,Croazia

    Status
    Anonymous
    rotra,qui siamo un po off topic per quanto riguarda la tua Lucrezia. Cmq, no flusso alla potenza minima non dovrebbe succedere. O la stufa e intasata,o sensore sporco o hai il comignolo che si trova in una zona di sovrapressione quando tira il vento.
    Per hoff mi servono piu informazioni sull impianto e ti consiglio di aprire una discussione nella sezione Extraflame - Idro e esponi i dati come nella discussione Leggere prima nella sezione Extraflame.
     
    Top
    .
  14.  
    .
    Avatar

    infreddolito perso

    Group
    Member
    Posts
    16

    Status
    Offline
    CITAZIONE (Uman @ 22/12/2014, 12:40) 
    Ho costruito un terminale per dimostrare la possibilita' di remotare i comandi della stufa e soprattutto per poter controllare contemporaneamente tutti i parametri utilizzati per la taratura della stessa.
    Ho usato una scheda con PIC16F877, costruita piu' di dieci anni fa, alla quale ho collegato un display da 320x240 pixels.
    Per colpa della gestione del display grafico il microcontrollore e' "preso per il collo", quando potro' ne utilizzero' uno piu' prestante.
    L'alimentazione della scheda e' prelevata dalla stufa (piedino 3 del connettore, vedi schema).
    Ovviamente in questo caso l'interfaccia non e' optoisolata.
    https://image.forumcommunity.it/1/0/0/1/6/9.../1419246077.gif
    La comunicazione con la stufa e' gestita in interrupt a 200mS con protocollo baud=1200, dato=8bit, parita'=mark.
    In ricezione viene controllata la checksum e richiesto per 3 volte il parametro in caso di errore (in contatore di retry resta comunque a zero)

    ciao Uman,
    innanzitutto complimenti per l'ottimo lavoro!
    io ho una marocchi rossana, sorella minore della tua viviana; purtroppo il crono ha solo due orari impostabili e quindi di recente ho iniziato la realizzazione di un sistema di controllo bsato su arduino uno, con lcd, keypad ed rtc: per i comandi di on/off pensavo di utilizzare i contatti puliti di un rele in parallelo al pulsante di accensione ed uno o più ingressi optoisolati per rilevarne lo stato;
    però nel frattempo mi sono incuriosito sul protocollo di comunicazione fra scheda di potenza e display e mi sono imbattuto nel tuo progetto: è talmente interessante che sono più che convinto a metterlo in pratica, utilizzando la porta seriale dell'arduino; le porte tx/rx dovrebbero avere le stesse specifiche del pic che hai usato tu, però lo schema che hai postato esiste solo in versione ridotta, si riesce appena ad intravedere che ci sono alcuni componenti discreti, potresti pubblicarlo nuovamente, per favore?
    per intervenire sulla rossana vorrei aspettare un mesetto, che non sia più ncessario accenderla (non so se resisterò tanto ...) però ho un'altra scheda micronova con cui fare già qualche prova di comunicazione, del resto può servire anche per estendere le verifiche di compatibilità dei comandi su versioni diverse
    grazie
    enrico
     
    Top
    .
  15. k3a
     
    .

    User deleted


    Thanks for all the work you did on this. I've summarised it all in English on my blog + added more details about the serial protocol, remote controller and control panel pinout. You may find it useful - k3a.me/?p=361

    I will also update it later when I finish my 3.3v logic controller.

    Edited by k3a - 4/10/2015, 19:05
     
    Top
    .
129 replies since 22/11/2012, 23:09   35895 views
  Share  
.