Go Down

Topic: Labview, arduino e sonda temperatura DS18B20 (principiante) (Read 9939 times) previous topic - next topic

zoomx

Stefanodal74,
io invece devo ringraziare te perché mi hai fatto sapere che LabView supporta Arduino con una sua libreria. Nei prossimi giorni avrò a che fare proprio con questo ambiente, anche se per motivi del tutto differenti, e l'opzione Arduino potrebbe essere utile!

Riguardo al tuo problema con l'IDE, l'unico baco noto che conosco  si presenta sotto Windows se hai usato dongle bluetooth o hai bluetooth di sistema. Si manifesta con un caricamento sui 20-30 secondi e un blocco altrettanto lungo appena si accede al menù tools. Se ne parla su questo forum qui http://forum.arduino.cc/index.php?topic=153592.0  si consiglia di usare questo IDE http://forum.arduino.cc/index.php/topic,118440.0.html o di cambiare la dll rxtxserial (o nome simile!).

PaoloP

Zoomx, il problema di Stefano dal 74 (perchè prima aveva un nome diverso?) era quello di aver selezionato l'opzione dell'edito esterno che disattiva l'edito dell'IDE.

Stefanodal74

Eccomi di ritorno,
con un po' di esperienza in più sia sull'ide Arduino che sulle interazioni labview, per correttezza intellettuale vi aggiorno,
La sonda DS18B20 si deve controllare con l'utilizzo di ben DUE librerie una chiamata OneWire.h e l'altra DallasTemperature.h (in realtà basta la OneWire.h ma con la DallasTemperature le cose sono MOOOOOOOOLTO più semplici).
Per integrare le librerie nell programmino da caricare in arduino che fa il modo il nostro amico capisca le richieste di labview qui viene la parte divertente, se qualcuno avrà mai necessità sarà mio piacere spiegare passo per passo cosa fare sia dalla parte IDE ARDUINO sia dalla parte LABVIEW (DUE SORDI CHE SI PARLANO!!!!).
Detto questo lo stato attuare è : SONO RIUSCITO AD OTTENERE LA TEMPERATURA LETTA DA LABVIEW MA.........l'utilizzo di sta MALEDETTA sonda digitale mi sta creando troppi troppi problemi e vorrei passare a una analogica sempre waterproof se me ne potete consigliare una ve ne sarei grato.
Saluti.

zoomx

Le due librerie che hai citato sono librerie che vengono fornite con LabView? Perché in Arduino la standard attualmente è Wire.h mentre per il Dallas poi ci sono diverse versioni, meglio le più recenti che sfruttano il convertitore a 12 bit, il primo modello di DS1820 era solo a 8 o 9 bit, adesso non ricordo.

Se vuoi passare all'analogico io di waterproof non ne conosco. Ho usato l'LM35 che ho opportunamente annegato in resine per renderlo waterproof. L'LM35 ha un'uscita in corrente, per cui richiede una resistenza di precisione come shunt, ma se non hai problemi di disturbi e il cavo è corto puoi usare anche un sensore che restituisce una tensione.

Stefanodal74

Eccomi di nuovo qui!
Allora avendo ormai sviscerato e risolto il mio problema con arduino uno ho pensato bene di andarmi a infilare in altri guai.
Ho acquistato un arduino Due che mi è arrivato oggi.
Ovviamente come da prassi ho rifatto tutti gli esperimenti che avevo fatto con arduino uno per capire le differenze.
Ed indovinate un po' su cosa mi sono piantato ??? Ovviamente sulla lettura di questa benedetta DS18B20.
Ho scoperto che il problema è sul delayMicroseconds () citato in vari tread e addirittura nella libreria stessa Onewire.h

// Arduino 1.5.1 may have a bug in delayMicroseconds() on Arduino Due.
// http://arduino.cc/forum/index.php/topic,141030.msg1076268.html#msg1076268
// If you have trouble with OneWire on Arduino Due, please check the
// status of delayMicroseconds() before reporting a bug in OneWire!


però mica ho capito come devo "checcare" lo status e come risolvere il problema.
Grazie ancora a tutti quelli che mi hanno prestato attenzione.
Ciau!

PaoloP

Prima di tutto scarica l'IDE 1.5.2 (l'ultimo in attesa della 1.5.3 che uscirà a breve).
Poi devi sapere che la UNO e la DUE utilizzano due architetture per il microcontrollore completamente diverse.
Tra l'altro non tutte le periferiche interne della DUE sono riportate all'esterno e non sono presenti tutte le librerie per la loro gestione.
Ti ricordo inoltre che la DUE lavora a 3.3V quindi controlla il datasheet dei sensori che colleghi in modo che lavorino a quella tensione e che in ingresso NON è 5V tollerant quindi gli puoi fornire solo 3.3V e non 5V.
Per le resistenze dimensionale in modo che la corrente in uscita sia al massimo 3mA (la uno reggeva 40mA) o meglio 1 o 2mA: altrimenti bruci il pin.
Per il resto è una bomba! Talmente superiore che quasi nessuno dei big l'ha ancore acquistata (io non ci penso neanche!)  :smiley-mr-green:

Stefanodal74

#21
Jul 11, 2013, 08:55 am Last Edit: Jul 11, 2013, 09:11 am by Stefanodal74 Reason: 1
Ciao Paolo,
ho già la 1.5.2, non è questione né di voltaggio né di architetture, la sonda è digitale e funziona, c'è solo il problema con questo delaymicrosecond noto anche a coloro che hanno sviluppato la onewire con tanto di soluzione visto che all'interno della libreria c'è esplicitamente scritto di controllare in caso di arduino due. Solo che mica ho capito dove e come controllare sto delaymicrosecond().
Ciao

EDIT, come vedi la sonda funziona ma in maniera randomica quindi non è affidabile. :

Before NON-blocking/async requestForConversion
After NON-blocking/async requestForConversion
Time used: 2
Temperature: -127.00

Before NON-blocking/async requestForConversion
After NON-blocking/async requestForConversion
Time used: 2
Temperature: 24.37

Before blocking requestForConversion
After blocking requestForConversion
Time used: 96
Temperature: -127.00

Dettaglio aggiuntivo : Se attacco due sonde sullo stesso filo una viene letta e l'altra no! (se uso il mio arduino uno tutte e due funzionano perfettamente).


PaoloP

Controlla questa discussione --> http://forum.arduino.cc/index.php?topic=141030.0

Stefanodal74

Ho risolto pochi minuti fa leggendo la stessa discussione che mi hai consigliato ma grazie lo stesso.
P.s. la soluzione sta nell'usare una delle librerie (non ricordo quale però ?) postate nella discussione, non le ultime uscite.
Ciao

Stefanodal74

Ad uso e consumo di tutti gli interessati questa è la Onewire che ho usato

Go Up