Aiutatemi per la scelta di Arduino & per il circuito per favore

salve a tutti!

sono max

avrei bisogno di creare un circuito per un Arduino che possa fare:

  • monitoria -solo monitoria e niente altro- di 16 ventole tachimetriche per pc (in sostanza all' arduino porto solo il terzo cavo delle 16 ventole)

  • visualizzare i dati su un display 20x4 o 40x4 o lcd (con le scritte Fan1, Fan2..Fan16 e sotto incolonnati i valori degli rpm rilevati)

  • se possibile -visualizzare gli rpm anche su una interfaccia in windows xp via seriare o -preferibile- via USB...

quindi in sostanza devo fargli fare per 16 volte lo stesso compito banale e poi visualizzare i risultati..

vi chiedo quindi:

che modello di Arduino farebbe al caso mio?
che Display farebbe al caso mio fra quelli in opzione?

c'è qualche utente di milano che -retribuito ovviamente- potrebbe darmi una mano con la progettazione del circuito e la programmazione di Arduino?

per l'assemblaggio e la realizzazione del circuito sono in grado anche da solo (ho fatto elettronica a scuola..)

grazie

max

Per via del numero di ingressi e uscite (per il display) sicuramente devi prendere un Arduino Mega.
Per visualizzare gli rpm di 16 fan ti serve un 40x4 , servono 10 caratteri per ogni fan, "FANx 1234 ", pertanto ci vanno solo quattro fan per ogni riga e su quattro righe sono sedici esatte.
In alternativa puoi usare un 4x20 visualizzando otto fan per volta a schermate alternate.

quella delle schermate alternate non è un ' idea malvagia!

devo verdere quanti bay da 5.25" avrò disponibili..

e un lcd come lo vedresti?troppo caro e troppo complicato?

per l'interfaccia con Xp via usb è fattibile?

grazie

max

p.s. mi dimenticavo di precisare che le ventole sono alimentate/controllate da un rheobus esterno, il Coolermaster Pwm wind rider, -un aggeggino utilissimo- che a sua volta butta fuori 6 cavi di monitoria aventi solo il terzo pin cablato (quello tachimetrico appunto)
quindi non ho bisogno, e non devo pilotare, le ventole con l'arduino, al quale arriverebbero già soltanto i cavi tachimetrici -già disaccoppiati- con il loro bel valore degli rpm...

Il 20x4 o 40x4 e' prorprio un lcd, e non e' molto caro. Va capito in che modo esce il segnale delle ventole, e' digitale o analogico? Il programma e' fattibilissimo, basta scriverlo...

Vado a memoria, l'uscita tachimetrica delle ventole per PC è di tipo open drain, serve una resistenza di pull up, e fornisce due impulsi per ogni rotazione della ventola.
Leggendo la frequenza, in Hertz, degli impulsi e moltiplicandola per 30 (x 60 / 2) è possibile risalire agli RPM.

Federico:
Il 20x4 o 40x4 e' prorprio un lcd, e non e' molto caro. Va capito in che modo esce il segnale delle ventole, e' digitale o analogico? Il programma e' fattibilissimo, basta scriverlo...

scusa, intendevo di usare o un VFD o appunto un LCD...

il segnale tachimetrico della ventola è di tipo open collector, da due impulsi ogni giro...

puoi darmi una mano nella realizzazione? (ovviamente non gratis..)

grazie

max

astrobeed:
Vado a memoria, l'uscita tachimetrica delle ventole per PC è di tipo open drain, serve una resistenza di pull up, e fornisce due impulsi per ogni rotazione della ventola.
Leggendo la frequenza, in Hertz, degli impulsi e moltiplicandola per 30 (x 60 / 2) è possibile risalire agli RPM.

mi sembra di capire che quello che serve , di base , è che l' arduino funzioni come un multi-frequenzimetro, giusto?

In linea di massima si, devi realizzare un frequenzimetro multicanale.
Facciamo due conti di massima, ipotizzando per eccesso che le ventole arrivano fino a 10000 rpm la frequenza massima degli impulsi è circa 10000/60*2 = 333 Hz, valore tranquillamente gestibile da Arduino.
C'è da lavorare abbastanza sul software perché gestire 16 canali in real time non è semplicissimo.

astrobeed:
In linea di massima si, devi realizzare un frequenzimetro multicanale.
Facciamo due conti di massima, ipotizzando per eccesso che le ventole arrivano fino a 10000 rpm la frequenza massima degli impulsi è circa 10000/60*2 = 333 Hz, valore tranquillamente gestibile da Arduino.
C'è da lavorare abbastanza sul software perché gestire 16 canali in real time non è semplicissimo.

le ventole al massimo arriveranno a 2200 rpm quella più spinta,le altre sono sotto i 1800..

quindi il circuito si dividerà in tre sezioni: ingessi ventole/frequenzimetro - gestione display - gestione interfaccia usb..

Ciao maxmax80
2200 Upm sono con 2 segnali per giro 72Hz oppure un periodo di ca 13,6mSec
Visto che non é critico di monitorare secondo per secondo i giri delle ventole basta controllare una dopo l' altra con las semplicissima funzione pulseIn()

pulseIn blocca l' esecuzione del programma ma visto i tempi non é un problema. Non credo che un aggiornamento ogni 1-2 secondi sia un problema.
http://arduino.cc/en/Reference/PulseIn
Se usi anche le entrate analogiche come Pin Digitali e piloti il display con 4 bit Ti basta un Arduino con un Atmega328 (2 pin per seriale, 8 per gli 8 segnali delle ventole e 7 per il Display; Ti restano ancora 3 per 3 pulsanti).

Ciao Uwe

uwefed:
Ciao maxmax80
2200 Upm sono con 2 segnali per giro 72Hz oppure un periodo di ca 13,6mSec
Visto che non é critico di monitorare secondo per secondo i giri delle ventole basta controllare una dopo l' altra con las semplicissima funzione pulseIn()

pulseIn blocca l' esecuzione del programma ma visto i tempi non é un problema. Non credo che un aggiornamento ogni 1-2 secondi sia un problema.
http://arduino.cc/en/Reference/PulseIn
Se usi anche le entrate analogiche come Pin Digitali e piloti il display con 4 bit Ti basta un Arduino con un Atmega328 (2 pin per seriale, 8 per gli 8 segnali delle ventole e 7 per il Display; Ti restano ancora 3 per 3 pulsanti).

Ciao Uwe

sì sì anche se con il pulseIn l'aggiornamento non è immediato non importa..

però da quello che mi dici mi sembra che tu abbia calcolato 8 ventole, invece le ventole sono 16..

per usare le entrate analogiche come digitali bisogna fare qualcosa di particolare come programmazione?(perchè usare dei convertitori A7D non so se convenga economicamente..)

per il display dici che bastano 4 bit?
i pulsanti non li ho bisogno..al massimo l' on/off del display..

ho visto le dimensioni dell' arduino mega: dovrebbero essere 10x5.5 cm circa, giusto?
poi ovvimante devo aggiungere altri componeti , quindi le dimensioni aumentano, giusto?

dite che in un bay da 3.5" per hdd ci sta tutto o dovrò usare un bay da 5.25"?

ups
Hai ragione, mi sono sbaglaito. Se hai 16 ventole Ti serve un arduino piú grande oppure aggiungi un multiplexer
Ciao Uwe

uwefed:
ups
Hai ragione, mi sono sbaglaito. Se hai 16 ventole Ti serve un arduino piú grande oppure aggiungi un multiplexer
Ciao Uwe

calcolando che -per tagliare la testa al toro- userò un arduino mega, in un bay da 3.5" per hdd ci sta tutto o dovrò usare un bay da 5.25"?
o addirittura più bay da 5.25"?

grazie

max

maxmax80:
p.s. mi dimenticavo di precisare che le ventole sono alimentate/controllate da un rheobus esterno, il Coolermaster Pwm wind rider, -un aggeggino utilissimo- che a sua volta butta fuori 6 cavi di monitoria aventi solo il terzo pin cablato (quello tachimetrico appunto)
quindi non ho bisogno, e non devo pilotare, le ventole con l'arduino, al quale arriverebbero già soltanto i cavi tachimetrici -già disaccoppiati- con il loro bel valore degli rpm...

Non ho ben capito: devi collegare ogni ventola singolarmente ad Arduino o no? Da quanto dici sopra sembra di no, poi pero' dopo discutete su come collegare le ventole ad Arduino...

Il display per 3310 lo conosci? E' sia grafico che alfanumerico, costa 4 soldi e ci sono librerie già pronte per usarlo; richiede 6 pin.
C'e' addirittura in versione shield già pronto:
http://www.nuelectronics.com/estore/index.php?main_page=product_info&products_id=12

Per il collegamento USB, servirà anche un programma sul PC: sai come scriverlo, o ti serve anche quello?
Va bene lo stesso se sono di Roma? :wink:

@jumpjack, grazie della risposta..

sì devo collegare all' arduino tutti e 16 i connettori tachimetrici -solo quelli- che escono come monitoria dal wind rider

wow, il display per 3310 è un' ottima soluzione, però mi sa che non ci sono abbastanza caratteri:

In realtà il calcolo dei caratteri fatti precedentemente non è esatto
calcola ipotizzando i giri ed il nome incolonnati, quello che occupa più caratteri è proprio il nome con la decina, quindi ad esempio FAN13 saranno -con lo spazio per il nome sucessivo- 6 caratteri.
le opzioni sono 3:

in linea su 6 righe:
FAN01 FAN02 FAN03 FAN04 FAN05
RPM RPM RPM RPM RPM
FAN06 FAN07 FAN08 FAN09 FAN10
RPM RPM RPM RPM RPM
FAN11 FAN12 FAN13 FAN14 FAN15
RPM RPM RPM RPM RPM
29 caratteri, 6 righe (ma sacrifico una ventola)

in linea su 4 righe:
FAN01 FAN02 FAN03 FAN04 FAN05 FAN06 FAN07 FAN08
RPM RPM RPM RPM RPM RPM RPM RPM
FAN09 FAN10 FAN11 FAN12 FAN13 FAN14 FAN15 FAN16
RPM RPM RPM RPM RPM RPM RPM RPM
47 caratteri, 4 righe

tendenzialmente preferirei la seconda ipotesi

per il collegamento usb non so come scrivere il programma, devo ancora recuperare informazioni (e possibilmente un utente di milano che mi dia una mano.. :disappointed_relieved:)

I caratteri "FAN" sono inutili (in gergo si dice che "non contengono informazione"), e con l'idea di Astrobeed di usare schermate alternate, puoi usare comodamente il display 3310:

01:xxxx 02:xxxx
03:xxxx 04:xxxx
05:xxxx 06:xxxx
07:xxxx 08:xxxx
09:xxxx 10:xxxx
11:xxxx 12:xxxx
13:xxxx 14:xxxx
15:xxxx 16:xxxx

Col vantaggio non indifferente che volendo puoi anche mostrare i valori graficamente, come barre verticali: l'occhio umano legge molto piu' facilmente e velocemente i grafici che non i numeri: una barra troppo corta salterebbe subito all'occhio!

16 barre verticali larghe 3 pixel e spaziate di 1 occupano 64 pixel.

Attenzione che il 3310 è sì anche grafico ma non è per niente facile usarlo in questa modalità.
Che io sappia esistono in circolazione solo 2 librerie grafiche:
http://blog.thiseldo.co.uk/?p=383
http://www.arduino.cc/playground/Code/PCD8544

Personalmente non le ho ancora usate. Cmq quel display è un po' ostico da trattare. E' datato e come tale mostra dei limiti.

Boh, alfanumericamente sono riuscito a usarlo in 30 secondi con un rapido copia-incolla, senza aver mai usato un display LCD in vita mia. Immagino che graficamente non sia troppo diverso: se hai una funzione per accendere e spegnere un punto, a scrivere una funzione che disegna un rettangolo ci vuole un attimo.

Avendo le librerie non è difficile, ma resta comunque il fatto che il display non è agevole da gestire, ha dei limiti.
Io ho lo shield di Nuelectronics e ci ho fatto anche dei giochini usando la sola modalità testuale però resta il fatto che alle volte ti verrebbe da batterlo nel muro XD

Ad esempio, se scrivi in fondo alla riga, i caratteri poi passano di sotto scorsi in basso di 1 pixel, perché anche se è "spacciato" per testuale, in realtà quel display è completamente e solo grafico, tant'è che i caratteri sono scritti usando array di bit (come i vecchi font dei computer ad 8 bit). Non hai un modo per "leggere" un carattere perché non hai un buffer video: devi costruirtelo tu usando un array altrimenti non puoi sapere che cosa c'è sullo schermo in una determinata posizione ecc....

Questi son tutti problemi che sono venuti fuori scrivendo i giochi ed avendo la necessità di usare il display in maniera testuale un po' "avanzata". :smiley:

leo72:
Avendo le librerie non è difficile, ma resta comunque il fatto che il display non è agevole da gestire, ha dei limiti.

Beh... i classici limiti del gestire una cosa a bassissimo livello: devi fare tutto da te! :wink: