Go Down

Topic: creare una rampa in tensione (Read 4071 times) previous topic - next topic

bibbo

Ciao a tutti, ho appena scoperto Arduino e credo (ditemi se sbaglio) di poterlo usare per generare una rampa in tensione da 0 a 5 volt. per pilotare un controllore per motore brushless. Nel dettaglio possiedo questo servoamplificatore per il controllo di un motore brushless piccolino (20W) alimentato a 24v., il dispositivo ha un ingrsso per poter accelerare gradualmente il motore da 0 alla velocità nominale tramite una tensione continua (da 0 a 5v), l'impedenza dell'ingresso è di 1Mhom.
Avrei bisogno che questa rampa duri 5 minuti, credo sia una cosa semplice da fare con Arduino, ma di programmazione proprio non ne capisco. Inutile dire che ho provato a cercare ma forse per la mia poca esperienza non ho agganciato i concetti giusti. Qualcuno mi potrebbe aiutare?

dscmax

Non sono molto esperto di elettronica però credo che, se devi generare una tensione variabile da 0 a 5 V, ti serva una DAC (Digitali  to Analog Converter).
Forse la cosa è fattibile anche utlizzando un'uscita digitale in PWM, qualcuno più esperto di me ti saprà rispondere più accuratamente (sicuramente però con un DAC potrai creare una vera uscita modulabile in tensione nel range che ti interessa, mentre con il PWM "simulerai" la variazione di tensione modulando nel tempo un segnale - che sarà sempre o 0V o 5V e mai una tensione intermedia). Non so se sono stato molto chiaro.


bibbo

Si ti sei spiegato benissimo, talmente bene che mi sono reso conto di aver  "pensato" una c.....a! Effettivamente non credo che un segnale PWM in ingresso al servoamplificatore possa funzionare!!
Grazie dscmax.

pulvis

La rampa 0 -5v la puoi fare con il PWM, http://www.arduino.cc/en/Tutorial/Fading (il led varia di luminosità) sei dici che servoamplificatore usi forse ti possiamo aiutare di +

bibbo

Questo è il servoamplificatore: http://www.etracker.de/lnkcnt.php?et=pKghaK&url=http://shop.maxonmotor.com/maxon/assets_external/Katalog_neu/eshop/Downloads/maxon_motor_control/1-Q-EC-Verstaerker/DEC_50_5/230572/230572_DEC_50-5_Manuale_dIstruzioni_It.pdf  
Dici che possa accettare anche segnali pwm sull'ingrsso 15?

pulvis

#5
Aug 03, 2009, 07:28 am Last Edit: Aug 03, 2009, 07:29 am by pulvis Reason: 1
Penso di si. Io con l'uscita pwm ottengo la rampa per il controllo dei ballast dimmerabili ed il principio è lo stesso.
Fai una prova imposta il controllo 0-5v, e poi con un tester misura quanti volt hai tra gli ingressi 10 e 15, se hai 5v devi mettere una resistenza.

bibbo

Grazie Eugenio.
Come già specificato di programmazione non ne mastico proprio!! :-?
Quindi se volessi che accendendo Arduino la rampa iniziasse solo in senso incrementale (da 0 a +5v) e poi rimanesse a +5v fino a quando lo spengo, devo togliere la seconda parte di programma ed impostare il delay (che viene espresso in millisecondi?!?!) a 300000 (che corrisponde a 5 minuti), giusto?
Quote
 */

int ledPin = 9;    // LED connected to digital pin 9

void setup()  {
  // nothing happens in setup
}

void loop()  {
  // fade in from min to max in increments of 5 points:
  for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) {
    // sets the value (range from 0 to 255):
    analogWrite(ledPin, fadeValue);        
    // wait for 30 milliseconds to see the dimming effect    
    delay(30);                            
  }

  // fade out from max to min in increments of 5 points:
  for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) {
    // sets the value (range from 0 to 255):
    analogWrite(ledPin, fadeValue);        
    // wait for 30 milliseconds to see the dimming effect    
    delay(30);                            
  }
}


pulvis

#7
Aug 03, 2009, 10:10 am Last Edit: Aug 03, 2009, 10:13 am by pulvis Reason: 1
....... devo togliere la seconda parte  Si e fai un incremento di 1 anzichè 5

......ed impostare il delay (che viene espresso in millisecondi?!?!) a 300000 (che corrisponde a 5 minuti), giusto?  No metti un ritardo di 1171 (devi considerare che hai un ciclo di 256).

bibbo

Riprendo questo post:
scusa Eugenio ma qui http://arduino.cc/it/Reference/Delay, se non ho capito male, dicono che il delay è espresso in millisecondi e non con base 256, comunque non ho ben chiaro a cosa serve il delay, inoltre l'azionamento del motore non funziona a dovere: invece di incrementare la velocità in modo lineare, si comporta come se venisse applicata una rampa a gradini, cioè il motore accelera di un pò (in funzione del valore di fadevalue impostato) poi si ferma a quella velocità per un certo tempo (forse il valore di delay?) poi riaccelera e così via. Ora, se il delay determina il tempo che il motore deve rimanere a quella velocità, ( ma non ne sono sicuro, perchè aumentando di molto il delay, es. 1000, aumento il tempo totale della rampa), come faccio ad incrementare in modo lineare? Ed inoltre dove imposto il tempo totale in cui il pin 9 mi deve passare da 0 a +5v.?
In sostanza: se aumento il delay aumenta il tempo totale della rampa per passare da 0 a +5v, ma indipendentemente dal valore assegnato l'incremento è a scatti (rampa a gradini).
Spero di essermi spiegato, scusate la lungaggine.
Ciao

Go Up