Show Posts
Pages: [1]
1  International / Generale / help me again !! on: March 02, 2011, 05:50:41 am
Milllllle grazie ad Uwe che e' stato cosi' solerte nel rispondermi 

MI sono espresso male...ho un motoriduttore con spazzole ed encoder a bordo che vorrei pilotare contando i giri tramite l'effetto Hall di cui dispone

manca ancora tutta la parte dell'encoder....ma quello e' un passo successivo...devo prima capire se serve uno shield o cos'altro....

Dunque, ti elenco lo schema delle connessioni:

Arduino pin 2 = connesso ad un cavo del pulsante, l'altro cavo a GND
Arduino pin 4 = connesso ad un cavo del sensore porta, l'altro cavo a GND
Arduino pin 6 = connesso al pin DIR della Tank 3A HP
Arduino pin 7 = connesso ad un piedino di un LED verde, l'altro piedino a GND
Arduino pin 9 = connesso al pin PWM della Tank
Arduino pin 13 = connesso ad un piedino di un LED rosso, l'altro piedino a GND

il codice e' questo:


//attribuzione dei pin
int pulsante = 2;
int sensore_porta = 4;
int dirPin = 6;
int led_verde = 7;
int motorPin = 9;
int led_rosso = 13;

//dichiarazioni delle variabili

int status_porta = 0;

void setup() {
 
//partendo da porta chiusa
pinMode(sensore_porta, INPUT);
pinMode(pulsante, INPUT);
pinMode(led_verde, OUTPUT);
pinMode(led_rosso, OUTPUT);
digitalWrite(led_rosso, HIGH);
pinMode(dirPin, OUTPUT);

//attivo la seriale per monitorare il tutto
  Serial.begin(9600);

}




void loop() {

  if (status_porta == 0){
  if (digitalRead(sensore_porta) == HIGH  && digitalRead(pulsante) == HIGH) {
 
  Serial.print(" apro la porta ");
digitalWrite(dirPin, LOW);
delay(1000);


  Serial.print(" apro primo DX ");
analogWrite(motorPin, 255);
delay(1000);


  Serial.print(" apro secondo DX ");
analogWrite(motorPin, 255);
delay(1000);

//segnalo la porta aperta
  Serial.print(" ....fermo a porta aperta.... ");
digitalWrite(led_verde, HIGH);
digitalWrite(led_rosso, LOW);

//spengo il motore
analogWrite(motorPin, 0);

//inverto la direzione del motore
digitalWrite(dirPin, HIGH);

//comunico che la porta e' aperta e gli do' 10 secondi..
status_porta = 1;
delay(10000);
 
  }
}



/////////////////////////////////////////
//ciclo di chiusura
///////////////////////////////////////
    if (status_porta == 1){
  if (digitalRead(sensore_porta) == HIGH  && digitalRead(led_verde) == HIGH)
{

  Serial.print(" chiudo primo SX ");
analogWrite(motorPin, 255);
delay(1000);


  Serial.print(" chiudo secondo SX ");   
analogWrite(motorPin, 255);
delay(1000);

//spengo il motore
analogWrite(motorPin, 0);
delay(1000);

//segnalo porta chiusa
  Serial.print(" ....fermo a porta chiusa.... ");
digitalWrite(led_verde, LOW);
digitalWrite(led_rosso, HIGH);


   }
  }
 }

spero che sia abbastanza chiaro....
di fatto alla fine non funziona niente....non credo sia il codice, piuttosto l'hardware mal configurato....magari mancano delle resistenze/condensatori su qualche pin....sono una frana in elettronica.....

il link del datasheet del tank e'

http://www.droids.it/cmsvb4/content.php?174-990.009-Tank-3A-HP-Motor-controller-Guida-Utente

quello del motoriduttore

http://www.robot-italy.com/product_info.php?cPath=8_93&products_id=480
 
help me again  tank you together
2  International / Generale / Re: aiutooo on: March 02, 2011, 02:05:04 am
Milllllle grazie ad Uwe che e' stato cosi' solerte nel rispondermi  smiley-grin

MI sono espresso male...ho un motoriduttore con spazzole ed encoder a bordo che vorrei pilotare contando i giri tramite l'effetto Hall di cui dispone

manca ancora tutta la parte dell'encoder....ma quello e' un passo successivo...devo prima capire se serve uno shield o cos'altro....

Dunque, ti elenco lo schema delle connessioni:

Arduino pin 2 = connesso ad un cavo del pulsante, l'altro cavo a GND
Arduino pin 4 = connesso ad un cavo del sensore porta, l'altro cavo a GND
Arduino pin 6 = connesso al pin DIR della Tank 3A HP
Arduino pin 7 = connesso ad un piedino di un LED verde, l'altro piedino a GND
Arduino pin 9 = connesso al pin PWM della Tank
Arduino pin 13 = connesso ad un piedino di un LED rosso, l'altro piedino a GND

il codice e' questo:


//attribuzione dei pin
int pulsante = 2;
int sensore_porta = 4;
int dirPin = 6;
int led_verde = 7;
int motorPin = 9;
int led_rosso = 13;

//dichiarazioni delle variabili

int status_porta = 0;

void setup() {
 
//partendo da porta chiusa
pinMode(sensore_porta, INPUT);
pinMode(pulsante, INPUT);
pinMode(led_verde, OUTPUT);
pinMode(led_rosso, OUTPUT);
digitalWrite(led_rosso, HIGH);
pinMode(dirPin, OUTPUT);

//attivo la seriale per monitorare il tutto
  Serial.begin(9600);

}




void loop() {

  if (status_porta == 0){
  if (digitalRead(sensore_porta) == HIGH  && digitalRead(pulsante) == HIGH) {
 
  Serial.print(" apro la porta ");
digitalWrite(dirPin, LOW);
delay(1000);


  Serial.print(" apro primo DX ");
analogWrite(motorPin, 255);
delay(1000);


  Serial.print(" apro secondo DX ");
analogWrite(motorPin, 255);
delay(1000);

//segnalo la porta aperta
  Serial.print(" ....fermo a porta aperta.... ");
digitalWrite(led_verde, HIGH);
digitalWrite(led_rosso, LOW);

//spengo il motore
analogWrite(motorPin, 0);

//inverto la direzione del motore
digitalWrite(dirPin, HIGH);

//comunico che la porta e' aperta e gli do' 10 secondi..
status_porta = 1;
delay(10000);
 
  }
}



/////////////////////////////////////////
//ciclo di chiusura
///////////////////////////////////////
    if (status_porta == 1){
  if (digitalRead(sensore_porta) == HIGH  && digitalRead(led_verde) == HIGH)
{

  Serial.print(" chiudo primo SX ");
analogWrite(motorPin, 255);
delay(1000);


  Serial.print(" chiudo secondo SX ");   
analogWrite(motorPin, 255);
delay(1000);

//spengo il motore
analogWrite(motorPin, 0);
delay(1000);

//segnalo porta chiusa
  Serial.print(" ....fermo a porta chiusa.... ");
digitalWrite(led_verde, LOW);
digitalWrite(led_rosso, HIGH);


   }
  }
 }

spero che sia abbastanza chiaro....
di fatto alla fine non funziona niente....non credo sia il codice, piuttosto l'hardware mal configurato....magari mancano delle resistenze/condensatori su qualche pin....sono una frana in elettronica.....

il link del datasheet del tank e'

http://www.droids.it/cmsvb4/content.php?174-990.009-Tank-3A-HP-Motor-controller-Guida-Utente

quello del motoriduttore

http://www.robot-italy.com/product_info.php?cPath=8_93&products_id=480
 
help me again smiley-eek-blue tank you together
3  International / Generale / aiutooo on: March 01, 2011, 02:03:59 pm
Ciao a tutti, da non molto mi cimento con ARDUINO, molto bello ed interessante....sono un po' a digiuno di elettronica, ma ce la metto tutta !

Ho intenzione di creare una serratura motorizzata che viene pilotata tramite una tastiera numerica con comunicazione Wiegand...
Ora....ho acquistato Arduino 2009, un ponte H(Tank 3A HP), un motore brushed, un sensore per porte(controlla se chiusa o aperta) ed un pulsante...intanto...

Ho collegato come da datasheet la Tank per gestirla con PWM, ma mi sta dando un mucchio di problemi...
inoltre il sensore che deve semplicemente vedere se aperto o chiuso, funziona a rovescio...ho letto da qualche parte che se non lo abbini a una resistenza, si invertono i comandi...?

In pratica: la porta e' chiusa, premendo il pulsante dall'interno, il motore deve girare per tre volte, fermarsi....a quel punto la porta e' aperta...quindi il sensore = aperto.

poi una volta chiusa la porta, il sensore diventa chiuso, quindi il motore deve girare per tre volte nel senso opposto....tutto qua...

non vi dico quante notti insonni ho fatto....non ne vengo fuori....qualcuno mi aiuta ?  grazie mille
Pages: [1]