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
picmicro675




una ogni 10 livelli


postato il:
01.03.2015, alle ore 16:44
sparide74:
cosi' anche se ho gioco sulla vite (e sui torni senza riga ci sono)avro' il reale spostamento...


Se lo montassi anche sulla vite del movimento potresti anche usare un parametro che ti calcola il backlash.
Poi puoi anche usare un fattore di correzione con un moltiplicatore e divisore in modo da poter parametrizzare il valore da visualizzare.



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





postato il:
01.03.2015, alle ore 17:46
ok, grazie quando torno a casa provo, ora sono ancora a lavoro!!!meglio non dirlo in questi tempi...
sparide74





postato il:
01.03.2015, alle ore 21:38
ciao jasson ho riscitto il codice la parte programm:
Comunque ho rivisto bene l'encoder e' un rotativo e non sono 500ppi, ma 550 impulsi a giro....Sono arrivato al punto di scrivere sul display, ma che comando devo usare?

'**********************Programm********************************

While true
'Legenda:
'passo vite 5mm
'impulsi x giro 500
'500/5= 100 impulsi per spostare l'asse di 5mm

CentMil=UpDown * 100 'Centomillesimi
mm=CentMil/10000 'millimetri
resto=CentMil mod 10000 'Resto
cent=resto/10 'Centesimi

'??????Stringa da visualizzare uguale a (mm,".",Cent)
'COSA CI INSERISCO?

'LongWordtostr(UpDown,txt5)

' Lcd_Out(1,7,Txt5)

Wend

end.
picmicro675




una ogni 10 livelli


postato il:
02.03.2015, alle ore 07:32
500 ppr su 5 mm = 10 micron per impulso.

Quindi il tuo contatore se rappresenta per esempio 56532 impulsi a te basta 565,32

Il calcolo dovrebbe essere
 Dim UpDown as longint
Dim str5 as string[20]
str5 = FloatToStr(UpDown/100)
Lcd_Out(1,7,"         ")
Lcd_Out(1,7,str5)

Questa sarebbe la via più breve, ma potrebbe anche essere la più costosa di risorse dato che fa uso della libreria in floating point.

Si può in questo modo anche assumere dei parametri correttivi come un moltiplicatore ed un divisore che possono aggiustare il read-out ad un valore voluto.
Per esempio se fosse il passo di 10 mm, basterebbe usare un moltiplicatore di 2 ed un divisore di 1. Se fosse passo 6, si potrà usare un moltiplicatore di 6 ed un divisore di 5.
Poi per il backlash si potrebbe mettere un parametro che quando sente l' inversione di marcia assume un conteggio memorizzato che non influirà sulla variabile del conteggio.
Per facilitazione si dovrà adottare la stessa routine di calcolo per la conversione in mm e sottomultipli.

Usando solo interi si potrebbe intentare come segue:
 Dim UpDown as int
Dim str5 as string[15]
Dim cnt as Byte
Symbol Pos = 7 ' Posizione iniziale del numero
str5 = IntToStr(UpDown)

cnt = StrLen(str5)
while cnt > 0
    Lcd_Out(1,Pos + cnt,str5[cnt])
    Delay_ms(20)
    Dec(cnt)
    if cnt = StrLen(str5) - 2  then
         Lcd_Out(1,Pos + cnt - 1,".")  ' metto il punto
         Dec(cnt)
    end If
wend

Questo assume che lo spostamento è esattamente un centesimo di millimetro per impulso.

Che micro usi per questo progetto ?



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





postato il:
02.03.2015, alle ore 13:28
ciao, uso il pic 16f628
prima sono partito con il 16f84, ma ha pochissima memoria...
Questa sera provo!
picmicro675




una ogni 10 livelli


postato il:
02.03.2015, alle ore 16:20
È solo un abbozzo, non ho provato.
Ma se mi dici che hai il 16F628 magari lo metto al simulatore.



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





postato il:
02.03.2015, alle ore 19:21
mi da errore su symbol......
sparide74





postato il:
02.03.2015, alle ore 19:28
jasson mi hai bloccato a meta strada!!!!
Jasson





postato il:
02.03.2015, alle ore 19:42
Ti avevo detto di eseguirei 2 operazioni matematiche e stampare i risultati su lcd.
Lo hai fatto?
sparide74





postato il:
02.03.2015, alle ore 19:49
mi da errore:

str5 = FloatToStr(UpDown/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