Show Posts
Pages: 1 ... 5 6 [7]
91  International / Generale / Re: Monitorare crepe on: June 04, 2012, 10:17:11 am
Quote
Estensimetri...forget about it, da quello che ho visto in catalogo, e non ho visto i prezzi, mi sembrano eccessivamente "professionali" smiley-money
Per la cella di carico, invece si potrebbe fare qualcosa partendo da quello che dice ratto93, magari mettendo due celle una di frontre all'altra con una bacchetta che le carica, a cavallo della crepa. Se la crepa si allarga le celle si "scaricheranno"....ma qua entrano in gioco problemi di calibrazione di ogni accrocchio per crepa, e di trasformare la misura delle forza in distanza.
Quote
funziona come un vetrino ma non si rompe
Come lo useresti? ho visto trovato qualcosa su RS a prezzo iper-modico http://it.rs-online.com/web/p/trimmer-potenziometri-reostati/2633270/ tra i dettagli dicono che hanno una tolleranza di +-20%, che ne pensi?

N
92  International / Generale / Re: Monitorare crepe on: June 03, 2012, 04:25:57 pm
Grazie per le risposte gente,
@stefano
Ho fatto una ricerchina veloce di LVDT su farnell....e ho avuto paura, che prezzi! Leggerò i tuoi link alla ricerca di qualcosa di più abbordabile.
@bruno
Però con il vetro vedo quando si apre la crepa e il vetro si rompe, no? O la mia supposizione sul funzionamento della striscia è sbagliato? Sarebbe interessate sapere quanto si apre una determinata fessura nell'arco di un certo tempo.
N
93  International / Generale / Monitorare crepe on: June 03, 2012, 01:13:54 pm
Salve a tutti!
La domenica passata nella casa in campagna del suocero mi ha fatto venire questa idea. Ho delle crepe, come posso monitorarne l'andamento? Mi sembra di aver sentito qualcosa di simile, se non ricordo male a proposito degli edifici in prossimitá di scavi della metro, ma cercando in giro non ho trovato un granchè. A spanne il codice non dovrebbe essere un problema, ma i sensori? Qualcuno mi sa consigliare?

N
94  Using Arduino / Networking, Protocols, and Devices / Re: Help Porting from duemilanove to Mega2560 and with Wiegand 26 on: May 22, 2012, 10:24:40 am
Hi Brad,
i had same problem porting my code from Ethernet board to Mega 2560 (still no resolve in rx). Try adding a delay(msec) after each Serial.println() and play with msec, or, better, write your own personal serial print function. I know it's not elegant at all, but it works for me.
Hope it can help you.
95  International / Generale / Re: Serial.flush() cambiato on: May 21, 2012, 09:33:55 am
Se può servire io il buffer lo svuoto così:

Code:
boolean emptySerialBuffer(){
  while( Serial1.read() != -1 );
  Serial.println("INFO - Serial buffer is empty");
  return true;
}
96  International / Generale / Re: Arduino Mega 2560 problemi rs485 su serial hardware on: May 15, 2012, 10:07:01 am
Ma nel mio sketch in setup() attivo la resistenza di pull-up,
Code:
pinMode(CS_485,OUTPUT);
 digitalWrite(CS_485,HIGH);
e non lascio mai il valore del pin "indefinito"; rxMode() e txMode() settano sempre il pin 53 a HIGH o LOW a seconda che io stia trasmettendo o ricevendo.

Per essere chiari, (e smentire la tua faccina :-) ) la riga che vedi è il contenuto del buffer seriale. viene fuori dal while....per questo chiedo come faccio ad inizializzarlo, non ho visto nessun esempio di comunicazione seriale in cui il buffer viene inizializzato.
Poi ripongo la 3a domanda: perchè tutto ciò solo col mega2560 e con ethernet board no?
97  International / Generale / Re: Arduino Mega 2560 problemi rs485 su serial hardware on: May 14, 2012, 07:51:11 am
Grazie della risposta Paolo...
forse un po troppo criptica per me :-)
1 - la prima riga (quella sequenza di 0) dici che è un buffer non correttamente inizializzato.
     Che devo fare per inizializzarlo correttamente? pensavo che Serial1.begin(19200) servisse anche a questo.
2 - Che significa che lascio l'ingresso flottante?
3 - Perchè tutto ciò si verifica solo col mega?
98  International / Generale / Re: Arduino Mega 2560 problemi rs485 su serial hardware on: May 14, 2012, 05:53:12 am
Ulteriore aggiornamento.
vorrei sapere se è il seguente risultato rientra, secondo voi, nella normale condizione di funzionamento del mio mega2560, se sbaglio qualcosa a livello di codice o se devo cambiare board.

Ho ridotto il codice al minimo per provare la comunicazione seriale. Ho spento il dispositivo (inverter) quindi la mia board invia un comando via Serial1 e non riceve (ovviamente) risposta. Ecco lo sketch:
Code:
#define LENGHT 10
#define CS_485 53
int cmd[LENGHT] = {2,50,0,0,0,0,0,0,237,105};

unsigned long PREVIOUS = 0;

unsigned long INTERVALL = 20000; //20 sec

void setup(){
  Serial.begin(9600);
  Serial.println("Start!");
  Serial1.begin(19200);
  pinMode(CS_485,OUTPUT);
  digitalWrite(CS_485,HIGH);
}

void loop(){
  if ( (millis() - PREVIOUS) >= INTERVALL ){
    PREVIOUS = millis(); 
    txMode();
    for(byte index = 0; index<LENGHT;index++){
      Serial.print(cmd[index]);
      Serial.print(" ");
      Serial1.write(cmd[index]);
      Serial1.flush();
    } 
      Serial.println();
    rxMode();
    int k=0;
    while(Serial1.available()){
      Serial.print(Serial1.read());
      Serial.print(" ");
    }
    Serial.println();
  }

}

void txMode(){
  digitalWrite(CS_485,HIGH);
  delay(1);
}

void rxMode(){
  digitalWrite(CS_485,LOW);
  delay(1);
}


Dato che il dispositivo seriale con cui comunico è spento, qui dentro non dovrei mai entrarci perchè non ricevo risposta, giusto?
Code:
while(Serial1.available()){
      Serial.print(Serial1.read());
      Serial.print(" ");
    }

Eppure questo è quello che ho sul serial monitor:

Code:
Start!
2 50 0 0 0 0 0 0 237 105
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2 50 0 0 0 0 0 0 237 105
4
2 50 0 0 0 0 0 0 237 105
0
2 50 0 0 0 0 0 0 237 105

2 50 0 0 0 0 0 0 237 105

2 50 0 0 0 0 0 0 237 105
2
2 50 0 0 0 0 0 0 237 105
4
2 50 0 0 0 0 0 0 237 105

2 50 0 0 0 0 0 0 237 105
0
2 50 0 0 0 0 0 0 237 105
0
2 50 0 0 0 0 0 0 237 105

2 50 0 0 0 0 0 0 237 105
192
2 50 0 0 0 0 0 0 237 105
2
2 50 0 0 0 0 0 0 237 105

2 50 0 0 0 0 0 0 237 105
0
2 50 0 0 0 0 0 0 237 105
6
2 50 0 0 0 0 0 0 237 105
0
2 50 0 0 0 0 0 0 237 105

2 50 0 0 0 0 0 0 237 105
6
2 50 0 0 0 0 0 0 237 105
224
2 50 0 0 0 0 0 0 237 105
1
2 50 0 0 0 0 0 0 237 105

2 50 0 0 0 0 0 0 237 105
0 0
2 50 0 0 0 0 0 0 237 105
4
2 50 0 0 0 0 0 0 237 105
1
Come vedete la prima volta ho un treno di 0, poi byte "a caso" a volte nulla....
Qualcuno mi sa dire da dove vengano sti byte e cosa diamine sta succedendo???? smiley-cry
99  International / Generale / Re: Arduino Mega 2560 problemi rs485 su serial hardware on: May 11, 2012, 05:44:30 am
rispondo da solo alla cavolata precedente sui dati che vengono da eth..NO
ho tolto cavetto e sto girando solo con la comunicazione seriale.....no è cambiato nulla
questo è quello che ottengo sul serial monitor:
Code:
Start!
bytes in ingresso: 63
128 255 0 128 255 0 128 0 160 0 0 0 0 255 0 0 255 0 128 0 0 255 0 192 0 192 0 224 0 224 0 96 0 224 0 192 0 192 0 128 254 0 0 252 0 0 255 0 0 248 0 128 255 0 0 253 0 192 0 128 255 0 32
Query: 2 50 0 0 0 0 0 0
Response: 1 1 1 1 1 1 1 1
check Lo--> Ho: 1 calcolo: 214
check Hi--> Ho: 1 calcolo: 182
CRC FAIL
bytes in ingresso: 34
224 199 85 0 0 0 0 0 0 0 248 252 225 0 0 128 254 224 113 0 0 0 32 253 240 131 96 0 0 64 255 0 0 0
Query: 2 50 0 0 0 0 0 0
Response: 1 1 1 1 1 1 1 1
check Lo--> Ho: 1 calcolo: 214
check Hi--> Ho: 1 calcolo: 182
CRC FAIL
bytes in ingresso: 13
0 192 0 0 255 0 64 255 0 64 0 192 0
Query: 2 50 0 0 0 0 0 0
Response: 1 1 1 1 1 1 1 1
check Lo--> Ho: 1 calcolo: 214
check Hi--> Ho: 1 calcolo: 182
CRC FAIL
bytes in ingresso: 28
112 0 0 0 64 0 192 0 0 253 0 0 0 0 254 0 128 40 32 0 64 200 96 0 0 252 0 0
Query: 2 50 0 0 0 0 0 0
Response: 1 1 1 1 1 1 1 1
check Lo--> Ho: 1 calcolo: 214
check Hi--> Ho: 1 calcolo: 182
CRC FAIL
bytes in ingresso: 23
112 0 0 128 192 0 0 84 2 192 254 0 128 0 0 192 0 0 249 5 0 128 255
Query: 2 50 0 0 0 0 0 0
Response: 1 1 1 1 1 1 1 1
check Lo--> Ho: 1 calcolo: 214
check Hi--> Ho: 1 calcolo: 182
CRC FAIL
bytes in ingresso: 24
1 0 0 0 0 0 0 192 254 0 0 252 0 0 0 240 0 0 0 224 0 0 128 253
Query: 2 50 0 0 0 0 0 0
Response: 1 1 1 1 1 1 1 1
check Lo--> Ho: 1 calcolo: 214
check Hi--> Ho: 1 calcolo: 182
CRC FAIL
bytes in ingresso: 25
153 56 0 128 224 128 224 207 0 0 0 0 0 248 254 0 64 255 128 0 0 192 251 0 128
Query: 2 50 0 0 0 0 0 0
Response: 1 1 1 1 1 1 1 1
check Lo--> Ho: 1 calcolo: 214
check Hi--> Ho: 1 calcolo: 182
CRC FAIL
100  International / Generale / Re: Arduino Mega 2560 problemi rs485 su serial hardware on: May 11, 2012, 05:37:09 am
yes!
ho semplificato la funzione di ricezione per capire dove fosse il problema facendomi stampare tutto il contenuto del buffer:
Code:
boolean receiveMsg(){
  rxMode();
  boolean res =false;
  int k = 0;
  Serial.print("bytes in ingresso: ");
  Serial.print(myserial.available());
  Serial.println();
  while(myserial.available()){ 
    Serial.print(myserial.read());
    Serial.print(" ");
  }
  Serial.println();
  myserial.flush();  //<----eccolo!
  return checkTrama();
}

eseguo anche un flush "preventivo" prima di inviare il messaggio al dispositivo.
Domanda:
sto usando eth shield r3 sul mio mega 2560 r3. è normale che il led tx sullo shield blinki in accordo con quello della porta eth? Non è che i dati che leggo in seriale, per qualche motivo misterioso, vengono dalla eth???
per chiarezza uso i seguenti pin:

53 per comandare la modalità di trasmissione del max485

5v e gnd per alimentare lo stesso integrato (presi dall shield)

19, 18 rx tx per la comunicazione seriale

4 per SD

credo sia tutto
101  International / Generale / Re: Arduino Mega 2560 problemi rs485 su serial hardware on: May 11, 2012, 05:17:50 am
aggiornamento
Continuando a provare e riprovare, mi sono accorto che stranamente il buffer della Serial1 è sempre pieno, anche quando il dispositivo a cui è collegato il bus è spento!!! Non solo, ma Serial1.available() mi ritorna 63. Non dovrebbe esserci niente in quel buffer, sbaglio?
e invece
Code:
199 199 199 135 199 199 195 224 134 135 231 128 224 128 6 128 199 227 112 6 0 0 192 0 192 128 224 192 113 128 96 0 192 0 192 0 0 128 224 192 193 0 0 0 0 128 192 0 192 128 192 0 192 192 96 128 32 0 128 64 128 192 0

...non ci sto capendo più niente
102  International / Generale / Arduino Mega 2560 problemi rs485 su serial hardware on: May 09, 2012, 06:00:18 am
Salve a tutti, anche se leggo il forum da tempo questo è primo il mio primo post.
Vi espongo subito il problema che mi attanaglia da qualche giorno.
Ho scritto il codice su Arduino Ethernet board per comunicare via rs485 (max485) con un inverter al fine di loggarne (passatemi la terribile italianizzazione) la produzione. La macchina comunica con un baud di 19200, valore con cui inizializzo la comunicazione seriale. Naturalmente ho usato SoftwareSerial (sui pin 7,8) per rx e tx. Studiato il protocollo, ho inviato la giusta sequenza di byte (8 byte dati + 2 crc), ho ricevuto la giusta sequenza di byte per risposta (6 byte dati + 2 crc) e tutto ciò mi ha reso felice per un po di tempo.
Mi sono anche programmato uno sniffer con arduino uno e un ulteriore max485 per verificare il passaggio dei byte sul bus 485, dati che visulizzo su coolterm, un serial monitor per mac ( os x 10.6.8 ). Idilliaco!
Ma come per ogni storia che si rispetti, arriva il momento in cui fa l'ingresso in scena il cattivo. Per me il cattivo è rappresentato dall'esaurimento dello spazio sulla mia board.
La soluzione? Passo a Arduino Mega 2560 e ethernet shield....e qui arrivano i problemi.
Avendo a disposizione diverse seriali hardware metto da parte SoftwareSerial (che comunque non funzionava, o meglio trasmetteva ma non riceveva) e sposto la comunicazione sui pin 19 (rx) e 18 (tx) o, per  gli amici, Serial1. Il primo giorno sono stato sulla soglia del pianto per diverse ore. Il serial monitor sul mega mi mostrava i giusti byte, ma gli stessi, inviati su Serial1 venivano mostrati dallo sniffer in maniera assurda. A fronte di 10 trasmessi ne vedevo 3...e pure sbagliati! Naturalmente l'inverter, non ricevendo la giusta query, non rispondeva. Leggi e rileggi, cerca e ricerca, aggiungo (banale) un delay per ogni byte trasmesso e tutto magicamente va per il verso giusto. Urrà! Lo sniffer mi mostra la giusta sequenza di byte che parte dal mio mega e la giusta sequenza di byte che parte, come risposta, dall'inverter.
Ecco, finalmente, il problema. La risposta parte dall'inverter, viene visualizzata dallo sniffer, ma sul mega il serial monitor mi fa vedere byte a caso! Quindi sul bus transitano i dati corretti (come succedeva con arduino eth), ma in ricezione sul pin 19 leggo valori assurdi. Ho cercato e ricercato, ma questa volta ho ritenuto fosse il caso di disturbare la comunità.
Ecco il codice con cui ricevo i dati:
Code:

#define LENGHT 8

#define myserial Serial1 // substitute

byte *cmdquery; //punta ad un vettore che viene riempito di volta in volta con il comando da inviare da apposita funzione

byte buffer[LENGHT]={0,0,0,0,0,0,0,0};
byte *buffer_pntr;

void setup(){
  Serial.begin(9600);
  Serial.println("Start!");

  /*RS485 Setup Start*/
  myserial.begin(19200);
  pinMode(CS_485,OUTPUT);
  digitalWrite(CS_485,HIGH);
  buffer_pntr = buffer;
  /*RS485 Setup Stop*/

  if (!SD.begin(CS_SD)) {
    Serial.println("Card failed, or not present");
    //return;
  }
  /*Ethernet start*/
  avviaEthernet();
  /*Ethernet Stop*/

  /*NTP Setup Start*/
  NTPSetup();
  doTimeSync(); 
  /*NTP Setup Stop*/
}
/*
OMISSIS
*/

//false se va in timeout o CRC non corretto
boolean receiveMsg(){
  boolean res =false;
  rxMode();
  delay(100);
  while(myserial.available() < LENGHT){
    if((millis()-PREVIOUS_TIME)>TIME_OUT){ //qui gestisco un timeout di 2 secondi
      String msg ="";
      msg += " TIMEOUT on ";
      for(int i=0;i<LENGHT;i++){
        msg += cmdquery[i];
        msg += " ";
      }
      logToSD(msg);
      return res;
    } 
  }
  int k = 0;
  while(myserial.available()>0){
    byte dato = myserial.read();
    buffer_pntr[k] = dato;
    k=k+1;
    if(k==8){
      res = checkTrama(); //calcola il crc e controlla che la trama ricevuta sia corretta
      k=0;
      break;
    }
  }
  return res;
}

Scusate se ho esagerato nello scrivere, e se ho dimenticato qualcosa. Ringrazio in anticipo tutti quelli che vorranno dare il loro contributo.

Pages: 1 ... 5 6 [7]