Visitor
Posts: 2
Joined: Wed May 10, 2017 9:03 am

calcolo differenziale delle temperature

Wed May 10, 2017 9:50 am

ciao a tutti, sono nuovo del forum. (se c'è una pagina di presentazioni, non l'ho vista, la compilerò a breve).
sto facendo un progetto: creare una centralina, basata su raspberry (in realtà una orange pi pc plus) che comandi ad una ventola di andare a determinati regimi di velocità in presenza di differenze di temperatura più o meno elevate.
Le sonde che vorrei utilizzare sono le DS18B20 come per Arduino.
la pratica: ho una macchina che produce molto calore, ma in ambiente chiuso. ha una sola protezione, quella di spegnersi (andare in pausa) quando raggiunge un certo limite.
necessito di una ventola che non asporti e basta il calore ma che massimizzi la resa di raffreddamento dell'aria. quindi Raspberry dovrebbe, in base a due sonde, una interna alla macchina (calda), e una esterna (fredda), gestire la differenza di temperatura. vorrei fare un programma (sto cercando di imparare ad usare Python), che a ΔT=0°C, la ventola sia allo 0%, che a ΔT=+1°C faccia partire la ventola per esempio al 5%, e che incrementalmente (non a scatti possibilmente) la faccia aumentare di regime fino a, valore ancora ipotetico, ΔT=+20°C=>ventola100%. ovviamente non deve invertire i valori alla differenza di temperatura opposta..!
altre due sonde andrebbero poste in due zone intermedie del flusso di passaggio d'aria, per monitorare la temperatura effettiva (queste non devono comandare niente, sono solo dei "termometri".
la ventola è una monofase, circa 90 w. ho provato a utilizzare una ventola 12v ma con risultati ridicoli con alimentatore che scaldava tantissimo. mi servirebbe quindi anche un "driver", non so se è giusto definirlo così, che, in base al comando di raspberry, faccia passare una certa tensione in 220v per alimentare la ventola (qualcuno mi saprebbe indirizzare? non credo che i relè a stato solido facciano per me, siccome preferirei una accelerazione/decelerazione costante e non 'scattosa' della mia ventola).
infine, vorrei visualizzare su display la deltaT tra sonda calda e fredda e temperatura delle 4 sonde indipendentemente. il display andrebbe allacciato alla porta hdmi, altrimenti i GPIO per le sonde mi spariscono (credo, dico bene?)
"tutto qui"......... per me è un'impresa, o forse no.. ma scrivo per chiedere un supporto.
qualcuno potrebbe aiutarmi? sono perito meccanico, e a questo ambiente dell'elettronica mi sto appena avvicinando. ho fatto delle prove con IDE di Arduino ma ho trovato molte complicazioni, dovute anche al fatto della carenza di pin (la UNO). dovendo comprare una scheda nuova, ho voluto provare anche a passare ad un concetto diverso. magari con l'aumentare dell'esperienza, mi farò un sistema di controllo remoto su smartphone visto che la scheda consente... ma queste ora sono solo idee, non mi interessano nell'immediato.
grazie a chi vorrà aiutarmi.

willy_pinguino
Posts: 901
Joined: Sun Jan 22, 2017 9:11 pm

Re: calcolo differenziale delle temperature

Wed May 10, 2017 5:07 pm

Ciao e benvenuto.

non credo ci sia una pagina di presentazione in italiano, visto che l'italiano è solo una sottosezione del forum ufficiale, quindi se vuoi presentarti dovrai cercare la pagina in inglese (se esiste, io son maleducato e non mi sono mai presentato :? )

prima domanda: sicuro che il gpio del RPi sia identico a quello di OPi? so per certo che alcuni modelli di OPi hanno una disposizione dei pin diversa, quindi dovresti esser certo di questa cosa.

seconda cosa, il sistema operativo non è esattamente compatibile, nel senso che per far girare un interfaccia grafica rasbian funziona, e credo anche ubuntu mate, ma per aprofittare dell'accellerazione hardware e dei collegamenti diversi da usb, rete e wifi, (ammesso che il wifi funzioni visto che anche lì, i vari modelli di OPi hanno chipset per il wifi diversi...) non credo che (trattandosi di chip diversi, da una parte il Broadcom e dall'altra l'Allwinner) tu possa usare le stesse librerie di sistema.
Anzi, per il video, l'accellerazione hardware e la decodifica richiedono drivers closed source, che sicuramente non troverai in Raspbian. A quel punto ti conviene andare direttamente verso Armbian per gli H3, ma non so quale supporto quest'ultima offra ai vari connettori GPIO, SDI, LVDS ed altri, presenti sulla scheda.

terza cosa, per connettere un display al gpio ed usare contemporaneamente dei sensori, basta che tu non lo connetta direttamente al pettine sulla scheda della OPi, ma tu usi dei cavi per connettere solo i connettori che ti servono, ma per fare questo hai ovviamente bisogno di sapere cosa e come viene usato dal display che deciderai di usare. (oltretutto sarai obbligato a fare questo se la piedinatura del GPIO di Orange è differente da quella di Raspberry)
usare l'uscita hdmi solo per leggere 4 temperature credo sia uno spreco di risorse... dovrebbero esserci degli schermini 2x16 con la connessione 1wire che potresti mettere in cascata ai tuoi sensori che dovrebbero essere sufficenti per visualizzare tutte le info che ti servono, ma nel caso non bastassero, verifica se sul tuo OPi ci sia un connettore LVDS per connettere schermi esterni, che non passa né dal GPIO , né dall'hdmi, e potrebbe essere la via di mezzo giusta.

per il resto, gestire il numero di giri della ventola è una funzione analogica, quindi dovresti procurarti un convertitore DA che sia in grado di dare maggior voltaggio o amperaggio a seconda del livello digitale che decidi da programma, ma per un carico così elevato, non so cosa potresti usare... hai provato a verificare se esistono ventole di quel genere con controllo digitale ed eventualmente anche con funzione tachimetrica? (non sono un elettronico, quindi in questo non posso esserti di troppo aiuto, mi dispiace)

per la velocità della ventola, dubito che una ventola che gira al 5% sia in grado di abbassare la temperatura anche solo di 1 grado... 5% di una ventola da 2000 giri al minutovuol dire 100 giri al minuto... è un'inezia ed ammesso che si muova, (sotto un certo limite dubito che il motorino possa arrivare a muovere il peso della ventola) dubito che muova abbastanza aria da provocare un calo di temperatura... comunque tu puoi far calcolare al tuo programma la velocità necessaria non in maniera fissa, ma adattandola all'effettiva temperatura, decidendo per esempio che fino a che il differenziale si tiene sotto 1 grado, la ventola non interviene, se stà sotto i diciamo 3 gradi la velocità non superi il 30%, che se stà sotto i 10 gradi la velocità non vada oltre il 70% e che se supera i 10 gradi vada a 100%, oppure puoi impostare un rapporto diretto tra differenziale di temperatura e velocità della ventola.
ma questa è solo programmazione e si fa in python come in qualunque altro linguaggio. (anche su arduino potresti fare la stessa cosa con relativa semplicità con la facilitazione che arduino gestisce anche entrate e uscite analogiche senza bisogno di convertitori, ma in effetti la curva di apprendimento dell' IDE per arduino e altri microcontrollori è piuttosto ripida...)

Visitor
Posts: 2
Joined: Wed May 10, 2017 9:03 am

Re: calcolo differenziale delle temperature

Thu May 11, 2017 9:29 am

ciao Willy_pinguino, grazie per la esaustiva risposta..!
prima domanda: sicuro che il gpio del RPi sia identico a quello di OPi? so per certo che alcuni modelli di OPi hanno una disposizione dei pin diversa, quindi dovresti esser certo di questa cosa. non credo proprio che abbiano la stessa disposizione, a seconda di dove si trovano le posizioni giuste, io collego i sensori..


seconda cosa, il sistema operativo non è esattamente compatibile, nel senso che per far girare un interfaccia grafica rasbian funziona, e credo anche ubuntu mate, ma per aprofittare dell'accellerazione hardware e dei collegamenti diversi da usb, rete e wifi, (ammesso che il wifi funzioni visto che anche lì, i vari modelli di OPi hanno chipset per il wifi diversi...) non credo che (trattandosi di chip diversi, da una parte il Broadcom e dall'altra l'Allwinner) tu possa usare le stesse librerie di sistema. Argh!!!!! Speravo fosse un clone nel vero senso della parola (ad ogni modo oggi mi arriva, ci smanetto un po’ e capirò quali sono il limiti/differenze).. che tu sappia, allora orange ha le sue proprie librerie? Mi stavo iniziando a studiare le librerie per raspberry, visto che è più conosciuto e molto probabilmente più completo, ma se anche orange è “indipendente” allora posso fare anche da li.. ad ogni modo sto parlando ancora presto, oggi domani vedo che trabiccolo mi sono preso e ci ragiono su..

Anzi, per il video, l'accellerazione hardware e la decodifica richiedono drivers closed source, che sicuramente non troverai in Raspbian. A quel punto ti conviene andare direttamente verso Armbian per gli H3, ma non so quale supporto quest'ultima offra ai vari connettori GPIO, SDI, LVDS ed altri, presenti sulla scheda. Come sopra, grazie del prezioso consiglio, come arriva faccio le varie prove del caso..

terza cosa, per connettere un display al gpio ed usare contemporaneamente dei sensori, basta che tu non lo connetta direttamente al pettine sulla scheda della OPi, ma tu usi dei cavi per connettere solo i connettori che ti servono, ma per fare questo hai ovviamente bisogno di sapere cosa e come viene usato dal display che deciderai di usare. (oltretutto sarai obbligato a fare questo se la piedinatura del GPIO di Orange è differente da quella di Raspberry) si è un’ottima idea, dovrò solo capire quali sono le piedinature di input del display, quali quelle di output del raspberry e sostituirle con quelle dell’orange… “solo”.

usare l'uscita hdmi solo per leggere 4 temperature credo sia uno spreco di risorse... ma almeno non mi spacco la testa come sopra.. o sbaglio?
dovrebbero esserci degli schermini 2x16 con la connessione 1wire che potresti mettere in cascata ai tuoi sensori che dovrebbero essere sufficenti per visualizzare tutte le info che ti servono, ma nel caso non bastassero, verifica se sul tuo OPi ci sia un connettore LVDS per connettere schermi esterni, che non passa né dal GPIO , né dall'hdmi, e potrebbe essere la via di mezzo giusta. In realtà volevo tentare la strada di un piccolo schermo capacitivo, per avere più spazio nel video, e, sempre con l’aumentare dell’esperienza, inserire qualche grafico di andamento.. tutte cose di nessun valore pratico, solo per soddisfazione personale.

per il resto, gestire il numero di giri della ventola è una funzione analogica, quindi dovresti procurarti un convertitore DA che sia in grado di dare maggior voltaggio o amperaggio a seconda del livello digitale che decidi da programma, ma per un carico così elevato, non so cosa potresti usare... hai provato a verificare se esistono ventole di quel genere con controllo digitale ed eventualmente anche con funzione tachimetrica? (non sono un elettronico, quindi in questo non posso esserti di troppo aiuto, mi dispiace) al convertitore DA ci stavo appunto pensando, ma non so bene cosa cercare. Cmq anche qui, grazie per il consiglio, farò delle ricerche.

per la velocità della ventola, dubito che una ventola che gira al 5% sia in grado di abbassare la temperatura anche solo di 1 grado... 5% di una ventola da 2000 giri al minutovuol dire 100 giri al minuto... è un'inezia ed ammesso che si muova, (sotto un certo limite dubito che il motorino possa arrivare a muovere il peso della ventola) dubito che muova abbastanza aria da provocare un calo di temperatura... è tutto a titolo esemplificativo.. ;) vedrò con il programma fatto, di modificare le variabili in modo che ci siano sempre movimenti efficienti.. comunque tu puoi far calcolare al tuo programma la velocità necessaria non in maniera fissa, ma adattandola all'effettiva temperatura, decidendo per esempio che fino a che il differenziale si tiene sotto 1 grado, la ventola non interviene, se stà sotto i diciamo 3 gradi la velocità non superi il 30%, che se stà sotto i 10 gradi la velocità non vada oltre il 70% e che se supera i 10 gradi vada a 100%, oppure puoi impostare un rapporto diretto tra differenziale di temperatura e velocità della ventola. Perfetto, ci siamo capiti..
ma questa è solo programmazione e si fa in python come in qualunque altro linguaggio. (anche su arduino potresti fare la stessa cosa con relativa semplicità con la facilitazione che arduino gestisce anche entrate e uscite analogiche senza bisogno di convertitori, ma in effetti la curva di apprendimento dell' IDE per arduino e altri microcontrollori è piuttosto ripida...) appunto… come la faccio? Perché mi sto un po’ studiando le variabili, if, else, elif ecc… ma non capisco ancora come applicarle queste cose.. sapresti consigliare un manuale magari un po’ mirato? E cercherò anche nelle pagine in inglese come da te consigliato.. forse essendo più vasta quella parte di forum, ho più probabilità di trovare.. intanto grazie per i consigli.. se sai darmi qualche altra risposta, è ben accetta.

willy_pinguino
Posts: 901
Joined: Sun Jan 22, 2017 9:11 pm

Re: calcolo differenziale delle temperature

Thu May 11, 2017 11:24 am

Il trabiccolo non è male, non hai preso una cantonata.
Era meglio prendere l'Orange Pi PC Plus che ha saldato sulla scheda 8 gb di memoria da cui puoi far partire il sistema operativo , che in ogni caso è più performante di qualunque sd tu possa mai connetterci (anche perchè il lettore sd è limitato alle schede normali non le HC o le XC)
Le differenze sul GPIO non stanno tanto sulla piedinatura in se ma sull'orientamento, in alcuni modelli è girato di 180° quindi per capirci un eventuale monitorino collegato al gpio invece che stare sopra alla scheda starebbe esterno alla stessa per avere i collegamenti giusti.

Le librerie non so se sono le stesse, io l'ho preso perchè sono intreressato alla parte video via hdmi e purtroppo mi son scontrato con i drivers closed source per la decodifica in hw dei flussi video... comunque se anche dovessero essere diverse, si tratta solo di caricare un diverso modulo per l'uso del GPIO a livello di kernel, dal punto di vista della programmazione dovrebbe essere tutto uguale, ma devi verificare SE CI SONO le librerie per il gpio sulla distro che andrai ad installare. specialmente le versioni di sviluppo delle distro come armbian a volte non hanno tutte le librerie attive o installate o funzionanti correttamente.

beh per grafici e abbellimenti in effetti c'è sempre tempo, anche se ho sempre giudicato abbastanza ostico passare dalla semplice programmazione all'interazione grafica. Se il tuo modello di Orange ha il connettore per uno schermo esterno mi sa che è la scelta più conveniente, per l'hdmi gli schermi con hdmi piccoli sono ancora abbastanza costosi o hanno risoluzioni ridicole... Poi mi sa che ho anche detto una sciocchezza, nel GPIO dovresti trovare una connessione 1wire in ingresso ed una in uscita, quindi lo schermino che ti suggerivo io non sarebbe andato in cascata ai tuoi sensori.

per la programmazione, se intendi procedere con delle fasce di intervento una serie di if...else annidati è la soluzione più comoda anche se magari meno elegante, per la soluzione proporzionale, è un semplice calcolo costante che puoi risolvere con una funzione tua personalizzata, a cui fornisci le temperature e lei calcola la relativa velocità della ventola, poi non fai altro che richiamare la funzione ogni x secondi o minuti con i nuovi valori, o un ciclo di for...while che costantemente legga le temperature e quando legge una variazione superiore a x (in gradi) decide se aumentare fino al massimo o diminuire fino a 0 la velocità della ventola ma anche quì è di una semplicità disarmante, anche se ogni linguaggio ha il suo modo di costruire le istruzioni, quindi non conoscendo il Python un mio esempio ti porterebbe sulla cattiva strada.
Qualunque manuale di programmazione affronta problemi del genere, quindi se decidi di sviluppare in Python prendi un manuale di livello base di quel linguaggio, che spieghi anche un po' di concetti astratti di programmazione, vedrai che non è difficile. Non ti servono manuali troppo evoluti che invece affrontano situazioni più specifiche e/o complesse (che casomai potrebbero servirti nel momento in cui tu volessi iniziare ad usare librerie grafiche per la creazione di grafici interattivi e cose del genere)

comunque parlando per concetti e blocchi le vie che vedo io per il tuo problema sono 3:

- una scala di valori che innesca con un ciclo di if...else interventi a livello incrementale della ventola al crescere della temperatura.
quindi tu avrai una routine temporizzata che ogni x secondi o minuti legge la temperatura dai 2 sensori principali, ed a seconda di quanto sia il differenziale applica la velocità della ventola predeterminata "a gradini".

- una lettura sempre a tempo ed ogni volta che viene effettuata la lettura viene calcolata ed applicata la velocità della ventola
quindi avrai una routine temporizzata che ogni x secondi legge le temperature, e le passa alla funzione che calcola la velocità di ventola più adatta e la applica

- un calcolo continuo e dinamico della velocità della ventola in rapporto alle temperature rilevate.
quindi avrai un controllo continuo e costante delle temperature, e la velocità della ventola viene calcolata continuamente in rapporto alle temperature stesse, quindi la stessa funzione della situazione precedente ma applicata in maniera continua e costante in ogni momento.

ovviamente ognuno degli approcci ha pro e contro... con la soluzione "a gradini" puoi ottimizzare la velocità delle ventole ai livelli di maggior efficenza del motore delle ventole (come perito meccanico forse hai più tu di me i mezzi per calcolare le capacità di portata e di efficenza della ventola che andrai ad usare)
con la soluzione "temporizzata" puoi trovare il giusto equilibrio tra l'intervallo delle rilevazioni e l'efficenza delle modifiche
con la soluzione sempre online, sottoponi il computer allo sforzo maggiore, perchè il controllo è costante, ma se il motore non ha "zone morte" nel suo range di intervento, puoi avere la massima efficenza in raffreddamento con il miglior risparmio energetico, visto che l'orange pi comunque consuma molto poco anche quando dovesse essere sempre in calcolo.

secondo me però è inutile mettere così sotto stress il processore... tanto se metti un controllo ogni 5 secondi non cambia di molto rispetto alla soluzione precedente.
la prima soluzione invece è la più semplice e mirata se l'efficenza della ventola ha delle lacune (come sospetto, specialmente a bassa velocità)

poi bisogna verificare se una ventola come la tua dura di più nel tempo se sfruttata sempre a velocità fisse o se sopporta bene anche le continue variazioni di velocità.

Return to “Italiano”