home | area personale         schemi | tutorial | robotica | pic micro | recensioni         forum | chat irc         faq | contatti         store | Ordina PCB
username
password
cerca

 
FORUM: Pic Micro
Tutto quanto riguarda questi microprocessori... progetti, suggerimenti, aiuti, discussioni...ecc


MickroBasic pro,gestione " . " per asse lineare
     
Autore Messaggio opzioni
sparide74





postato il:
08.03.2015, alle ore 11:15
Quindi per il mio scopo devo metterci un encoder da 2500imp cosi' mi calcola i millesimi e automaticamente vede i centesimi a conteggio pari...giusto?
Jasson





postato il:
08.03.2015, alle ore 11:32
Prima devi sapere la risoluzione dell'encoder e poi fare i calcoli.

Automaticamente non fa nulla, per ogni risoluzione di encoder dovrai eseguire calcoli diversi.

Io nel firmware scritto, ho preso come riferimento un encoder da 100 impulsi ogni 5 millimetri, ovvero 20 impulsi al millimetro, infatti per calcolare i millimetri divido il conteggio per 20.

Se vuoi visualizzare anche i millesimi, dovrai utilizzare un encoder che abbia come MINIMO 1000 impulsi al millimetro, e dovrai modificare i calcoli di conseguenza.




sparide74





postato il:
08.03.2015, alle ore 11:43
encoder 2500imp asse a giro 5mm




'calcolo i mmm Y
mmY=contY/100

'calclo il resto
cenY=contY mod 100


questa operazione non serve
'calcolo i centesimi Y
cenY=cenY*1
Jasson





postato il:
08.03.2015, alle ore 11:49
2500 impulsi ogni 5 millimetri sono 100 impulsi a millimetro, quindi, si è giusto dividere per 100.

Quindi moltiplicare cenY*1 non ha senso e puoi eliminare l'istruzione.

Facendo quella modifica avrai una risoluzione di 1 centesimo.


sparide74





postato il:
08.03.2015, alle ore 11:54
infatti lo scritto che non serviva.
Esempio sempre encoder 2500 ,passo vite 4mm.

mmY= conty/156,25 come si fa a gestire in questo caso la virgola?
sparide74





postato il:
08.03.2015, alle ore 11:58
devo fare sempre l'operazione con il mod?
Jasson





postato il:
08.03.2015, alle ore 12:06
Mi sà che c'è da utilizzare variabili che accettano la virgola mobile, quindi non più integer.
E di conseguenza cambiare pure tutte le stringhe.

In pratica modificare il 90% del programma
sparide74





postato il:
08.03.2015, alle ore 12:15
ok solo curiosita'....
Comunque grazie x il tempo che hai impegnato x me e x tutti quelli interessati al progetto!
picmicro675




una ogni 10 livelli


postato il:
08.03.2015, alle ore 12:47
sparide74:
encoder 2500imp asse a giro 5mm


5 mm / 2500 = 500 impulsi per millimetro = 0,002 mm (2 micron) per impulso.
Con 500 impulsi per giro si ha 1 centesimo per millimetro. La visualizzazione è diretta e basta mettere il punto al secondo decimale.
Però potrebbe esserci un encoder con valore a scala binari, p.es 512 e qui ci vuole i fattori di correzione.

Se il passo fosse diverso si applica un moltiplicatore e divisore in byte. Tutto per evitare i calcoli in virgola mobile. Però ovviamente si dovrebbe moltiplicare la base per 1000 per avere i millesimi, poi la rappresentazione si mette la virgola alla terza cifra.

Esempio
Contatore 32 bit, conteggio massimo 2`147`483 e visualizzazione in millesimi
Passo 4 mm
Fattore di correzione 4/5
Risultato Contatore * 1000 * 4 / 5 = contatore * 800.
Comunque io lascerei il programma con il menu di parametrizzazione e/o mettere i fattori correttivi in eeprom.

Per ultimo encoders con alta risoluzione vanno su di prezzo. Forse si può avere il compromesso di mettere una puleggina di moltiplica ed un encoder con meno impulsi con un po di errore meccanico.



Anno nuovo, forum nuovo.
Mi sa che lascio.
Jasson





postato il:
08.03.2015, alle ore 13:08
Jasson:
Mi sà che c'è da utilizzare variabili che accettano la virgola mobile, quindi non più integer.
E di conseguenza cambiare pure tutte le stringhe.

In pratica modificare il 90% del programma


Che imbecille che sono, basta applicare un pò di matematica.

2500 impulsi 4 millimetri, sono 4/2500=0,0016 ovvero 16 decimi di millesimo o 16 centesimillesimi chiamateli come volete.

Quindi basta trasformare tutto in centesimillesimi, per evitare di utilizzare virgole.

Per fare questo mi serve una nuova variabile word centiX per l'asse X e centiY per l'asse Y


 dim centiX,centiY as word
 


poi basta che porto tutto in centesimillsesimi moltiplicando per 16 e poi faccio le opportune divisioni, per ricavare millimetri e centesimi.



    'Calcolo i centesimillesimi
     centiX=contX*16
     
    'calcolo i mmm X
     mmX=centiX/10000
     
    'calcolo il resto
     cenX=centiX mod 10000
     
    'calcolo i centesimi
     cenX=cenX/100
 

segui questo thread con grixFC, per questa funzione devi aver installato il software grixFC

torna su
     

Come utente anonimo puoi leggere il contenuto di questo forum ma per aprire una discussione
o per partecipare ad una discussione esistente devi essere registrato ed accedere al sito




 







 
 
indietro | homepage | torna su copyright © 2004/2024 GRIX.IT - La community dell'elettronica Amatoriale