Pages: 1 ... 9 10 [11] 12 13 ... 46   Go Down
Author Topic: Ardu-Aquarium Controller v. 3.3.1  (Read 61022 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Jr. Member
**
Karma: 0
Posts: 67
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao Riccardo ho trovato molto interessante il tuo progetto e ti faccio veramente tantissimi complimenti per tutto e sopratutto per averllo condiviso.
Mi sono deciso anche io di automatizzare il mio bestione di acquario marino e volevo seguire il tuo progetto spero che accetterai.
Ho già acquistato tutto il materiale che ai elencato e sono pronto per assemblare il tutto , ti volevo chiedere se mi potevi aiutare se ai a disposizione un (disegno semplice) uno schema completo dove posso vedere come collegare il tutto , sei riuscito a fare la pcb finale ?
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao Riccardo,
non sarai un professionista come dici però a me sembra che hai fatto un lavoro più che professionale  smiley.
Cmq sto provando ad adattare parte del tuo codice ma con scarsissimi risultati, ad essere sincero ci capisco molto poco... Sono totalmente a zero per quanto riguarda la programmazione, sto provando a leggermi qualche guida di Arduino ma non è facile.
Mi chiedevo come fare a capire quale sono le variabile che mi interessano ed assegnarli un valore.
Al momento ho ottenuto questo codice (vedi allegato)
Non so se ho messo dentro tutte le procedure ... sicuramente qualcosa manca.
Se hai tempo di darmi un aiuto te ne sarei molto grato.
Ti ringrazio in anticipo
Grazie.

Massimiliano

* Alba_tramonto_acquario_ADA_completo.ino (9.94 KB - downloaded 29 times.)
Logged

Rome
Offline Offline
Sr. Member
****
Karma: 9
Posts: 378
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao Riccardo ho trovato molto interessante il tuo progetto e ti faccio veramente tantissimi complimenti per tutto e sopratutto per averllo condiviso.
Mi sono deciso anche io di automatizzare il mio bestione di acquario marino e volevo seguire il tuo progetto spero che accetterai.
Ho già acquistato tutto il materiale che ai elencato e sono pronto per assemblare il tutto , ti volevo chiedere se mi potevi aiutare se ai a disposizione un (disegno semplice) uno schema completo dove posso vedere come collegare il tutto , sei riuscito a fare la pcb finale ?

Ciao simon77blitz,
Chiunque può seguire i miei i miei casini, senza chiedere nessun permesso, per metterti in pari a quanto fatto fino ad ora, la cosa migliore forse è replicare i collegamenti della mia bread, nel secondo post all'inizio di questo topic, trovi tutte le foto, mentre se vuoi anche lo schema in allegato eccoti quello provvisorio:



In quanto al PCB, ancora non ho fatto nulla, avrai capito che il progetto è tutt'ora un work in progress, non avrebbe senso per il momento ma ci arriverò.
Ad ogni modo benvenuto.
Più tardi guardo anche la MP e ti rispondo anche li, ora sono un pò di corsa

Riccardo.

Ciao Riccardo,
non sarai un professionista come dici però a me sembra che hai fatto un lavoro più che professionale  smiley.
Cmq sto provando ad adattare parte del tuo codice ma con scarsissimi risultati, ad essere sincero ci capisco molto poco... Sono totalmente a zero per quanto riguarda la programmazione, sto provando a leggermi qualche guida di Arduino ma non è facile.
Mi chiedevo come fare a capire quale sono le variabile che mi interessano ed assegnarli un valore.
Al momento ho ottenuto questo codice (vedi allegato)
Non so se ho messo dentro tutte le procedure ... sicuramente qualcosa manca.
Se hai tempo di darmi un aiuto te ne sarei molto grato.
Ti ringrazio in anticipo
Grazie.
Massimiliano

Sul lavoro professionale, al posto tuo non mi sbilancerei così  smiley-eek
Sulla programmazione, invece ti invito ad insistere e perseverare, il metodo che uso io con il software degli altri è un pò antiquato, ma per quel principiante che sono funziona,
in pratica prendo carta e penna, individuo tutte le variabili, le incolonno e letteralmente leggo le righe delle procedure ed aggiorno le variabili per vedere cosa succede...
Googlare è sicuramente una buona cosa ed un buon libro fa altrettanto, la pratica poi è fondamentale, un semplice copia incolla invece non ti fa crescere, ad ogni modo più tardi do un'occhio a quello che hai fatto e vedo di darti una mano, ma ti prego prova ad impegnarti un pochino di più, non è che non voglia aiutarti, è che ho così poco tempo da dedicare al progetto che spenderne una parte per altri progetti mi riesce difficile, in fondo ho pubblicato tutto quello che ho fatto proprio perché venisse usato e saccheggiato da chiunque lo voglia...
A più tardi.  smiley

Riccardo.
Logged

Riccardo

Rome
Offline Offline
Sr. Member
****
Karma: 9
Posts: 378
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Mi chiedevo come fare a capire quale sono le variabile che mi interessano ed assegnarli un valore.
Al momento ho ottenuto questo codice (vedi allegato)
Non so se ho messo dentro tutte le procedure ... sicuramente qualcosa manca.
Se hai tempo di darmi un aiuto te ne sarei molto grato.

Molto velocemente, ho aggiornato quello che hai fatto, do per scontato che tu abbia l'RTC
Così come è il codice che di suo all'origine è fin troppo elementare, rimane sporco dei comendi che ad esempio riguardano anche la scheda relè, a te la pulitura   smiley-twist

Leggi i commenti a riga  48 e 234...

Dovrebbe funzionare...

Ciao Riccardo

* Alba_tramonto_acquario_ADA_completo_V2.ino (10.33 KB - downloaded 31 times.)
Logged

Riccardo

Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao Riccardo,
hai perfettamente ragione sul fatto di impegnarsi un po di più, però sinceramente ci ho provato ma non avendo neanche una minima base di programmazione è veramente dura.
Magari facendo un bel corso di Arduino la cosa potrebbe cambiare un po.
Come ti dicevo ho trovato dei manuali in rete e sto cercando più informazioni possibili per vedere di capirci un po di più quando apro un codice.
Non voglio approfittare del tuo tempo e della tua disponibilità immagino che il tuo progetto sia di persè molto impegnativo, quindi non c'è problema se non riesci a dedicarmi tempo, veramente lo capisco e non pretendo che un'altra persona scriva il codice al posto mio.
Ti ringrazio ancora una volta per l'aiuto che mi hai dato non sono ancora riuscito a provarlo appena lo faccio ti dico il risultato.
Grazie mille
Ciao

Massimiliano
Logged

Rome
Offline Offline
Sr. Member
****
Karma: 9
Posts: 378
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Tranquillo, ti ho aiutato volentieri, solo aspetto di saper se l'aiuto è stato efficace..

Ciao Riccardo
Logged

Riccardo

Rome
Offline Offline
Sr. Member
****
Karma: 9
Posts: 378
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao,
ho avuto bisogno di un pò di tempo, per raccogliere i dati, ho avuto problemi a mantenere le temperature, ma alla fine ho rilevato le misure per tutti e tre i sensori, S1 e S2 sono quelli che mi hanno rispedito in sostituzione di S3 che alla fine, non si è comportato poi così male, malgrado sia completamente fuori dai paramentri del data sheet.
Ho usato lo schema che segue:



Ho vvoluto abbassare le r del partitore, per poter usare un multigiri (20) da 2k ed aumentare la finezza delle regolazioni tutte le altre r sono con precisione 1% metalliche, solo che il segnale non è poi così stabile, come vedrete dalle tabelle, le letture a tutti i livelli oscillano secondo me un pochino troppo e per quello che ho visto dipende dall'Amp-op, forse ce ne sono che hanno un'uscita un pochino più stabile, solo che io non ne conosco.
Lo sketch usato è questo:

Code:
byte levelsensor = A0;

void setup() {
   Serial.begin(9600);
   analogReference(INTERNAL);
}

void loop() {

  Serial.println(analogRead(levelsensor));
  delay(50);
           
}

Tutte le tabelle sono qui:

https://docs.google.com/spreadsheet/ccc?key=0Ah2GzeM3ZZu4dFg5cmRxVUVyQ2FpMFBtRklDN1JPd2c&usp=sharing

Ho calcolato solo per ogni tabella le medie lette, se dovo fare altro ditemi.

Grazie per l'aiuto.

Riccardo.
Logged

Riccardo

0
Offline Offline
Shannon Member
****
Karma: 131
Posts: 10468
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

https://docs.google.com/spreadsheet/ccc?key=0Ampk_9TX_tqDdEJDUG85N1RiMENFbUoxNmRjSnVRMkE&usp=sharing

ecco la mia rialaborazione, solo sulle prime 2 tabelle.
Ho calcolato la differenza tra i due sensori e la % di influenza della differenza.

si nota come lo sfaso sulla temperatura varia sui 40 punti,  3% circa a 0cm e 10% circa a 20cm.

le due sonde hanno uno sfaso termico pressochè identico (errore di 10 punti, 0.6%), molto più grande è lo sfaso di profondità che tocca il 15%,ma diciamo che siu mantiene sull'8% ma in modo non lineare.. diventa lineare diciamo dai 2cm in poi: facendo y=mx+q con m=18/(523-1604), q=-1604m+2, x=valore di R, abbiamo un errore inferiore all'1% (tranne a 13 cm) tra la media delle letture e il valore calcolato. peccato poi che all'uso su S1 mantenga un'ottima precisione, ma scada all'uso su S2 con quasio 2 cm di errore..
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Rome
Offline Offline
Sr. Member
****
Karma: 9
Posts: 378
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Scusa Lesto,
ma faccio fatica ad interpretare quello che mi hai scritto, e scusami se non ho specificato che i nuovi dati, ovvero le letture AnalogRead() nuove che mi hai chiesto sono nel foglio 2, poi se avrai volgia ancora di giocare con le tabelle, forse sara bene considerare per tutti e tre i sensori, solo le letture dai 5cm compresi in poi, se infatti guardi il grafico in fondo alla pagina, vedi che tutti e tre iniziano a comportarsi in modo più o meno lineare tra i 5cm ed i 20.

https://docs.google.com/spreadsheet/ccc?key=0Ah2GzeM3ZZu4dFg5cmRxVUVyQ2FpMFBtRklDN1JPd2c&usp=sharing

Ciao Riccardo
Logged

Riccardo

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 112
Posts: 7106
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao Rici,
se vuoi nel primo post puoi aggiungere anche il link alla libreria OneWire per l'uso dei Dallas.
E' la versione 2.2, l'ultima al momento --> http://www.pjrc.com/teensy/arduino_libraries/OneWire.zip
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Rome
Offline Offline
Sr. Member
****
Karma: 9
Posts: 378
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazieeeee Paolo!!!
Sei grande, fatto.

Riccardo
Logged

Riccardo

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 568
Posts: 12542
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Rici, parlo per la "mia" parte. Se ho ben capito alla fine con quei valori sei riuscito a lavorare con tutte e tre le sonde (ovviamente ognuna con la propria taratura), quindi era come pensavo, il sistema del trimmer di precisione funziona ed è affidabile.
Riguardo l'op-amp (è 358 non 328 vero?) non credo sia lui a dare le oscillazioni, sono invece proprio i valori resistivi che cambiano (non scordare che hai be due R variabili nel tuo sistema!), e lui non fa altro che riportare gli equivalenti valori in tensione, la stabilità ora la puoi ottenere solo via software, con uno dei vari sostemi noti, tipo la media di 20-30 letture, vedrai che la situazione cambierà decisamente in meglio; riguardo la linearità della risposta direi che andrebbe valutata dopo aver stabilizzato le letture col metodo di cui sopra; a quel punto certamente il grande Lesto saprà tirarti fuori un algoritmo di linearizzazione dei valori, ma devi farlo andare a colpo sicuro, cioè fornirgli dei valori certi e più volte verificati, anche in diversi momenti della giornata, alla fine la precisione aumenta per quanti più dati di lettura puoi fornire.
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Tranquillo, ti ho aiutato volentieri, solo aspetto di saper se l'aiuto è stato efficace..

Ciao Riccardo

È tutto perfetto ..... sei un grande .... grazie veramente di tutto.
Ho cancellato anche le linee power che ovviamente non servivano  smiley-red e inserito gli orari a mio piacimento.
Funziona alla meraviglia ... ancora un grande grazie
Ciao

Massimiliano
Logged

0
Offline Offline
Shannon Member
****
Karma: 131
Posts: 10468
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Scusa Lesto,
ma faccio fatica ad interpretare quello che mi hai scritto, e scusami se non ho specificato che i nuovi dati, ovvero le letture AnalogRead() nuove che mi hai chiesto sono nel foglio 2, poi se avrai volgia ancora di giocare con le tabelle, forse sara bene considerare per tutti e tre i sensori, solo le letture dai 5cm compresi in poi, se infatti guardi il grafico in fondo alla pagina, vedi che tutti e tre iniziano a comportarsi in modo più o meno lineare tra i 5cm ed i 20.

https://docs.google.com/spreadsheet/ccc?key=0Ah2GzeM3ZZu4dFg5cmRxVUVyQ2FpMFBtRklDN1JPd2c&usp=sharing

Ciao Riccardo

non l'ho visto e ora vado a letto.. magari domani.

FIGHISSIMO, ma quante letture sono per sensore? è ottimo! ora che hai le medie devi calcolare la varianza delle varie letture del sensore rispetto alla media (per la stessa temp alla stessa profondità), così hai l'errore di base della sonda.

Poi confronti la varianza alle varie profondità/temperature ed infine la varianza rispetto alle altre sonde (iniziamo con una, le altre vederemo poi). La varianza è di quanti punti si discostano dalla media.

La varianza è la radice quadrata ( ( ( somma di per ogni valore letto  ( differenza tra valore letto e media) al quadrato ) ) fratto il numero di valori )



da http://it.wikipedia.org/wiki/Varianza
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao stavo facendo un programma simile ma mi sono dovuto fermare non riesco a capire perchè la sonda del ph mi rileva solo 13 volte il valore poi si impalla. Qualcuno riesce a sistemarmi questo codice?????? smiley-cry...
Code:
/*
This software was made to demonstrate how to quickly get your Atlas Scientific product running on the Arduino platform.
An Arduino MEGA 2560 board was used to test this code.
This code was written in the Arudino 1.0 IDE
Modify the code to fit your system.
**Type in a command in the serial monitor and the Atlas Scientific product will respond.**
**The data from the Atlas Scientific product will come out on the serial monitor.**
Code efficacy was NOT considered, this is a demo only.
The TX3 line goes to the RX pin of your product.
The RX3 line goes to the TX pin of your product.
Make sure you also connect to power and GND pins to power and a common ground.
Open TOOLS > serial monitor, set the serial monitor to the correct serial port and set the baud rate to 38400.
Remember, select carriage return from the drop down menu next to the baud rate selection; not "both NL & CR".
*/


#include <glcd.h>
#include "fonts/allFonts.h"         // system and arial14 fonts are used
#include "bitmaps/allBitmaps.h"
#include <DallasTemperature.h>
#include <OneWire.h>


String inputstring = "";                                                       //a string to hold incoming data from the PC
String sensorstring = "";                                                      //a string to hold the data from the Atlas Scientific product
boolean input_stringcomplete = false;                                          //have we received all the data from the PC
boolean sensor_stringcomplete = false;                                         //have we received all the data from the Atlas Scientific product

// Data wire is plugged into port 42 on the Mega, if you use a different one change it here.
#define ONE_WIRE_BUS 42
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
unsigned int iSensor = 0;
unsigned int icount = 0;
float TempIn = 0.00;
char Temps[5];

  void setup(){                                                                //set up the hardware
      iSensor = 0;
     Serial.begin(38400);                                                      //set baud rate for the hardware serial port_0 to 38400
     Serial3.begin(38400);                                                     //set baud rate for software serial port_3 to 38400
     inputstring.reserve(5);                                                   //set aside some bytes for receiving data from the PC
     sensorstring.reserve(30);                                                 //set aside some bytes for receiving data from Atlas Scientific product

 GLCD.Init(NON_INVERTED);   // initialise the library, non inverted writes pixels onto a clear screen
 GLCD.ClearScreen();
 GLCD.DrawBitmap(ArduinoIcon64x64, 32,0, BLACK); //draw the bitmap at the given x,y position
 GLCD.SelectFont(System5x7); // switch to fixed width system font

  GLCD.ClearScreen();
 //Start up the Dallas Lib
  sensors.begin();
iSensor =  sensors.getDeviceCount(); //Get a count of the number of sensors on the wire
 
}
 
 
 
   void serialEvent() {                                                         //if the hardware serial port_0 receives a char             
               char inchar = (char)Serial.read();                               //get the char we just received
               inputstring += inchar;                                           //add it to the inputString
               if(inchar == '\r') {input_stringcomplete = true;}                //if the incoming character is a <CR>, set the flag
              } 


  void serialEvent3(){                                                         //if the hardware serial port_3 receives a char
              char inchar = (char)Serial3.read();                              //get the char we just received
              sensorstring += inchar;                                          //add it to the inputString
              if(inchar == '\r') {sensor_stringcomplete = true;}               //if the incoming character is a <CR>, set the flag
             }



 void loop(){                                                                   //here we go....
     
  if (input_stringcomplete){                                                   //if a string from the PC has been recived in its entierty
      Serial3.print(inputstring);                                              //send that string to the Atlas Scientific product
      inputstring = "";                                                        //clear the string:
      input_stringcomplete = false;                                            //reset the flage used to tell if we have recived a completed string from the PC
      }

 if (sensor_stringcomplete){                                                   //if a string from the Atlas Scientific product has been recived in its entierty
      Serial.println(sensorstring);                                            //send that string to to the PC's serial monitor
      //delay(2000);
      GLCD.CursorTo(0, 6);              // positon cursor
      GLCD.Puts("Ph ");
      GLCD.print(sensorstring);
      sensorstring = "";                                                       //clear the string:
      sensor_stringcomplete = false;                                           //reset the flage used to tell if we have recived a completed string from the Atlas Scientific product
      }
   {   // run over and over again
  icount = 0;
  //Send a request to get the Temps on all Sensors
  sensors.requestTemperatures(); // Send the command to get temperatures
 
 
 
  //GLCD.ClearScreen();               // clear the screen
  for(icount = 0; icount < iSensor; icount++){
     GLCD.CursorTo(0,icount + 4);              // positon cursor
    GLCD.Puts("C ");
    GLCD.SetDot(7,32, BLACK);
    GLCD.SetDot(7,33, BLACK);
    GLCD.SetDot(7,34, BLACK);
    GLCD.SetDot(8,32, BLACK);
    GLCD.SetDot(9,34, BLACK);
    GLCD.SetDot(8,34, BLACK);
    GLCD.SetDot(9,32, BLACK);
    GLCD.SetDot(9,33, BLACK);
    GLCD.print( sensors.getTempCByIndex(icount),3); // 3 places after the decimal.
     delay(1000);
  }
}   
 }
vi prego!!!!!!
Logged

Pages: 1 ... 9 10 [11] 12 13 ... 46   Go Up
Jump to: