Pages: [1]   Go Down
Author Topic: Consiglio servo  (Read 461 times)
0 Members and 1 Guest are viewing this topic.
Italy
Offline Offline
Jr. Member
**
Karma: 0
Posts: 79
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salve, mi sapreste consigliare un servo capace di preme e far spruzzare una bomboletta spray. quello contenuto nello starter kit non ha abbastanza forza per farlo.

grazie
Logged

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

io consiglio di creare un "peso" da mettere sulla bomboletta, in modo che basti lo sforzo di un piccolo servo per farla spruzzare.
Altrimenti con questo metodo calcoli guanti grammi ci vogliono per spruzzare, e compri un servo che ne esprima di più smiley
Logged

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

Italy
Offline Offline
Jr. Member
**
Karma: 0
Posts: 79
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ho fatto una prova con una bilancia la bomboletta spruzza con una pressione di circa 15 gr. il servo dello starter kit dovrebbe avere una capacità di 9gr.

forse potrei usare 2 servo contemporaneamente
Logged

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

con quello che costa un servo, tanto vale comprarne uno più tosto... prova su hobbyking, e fai attenzione a prendere le cose dall'europa se non vuoi aspettare un sacco di tempo
Logged

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

Dueville (VI)
Offline Offline
Edison Member
*
Karma: 28
Posts: 1747
http://cesarecacitti.wordpress.com/
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Salve, mi sapreste consigliare un servo capace di preme e far spruzzare una bomboletta spray. quello contenuto nello starter kit non ha abbastanza forza per farlo.

grazie
Prova a cannibalizzare uno spruzzaprofumo automatico (tipo il sense n spray)
Logged

Il Vero Programmatore non ha bisogno di manuali sull'assembler, sono
  sufficienti i data sheet dei microprocessori.

Italy
Offline Offline
Jr. Member
**
Karma: 0
Posts: 79
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ci avevo pensato, ma ha un motorino con un albero a camme.
ma se compro un servo diverso da quello di arduino, la libreria è la stessa?
Logged

Dueville (VI)
Offline Offline
Edison Member
*
Karma: 28
Posts: 1747
http://cesarecacitti.wordpress.com/
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

ci avevo pensato, ma ha un motorino con un albero a camme.
ma se compro un servo diverso da quello di arduino, la libreria è la stessa?
Si, la libreria è la stessa.
Tempo fa comprai anche io un sense and spray, riuscii a far spruzzare a comando le stelle filanti al carnevale. Anche se si tratta di un motore DC non c'è problema, si può fare tutto anche con quello !
Logged

Il Vero Programmatore non ha bisogno di manuali sull'assembler, sono
  sufficienti i data sheet dei microprocessori.

Italy
Offline Offline
Jr. Member
**
Karma: 0
Posts: 79
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ho smontato il dispenser, praticamente il gruppo che aziona il comando è composto da un motore con degli ingranaggi che muovono la leva che fa spruzzare la bomboletta, dovrei creare un codice che da l'impulso al motore di girare in un senso e poi ritornare a zero girando nel senso opposto.

mi metto a lavoro...
Logged

Dueville (VI)
Offline Offline
Edison Member
*
Karma: 28
Posts: 1747
http://cesarecacitti.wordpress.com/
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

ho smontato il dispenser, praticamente il gruppo che aziona il comando è composto da un motore con degli ingranaggi che muovono la leva che fa spruzzare la bomboletta, dovrei creare un codice che da l'impulso al motore di girare in un senso e poi ritornare a zero girando nel senso opposto.

mi metto a lavoro...
Prima del software devi fare un ponte ad H smiley-wink ci sono tanti tutorial online, se vuoi dopo ti posso aiutare con il codice
Logged

Il Vero Programmatore non ha bisogno di manuali sull'assembler, sono
  sufficienti i data sheet dei microprocessori.

Italy
Offline Offline
Jr. Member
**
Karma: 0
Posts: 79
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

l'aiuto è ben accetto!!!

per la parte hardware sto pensando di utilizzare lo schema incluso nel libro di arduino, così ho già tutti i componenti, può andare bene anche il codice, solo che invece di usare i comandi con pulsante bisognerà impostare dei delay.

appena fatto posto schema e bozza del codice
Logged

Italy
Offline Offline
Jr. Member
**
Karma: 0
Posts: 79
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

allora posto lo schema che sostanzialmente è quello fornito con il libro dello starter kit di arduino, anche il codice è quello.

lo schema ed il programma sono strutturati in modo da far partire il motore con un bottone, l'altro bottone serve a cambiare il senso di rotazione.

per il progetto servirebbe che il motore parta in un senso per 2 secondi e poi ritorni nella posizone di inizio ovvero giri per 2 secondi nel senso opposto.

questo mi risulta abbastanza complicato.

Code:
const int controlPin1 = 2; // connected to pin 7 on the H-bridge
const int controlPin2 = 3; // connected to pin 2 on the H-bridge
const int enablePin = 9;   // connected to pin 1 on the H-bridge
const int directionSwitchPin = 4;  // connected to the switch for direction
const int onOffSwitchStateSwitchPin = 5; // connected to the switch for turning the motor on and off
const int potPin = A0;  // connected to the potentiometer's output

// create some variables to hold values from your inputs
int onOffSwitchState = 0;  // current state of the On/Off switch
int previousOnOffSwitchState = 0; // previous position of the on/off switch
int directionSwitchState = 0;  // current state of the direction switch
int previousDirectionSwitchState = 0;  // previous state of the direction switch

int motorEnabled = 0; // Turns the motor on/off
int motorSpeed = 0; // speed of the motor
int motorDirection = 1; // current direction of the motor

void setup(){
  // intialize the inputs and outputs
  pinMode(directionSwitchPin, INPUT);
  pinMode(onOffSwitchStateSwitchPin, INPUT);
  pinMode(controlPin1, OUTPUT);
  pinMode(controlPin2, OUTPUT);
  pinMode(enablePin, OUTPUT);

  // pull the enable pin LOW to start
  digitalWrite(enablePin, LOW);
}

void loop(){
  // read the value of the on/off switch
  onOffSwitchState = digitalRead(onOffSwitchStateSwitchPin);
  delay(1);
 
  // read the value of the direction switch
  directionSwitchState = digitalRead(directionSwitchPin);
 
  // read the value of the pot and divide by 4 to get
  // a value that can be used for PWM
  motorSpeed = analogRead(potPin)/4;

  // if the on/off button changed state since the last loop()
  if(onOffSwitchState != previousOnOffSwitchState){
    // change the value of motorEnabled if pressed
    if(onOffSwitchState == HIGH){
      motorEnabled = !motorEnabled;
    }
  }

  // if the direction button changed state since the last loop()
  if (directionSwitchState != previousDirectionSwitchState) {
    // change the value of motorDirection if pressed
    if (directionSwitchState == HIGH) {
      motorDirection = !motorDirection;
    }
  } 

  // change the direction the motor spins by talking
  // to the control pins on the H-Bridge
  if (motorDirection == 1) {
    digitalWrite(controlPin1, HIGH);
    digitalWrite(controlPin2, LOW);
  }
  else {
    digitalWrite(controlPin1, LOW);
    digitalWrite(controlPin2, HIGH);
  } 

  // if the motor is supposed to be on
  if (motorEnabled == 1) {
    // PWM the enable pin to vary the speed
    analogWrite(enablePin, motorSpeed);
  }
  else { // if the motor is not supposed to be on
    //turn the motor off
    analogWrite(enablePin, 0);
  }
  // save the current On/Offswitch state as the previous
  previousDirectionSwitchState = directionSwitchState;
  // save the current switch state as the previous
  previousOnOffSwitchState = onOffSwitchState;
}





* motore_bb.jpg (734.5 KB, 1173x2427 - viewed 13 times.)
Logged

Dueville (VI)
Offline Offline
Edison Member
*
Karma: 28
Posts: 1747
http://cesarecacitti.wordpress.com/
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

allora posto lo schema che sostanzialmente è quello fornito con il libro dello starter kit di arduino, anche il codice è quello.

lo schema ed il programma sono strutturati in modo da far partire il motore con un bottone, l'altro bottone serve a cambiare il senso di rotazione.

per il progetto servirebbe che il motore parta in un senso per 2 secondi e poi ritorni nella posizone di inizio ovvero giri per 2 secondi nel senso opposto.

questo mi risulta abbastanza complicato.

Code:
const int controlPin1 = 2; // connected to pin 7 on the H-bridge
const int controlPin2 = 3; // connected to pin 2 on the H-bridge
const int enablePin = 9;   // connected to pin 1 on the H-bridge
const int directionSwitchPin = 4;  // connected to the switch for direction
const int onOffSwitchStateSwitchPin = 5; // connected to the switch for turning the motor on and off
const int potPin = A0;  // connected to the potentiometer's output

// create some variables to hold values from your inputs
int onOffSwitchState = 0;  // current state of the On/Off switch
int previousOnOffSwitchState = 0; // previous position of the on/off switch
int directionSwitchState = 0;  // current state of the direction switch
int previousDirectionSwitchState = 0;  // previous state of the direction switch

int motorEnabled = 0; // Turns the motor on/off
int motorSpeed = 0; // speed of the motor
int motorDirection = 1; // current direction of the motor

void setup(){
  // intialize the inputs and outputs
  pinMode(directionSwitchPin, INPUT);
  pinMode(onOffSwitchStateSwitchPin, INPUT);
  pinMode(controlPin1, OUTPUT);
  pinMode(controlPin2, OUTPUT);
  pinMode(enablePin, OUTPUT);

  // pull the enable pin LOW to start
  digitalWrite(enablePin, LOW);
}

void loop(){
  // read the value of the on/off switch
  onOffSwitchState = digitalRead(onOffSwitchStateSwitchPin);
  delay(1);
 
  // read the value of the direction switch
  directionSwitchState = digitalRead(directionSwitchPin);
 
  // read the value of the pot and divide by 4 to get
  // a value that can be used for PWM
  motorSpeed = analogRead(potPin)/4;

  // if the on/off button changed state since the last loop()
  if(onOffSwitchState != previousOnOffSwitchState){
    // change the value of motorEnabled if pressed
    if(onOffSwitchState == HIGH){
      motorEnabled = !motorEnabled;
    }
  }

  // if the direction button changed state since the last loop()
  if (directionSwitchState != previousDirectionSwitchState) {
    // change the value of motorDirection if pressed
    if (directionSwitchState == HIGH) {
      motorDirection = !motorDirection;
    }
  } 

  // change the direction the motor spins by talking
  // to the control pins on the H-Bridge
  if (motorDirection == 1) {
    digitalWrite(controlPin1, HIGH);
    digitalWrite(controlPin2, LOW);
  }
  else {
    digitalWrite(controlPin1, LOW);
    digitalWrite(controlPin2, HIGH);
  } 

  // if the motor is supposed to be on
  if (motorEnabled == 1) {
    // PWM the enable pin to vary the speed
    analogWrite(enablePin, motorSpeed);
  }
  else { // if the motor is not supposed to be on
    //turn the motor off
    analogWrite(enablePin, 0);
  }
  // save the current On/Offswitch state as the previous
  previousDirectionSwitchState = directionSwitchState;
  // save the current switch state as the previous
  previousOnOffSwitchState = onOffSwitchState;
}



Ciao,
da quello che vedo (sono con il cell.) devi fare così: metti ad High il pin 1 e 2 dell'integrato, delay di 2 secondi, Low il pin 2, high il pin 7 dell' integrato, delay 2 secondi, Pin 1 e 7 dell' integrato a Low
Logged

Il Vero Programmatore non ha bisogno di manuali sull'assembler, sono
  sufficienti i data sheet dei microprocessori.

Pages: [1]   Go Up
Jump to: