Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

PIC18F2455 generare clock

Tipologie, strumenti di sviluppo, hardware e progetti

Moderatore: Foto UtentePaolino

0
voti

[11] Re: PIC18F2455 generare clock

Messaggioda Foto Utentemorocarlo » 9 dic 2009, 18:29

#-o esiste un comando per farlo!!!

freqout porte.0,5000,25000

Praticamente da la frequenza nella porta e0, dura 5 secondi con frequenza 25K...
comunque ora ci dovrei essere... lunedì faccio le prove e ti faccio sapere... per variare la velocità basta mettere una variabile...
Mi confermi che la frequenza va fra i 20k e i 30k?
Avatar utente
Foto Utentemorocarlo
0 2
 
Messaggi: 12
Iscritto il: 30 nov 2009, 19:07

0
voti

[12] Re: PIC18F2455 generare clock

Messaggioda Foto UtentePaolino » 10 dic 2009, 14:44

Per variare la velocità di un motore passo passo devi variare la frequenza degli impulsi. Tipicamente si hanno due possibili casi.
Il primo è quello per cui realizzi una funzione che, sfruttando l'interrupt del timer, va come ti avevo illustrato io. L'altro metodo è quello di far generare al microcontrollore l'onda quadra sfuttando il modulo CCP configurato in modalità PWM. È poi cura del programmatore riuscire a variare la frequenza del PWM lasciano il duty cycle costante al 50%.

Il secondo metodo non lo vedo adeguato per le tue aspettative in quanto il PWM viene configurato per un range di frequenze ragionevolmente piccolo e viene concesso buon margine per la variazione del duty-cycle. Personalmente preferisco il primo metodo per il quale ti rinnovo le domande: ti è chiaro come laorano i TIMER del PIC? Sai come funziona il meccanismo di interrupt? Sapresti implementare un piccolo esempio in grado di generare un'onda quadra a frequenza fissa (per iniziare, si intende), sfruttando un timer e gli interrupt?

Infine: non so quale compilatore vuoi usare (MikroBASIC?, Ne avevamo già parlato? Io non ricordo :oops: ). Può darsi che quello che hai scelto disponga di una funzione di libreria che genera un'onda quadra a frequenza variabile.

morocarlo ha scritto:Mi confermi che la frequenza va fra i 20k e i 30k?

Beh, questo dovresti "confermarlo tu". È un dato di progetto, una specifica. Dipende dal motore che vuoi utilizzare; dalla curva di coppia e dal metodo di pilotaggio (passo intero, mezzo passo, un quarto di passo...) la curva coppia/velocità (la velocità è direttamente proporzionale alla frequenza di pilotaggio) varia sensibilmente da un caso all'altro.

Aspetto risposte alle mie domande.

Ciao.

Paolo.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong

-------------------------------------------------------------

PIC Experience - http://www.picexperience.it
Avatar utente
Foto UtentePaolino
32,6k 8 12 13
G.Master EY
G.Master EY
 
Messaggi: 4226
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)

0
voti

[13] Re: PIC18F2455 generare clock

Messaggioda Foto Utentemorocarlo » 10 dic 2009, 16:54

uso micro code studio.. c'è già il comando e funziona... per il meccanismo interrupt lo ho capito, ma penso che non mi serva visto che c'è già il comando bello pronto..

guardo meglio il tipo di motore...
Avatar utente
Foto Utentemorocarlo
0 2
 
Messaggi: 12
Iscritto il: 30 nov 2009, 19:07

0
voti

[14] Re: PIC18F2455 generare clock

Messaggioda Foto UtentePaolino » 10 dic 2009, 16:58

Ah, ok. Non conosco micro code studio.
Controlla il manuale: cosa dice in merito alla funzione
Codice: Seleziona tutto
freqout porte.0,5000,25000
:?:
Vediamo se usa il PWM o altro.

Ciao.

Paolo.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong

-------------------------------------------------------------

PIC Experience - http://www.picexperience.it
Avatar utente
Foto UtentePaolino
32,6k 8 12 13
G.Master EY
G.Master EY
 
Messaggi: 4226
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)

0
voti

[15] Re: PIC18F2455 generare clock

Messaggioda Foto Utentemorocarlo » 10 dic 2009, 18:13

Codice: Seleziona tutto
FREQOUT Pin,Onms,Frequency1{,Frequency2}

Produce the Frequency(s) on Pin for Onms milliseconds. Pin is automatically made an output. Pin may be a constant, 0-15, or a variable that contains a number 0-15 (e.g. B0) or a pin name (e.g. PORTA.0). One or two different frequencies from 0 to 32767 hertz may be produced at a time. FREQOUT generates tones using a form of pulse width modulation. The raw data coming out of the pin looks pretty scary. Some kind of filter is usually necessary to smooth the signal to a sine wave get rid of some of the harmonics that are generated.

FREQOUT works best with a 20MHz oscillator. It can also work with a 10MHz oscillator and even at 4MHz, although it will start to get very hard to filter and be of fairly low amplitude. Any other frequency will cause FREQOUT to generate a frequency that is a ratio of the actual oscillator used and 20MHz.

Example

' Send 1KHz tone on Pin1 for 2 seconds
FREQOUT PORTB.1,2000,1000

c'è pure il comando PWM
Codice: Seleziona tutto
PWM Pin,Duty,Cycle

Outputs a pulse width modulated pulse train on Pin. Each cycle of PWM consists of 256 steps. The Duty cycle for each PWM cycle ranges from 0 (0%) to 255 (100%). This PWM cycle is repeated Cycle times. Pin may be a constant, 0 - 15, or a variable that contains a number 0 - 15 (e.g. B0) or a pin name (e.g. PORTA.0). The Cycle time of PWM is dependent upon the oscillator frequency. If a 4MHz oscillator is used, each Cycle would be about 5ms long. If a 20MHz oscillator is used, each Cycle would be about 1ms in length. Defining an OSC value has no effect on PWM. The Cycle time always changes with the actual oscillator speed. Pin is made an output just prior to pulse generation and reverts to an input after generation stops. The PWM output on a pin looks like so much garbage, not a beautiful series of square waves. A filter of some sort is necessary to turn the signal into something useful. An RC circuit can be used as a simple D/A converter.

Example

PWM PORTB.7,127,100 ' Send a 50% duty cycle PWM signal out Pin7 for 100 cycles
Avatar utente
Foto Utentemorocarlo
0 2
 
Messaggi: 12
Iscritto il: 30 nov 2009, 19:07

0
voti

[16] Re: PIC18F2455 generare clock

Messaggioda Foto UtentePaolino » 14 dic 2009, 9:38

Il manuale non dice se la funzione FREQOUT è una funzione bloccante oppure no. Così, a occhio, direi di sì. Questo significa che quando cerchi di pilotare il motore non potrai eseguire altre operazioni. Hai modo di provare a eseguire qualche test?

Ciao.

Paolo.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong

-------------------------------------------------------------

PIC Experience - http://www.picexperience.it
Avatar utente
Foto UtentePaolino
32,6k 8 12 13
G.Master EY
G.Master EY
 
Messaggi: 4226
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)

0
voti

[17] Re: PIC18F2455 generare clock

Messaggioda Foto Utentemorocarlo » 15 dic 2009, 17:42

hehe purtroppo hai ragione.. non riesco a fare altro.. cosa faccio? Passo ai motori in continua che sono pure più semplici o no?
Anche perché devo leggere da seriale e ricevere dati...
Avatar utente
Foto Utentemorocarlo
0 2
 
Messaggi: 12
Iscritto il: 30 nov 2009, 19:07

0
voti

[18] Re: PIC18F2455 generare clock

Messaggioda Foto UtentePaolino » 15 dic 2009, 17:54

Il problema non è nel tipo di motore che vuoi usare, ma nella tecnica usata per pilotarlo. All'inizio del post ti parlavo di interrupt. Prova ad esplorare quella via. Chiaro, la routine la devi fare tu, non c'è qualcosa di preconfezionato. Però è senz'altro più efficiente.

Ciao.

Paolo.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong

-------------------------------------------------------------

PIC Experience - http://www.picexperience.it
Avatar utente
Foto UtentePaolino
32,6k 8 12 13
G.Master EY
G.Master EY
 
Messaggi: 4226
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)

0
voti

[19] Re: PIC18F2455 generare clock

Messaggioda Foto Utentemorocarlo » 29 dic 2009, 14:29

ok.. scusa per il ritardo, appena ho di nuovo i pezzi mi rimetto al lavoro, intanto ho migliorato il resto del software.. ti faccio sapere
Avatar utente
Foto Utentemorocarlo
0 2
 
Messaggi: 12
Iscritto il: 30 nov 2009, 19:07

0
voti

[20] Re: PIC18F2455 generare clock

Messaggioda Foto Utentemorocarlo » 16 feb 2010, 18:25

allora sono riuscito a mettere tutto in moto.. ora ho ancora dei problemini.
Praticamente leggo da seriale un valore e muovo il robot. Solo che ogni secondo volevo inviare i dati al PC del sensore di distanza... ma se non do istruzioni questo non va avanti..

adcin 2, ADCVAL 'leggi valore distanza
serout TX,t1200,[#ADCVAL] ' invia valore
serin RX,t1200,SER 'leggi comando da seriale

quindi finché non invio il comando il programma non legge la distanza.. come posso fare?


edit:
ho sistemato con un palliativo. Praticamente i dati li dovevo inviare da PC, anche se uno non preme niente li rinvio facendo fare lo stesso movimento... è un palliativo, ma funziona comunque... così riesco a leggere la distanza ogni quanto voglio io!
Avatar utente
Foto Utentemorocarlo
0 2
 
Messaggi: 12
Iscritto il: 30 nov 2009, 19:07

Precedente

Torna a Realizzazioni, interfacciamento e nozioni generali.

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti