Cagliari
Offline
Faraday Member
Karma: 49
Posts: 2998
|
 |
« Reply #30 on: February 05, 2013, 05:16:28 pm » |
Di questo problema ne ha parlato Michele in un post. Se lo trovo metto qui il link.
|
|
|
|
|
Logged
|
IDE 1.0.4 - Arduino UNO R3 - Ethernet Shield R3 - DCF77 Module - Adafruit Data Loggin Shield - LCD 16x2 RGB positive backlight - i2c LCD backpack - RTC 1307 Board - Saleae Compatibile Logic Analyzer 8ch 24Mhz - ATtiny2313 ProtoBoard - Xino Board - ATtiny 4313 - Arduino 2009 - Arduino USB Serial Ligth - DS18B20 - LM35DZ - ShiftRegister - TL431 - ATtiny 85 Ultimi acquisti: CodeBender: http://codebender.cc/register/?referrer=PaoloP
|
|
|
|
Forum Moderator
Italy
Offline
Brattain Member
Karma: 219
Posts: 16431
Don't know what I do
|
 |
« Reply #31 on: February 05, 2013, 05:19:06 pm » |
Si può passare da internal ad external ma va messo una R sul pin Aref, altrimenti si crea un corto nel passaggio da un riferimento all'altro. C'è scritto nel datasheet nonché nel reference.
|
|
|
|
|
Logged
|
|
|
|
|
Genova
Offline
Edison Member
Karma: 13
Posts: 2431
|
 |
« Reply #32 on: February 05, 2013, 05:39:46 pm » |
si, ma non hai risposto alla domanda riguardo ai danni, si danneggia o no se metto 5v a un pin con reference 1.1v? o leggo sempre high da 1.2v a 5v?
|
|
|
|
|
Logged
|
Meglio imparare dalle cose inutili piuttosto che non imparare niente. [Arduino Mega R3 + Ethernet shield W5100 + SD card 8Gb FAT32]
|
|
|
|
Forum Moderator
Italy
Offline
Brattain Member
Karma: 219
Posts: 16431
Don't know what I do
|
 |
« Reply #33 on: February 06, 2013, 12:21:51 am » |
Da 1,1V in poi legge 1023. I danni avvengono se la tensione fornita al pin è superiore a quella max tollerata dal chip, 5,5V.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 12
|
 |
« Reply #34 on: February 06, 2013, 11:17:24 am » |
Magari dirò delle banalità o delle castronerie, ma giusto per capire se ho appreso il concetto! Dal datasheed dell'Arduino vien fuori che il valore in uscita dall'analogico è: ADC =Vin*1024/VrefQuindi per calcolare la tensione in uscita dal sensore devo calcolare: Vin = ADC*Vref/1024con Vref: - 5000 (mV) se uso la DEFAULT (in realtà forse 5500 è meglio, visto che il tester in uscita ne segnava 5.5V),
A questo punto, poiché ogni 10 mV ho un grado centigrado misurato, per avere la temperatura non devo far altro che: temp°C = Vin/10. Spero di averci azzeccato! Detto questo, ho dei grossi dubbi con Matlab poiché quando digito a.analogicRead(0), con sensore collegato al pin A0, escono valori totalmente fasulli!
|
|
|
|
« Last Edit: February 06, 2013, 11:25:23 am by ClaudioF »
|
Logged
|
|
|
|
|
Cagliari
Offline
Faraday Member
Karma: 49
Posts: 2998
|
 |
« Reply #35 on: February 06, 2013, 11:24:59 am » |
Si. Ricorda che il valore di Vin da te calcolato è in mV.
Se leggi direttamente il valore da analogRead ti restituisce un numero che varia tra 0 e 1023.
|
|
|
|
« Last Edit: February 06, 2013, 11:26:36 am by PaoloP »
|
Logged
|
IDE 1.0.4 - Arduino UNO R3 - Ethernet Shield R3 - DCF77 Module - Adafruit Data Loggin Shield - LCD 16x2 RGB positive backlight - i2c LCD backpack - RTC 1307 Board - Saleae Compatibile Logic Analyzer 8ch 24Mhz - ATtiny2313 ProtoBoard - Xino Board - ATtiny 4313 - Arduino 2009 - Arduino USB Serial Ligth - DS18B20 - LM35DZ - ShiftRegister - TL431 - ATtiny 85 Ultimi acquisti: CodeBender: http://codebender.cc/register/?referrer=PaoloP
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 12
|
 |
« Reply #36 on: February 06, 2013, 11:28:05 am » |
Si. Ricorda che il valore di Vin da te calcolato è in mV.
Ti riferisci al mio problema con Matlab? Perchè su Arduino ne tengo conto, infatti utilizzo 5000(5500) ,1100 e 10 che sono appunto in millivolts! Sarebbe meglio usare 5000 o 5500? Per utilizzare il sensore sull'intero range ho visto, sempre dal datasheet, di collegare una resistenza, il cui valore viene calcolato in base alla tensione di entrata, in parallelo all'uscita; quella resistenza deve essere collegata a terra?
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Tesla Member
Karma: 81
Posts: 8184
:(){:|:&};:
|
 |
« Reply #37 on: February 06, 2013, 11:29:12 am » |
ma che sia la forma dei pin del sensore che fa a pugni con le bread-board?
|
|
|
|
|
Logged
|
|
|
|
|
Cagliari
Offline
Faraday Member
Karma: 49
Posts: 2998
|
 |
« Reply #38 on: February 06, 2013, 11:31:49 am » |
No. Deve essere collegata a una tensione negativa. Se ne è parlato in un altro topic. Ma se non ti serve misurare temperature inferiori allo zero puoi lasciare perdere.
|
|
|
|
|
Logged
|
IDE 1.0.4 - Arduino UNO R3 - Ethernet Shield R3 - DCF77 Module - Adafruit Data Loggin Shield - LCD 16x2 RGB positive backlight - i2c LCD backpack - RTC 1307 Board - Saleae Compatibile Logic Analyzer 8ch 24Mhz - ATtiny2313 ProtoBoard - Xino Board - ATtiny 4313 - Arduino 2009 - Arduino USB Serial Ligth - DS18B20 - LM35DZ - ShiftRegister - TL431 - ATtiny 85 Ultimi acquisti: CodeBender: http://codebender.cc/register/?referrer=PaoloP
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 12
|
 |
« Reply #39 on: February 06, 2013, 11:33:06 am » |
ma che sia la forma dei pin del sensore che fa a pugni con le bread-board?
Lo escluso, dalla uscita seriale di Arduino leggo la temperatura corretta! Poi carico arduino su Matlab, roba di 60 secondi per cui la temperatura non dovrebbe cambiare poiché la misuro in regime stazionario, e i valori che vengono fuori non riesco a ricondurli con nessuna conversione!
|
|
|
|
|
Logged
|
|
|
|
|
Cagliari
Offline
Faraday Member
Karma: 49
Posts: 2998
|
 |
« Reply #40 on: February 06, 2013, 11:42:09 am » |
Nel file adiosrv.pde (immagino che usi questo) la parte di codice che riguarda gli input analogici è questa /* s=30 means ANALOG INPUT *************************** */ case 30: /* the second received value indicates the pin from abs('a')=97, pin 0, to abs('p')=112, pin 15 */ if (val>96 && val<113) { pin=val-97; /* calculate pin */ agv=analogRead(pin); /* perform Analog Input */ Serial.println(agv); /* send value via serial */ } s=-1; /* we are done with AI so next state is -1 */ break; /* s=30 taken care of */ In pratica viene letto il valore dell'analogRead e sparato sulla seriale. Quindi matlab riceve il valore nel range 0-1023.
|
|
|
|
|
Logged
|
IDE 1.0.4 - Arduino UNO R3 - Ethernet Shield R3 - DCF77 Module - Adafruit Data Loggin Shield - LCD 16x2 RGB positive backlight - i2c LCD backpack - RTC 1307 Board - Saleae Compatibile Logic Analyzer 8ch 24Mhz - ATtiny2313 ProtoBoard - Xino Board - ATtiny 4313 - Arduino 2009 - Arduino USB Serial Ligth - DS18B20 - LM35DZ - ShiftRegister - TL431 - ATtiny 85 Ultimi acquisti: CodeBender: http://codebender.cc/register/?referrer=PaoloP
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 12
|
 |
« Reply #41 on: February 06, 2013, 11:47:47 am » |
Nel file adiosrv.pde (immagino che usi questo) la parte di codice che riguarda gli input analogici è questa /* s=30 means ANALOG INPUT *************************** */ case 30: /* the second received value indicates the pin from abs('a')=97, pin 0, to abs('p')=112, pin 15 */ if (val>96 && val<113) { pin=val-97; /* calculate pin */ agv=analogRead(pin); /* perform Analog Input */ Serial.println(agv); /* send value via serial */ } s=-1; /* we are done with AI so next state is -1 */ break; /* s=30 taken care of */ In pratica viene letto il valore dell'analogRead e sparato sulla seriale. Quindi matlab riceve il valore nel range 0-1023. Esatto, parlo proprio di questo! Questa sera faccio ulteriori approfondimenti, grazie ragazzi! Ovviamente approfondisco...dopo Homeland! 
|
|
|
|
« Last Edit: February 06, 2013, 11:51:44 am by ClaudioF »
|
Logged
|
|
|
|
|
|