Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Elettronica - Avere un conteggio perfetto o quasi
Forum - Elettronica - Avere un conteggio perfetto o quasi

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2305
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 18:28
Mercoledì, 17/01/2018
Salve ragazzi sono ancora alle prese con il mio progetto ormai quasi terminato.

Dopo un problema di debounce che ho avuto con dei pulsanti industriali,
Ho finalmente ripreso il cammino per la lettura.

Chiedevo se c'è un metodo più corretto per misurare i giri.

La scorsa volta nel topic precedente, avevo dimostrato di dovere leggere i valori
tramite i due sensori

Quando sono:

Sensore1: ON Sensore2: ON  ( Giro Completo)

in questo caso quando il giro è completo faccio fare:

Codice sorgente - presumibilmente Plain Text

  1. contagiri++;



però arrivo ad un punto dove la cifrà anche se la variabile è long non tiene tutto.
si ferma tipo a 99999 e poi si riazzera.

Mi servirebbe un modo più preciso di calcolare i giri.
Anche con un algoritmo diverso o magari una divisione degli stessi.

Cosa mi consigliate?


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
Mikelius (Member)
Expert


Messaggi: 525
Iscritto: 14/04/2017

Segnala al moderatore
Postato alle 18:40
Mercoledì, 17/01/2018
Si ferma al valore massimo di long, oppure proprio a 99999?
Perché se si ferma a 99999 e si resetta, mi sa che c'è un bug nel programma, se invece come presumo, va in overflow, non credo ci sia molto da fare che creare utilizzare una variabile maggiore.
Hai la possibilità di utilizzare un tipo "unsigned long long" (hai bisogno di numeri negativi ad esempio) ?
altrimenti dovresti spezzettarli, tipo ogni 100.000 giri aumenti la variabile centomilaGiri, e cosi via...
Con questo metodo riusciresti a contare un valore fino al quadrato di quello che conti attualmente.
Poi se li devi mostrare a video usi una stringa numerica.

Oppure un long double (non useresti la parte con la virgola)

Ultima modifica effettuata da Mikelius il 17/01/2018 alle 18:42
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 19:16
Mercoledì, 17/01/2018
Non ho capito nulla perché non ho letto la precedente discussione ma la questione dell'overflow del long non mi sembra sensata


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2305
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 19:23
Mercoledì, 17/01/2018
ho dichiarato una variabile di tipo unsigned long contagiri;

ogni volta che i sensori dell'encoder sono Alti, viene aumentata la variabile di 1.
e cmq si arriva precisamente a 99999 in una frazione di qualche secondo
per poi ricominciare da 1000 e non da 0

bug non saprei, anche perché semplicemente va ad aumentare solo li quella variabile.
Solo in quel ciclo e nulla più.



https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
Mikelius (Member)
Expert


Messaggi: 525
Iscritto: 14/04/2017

Segnala al moderatore
Postato alle 19:42
Mercoledì, 17/01/2018
Testo quotato

Postato originariamente da Thejuster:

ho dichiarato una variabile di tipo unsigned long contagiri;

ogni volta che i sensori dell'encoder sono Alti, viene aumentata la variabile di 1.
e cmq si arriva precisamente a 99999 in una frazione di qualche secondo
per poi ricominciare da 1000 e non da 0

bug non saprei, anche perché semplicemente va ad aumentare solo li quella variabile.
Solo in quel ciclo e nulla più.




Senza vedere il codice è difficile...
Controllato se hai Hardware guasto?
i valori del contagiri li vedi dal debug, o li mostri a video su un LCD?

Ultima modifica effettuata da Mikelius il 17/01/2018 alle 19:44
PM Quote
Avatar
Roby94 (Member)
Guru


Messaggi: 1170
Iscritto: 28/12/2009

Segnala al moderatore
Postato alle 21:18
Mercoledì, 17/01/2018
Testo quotato

Postato originariamente da Mikelius:
Controllato se hai Hardware guasto?


A pancia sembra strano un difetto HW crei un errore cosi "preciso", mi aspetterei errori in base 2 non in base 10, sembra molto piu un errore umano.

PM Quote
Avatar
Mikelius (Member)
Expert


Messaggi: 525
Iscritto: 14/04/2017

Segnala al moderatore
Postato alle 22:04
Mercoledì, 17/01/2018
Testo quotato

Postato originariamente da Roby94:

Testo quotato

Postato originariamente da Mikelius:
Controllato se hai Hardware guasto?


A pancia sembra strano un difetto HW crei un errore cosi "preciso", mi aspetterei errori in base 2 non in base 10, sembra molto piu un errore umano.



Penso anche io più a problema lato SW che HW, ma tutto può essere, comunque ho scritto Hardware guasto, ma includevo pure "errori di progetto", cioè riguardare pure se lato HW tutto è ok.


PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2305
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 11:31
Giovedì, 18/01/2018
Capisco,
Le ipotesi cmq possono essere tante.

Andando un attimo in :ot:

In primis, sappiamo tutti che programmare arduino per uso aziendale comporta delle controindicazioni.
La più gettonata è ovviamente la limitazione del voltaggio.

Siamo costretti ad operare a 5v.

Su macchine come queste che girano a 380V e più, e un problema.
Basta una scintilla per bruciare tutto.

Mi è capitato già diverse volte in questa riparazione.
1° di dover buttare un arduino
2° di dover buttare il display lcd.
3° di dover buttare il modulo relay.

Purtroppo non avendo la possibilità di acquistare un PLC Siemens dal costo esorbitante,
e tentare di impararlo a programmare, (Anche se la vedo dura) opto spesso per arduino.
Sia per il low cost, che l'assortimento degli accessori con prezzo accessibile.

Molti dei macchinari che abbiamo sono Home made, nel senso costruiti apposta per quel determinato scopo.
E i produttori / costruttori che le hanno fabbricate, hanno chiuso bottega o venduto il marchio.

Alcuni componenti come appunto i PLC che sono già programmati, se si brucia la CPU come è successo a questo, e non avendo più il riferimento della casa madre, era da buttare via tutto il macchinario.
Ma giocando con arduino ho risolto il problema.

Il macchinario è questa enorme bestia :rotfl:

https://cdn.discordapp.com/attachments/278928749246939136/4 ...

Con un pò di olio di gomito ho ricostruito tutta la plancia e un contenitore ad hoc
per contenere sia il display che tutto il resto

https://cdn.discordapp.com/attachments/278928749246939136/4 ...

come vedete dalla foto a sinistra c'è quel carro stringente che cammina nel senso che ruota su asse X

L'encoder mi serve per stringere lo spessore del vetro che entrerà in quella macchina.
Se è troppo stretto, spaccherà tutto il vetro. Se troppo largo, il vetro scivolerà sui motori combinando un vero distrastro.

Deve essere settato al punto giusto, Non troppo stretto per evitare rotture o vibrazioni,
e ne troppo largo per evitare che scivoli.

Ora il problema è proprio questo.

avendo quella variabile contagiri++ quando viene azionato il realy da 5v da arduino che a sua volta
va ad eccitare la bobina del relay a 24v della macchina per permettere ai motori di allargare o stringere il carro.

L'encoder o meglio la variabile, mi da un incredibile numero di incremento molto veloce.
tipo da 0 a 2 secondi un valore tipo 10000.

quello che mi servirebbe e poter contare correttamente quanti giri fa questo benedetto encoder.
in modo da poter salvare i dati nella EEPROM e confrontarli ogni volta che si imposta uno spessore manualmente dal display tramite pulsanti.

Attualmente ho misurato con un calibro.

Spessore di 5 mm
equivale dalla plancia al pistone 9,6mm precisi.

Spessore di 8mm = 9,2mm precisi.

L'unico problema che ho ora e questo.
Cercare un modo per contare dei giri in modo preciso.

L'encoder in questione è questo:

http://www.mouser.com/ds/2/307/e6b2-c_ds_csm491-25665.pdf


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 13:38
Giovedì, 18/01/2018
Con tutte queste informazioni che hai dato, ci stiamo allontanando dal problema.

Il codice dell'Arduino qual è?  

Possiamo vedere come e dove si incrementa questa variabile e perché c'è il limite 9999 di cui parli?


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo