PILOTIAMO UNO STEPPER USANDO GLI INTERRUPT DI ARDUINO!!

Поделиться
HTML-код
  • Опубликовано: 14 окт 2024
  • Gli interrupt di Arduino sono uno strumento potentissimo, usato da microcontrollori e microprocessori per gestire eventi importanti in asincrono, ovvero in qualunque momento essi si presentino.
    Come funzionano gli interrupt su Arduino? Impariamo ad usarli ed anche a pilotare un motore passo passo.
    files, sketch, appunti,help online su Patreon:
    / alessio_romanelli

Комментарии • 27

  • @pfranco1226
    @pfranco1226 4 года назад +2

    Salve, complimenti per i video e le spiegazioni, finalmente qualcuno che abbia spiegato in maniera tremendamente semplice ma efficace l'uso degli interrupt che tanto mi facevano paura. Grazie, la seguirò con molto interesse

    • @Artigiano20AlessioRomanelli
      @Artigiano20AlessioRomanelli  4 года назад

      Salve, grazie mille! purtroppo YT mi fa vedere solo adesso questo commento, grazie di nuovo!!!

  • @BeniaminoGhiani
    @BeniaminoGhiani 5 лет назад +1

    Grandissimo!!! Ora ci provo anchio, tutto molto chiaro.

  • @alessandroandreamanago4426
    @alessandroandreamanago4426 8 месяцев назад +1

    Ciao Alessio. Grazie per iltuo video. Ottimo lavoro. Potresti dirmi come modificare la velocità di rotazione? (sono ignorante in materia)Grazie

    • @Artigiano20AlessioRomanelli
      @Artigiano20AlessioRomanelli  8 месяцев назад

      Ciao, la velocità di rotazione si modifica diminuendo l'intervallo fra un impulso e l'altro.
      Il valore di Delay che vedi quando si effettuano le scritture degli impulsi al motore è l'intervallo tra un impulso e il successivo quando diminuisce questi un intervallo di conseguenza gli impulsi sono più frequenti e quindi la velocità è maggiore

  • @MD-qz6gk
    @MD-qz6gk 3 года назад +1

    Grazie mille !!

  • @masmarupor
    @masmarupor 5 лет назад +2

    molto interessante e chiaro!
    pollicione su ^_^

  • @andreamattei5991
    @andreamattei5991 2 года назад +1

    ciao, dovrei realizzare un circuito con 2 pulsanti per far fare singoli step al motore. Un pulsante per step in senso orario e un altro pulsante per gli step in senso antiorario.
    Al rilascio dei pulsanti il motore si deve fermare.
    PS: i ho un driver modello TB6600, va bene lo stesso?

    • @TheRomanellis
      @TheRomanellis 2 года назад

      Ciao Ok! Cosa vuoi sapere?

    • @andreamattei5991
      @andreamattei5991 2 года назад

      @@TheRomanellis volevo sapere cosa serve per tale realizzazione, considerando che ho il kit Arduino con i drivers per gli step motor, ho vari motorini passo passo, brad-board, etc etc. Come dicevo ho anche il driver ARCELI TB6600.
      Mi servirebbe il codice per Arduino e magari qualche dritta. usare gli interrupts?

  • @CristianoLini
    @CristianoLini 4 года назад +1

    Salve domandona: si può fare lo stesso lavoro con un ciclo for per far girare il motore stepper? Grazie anticipato Cristiano

    • @Artigiano20AlessioRomanelli
      @Artigiano20AlessioRomanelli  4 года назад

      ciao, se usi il ciclo for è possibile invertire la direzione usando l'interrupt, ma diventa inutile l'attivazione del motore, perchè il "while" diventerebbe inutile.
      Diciamo che il ciclo for è poco compatibile con l'interrupt!

    • @CristianoLini
      @CristianoLini 4 года назад +1

      @@Artigiano20AlessioRomanelli Grazie Alessio della celere risposta In realtà il mio problema è in uno sketch solamente nella sezione setup, far bloccare un motore stepper nel momento che si attiva un tradizionale fine corsa ,portando allo stato basso un pin di Arduino Dico nella sezione setup perchè eseguito una sola volta , Raggiunta quella posizione col motore pp poi prosegue il mio ciclo loop Ho provato ad inserire parte del tuo sketch ma non mi va il motore pp ,proseguendo il ciclo loop tutto va bene ed il motore in questione anche Devo smanettarci su Grazie comunque, un Artigiano

    • @Artigiano20AlessioRomanelli
      @Artigiano20AlessioRomanelli  4 года назад

      @@CristianoLini capito.
      Permettimi innanzitutto di proporti un modo a mio avviso più corretto:
      La setup serve alla preparazione ed inizializzazione del nostro algoritmo, non andrebbe usata così.
      Potresti usare una variabile "First_time" che inizialmente è = 1.
      Nel loop esegui un controllo:
      If (first_time){
      [Posiziona motori]
      first_time = 0
      }
      In questo modo lo esegui solo una volta, ma è più pulito e logico.

    • @CristianoLini
      @CristianoLini 4 года назад

      @@Artigiano20AlessioRomanelli Grazie Si approvo Grazie x l'input! Ciao

  • @filippodenicolo4279
    @filippodenicolo4279 4 года назад +1

    Salve ma è possibile fare mandare Arduino in sleep con un telecomando e richiamarlo premendo un tasto del telecomando?

  • @antoninoperrone5321
    @antoninoperrone5321 5 лет назад +1

    [code]

    volatile boolean stepper_on = LOW;
    volatile boolean stepper_dir = LOW;
    void setup ()(
    (SEGNALA ERRORE :Initializer provided for function)
    pinMode (8, OUTPUT) ; // Pin DIR
    pinMode (9, OUTPUT) ; // Pin STEP
    attachInterrupt (digitalPinToInterrupt (2) , start_stepper, FALLING) ;
    attachInterrupt (digitalPinToInterrupt (3) , dir_stepper, FALLING) ;

    void loop() {
    while (stepper_on) {
    delayMicroseconds (750) ;
    digitalWrite (8, stepper_dir ;
    digitalWrite (9, HIGH) ;
    delayMicroseconds (500) ;
    digitalWite (9, LOW) ;
    delayMicroseconds (500) ;
    }
    }
    void start_stepper () {
    stepper_on = !stepper_on;

    }
    void dir_stepper () {
    stepper_dir = !stepper_dir;
    }

    Appello: Salve, chiedo scusa ma la mia palese incapacità spero non la offenda. Ho provato a copiare il Vs sketch ma la verifica mi segnala, sulla riga void setup, il problema che ho riportato. Spero non disturbarla troppo se le chiedo aiuto. Cordialità, Antonino Perrone

    • @Artigiano20AlessioRomanelli
      @Artigiano20AlessioRomanelli  5 лет назад +2

      Grazie della segnalazione, domani in laboratorio controllo e le rispondo, forse non subito perchè sono fuori la mattina!! ;)

    • @antoninoperrone5321
      @antoninoperrone5321 5 лет назад

      @@Artigiano20AlessioRomanelli Grazie, vorrei arrivare a pilotare un condensatore sottovuoto con motore stepper anzichè con motorini in c.c.. E' per una antenna loop magnetica per Hf. Grazie dell'immediatezza del contatto! Saluti

    • @antoninoperrone5321
      @antoninoperrone5321 4 года назад

      ??? Grazie!!! ???

    • @fandango2031
      @fandango2031 4 года назад +1

      void setup ()(
      (SEGNALA ERRORE :Initializer provided for function)
      pinMode (8, OUTPUT) ; // Pin DIR
      pinMode (9, OUTPUT) ; // Pin STEP
      attachInterrupt (digitalPinToInterrupt (2) , start_stepper, FALLING) ;
      attachInterrupt (digitalPinToInterrupt (3) , dir_stepper, FALLING) ;
      Qui mancano delle graffe...e ci sono diversi errori di battitura!!!
      Ti posto lo sketch pulito e funzionante :
      volatile boolean stepper_on = LOW;
      volatile boolean stepper_dir = LOW;
      void setup (){

      pinMode (8, OUTPUT) ; // Pin DIR
      pinMode (9, OUTPUT) ; // Pin STEP
      attachInterrupt (digitalPinToInterrupt (2) , start_stepper, FALLING) ;
      attachInterrupt (digitalPinToInterrupt (3) , dir_stepper, FALLING) ;
      }
      void loop() {
      while (stepper_on) {
      delayMicroseconds (750) ;
      digitalWrite (8, stepper_dir) ;
      digitalWrite (9, HIGH) ;
      delayMicroseconds (500) ;
      digitalWrite (9, LOW) ;
      delayMicroseconds (500) ;
      }
      }
      void start_stepper () {
      stepper_on = !stepper_on;
      }
      void dir_stepper () {
      stepper_dir = !stepper_dir;
      }

    • @antoninoperrone5321
      @antoninoperrone5321 4 года назад

      @@fandango2031 grazie infinite. Non appena torno a casa lo provo. Buona giornata!!