Telemetria dei parametri dinamici di un drone marino paolo ferrara

Preview:

Citation preview

Paolo Ferrara

paoloferrara@soluzioni-digitali.it

Sistema di telemetria per drone marino

www.lasitecma.it

Sistema di telemetria per drone marino

Misure da effettuare:

Misura di tensioni e correnti in sottosistemi con alimentazione indipendente

Misura di temperatura in più punti

Misura barometrica

Convertitore ADC MCP3428

Velocità e Risoluzione:

- 15 SPS (16 bits)

- 60 SPS (14 bits)

- 240 SPS (12 bits)

Guadagno programmabile:

X1, x2, x4, x8

Vref: 2.048V

Sensore tensione

Misura di tensione tramite convertitore AD collegato con partitore resistivo.

Vmax ADC=2.048V

Sensore corrente

Misura di corrente tramite sensore di Hall per corrente continua ad anello.

IsolatoreDigitale

Schema circuito ADCI2

C B

US

ADC 4 canali16 bit

Alimentazionedal Raspberry 3.3V

Regolatore5.5V

AlimentazionedispositivoAlimentazionedispositivo

Massa riferimento

4 Canali di misura}2 Bit di selezione indirizzo I2C

Sensore temperatura

Sensore di temperatura one-wire Dallas DS18B20

Standard: 16 KbpsOverdrive: 140 Kbps

Sensore temperatura

Collegamento

DS18B20 sul

Raspberry

64-bit serial code-55°C to +125°C±0.5°C -10°C to +85°C9-bit to 12-bit0.5°C, 0.25°C, 0.125°C, 0.0625°C

Sensore barometrico BMP085 su bus I2CI2

C B

US

MisuratorePressione Digitale

BMP085+

Termometro

Alimentazionedal Raspberry 3.3V

● Logic: 3 to 5V compliant● Pressure sensing range: 300-1100 hPa

(9000m to -500m above sea level)● Up to 0.03hPa / 0.25m resolution● -40 to +85°C operational range, +-2°C

temperature accuracy

Circuito realizzato

Regolatore 3.3V

Isolatore Digitale

Convertitore A.D.

Partitori di tensione

Selettori indirizzo I2C

Raspberry web server

TORNADO WEB SERVER

web application framework scritto in Python

Raspberry web server

PaginaHTML

sulbrowserremoto

Client

TORNADO

Server

Connessione client

ThreadTermometro

N°1

ThreadTermometro

N°2

ADC

Pressione etemperatura

SensoreTemp.

N°1

SensoreTemp.

N°2

LogDati

Connessione di un client

Raspberry web server

ClientServer

Connessione client

Index.htmlPaginaHTML

sulbrowserremoto

TORNADO

ThreadTermometro

N°1

ThreadTermometro

N°2

Pressione etemperatura

SensoreTemp.

N°1

SensoreTemp.

N°2

LogDati

ADC

Risposta del server con la pagina index.html

Raspberry web server

ClientServer

Connessione client

Richiesta dati

Index.htmlPaginaHTML

sulbrowserremoto

TORNADO

ThreadTermometro

N°1

ThreadTermometro

N°2

Pressione etemperatura

SensoreTemp.

N°1

SensoreTemp.

N°2

LogDati

ADC

Richiesta dati dalla pagina index.html al server

Raspberry web server

ClientServer

Connessione client

Richiesta dati

Index.html

Dati formato JSON

PaginaHTML

sulbrowserremoto

TORNADO

ThreadTermometro

N°1

ThreadTermometro

N°2

Pressione etemperatura

SensoreTemp.

N°1

SensoreTemp.

N°2

LogDati

ADC

Risposta del server con dati in formato json

Raspberry web server

ClientServer

Connessione client

Richiesta dati

Index.html

Dati formato JSON

Comando

PaginaHTML

sulbrowserremoto

TORNADO

ThreadTermometro

N°1

ThreadTermometro

N°2

Pressione etemperatura

SensoreTemp.

N°1

SensoreTemp.

N°2

LogDati

ADC

Comando inviato dal client al server

Raspberry web server

ClientServer

Connessione client

Richiesta dati

Index.html

Dati formato JSON

Comando

PaginaHTML

sulbrowserremoto

TORNADO

ThreadTermometro

N°1

ThreadTermometro

N°2

Pressione etemperatura

SensoreTemp.

N°1

SensoreTemp.

N°2

LogDati

ADC

Richiesta dai thread ai sensori

Raspberry web server

ClientServer

Connessione client

Richiesta dati

Index.html

Dati formato JSON

Comando

PaginaHTML

sulbrowserremoto

TORNADO

ThreadTermometro

N°1

ThreadTermometro

N°2

Pressione etemperatura

SensoreTemp.

N°1

SensoreTemp.

N°2

LogDati

ADC

Risposta dai sensori ai thread

Raspberry web server

ClientServer

Connessione client

Richiesta dati

Index.html

Dati formato JSON

Comando

PaginaHTML

sulbrowserremoto

TORNADO

ThreadTermometro

N°1

ThreadTermometro

N°2

Pressione etemperatura

SensoreTemp.

N°1

SensoreTemp.

N°2

LogDati

ADC

In seguito alla richiesta da parte del client, il server chiede le variabili ai sensori

Raspberry web server

ClientServer

Connessione client

Richiesta dati

Index.html

Dati formato JSON

Comando

PaginaHTML

sulbrowserremoto

TORNADO

ThreadTermometro

N°1

ThreadTermometro

N°2

Pressione etemperatura

SensoreTemp.

N°1

SensoreTemp.

N°2

LogDati

ADC

Il server legge le variabili, le memorizza nel file di log e le ritorna al client in formato json

Visualizzazione e richiesta dati al server

Libreria JustGage

<div id="gauge1" style="width:180px; height:200px"></div>

.

.

.

.

var g2 = new JustGage({ id: "gauge2", value: 0, min: 80000, max: 120000, title: "Pressione Atmosferica", label: "Pascal", levelColorsGradient: true, decimals: 0 });

Visualizzazione e richiesta dati al server

setInterval(function() { if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); xmlhttp.open("GET","getvalues.php",false); xmlhttp.send(null);

parametri = (xmlhttp.responseText).split(';');

g1.refresh( parametri[0] ); g2.refresh( parametri[1] ); g3.refresh( parametri[2] ); g4.refresh( parametri[3] );

gADC1A.refresh( parametri[4] ); gADC1B.refresh( parametri[5] ); gADC1C.refresh( parametri[6] ); gADC1D.refresh( parametri[7] ); gADC2A.refresh( parametri[8] ); gADC2B.refresh( parametri[9] ); gADC2C.refresh( parametri[10] ); gADC2D.refresh( parametri[11] );

Visualizzazione e richiesta dati al server

document.getElementById("sessione").innerHTML = parametri[12]; if (parametri[13]=="True") { document.getElementById("stato").innerHTML = "Log attivo"; document.getElementById("Bt_Start").disabled = true; document.getElementById("Bt_Stop").disabled = false; document.getElementById("Bt_View").disabled = true; document.getElementById("Bt_Erase").disabled = true; document.getElementById("Bt_Shutdown").disabled = true; } else { document.getElementById("stato").innerHTML = "Log NON attivo"; document.getElementById("Bt_Start").disabled = false; document.getElementById("Bt_Stop").disabled = true; if (parametri[14]=="True") { document.getElementById("Bt_View").disabled = false; document.getElementById("Bt_Erase").disabled = false; } else { document.getElementById("Bt_View").disabled = true; document.getElementById("Bt_Erase").disabled = true; } document.getElementById("Bt_Shutdown").disabled = false; } } }, 500);

Comandi inviati al server

● Start Log

● Stop Log

● View Log

● Erase Log

● Shutdown

Comandi inviati al server

function DoShutdown() { if(confirm("Procedo allo spegnimento definitivo del Raspberry?")) { if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); xmlhttp.open("get","?shutdown=now",true); xmlhttp.send(null); } } };

Contatti

Soluzioni Digitali di Paolo Ferrara

paoloferrara@soluzioni-digitali.it