Visualizza messaggio singolo
Vecchio 09 luglio 10, 20:26   #10 (permalink)  Top
marcosinatti
User
 
L'avatar di marcosinatti
 
Data registr.: 11-06-2007
Residenza: Sansepolcro (Ar)
Messaggi: 1.948
VB6 è abbastanza semplice, non lo so programmare bene, ma alla fine qualcosa ci tiro fuori.
Una volta entrato nell'ottica della programmazione ad eventi e capito come funzionano le propietà degli oggetti e l'utilizzo delle variabili, usando l'help si riesce ad andare avanti anche se piano piano...
Il duro è stato il pic, praticamente obbligato a programmarlo in C, anche quello l'ho impostato ad eventi, considera che la routine main fa solo la gestione del led, e si occupa di fare il polling della seriale di servizion per rilevare la presenza di caratteri dul buffer.
Il resto lavora tutto ad interrupt, uno sul timer per temporizzare i campionamenti del pid e il resto su interrupt degli ingressi e QEI.
Sul drive rimane il pilotaggio a passi come se fosse uno stepper, ma poi dai passi ogni 300microsecondi viene ricavata la posizione comandata che va ad alimentare il pid insieme all'errore letto (posizione comandata - posizione attuale).
In pratica come fanno tutti i drive brushless commerciali, che di solito chiudono il loop in 250-500 microsecondi.
I passi non si perdono mai, ovviamente se il motore ha sufficiente forza per attuarli e comunque se non riuscisse ad andare in posizione il drive lo può segnalare tramite l'uscita di allarme.
marcosinatti non è collegato   Rispondi citando