Show Posts
Pages: 1 [2] 3
16  International / Generale / Re: consiglio su sensore controllo accensione stufa on: February 29, 2012, 10:36:40 am
ottimo, grazie della recensione!
17  International / Generale / Re: consiglio su sensore controllo accensione stufa on: February 29, 2012, 10:27:47 am
grazie!,  certo che pensavo fosse meno problematico!

sono io imbranato o non trovo alternative su dove comprare online una termocoppia e il max6675 se non dal sito adfruit o da questo a me sconosciuto regaliedesideri.it??  smiley-red  smiley-confuse
18  International / Generale / Re: consiglio su sensore controllo accensione stufa on: February 28, 2012, 08:10:00 am
una termocoppia o una PT100?
19  International / Generale / consiglio su sensore controllo accensione stufa on: February 28, 2012, 04:07:45 am
Ciao,
dovrei monitorare grossolanamente l'accensione di una stufa, pensavo di usare un sensore da mettere a contatto del tubo in acciaio di scarico dei fumi.
ad esempio se il sensore rileva una T > di 50 gradi sicuramente la stufa è accesa (o si è spenta da poco)
non ho bisogno di grosse precisioni, ma visto che il sensore va a contatto con il tubo d scarico di fumi, deve resistere almeno fino a 250 gradi
cosa mi suggerite?
grazie 1000
ciao
Stefano
20  International / Generale / Re: sensore ds18b20 e libreria DallasTemperature on: February 23, 2012, 10:37:33 am
 grazie!!!
21  International / Generale / Re: sensore ds18b20 e libreria DallasTemperature on: February 23, 2012, 10:18:23 am
Ciao

l'indirizzo del sensore è gestito con un tipo dati definito nella libreria:

typedef uint8_t DeviceAddress[8];

quindi dovrai fare qualcosa tipo:

DeviceAddress device1 = { 0x28, 0x1D, 0x39, 0x31, 0x2, 0x0, 0x0, 0xF0 };
DeviceAddress device2 = {...};

e per ottenere la temperatura usare il metodo requestTemperaturesByAddress(deviceX);


quindi riprendendo  l'esempio

DeviceAddress insideThermometer = { 0x28, 0x1D, 0x39, 0x31, 0x2, 0x0, 0x0, 0xF0 };

sensors.requestTemperaturesByAddress(insideThermometer); 
(potrei invece usare sensors.requestTemperatures(); per fare la richiesta a tutti i sensori?)

  float tempC = sensors.getTempC(insideThermometer);
(questa rimane invariata, giusto?)

grazie ancora!
22  International / Generale / sensore ds18b20 e libreria DallasTemperature on: February 23, 2012, 08:18:01 am
Ciao a tutti,
dovrei collegare una dozzina di sensori ds18b20 (di cui ho già tutti gli indirizzi)
per fare alcuni test ho usato l'esempio "multiple" che segue la libreria di milesburton, collegandone inizialmente solo alcuni.
purtroppo ogni volta che ne collego uno nuovo mi cambia l'ordinamento nel bus!
come faccio ad assegnare manualmente l'indirizzo?
nell'esempio che mi dice:
  // assign address manually.  the addresses below will beed to be changed
  // to valid device addresses on your bus.  device address can be retrieved
  // by using either oneWire.search(deviceAddress) or individually via
  // sensors.getAddress(deviceAddress, index)
  //insideThermometer = { 0x28, 0x1D, 0x39, 0x31, 0x2, 0x0, 0x0, 0xF0 };

ho provato a "decommentare" l'assegnazione di insideThermometer  (sostituendo l'indirizzo del mio sensore) ma la compilazione mi da errore
expected primary-expression before '{' token
expected `;' before '{' token

cosa sbaglio?
grazie 1000!
23  International / Generale / Re: stranezze sulle variabili on: January 04, 2012, 08:09:38 am
Comunque puó anche essere che hai bisogno di piú memoria RAM di quella disponibile percui il controller sovvrascrive la ram e percui delle variabili.
Una soluzione puó essere revisionare il codice in modo da consumare meno RAM, oppure passare al Arduino Mega 2560.
Ciao Uwe

mmm mi sa che avevo toppato con gli array, ora non ho sotto mano la scheda, stasera ricompilo e provo.
ho già il mega 2560

curiosità: è possibile in fase di compilazione capire quanta ram ho occupato? vedo solo la dimensione del programma...
grazie
ste
24  International / Generale / Re: stranezze sulle variabili on: January 04, 2012, 05:49:42 am
Un altra causa di variabili cambiati senza spiegazione é se memorizzi piú elementi in un array di quanto sono definiti. Per esempio memorizzi un Array[5] dove l'array ha 5 elementi da 0 a 4. Il 6o elemento sovrascrive la variabile che si trova nella memoria dopo l' array. Lo stesso puó succedere se usi in modo errato dei puntatori.
Senza codice é impossibile capire la causa.
Ciao Uwe

cavoli..... fammici pensare... da quando ho implementato 2 array è successo......
25  International / Generale / Re: stranezze sulle variabili on: January 04, 2012, 05:48:02 am
Le variabili non cambiano valore a caso.
...
Nel tuo caso tu dici che il problema è qui:
T_mand_calc_pt=T_mand_calc_pt*curva_auto_pt
non sapendo i valori che possono assumere le 2 variabili è difficile dire il motivo. Tieni però presente che già con valori di 200 e 200 vai in overflow: 200*200=40000, ben oltre il limite di 32767 per il valore positivo assumibile da un integer.


al max mi trovo nelle due variabili 70 e 50 per cui sono ampiamente sicuro
26  International / Generale / Re: stranezze sulle variabili on: January 04, 2012, 05:18:28 am
sono 500 righe di codice ho cercato di fare un sunto..   posso postare una cosa del genere?

no non vado in overflow ne in negativo sono tutti valori al max intorno al +10k
27  International / Generale / stranezze sulle variabili on: January 04, 2012, 04:39:20 am
Ciao a tutti
sto realizzando una centralina per regolare la temperatura di un impianto di riscaldamento a pavimento e mi sono imbattuto in due stranezze utilizzando due variabili:

inizializzo la variabile con  int curva_auto_pt=1;

nel void setup () ne calcolo il valore corretto  curva_auto_pt=((T_mand_max-T_mand_min)*10)/n_gradini;
e testando con un serial.print il valore è corretto come dovrebbe essere

nel loop del programma utilizzo la mia variabile in una formula banale T_mand_calc_pt=T_mand_calc_pt*curva_auto_pt;
ma mi sono accorto di avere dei risultati non aspettati.. prova .. ripova.. semplifica la formula... prima di usare la variabile ho controllato la variabile con il serial monitor ...e zaaac scopro che il valore della variabile si è modificato e ad ogni loop cambia ma sempre attorno ad un valore , che non ha niente a che vedere con il valore corretto che dovrebbe avere

sono sicuro, assolutamente sicuro, che nel programma in nessun altro punto vado a modificare la mia variabile. non è possibile che la variabile cambi il valore da sola!!!!
ho risolto, ma la cosa non mi piace, ricalcolando ogni volta la mia variabile nel loop!

il secondo problema ancora più assurdo:
avevo predisposto una variabile (per utilizzarla in seguito in una parte del programma che non avevo ancora fatto, per cui non la modificavo assolutamente) e ne scrivevo il valore sul serial monitor
inizializzo: int T_mand_cald_pt=0;
per qualche secondo la variabile rimaneva a zero poi a casaccio cominciava ad assumere dei valori "simili" ad una altra variabile ( che in nessun modo interagiscono)
siccome la cosa al momento non mi interessava ho lasciato correre
MA ieri ho scritto la parte di programma che usa quella variabile ed ancora dopo qualche secondo il valore cambia!!!! in un modo diverso al precedente, ma cambia!
ho fatto una prova: associo la mia variabile ad una variabile temporanea aa=T_mand_calc_pt;
beh questa variabile  aa NON cambia!!!
e ne aa e ne T_mand_calc_pt le modifico in altre parti del programma!

Aiutoooo!!! cosa può essere? il compilatore che compila male .. la board mega2560... un problema con i nomi delle variabili? che so.. i nomi sono troppo lunghi.. bohhh
grazie 1000

stefano

28  International / Generale / Re: arrotondare un valore on: December 16, 2011, 05:46:59 am
ok, grazie a d entrambi!
29  International / Generale / Re: arrotondare un valore on: December 16, 2011, 04:54:50 am


E qui ritorniamo al discorso che ti ho fatto prima su i count dell'ADC che ti forniscono direttamente un valore alla prima cifra decimale con step di 0.5° come serve.



Cosa non ti è chiaro del fatto che gli LM35 hanno una precisione di 0.5° pertanto non ha alcun senso leggere i decimi di grado ?


lascia stare ADC , non ce l'ho più smiley ho solo pure variabili
se faccio: (passami la forma)
7.2245/3.41=2.12 e voglio arrotondarlo (tutte le variabili sono float)??

scusa ma dal datasheet del lm35 dice che ha una accuratezza di +/- 0.5 non che legge "solo intervalli" di 0.5
i centesimi li hai eccome, ovvio il valore letto può essere sballato fino a +/- 0.5 gradi
30  International / Generale / Re: arrotondare un valore on: December 16, 2011, 04:21:43 am

Il float non ha due decimali, ne ha fino a 6 a seconda del numero di cifre prima della virgola, i due decimali sono quelli che ti fa vedere di default la print, come ti ha già detto Leo.
Il sensore LM35 ha una precisione di 0.5°, assolutamente inutile trattarlo con un float, usa solo valori interi eventualmente rapportandoli tra loro con moltiplicazioni per 10, 100, 1000, meglio ancora se lo fai in binario per potenze di due, e solo alla fine eventualmente visualizzi in formato decimale dividendo il numero per 10^n a seconda dei decimali desiderati e stampi la parte intera e quella decimale separate da un punto.
Esempio pratico, per LM35 ottieni direttamente la temperatura in centigradi dividendo per due i count del ADC (aRef = 5V), se l'ADC ritorna 40 count corrispondono a 20°, se tieni conto anche dei count dispari hai automaticamente anche i 0.5°, 41 count = 20.5° che diventa 205 (41*10/2 = 41*5) espresso come numero intero.

dunque:
mannaggia a me che vi ho detto delle cose che vi stanno facendo confondere
 diciamo che ho una variabile float con N decimali ( non so quanti sono).. come faccio ad arratondarla ad 1 solo?
(lascia stare che il dato proviene da un lm35 che cmq se si usa il riferimento interno 1V1 ha pure i decimi... e che ho detto che vedo solo 2 decimi)
Pages: 1 [2] 3