Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Progetto arduino spot welder...ma non ne vengo fuori.

Progetti, interfacciamento, discussioni varie su questa piattaforma.

Moderatori: Foto UtenteMassimoB, Foto UtenteWALTERmwp, Foto Utentexyz

0
voti

[31] Re: Progetto arduino spot welder...ma non ne vengo fuori.

Messaggioda Foto Utentelucaking » 7 lug 2018, 5:23

Bene, mi fa piacere vedere che hai accettato il fatto di scomporre il problema e cercare almeno di capire come si gestisce un encoder con arduino prima di andare avanti per tentativi.
Leggiti il file README presente nel link della libreria, è spiegato come settare alcuni parametri relativi al bottone e agli scatti dell' encoder in questione.
Avatar utente
Foto Utentelucaking
724 2 5 8
Sostenitore
Sostenitore
 
Messaggi: 683
Iscritto il: 29 mag 2015, 14:28

0
voti

[32] Re: Progetto arduino spot welder...ma non ne vengo fuori.

Messaggioda Foto UtenteFabiano71 » 7 lug 2018, 17:56

Ora tra tutti gli incidenti di percorso forse il peggiore: quando connetto al Mac L'Arduino mi va in kernel panico e si riavvia in automatico :evil:
Poi ho cambiato porta USB, cambiato cavetto, cambiato Arduino... sempre la stessa cosa! Poi ho collegato un data logger che avevo li a portata di mano e...zac! Riavviato.
Quindi ora ho l'impressione che dovrò formattare il Mac e reinstallare da zero, un po' di ore di tempo perso.
Per tornare al nostro sketch clickencodertest.ino, leggendolo ho capito che i pin interessati sono A1, A0 e A2. Ma sull'encoder come vanno su clk, dt e sw? Ho notato che non sono elencati nell'ordine naturale 0, 1 e 2. Forse A1->clk / A0->dt/ A2->sw?
Avatar utente
Foto UtenteFabiano71
20 1 2
 
Messaggi: 19
Iscritto il: 3 lug 2018, 15:04

0
voti

[33] Re: Progetto arduino spot welder...ma non ne vengo fuori.

Messaggioda Foto Utentexyz » 7 lug 2018, 18:07

Un encoder ottico tradizionale ha 2 uscite in quadratura A e B, in aggiunta una uscita per un pulsante normalmente aperto.

Dall'include della libreria:

Codice: Seleziona tutto
ClickEncoder(uint8_t A, uint8_t B, uint8_t BTN

In primi due sono i due segnali in quadratura, il terzo è il pulsante. I due segnali in quadratura possono essere scambiati, cambia il verso di rotazione rilevato se orario o anti orario.

P.S. Non ho un MAC ma controlla i driver USB della seriale devono essere installati correttamente e compatibili col chip presente nella board di Arduino che usi.
Avatar utente
Foto Utentexyz
5.165 2 4 5
Master EY
Master EY
 
Messaggi: 1346
Iscritto il: 5 dic 2009, 18:37
Località: Italy Turin

0
voti

[34] Re: Progetto arduino spot welder...ma non ne vengo fuori.

Messaggioda Foto UtenteFabiano71 » 7 lug 2018, 18:48

Grazie per l'info, ho parecchie difficoltà a decifrare il significato del codice dello sketch, spero di aver capito correttamente. Per il Mac il problema è più grave: non è una questione di driver, anche quando inserisco altri dispositivi USB va in crash!!!!!
Avatar utente
Foto UtenteFabiano71
20 1 2
 
Messaggi: 19
Iscritto il: 3 lug 2018, 15:04

0
voti

[35] Re: Progetto arduino spot welder...ma non ne vengo fuori.

Messaggioda Foto UtenteFabiano71 » 7 lug 2018, 20:43

Aggiornamento: ho fatto il test dell'encoder usando il monitor seriale come suggerito, e funziona. Riconosce sia il click che l'accelerazione. L'unica cosa che ho notato è che ad ogni step di rotazione (cioè ogni segmento in cui è frazionata la rotazione completa) sul monitor avanza di 4 unità (0 ; 4 ; 8 ; 12 ; 8 ; 4 ; 0 ; -4 ; -8 etc).
Secondo voi potrebbe essere questa cosa a mandare in tilt il progetto? Come dovrei correggerlo?
Avatar utente
Foto UtenteFabiano71
20 1 2
 
Messaggi: 19
Iscritto il: 3 lug 2018, 15:04

1
voti

[36] Re: Progetto arduino spot welder...ma non ne vengo fuori.

Messaggioda Foto Utentelucaking » 8 lug 2018, 6:36

Se (come ti è stato consigliato piu volte) avessi letto la documentazione della libreria che stai usando, nel famoso file README, tra le altre cose avresti trovato questo:
Depending on the type of your encoder, you can define use the constructors parameter stepsPerNotch an set it to either 1, 2 or 4 steps per notch, with 1 being the default.

If you have trouble with certain encoders, try

#define ENC_DECODER (1 << 2)
to use a table-based decoder, which can then be tuned using

#define ENC_HALFSTEP
The default is ENC_HALFSTEP 1.

Avatar utente
Foto Utentelucaking
724 2 5 8
Sostenitore
Sostenitore
 
Messaggi: 683
Iscritto il: 29 mag 2015, 14:28

0
voti

[37] Re: Progetto arduino spot welder...ma non ne vengo fuori.

Messaggioda Foto Utentexyz » 8 lug 2018, 11:15

In pratica prima dell'include della libreria nei sorgenti:

Codice: Seleziona tutto
...
#include <ClickEncoder.h>
...


inserisci questo define:

Codice: Seleziona tutto
...
#define ENC_DECODER ENC_FLAKY
#include <ClickEncoder.h>
...


e vedi se funziona correttamente.
Avatar utente
Foto Utentexyz
5.165 2 4 5
Master EY
Master EY
 
Messaggi: 1346
Iscritto il: 5 dic 2009, 18:37
Località: Italy Turin

0
voti

[38] Re: Progetto arduino spot welder...ma non ne vengo fuori.

Messaggioda Foto UtenteFabiano71 » 14 lug 2018, 12:12

Ciao, comincio con lo scusarmi per tutto il tempo che è passato senza che rispondessi, ma prima di farlo volevo avere qualche verifica per le mani da sottoporvi. Non parliamo del mac che ho dovuto reinstallare da zero per riuscire a venirne a capo, o del fatto che all'improvviso tre schede arduino nano non ne volevano sapere di caricare codice :?
Chiedo scusa per questo piccolo OT: che spiegazione esiste per il fatto che prima le schede le configuravo come ATmega328P e funzionavano ed ora funzionano solo se seleziono "old bootloader"?????? fine OT

@lucaking: io il file readme lo avevo letto, ma da qui a capire come mettere in pratica quelle informazioni purtroppo ce ne passa un po'...

@xyz: vediamo se ho capito...nel sorgente del file ClickEncoderTest, praticamente dopo il #define WITH_LCD e prima del #include <ClickEncoder.h> devo aggiungere il #define ENC_DECODER ENC_FLAKY, che chiede alla libreria parametri specifici per un encoder non standard...è questo il senso?
perché se ho capito giusto ho provato a caricare lo sketch ma il risultato non cambia: ogni step aumenta i valori sul monitor di 4.
Seguendo lo stesso principio ho fatto altre prove, seguendo i suggerimenti di lucaking e leggendo anche il listato della libreria.
ecco le varie prove:

    #define ENC_DECODER ENC_FLAKY
    #include <ClickEncoder.h>

    #define ENC_FLAKY (1 << 2)
    #include <ClickEncoder.h>

    #define ENC_DECODER (1 << 2)
    #include <ClickEncoder.h>

    #define ENC_DECODER (1 << 2)
    #define ENC_HALFSTEP 1

    #define ENC_DECODER (1 << 2)
    #define ENC_HALFSTEP 2

A meno che io non abbia completamente frainteso i vostri suggerimenti, tutte queste modifiche non hanno cambiato il comportamento dell'encoder. Rimane aperto il discorso della configurazione degli steps.
ecco cosa dice il file readme:
"Depending on the type of your encoder, you can define use the constructors parameter stepsPerNotch an set it to either 1, 2 or 4 steps per notch, with 1 being the default."
Ma leggendo il listato della libreria si legge che è settato ad 1
    public:
    ClickEncoder(uint8_t A, uint8_t B, uint8_t BTN = -1,
    uint8_t stepsPerNotch = 1, bool active = LOW);

P.S. nelle prove ho utilizzato sia l'encoder ky-040 che il più classico ec-11

cosa ne pensate? Nel frattempo continuerò a studiarci su
ciao O_/
Avatar utente
Foto UtenteFabiano71
20 1 2
 
Messaggi: 19
Iscritto il: 3 lug 2018, 15:04

0
voti

[39] Re: Progetto arduino spot welder...ma non ne vengo fuori.

Messaggioda Foto UtenteFabiano71 » 14 lug 2018, 12:25

Ragazzi, credo di aver risolto!!!! Per pura fortuna chiaramente... :lol:

Ho modificato il valore dello stepsPerNotch direttamente nel listato della libreria ClickEncoder.h prima con un 2, e a quel punto avanzava di 2 unità per step, poi a 4 ed ora funziona a meraviglia!!!

    public:
    ClickEncoder(uint8_t A, uint8_t B, uint8_t BTN = -1,
    uint8_t stepsPerNotch = 4, bool active = LOW);

Sicuramente ho completamente frainteso i vostri suggerimenti :roll:

Ora, appena avrò un'altra mezz'oretta di tempo si tratta di spostare questa lezione sul progetto principale del controller per lo spot welder e capire se il problema era questo.
Vi tengo sicuramente aggiornati. O_/
Avatar utente
Foto UtenteFabiano71
20 1 2
 
Messaggi: 19
Iscritto il: 3 lug 2018, 15:04

0
voti

[40] Re: Progetto arduino spot welder...ma non ne vengo fuori.

Messaggioda Foto Utentexyz » 14 lug 2018, 13:04

Modificare un include di una libreria non propria di solito non è la soluzione migliore.

Esiste una soluzione corretta dal punto di vista della programmazione, basta aggiungere il parametro "stepsPerNotch" al costruttore dell'oggetto di una classe "ClickEncoder".

Ad esempio, se nel codice viene creato l'oggetto in questo modo:

Codice: Seleziona tutto
...
encoder = new ClickEncoder(A1, A0, A2);
...


basta aggiungere il parametro da modificare (4) rispetto al valore di default (1):

Codice: Seleziona tutto
...
encoder = new ClickEncoder(A1, A0, A2, 4);
...


o in un modo più pulito:

Codice: Seleziona tutto
...
#define SPN 4
...
...
encoder = new ClickEncoder(A1, A0, A2, SPN);
...
Avatar utente
Foto Utentexyz
5.165 2 4 5
Master EY
Master EY
 
Messaggi: 1346
Iscritto il: 5 dic 2009, 18:37
Località: Italy Turin

PrecedenteProssimo

Torna a Arduino

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti