Usare un servomotore con Arduino - #35

Поділитися
Вставка
  • Опубліковано 12 вер 2024
  • In questo video spiego cos'è e come funziona un servomotore. Collegheremo il servomotore ad Arduino per pilotarlo con l'apposita libreria.
    sketch e schema:
    github.com/zma...
    Puoi scaricare gratuitamente il mio libro: "Il manuale di Arduino - Guida Completa" dal mio sito: www.zeppelinmaker.it oppure direttamente da gumroad: gumroad.com/l/...

КОМЕНТАРІ • 76

  • @albertopiscione7806
    @albertopiscione7806 4 роки тому +1

    Ciao Paolo, intanto le faccio i complimenti per il lavoro costante che fa, per far divertire anche noi. Ho creato una cassaforte con tastierino numerico, lcd 16x2 e un servo per il meccanismo della serratura. Funziona tutto ma!!, quando alimento/accendo Arduino, il servo fa un piccolo movimento da un senso e un'altro leggermente più lungo nell'altro senso, perdendo la sua posizione di chiusura, ma poi facendo un ciclo di apertura e chiusura si rimette nelle sue posizioni originali e funziona benissimo. Come faccio ad ovviare a questo??? per far rimanere la serratura in posizione di chiusura in quella breve frazione di accezione del sistema. Le sarei davvero grato, e un piccolo progetto per mia nipote, che stiamo realizzando insieme, ora che ho un po di tempo a disposizione dato le circostanze!!. Sono sicuro che ha un rimedio. Grazie anticipatamente. Cordiali saluti

    • @zeppelinmaker
      @zeppelinmaker  4 роки тому

      si potrebbe provare a impostare un angolo inziale di azzeramento: si solito 90°, oppure tenere scollegato il servo con un relè e collegarlo solo dopo l'avvio... A che pin è collegato?

    • @albertopiscione7806
      @albertopiscione7806 4 роки тому

      @@zeppelinmaker pin 11

  • @salvatoresturiale
    @salvatoresturiale 3 роки тому

    I suoi tutorial sono chiari e dettagliati, complimenti, domanda: a fine corsa si può fermare il servo per un tempo prestabilito?

    • @zeppelinmaker
      @zeppelinmaker  3 роки тому

      certo, se hai capito il meccanismo a stati non dovrebbero esserci problemi. Lo puoi eventualmente implementare aggiungendo uno stato in più

  • @matteozanichelli79
    @matteozanichelli79 3 роки тому +2

    Complimenti per i video!
    ho una domanda (forse impossibile da realizzare),
    è possibile variare la velocità di un servo con una curva specifica per ogni movimento?
    pensavo ad un comando tipo "coseno" o cose simili...
    grazie 1000

    • @zeppelinmaker
      @zeppelinmaker  3 роки тому +1

      ah si si può fare. devi intervenire sui delay, aumentando il valore della pausa applicata

    • @matteozanichelli79
      @matteozanichelli79 3 роки тому +1

      @@zeppelinmaker grazie mille,
      complimenti ancora per i video, sono perfetti anche per me che sono una testa di marmo!!

  • @user-fd4ej5fr9d
    @user-fd4ej5fr9d 10 місяців тому

    Salve Paolo, il cavo verde ovvero (credo il pin 9) come è stato collegato con i cavi collegati al motore?

  • @MANCASMANCAS
    @MANCASMANCAS 4 місяці тому

    Buongiorno, io vorrei azionare il servo solo dopo aver premuto un pulsante ( chiude e apre subito il contatto aperto ) come inserire il comando nel programma?

  • @snappalappazappadog
    @snappalappazappadog Рік тому

    Posso comandare più servomotori contemporaneamente oppure in tempi diversi con comandi diversi all'occorrenza, con una sola scheda Arduino Uno?

  • @simonemartin2201
    @simonemartin2201 2 роки тому

    Ciao Paolo!
    Ho un pulsante solo e vorrei avviare un loop sul servo con un click, fermarlo con un secondo click, riavviarlo con un altro click e cosi via. Come modificare lo sketch per ottenere questo effetto?

  • @hungiero
    @hungiero 2 роки тому

    Ciao Paolo, domanda: ho realizzato uno sketch simile , solo che alla pressione di un pulsante UP e uno DOWN, lo stopper scende di 20°. Il problema è che se lo riporto alla posizione 0 questo non torna esattamente li ma rimane spostato di 10° circa. se resetto arduino, e ricarica tutto, visto che nell'inizializzazione lo forza a 0, questo torna correttamente! Problema dello stopper? me lo fa anche con la libreria d'esempio di arduino..

  • @alextermine534
    @alextermine534 2 роки тому

    Complimenti per il video, ma potrei inserire un temporizzatore?

  • @ivaring1
    @ivaring1 4 роки тому +1

    Eccellente video, c'è qualche esempio con un range slider da web per il controllo del servo motore?, grazie mille

    • @zeppelinmaker
      @zeppelinmaker  4 роки тому

      Ciao, no ma è una bella idea per un nuovo video.

  • @javest
    @javest 5 років тому +2

    Un servo motore puo sentire un "fine corsa": ovvero se collego l'albero a una ruota che ha un fine corsa, un ostacolo ad esempio, o' possibile dire al servo di fermarsi e memorizzare quella posizione?

    • @zeppelinmaker
      @zeppelinmaker  5 років тому +1

      ciao, no. ti serve qualche tipo di sensore

  • @giuseppecesarino1859
    @giuseppecesarino1859 2 роки тому

    grazie Paolo

  • @carlomeo8364
    @carlomeo8364 2 місяці тому

    una domanda: il delay all'interno del ciclo for, è la velocità con la quale il servo si porta in posizione (non il tempo della pausa del comando), ed in questo caso hai settato 20 millisecondi; ma sia dal video che da mie misurazioni effettuate non mi sembra che siano 20ms. Pertanto la mia domanda è: all'interno del ciclo for l'unità di misura del delay non è in millisecondi? grazie

    • @cuordacciaio8901
      @cuordacciaio8901 Місяць тому +1

      Tralasciando il fatto che è un video di 6 anni fa (di solito gli youtuber dopo un po' dall'uscita del video non rispondono perché hanno nuovi video a cui rispondere), il delay è in millisecondi.
      Il punto è che trascorrono 20ms per ogni grado che si sposta, quindi sono 180x20 ms ovvero 3600 ms totali per compiere tutto il movimento di 180°. Ovviamente bisogna anche contare che è un movimento fisico, mi spiego meglio: se tu mettessi un delay(0) (ipoteticamente si intende, quale pazzo metterebbe mai un delay(0)), avresti comunque un tempo reale del movimento dell' albero del motore; quindi in un certo senso si può dire che con delay(X) stai impostando X ms massimi per passare tra un grado e l'altro nel movimento reale.

    • @zeppelinmaker
      @zeppelinmaker  Місяць тому +1

      si è in ms ma devi tenere conto anche dell'inerzia dell'oggetto... di solito abbastanza lento.

    • @carlomeo8364
      @carlomeo8364 Місяць тому +1

      @@cuordacciaio8901 perfetto ecco perché non capivo, 20ms sono una velocità altissima a mal la pena la riesci a misurare mentre nel video.per ruotare ci metteva una vita ed anche dalle.mie prove. Con la tua spiegazione ha tutto più logica. L'unità di misura è ms/grado

  • @andresmarcucci9814
    @andresmarcucci9814 3 роки тому

    complimenti!

  • @vitovai3202
    @vitovai3202 4 роки тому

    Ciao Paolo,complimenti per tutto,av rei una domanda da porti:è possibile controllare e quindi modificare la velocità del servomotore per il raggiungimento dell'angolo impostato?
    Grazie in anticipo

    • @zeppelinmaker
      @zeppelinmaker  4 роки тому

      si basta intervenire sul delay all'interno del ciclo for

    • @vitovai3202
      @vitovai3202 4 роки тому

      @@zeppelinmaker grazie mille!

  • @brescioz7649
    @brescioz7649 3 роки тому

    È possibile inclinare il servo tower pro sg90 ad un angolo negativo?

  • @gotta91
    @gotta91 3 роки тому

    Come si può utilizzare un motore dc applicato allo sterzo, come un servo motore, cioè impostare un angolo massimo, in modo tale che non distrugga gli ingranaggi in plastica

  • @ambrazilioli92
    @ambrazilioli92 4 роки тому

    Bel video

  • @IvoCasalatina
    @IvoCasalatina 4 роки тому

    Ciao Paolo,
    Provando a modificare lo sketch che hai mostrato volevo inserire il grado di rotazione da tastiera tramite seriale (tra 0 e 180). Il servo motore correttamente riceve il grado di apertura e lo esegue ma poi si riporta sempre in posizione zero. Hai qualche suggerimento?

    • @zeppelinmaker
      @zeppelinmaker  4 роки тому +1

      credo che tu debba gestire lo stato. Cmq mi segno il problema e magari ci faccio un video.

    • @IvoCasalatina
      @IvoCasalatina 4 роки тому

      @@zeppelinmaker Grazie. Genitilissimo

  • @aftreni
    @aftreni Рік тому

    Ma perché collegando 5 servi SG90 ad un Arduino UNO ai pin da A1 a A5 (solo gli analogici ho disponibili!) Si impazziscono? Fino a 3 il programma funziona come collego gli altri si incasina!

  • @bendettom4048
    @bendettom4048 3 роки тому

    Ciao Paolo. Ho provato ad impostare un angolo superiore a 180° (anche 270°) ma non ci arriva. Si ferma sempre a 180°, aspetta un attimo e poi torna indietro. Non basterebbe modificare i parametri del ciclo "if" per farlo o ci vuole altro?

  • @davideeleuteri7988
    @davideeleuteri7988 3 роки тому

    Con una batteria da 9V non riesco a controllare 3 servomotori? Essendo che ogni servo assorbe 5V..?
    Come faccio?

  • @hotfire5161
    @hotfire5161 4 роки тому

    se io gli voglio dire di eseguire solo un'apertura di 60 gradi,come faccio?Non posso utilizzare i?

  • @Renzo87
    @Renzo87 3 роки тому

    Ciao Paolo, ho collegato un servo ai 5v di arduino nano (quest'ultimo alimentato da usb del pc) e praticamente ho rovinato 2 schede. Non carica più gli sketch. E' possibile che abbia tirato troppa corrente?

    • @zeppelinmaker
      @zeppelinmaker  3 роки тому

      Strano. che servo è? come lo hai collegato?

    • @Renzo87
      @Renzo87 3 роки тому

      @@zeppelinmaker è un mg 995, per sbaglio l'ho collegato al pin 5v di arduino nano (elegoo) e in pratica negli sketch compare un messaggio del tipo stk500_getsync() : not in sync: resp=0x08, inoltre rimane acceso solo il led power fisso. Lo avrò fatto secco 🙂

    • @Renzo87
      @Renzo87 3 роки тому

      Non contento, poi ne ho giustiziato un altro 😀

  • @micheledestefano
    @micheledestefano 4 роки тому

    Ciao Paolo
    Ho il servo della elego.
    L’escursione e’ minore di 180 gradi. 0 gradi, a occhio, sara + 5 e 180 sara’ 175 circa. E’ difettoso?
    Grazie

  • @simonebruschi5444
    @simonebruschi5444 2 місяці тому

    sto impazzendo con sto sketc
    include
    Servo servo1;
    void setup() {
    servo1.attach(9);
    }
    void loop() {
    for (int i = 0; i < 180; i++) {
    servo1.write(i);
    delay(20);
    }
    for (int i = 180; i >= 0; i--) {
    servo1.write(i);
    delay(20);
    }
    }
    vorrei che prima di far partire il servo due led si accendano pulsando e dopo 2 secondi parta il servoche apre la scatola e
    questo fa muovere ilservo, ma io vorrei che una volta arrivato al punto x si fermi e non che torni indietro.
    come debbo fare ?

  • @christiantogni6429
    @christiantogni6429 4 роки тому +1

    Come faccio a collegare più servomotori ad Arduino perché i 5 v non bastano

  • @filifaidate6083
    @filifaidate6083 4 роки тому

    Ciao, io volevo fare un braccio robotico utilizzando dei servo digitale perché ho visto che hanno più coppia e sono piu precisi ma non so se sono programmabili come quelli analogici

    • @zeppelinmaker
      @zeppelinmaker  4 роки тому

      dovrebbero essere migliori e più veloci

  • @samuelebaiano6505
    @samuelebaiano6505 5 років тому

    Ho una domanda: io vorrei alimentare un servomotore con arduino, quindi come hai fatto tu, solo che ho dei dubbi sull'amperaggio che il servo mi richiede e ho paura di friggere arduino, quello che mi chiedo è: se l'amperaggio è (per esempio) di 100 mAh, arduino puó erogarmi al massimo 40 mAh, rischio quindi di friggere arduino oppure il motore non viene correttamente alimentato?

    • @samuelebaiano6505
      @samuelebaiano6505 5 років тому

      Perchè tu hai detto che non è necessario nessun ponte H, mosfet o altro, ma non il perchè...

    • @samuelebaiano6505
      @samuelebaiano6505 5 років тому

      Ho detto una boiata, la 5V non ha il massimo di 40mAh, quello sarebbe un pin qualsiasi, ma non la 5v

    • @zeppelinmaker
      @zeppelinmaker  5 років тому +1

      Ciao Samuele. Il servo può essere alimentato anche a parte (purchè l'alimentatore che usi abbia la massa i comune con il GND di arduino). Il servo infatti ha il "suo controllo di potenza" che prende direttamente dalla alimentazione che fornisci. Arduino gli da solo il segnale di pilotaggio.

    • @samuelebaiano6505
      @samuelebaiano6505 5 років тому +2

      paolo aliverti grazie del chiarimento 👍🏼

  • @riccardomarino2927
    @riccardomarino2927 5 років тому

    Ciao Paolo, io avrei un dubbio
    Ho un arduino da poche settimane, e la maggior parte delle cose che so le devo si tuoi tutorial
    Vorrei sapere se si può far fare un giro di 130 all'arduino, ma solo per una volta

    • @zeppelinmaker
      @zeppelinmaker  5 років тому

      Ciao e grazie! Intendi 180 gradi? se si forse è meglio un motore passo passo

    • @riccardomarino2927
      @riccardomarino2927 5 років тому

      No, scusami intendevo 90😅

    • @riccardomarino2927
      @riccardomarino2927 5 років тому

      Perché praticamente nel video, gira di 90 gradi, si, ma per 90 volte

    • @zeppelinmaker
      @zeppelinmaker  5 років тому +1

      @@riccardomarino2927 ma certo. basta che gli dai direttamente servo.write(90) e stop

  • @ilmettiu4632
    @ilmettiu4632 5 років тому

    perchè a volte vedo messo un condensatore? altra domanda, se collegassi il servo ad un pin non pwm cosa succederebbe?

    • @zeppelinmaker
      @zeppelinmaker  5 років тому

      Mah, interoria non è necessario e potresti solo disturbare il segnale. Avrebbe forse senso sull'alimentazione, non sul segnale. Devi usare la libreria solo su pin pwm.

  • @federicocorazza7966
    @federicocorazza7966 4 роки тому

    ma si possono collegare due servo-motori in un solo arduino?????

    • @zeppelinmaker
      @zeppelinmaker  4 роки тому +1

      si, perchè no! ma meglio con ua-cam.com/video/Wj7U_f-kQd8/v-deo.html

  • @vincenzoraiano987
    @vincenzoraiano987 5 років тому

    è possibile fermare la rotazione del servomotore ad un certo valore di [i]?

    • @zeppelinmaker
      @zeppelinmaker  5 років тому

      ah si. Basta che dai semplicemente servo.write(angolo_desiderato);

    • @vincenzoraiano987
      @vincenzoraiano987 5 років тому

      @@zeppelinmaker
      Grazie Paolo Funziona!
      Provero a sezionare l'angolo e ad evidenziarlo con buzzer e led di colore diverso.
      Grazie ancora!

  • @elettroriolo
    @elettroriolo 3 роки тому

    posso pilotare un motore passo passo anzichè un servo sempre con un potenziometro

  • @giannil67
    @giannil67 3 роки тому

    salve sto provando a configurare Sketchper un servomotore ma non riesco a capire dovè l'errore exit status 1
    expected ';' before '}' token,
    se ce qualcuno che puo darmi una mano a capire dove sbaglio volevo allegare una foto ma non ho capito come si fa forse non si puo grazie anticipato

  • @davidelotto3495
    @davidelotto3495 4 роки тому

    ho un grande problema: io ho utilizzato 2 motori comuni dc, con l293d, in modo da muoverli con il monitor seriale, insieme ad essi volevo collegare un servo motore ad arduino.
    però sembra che quando collego il servomotore è come se bloccasse i 2 motori dc.
    ecco lo sketch:
    (ho provato a rimuovere la scritta s.attach(11); e sembra che funzioni tutto a parte il servo motore ovviamente. ho paura che si un problema della libreria. )
    #include
    Servo s;
    int ena = 9;
    int in1 = 3;
    int in2 = 4;
    int enb = 10;
    int in3 = 5;
    int in4 = 6;
    char val;
    int val2;
    int val3;
    int pin[6]={ena,enb,in1,in2,in3,in4};
    void setup() {
    // put your setup code here, to run once:U

    for(int i; i < 6; i++){
    pinMode(pin[i],OUTPUT);
    }
    Serial.begin(9600);
    s.attach(11);
    }
    void loop() {
    // put your main code here, to run repeatedly:
    val = Serial.read();
    if (val == 'w' && val2 != 2) {
    Serial.println(val);
    avantiA();
    val2 = 2;
    }
    if (val == 's' && val2 != 1) {
    Serial.println(val);
    indietroA();
    val2 = 1;
    }
    if(val =='d' && val3 != 1){
    Serial.println(val);
    destrab();
    val3 =1;
    }
    if(val =='a' && val3 !=2){
    Serial.print(val);
    sinistrab();
    val3 = 2;
    }
    if(val == 'q'){
    Serial.println(val);
    su();
    }
    if(val == 'e'){
    Serial.println(val);
    giu();
    }
    }
    void avantiA() {
    analogWrite(ena, 200);
    digitalWrite(in1, LOW);
    digitalWrite(in2, HIGH);
    delay(1100);
    digitalWrite(in1, LOW);
    digitalWrite(in2, LOW);
    }
    void indietroA() {
    analogWrite(ena, 200);
    digitalWrite(in1, HIGH);
    digitalWrite(in2, LOW);
    delay(1300);
    digitalWrite(in1, LOW);
    digitalWrite(in2, LOW);
    }
    void destrab(){
    analogWrite(enb,200);
    digitalWrite(in3,LOW);
    digitalWrite(in4,HIGH);
    delay(300);
    digitalWrite(in3,LOW);
    digitalWrite(in4,LOW);
    }
    void sinistrab(){
    analogWrite(enb,250);
    digitalWrite(in3,HIGH);
    digitalWrite(in4,LOW);
    delay(150);
    digitalWrite(in3,LOW);
    digitalWrite(in4,LOW);
    }
    void su(){//q
    s.write(0);
    }
    void giu(){//e
    s.write(50);
    }

  • @tubesfolletto
    @tubesfolletto 5 років тому

    Meglio inizializzare la rotazione mettendo il servo a 0 gradi nel setup con delay(1500)

  • @antoniocortani3396
    @antoniocortani3396 2 роки тому

    Vorrei gestire un motore diesel e con una specie di potenziometro devo fargli gestire 3 mappature

  • @StormShadow20633
    @StormShadow20633 Рік тому

    ciao paolo io mio servo ruota con gradi differenti

  • @davideferri5271
    @davideferri5271 Рік тому

    Qualcuno mi può aiutare con servomotore DS5260SSG ?

  • @M19Knox
    @M19Knox 4 роки тому

    spiegazione molto povera devo dire

    • @santocastorina6041
      @santocastorina6041 Місяць тому

      Paolo non si tocca!
      Probabilmente non ti è chiaro il senso dei suoi video che sono rivolti trasversalmente a neofiti e professionisti