Show Posts
Pages: [1]
1  International / Software / Re: Digital Read molto lento nel rilevare il cambio di stato on: September 10, 2012, 04:46:56 pm
Oddio mi apri un mondo nuovo...
Un interrupt fisico (quindi un interruttore, ipotesi da scartare) o un interrupt software?
Arduino permette di utilizzare la logica degli interrupt?? :O
2  International / Hardware / Elettropermanente tensione 24 V non adeguata on: September 10, 2012, 04:34:55 pm
Buona serata a tutti,
io sto seguendo lo schema http://scuola.arduino.cc/it/content/controlla-motore-dc-ponte-h-l293d

solo che a posto del motore utilizzo un elettropermanente da 24V dove, quando la corrente è HIGH l'elettropermanente si sblocca "lasciando" il pezzo di metallo che teneva calamitato a se.

A corrente LOW l'elettropermanente torna nella sua situazione di magnetismo .

L'elettropermanente in questione consuma 3,5 W e si alimenta a 24 V. Per farlo funzionare con Arduino

A posto dell'interruttore ho utilizzato un finecorsa classico. Se il fine corsa è chiuso permetto all'elettropermanente di ricevere corrente e "sbloccarsi", a fine corsa aperto l'elettro permanente rimane in LOW nella sua condizione naturale di elettromagnetismo. Per fare ciò ho modificato lo sketch ovviamente.

 Il problema è che nel circuito la tensione di input è di 24 V, ma all'elettropermanente non capisco come mai ma arrivano solamente 22V impedendo cosi al sistema di "sbloccarsi totalmente" , rimane un minimo di magnetismo..
Non so proprio cosa fare? Devo mettere un condensatore prima dell'elettropermanente? ma come faccio a calcolare che condensatore usare?

grazie a tutti in anticipo per l'aiuto
3  International / Software / Digital Read molto lento nel rilevare il cambio di stato on: September 10, 2012, 04:27:40 pm
Buona sera a tutti.
Utilizzo un Arduino mega R3.

questo è il codice in questione

Code:
// testing motors
//
 int motor1Pin;    // H-bridge leg 1 (pin 2, 1A)
 int motor2Pin;    // H-bridge leg 2 (pin 7, 2A)
 int enablePin;    // H-bridge enable pin
 int fineCorsa;    // Fine Corsa
 
void setup() {
  Serial.begin(9600); // open serial port to receive data
}

//Nome: attivaPin
//ToDo: Attiva i pin relativi al cassetto selezionato
void attivaPin(){
      digitalWrite(enablePin, HIGH);  // accende il motore
      digitalWrite(motor1Pin, HIGH);   // set leg 1 of the H-bridge low
      delay(4000);
      digitalWrite(enablePin, LOW);
      digitalWrite(motor1Pin, LOW);     
         
}

void setPin (int pin){
if (pin == 1){
  motor1Pin = pin;
  motor2Pin = pin + 1;
  enablePin = pin + 2;
  fineCorsa = pin + 3;
  pinMode(motor1Pin, OUTPUT);
  pinMode(motor2Pin, OUTPUT);
  pinMode(enablePin, OUTPUT);
  pinMode(fineCorsa, INPUT);
}
else{
   motor1Pin = (pin * 4) - 3;
   motor2Pin = (pin * 4) - 2;
   enablePin = (pin * 4) - 1;
   fineCorsa = (pin * 4);
   pinMode(motor1Pin, OUTPUT);
   pinMode(motor2Pin, OUTPUT);
   pinMode(enablePin, OUTPUT);
   pinMode(fineCorsa, INPUT);
 }
}

int verificaFineCorsa(int inputPin){
    delay(1300);
    int val;
    val = digitalRead(inputPin);
    if (val == HIGH){
      Serial.println("Tutti i fine corsa sono chiusi");
      return 0;
    }
    else{
      Serial.println("FineCorsa Aperto");
      return 1;
    }
}
 
 
void gestioneElettropermanente(int incomingByte){
  setPin(incomingByte);
  if (verificaFineCorsa(fineCorsa) == 0)
      attivaPin();
   
}

 
void loop() {
  // see if there's incoming serial data:
  if (Serial.available() > 0) {
    // read the oldest byte in the serial buffer:
    int incomingByte = Serial.read() - '0';
    gestioneElettropermanente(incomingByte);
    // if it's a capital H (ASCII 72), turn on the LED:
  }
}


Il problema è che il digitalRead(pin) è veramente lento, impiega anche più di 8 secondi a rilevare il cambio di stato, come mai??? come posso risolvere?
avete suggerimenti?

Grazie a tutti in anticipo

4  International / Generale / Re: Presentazioni nuovi iscritti, fatevi conoscere da tutti! on: September 10, 2012, 04:21:41 pm
Ciao a tutti, sono un programmatore di una azienda che lavora nella sanità, creiamo nuovi prodotti per migliorare la vita degli infermieri e degli operatori.
Siamo sempre alla ricerca di nuove tecnologie, specialmente se made in italy..
Sto prendendo mano con arduino perché lo volevamo sostituire alla attuale tecnologia che stiamo utilizzando per i nostri prodotti.. arduino è veramente fantastico!!
Pages: [1]