Deprecated: Function eregi() is deprecated in /membri2/demisoft/modules/Forums/viewtopic.php on line 22

Deprecated: Function eregi() is deprecated in /membri2/demisoft/modules/Forums/nukebb.php on line 44
ADXL202 - Un saluto a tutto il forum :D , ho letto con interesse l'articolo sull'adxl202 Siccome sto facendo un progettino universitario basato proprio su questo
.: News :: Downloads :: Trucchi :: Forum :: Elettronica :. 
 Home
 News
 Archivio Notizie
 Cerca
 Downloads
 Forums
 Gestione Account
 Glossario Info
 Passaparola
 Sondaggi
 Trucchi Giochi
 Trucchi Windows


Benvenuto, Anonimo
Tuo IP: 3.228.21.186
Nickname
Password
CodiceCodice di Sicurezza
Digita il codice di sicurezza:

 · Registrazione
 · Password persa?
Data/Ora Server
15-Oct-2019 20:09:18
(GMT +0200)

RSS Feeds












DemiSoft: Forums


DemiSoft :: Leggi il Topic - ADXL202

 FAQFAQ   CercaCerca   Gruppi utentiGruppi utenti   ProfiloProfilo   Messaggi PrivatiMessaggi Privati   LoginLogin 

ADXL202
Vai a pagina 1, 2  Successivo
 
Nuovo Topic   Rispondi    Indice del forum -> Schemi e progetti
Precedente :: Successivo  
Autore Messaggio
Kova
Newbie
Newbie


Registrato: Apr 10, 2007
Messaggi: 15
LocalitÓ: Pianeta terra

MessaggioInviato: Mar 10 Apr 2007, 18:32    Oggetto: ADXL202 Rispondi citando

Un saluto a tutto il forum Very Happy ,
ho letto con interesse l'articolo sull'adxl202http://demisoft.altervista.org//modules.php?name=Sections&op=viewarticle&artid=13
Siccome sto facendo un progettino universitario basato proprio su questo sensore, volevo chiedere se fosse possibile avere i sorgenti Embarassed
Non voglio copiare Laughing (anche perchŔ l'adxl Ŕ solo una parte del progetto), ma capire in che modo Ŕ stato catturato, tramite il pic, il segnale PWM!

Vi ringrazio tutti quanti
Ciao Razz
Torna in cima
Profilo Messaggio privato
Demetrius
Site Admin
Site Admin


Registrato: Jul 29, 2002
Messaggi: 1686

MessaggioInviato: Mar 10 Apr 2007, 19:41    Oggetto: Rispondi citando

Ciao Kova,

per scrivere e compilare il formware ho utilizzato il programma CCS PIC-C, che al suo interno ha diverse librerie ed esempi, tra cui c'erano anche quelli per gestire i sensori adxl2XX, non posso pubblicare la libreria nel forum per non violare i copyright vari Rolling Eyes
Questo Ŕ il sito, dove puoi ottenere una copia demo:
http://www.ccsinfo.com/

Cmq ti posso dire in generale come viene fatta la lettura... si usano i moduli CCP del PIC per "catturare" i fronti di salita-discesa dell'onda PWM. Nella routine di gestione degli interrupt che viene chiamata ad ogni fronte, ti calcoli i due periodi T1 e T2 del clock sottraendo il valore del timer tra due fronti consecutivi.

Se non riesci a procurarti questo compilatore, che ti consiglio molto, cerco di mandarti quello che posso. Wink
Torna in cima
Profilo Messaggio privato Invia email HomePage
Kova
Newbie
Newbie


Registrato: Apr 10, 2007
Messaggi: 15
LocalitÓ: Pianeta terra

MessaggioInviato: Mer 11 Apr 2007, 6:50    Oggetto: Rispondi citando

Demetrius ha scritto:
Ciao Kova,
Se non riesci a procurarti questo compilatore, che ti consiglio molto, cerco di mandarti quello che posso. Wink


Ciao Demetrius,
innanzi tutto grazie per avermi risposto Razz
Si ho il compilatore CCS (la versione 4.023), anche se volevo utilizzare il mikroC (lo trovo pi¨ semplice Rolling Eyes).

Non sapevo che all'interno del CCS ci fossero delle librerie dedicate agli ADXLxyz Razz
Non appena finisco di rispondere al tuo post corro ad installarlo Laughing Laughing
....................
.....scusa se insisto, ma non si possono proprio avere i sorgenti del progetto Embarassed Embarassed ?
La parte sw lato pc l'hai sviluppata in delphi, vero?
Hai avuto problemi con la gestione della usb?

Grazie ancora per l'aiuto
Ciao
Razz
Torna in cima
Profilo Messaggio privato
Demetrius
Site Admin
Site Admin


Registrato: Jul 29, 2002
Messaggi: 1686

MessaggioInviato: Mer 11 Apr 2007, 12:04    Oggetto: Rispondi citando

ti ho inviato i sorgenti in email Wink

Per quanto riguarda Delphi/USB, ho usato un componente da installare in Delphi che, se non sbaglio, si chiama HIDKomponente, e che gestisce tutto lui.
E' compatibile anche con Borland C++ Builder, se preferisci lavorare in C. Cool
Torna in cima
Profilo Messaggio privato Invia email HomePage
Kova
Newbie
Newbie


Registrato: Apr 10, 2007
Messaggi: 15
LocalitÓ: Pianeta terra

MessaggioInviato: Mer 11 Apr 2007, 14:34    Oggetto: Rispondi citando

Demetrius ha scritto:
ti ho inviato i sorgenti in email Wink

Per quanto riguarda Delphi/USB, ho usato un componente da installare in Delphi che, se non sbaglio, si chiama HIDKomponente, e che gestisce tutto lui.
E' compatibile anche con Borland C++ Builder, se preferisci lavorare in C. Cool


Ti ringrazio TANTISSIMO!!!! Wink
Torna in cima
Profilo Messaggio privato
Demetrius
Site Admin
Site Admin


Registrato: Jul 29, 2002
Messaggi: 1686

MessaggioInviato: Mer 11 Apr 2007, 15:59    Oggetto: Rispondi citando

Kova ha scritto:
Ti ringrazio TANTISSIMO!!!! Wink

di niente Very Happy
tienimi informato su quello che riesci a fare Wink
Torna in cima
Profilo Messaggio privato Invia email HomePage
Kova
Newbie
Newbie


Registrato: Apr 10, 2007
Messaggi: 15
LocalitÓ: Pianeta terra

MessaggioInviato: Gio 12 Apr 2007, 6:25    Oggetto: Rispondi citando

Demetrius ha scritto:
di niente Very Happy
tienimi informato su quello che riesci a fare Wink


Certo! Razz
Torna in cima
Profilo Messaggio privato
Kova
Newbie
Newbie


Registrato: Apr 10, 2007
Messaggi: 15
LocalitÓ: Pianeta terra

MessaggioInviato: Sab 14 Apr 2007, 18:27    Oggetto: Rispondi citando

Ciao Demetrius,
finalmente sono riuscito a combinare qualcosa Shocked , ma ho ancora qualche problemino con i tuoi sorgenti Crying or Very sad
Ti ho mandato una mail!

Grazie!
Ciao Wink
Torna in cima
Profilo Messaggio privato
Demetrius
Site Admin
Site Admin


Registrato: Jul 29, 2002
Messaggi: 1686

MessaggioInviato: Sab 14 Apr 2007, 18:42    Oggetto: Rispondi citando

occhio al PIC che usi (il file .h che ti ho mandato Ŕ per il 16C745), se usi i nuovi PIC18FXXX USB hai bisogno di un altro file .h secondo le impostazioni di questi nuovi PIC che sono diverse.
Usa anche direttamente le nuove librerie USB incluse nel CCS, le trovi nella cartella \PICC\Drivers, ovvero:

#include <pic18_usb.h>
#include <usb_desc_hid.h>
#include <usb.c>

per il PIC16C745, invece devi scrivere nel file c:

#include <pic_usb.h>
#include <usb_desc_hid.h>
#include <usb.c>

(cambia quando riportato nel file .c)
Torna in cima
Profilo Messaggio privato Invia email HomePage
Kova
Newbie
Newbie


Registrato: Apr 10, 2007
Messaggi: 15
LocalitÓ: Pianeta terra

MessaggioInviato: Sab 14 Apr 2007, 19:01    Oggetto: Rispondi citando

Demetrius ha scritto:
(cambia quando riportato nel file .c)


Grazie per le info Smile
Ho provato a compilarlo (come se stessi usando il tuo PIC Rolling Eyes ) e in effetti mi da qualche errore (forse perchŔ uso il CCS pi¨ nuovo).

In questa istruzione:
setup_spi(FALSE);
Error 12 "usb_ccp.c" Line 193(4,13): Undefined identifier setup_spi

In questa:
usb_gets(1, in_data, USB_EP1_RX_SIZE);
Error 102 "usb_ccp.c" Line 219(46,47): Expect comma

In questa:
usb_put_packet(1, out_data, USB_EP1_TX_SIZE, TOGGLE);
Error 12 "usb_ccp.c" Line 246(58,64): Undefined identifier TOGGLE

Nella prima non ho capito il perchŔ Confused
Nelle altre due molto probabilmente (domani con piu calma lo vedr˛ meglio) sarÓ cambiata la funzione usb_gets e usb_put_packet

Grazie ancora per l'aiuto
Ciao e buon sabato Wink
Torna in cima
Profilo Messaggio privato
Kova
Newbie
Newbie


Registrato: Apr 10, 2007
Messaggi: 15
LocalitÓ: Pianeta terra

MessaggioInviato: Dom 15 Apr 2007, 9:09    Oggetto: Rispondi citando

OK!
Ho risolto tutto Laughing
Da quello che ho capito, nelle vecchie versioni del CCS potevi settare ad OFF (False) l'spi (che non Ŕ presente nel 16C745), mentre nella nuova versione, restituisce un errore.
Gli altri due errori sono dovuti al cambiamento delle funzioni e le ho corrette in questo modo:

usb_put_packet(1, out_data, USB_EP1_TX_SIZE, USB_DTS_TOGGLE);
(Mettendo USB_DTS_TOGGLE invece di TOGGLE)
usb_gets(1, in_data, USB_EP1_RX_SIZE,0);
(Aggiungendo lo 0 alla fine, che indica che non verrÓ rilevato il timeout) Rolling Eyes

La compilazione Ŕ andata a buon fine Laughing

Correggimi se sbaglio:
in pratica tu (mi riferisco solo alla routine a 8bit) procedi prima alla calibrazione e calcoli:

zerogXr=tx/10;
zerogYr=ty/10

Che non sono altro che la media di 10 rilevazioni di accelerazione consecutive.

Poi procedi alla rilevazione dell'accelerazione attuale X e Y e costruisci il vettore out_data in cui:
Il primo elemento Ŕ l'accelerazione attuale X.
Il secondo Ŕ l'accelerazione attuale di Y.
Il terzo Ŕ la media di X.
Il quarto Ŕ la media di Y.
Giusto?

Il calcolo dello spostamento e della velocitÓ, invece, lo hai implementato nel programma utente (in delphi), dico bene?


Grazie ancora per tutto quanto Razz

P.S.
ti va bene la discussione qui sul forum o tramite email? Confused

CIAOOOO Very Happy
Torna in cima
Profilo Messaggio privato
Demetrius
Site Admin
Site Admin


Registrato: Jul 29, 2002
Messaggi: 1686

MessaggioInviato: Dom 15 Apr 2007, 16:54    Oggetto: Rispondi citando

Kova ha scritto:
OK!
Ho risolto tutto Laughing
Da quello che ho capito, nelle vecchie versioni del CCS potevi settare ad OFF (False) l'spi (che non Ŕ presente nel 16C745), mentre nella nuova versione, restituisce un errore.
Gli altri due errori sono dovuti al cambiamento delle funzioni e le ho corrette in questo modo:

usb_put_packet(1, out_data, USB_EP1_TX_SIZE, USB_DTS_TOGGLE);
(Mettendo USB_DTS_TOGGLE invece di TOGGLE)
usb_gets(1, in_data, USB_EP1_RX_SIZE,0);
(Aggiungendo lo 0 alla fine, che indica che non verrÓ rilevato il timeout) Rolling Eyes

La compilazione Ŕ andata a buon fine Laughing

esatto, ti confermo quello per usb_put_packet in quanto l'ho usato in un altro programma con i PIC18F, mentre per usb_gets non saprei, ma credo cmq che non dovresti avere problemi.


Citazione:
Correggimi se sbaglio:
in pratica tu (mi riferisco solo alla routine a 8bit) procedi prima alla calibrazione e calcoli:

zerogXr=tx/10;
zerogYr=ty/10

Che non sono altro che la media di 10 rilevazioni di accelerazione consecutive.

Poi procedi alla rilevazione dell'accelerazione attuale X e Y e costruisci il vettore out_data in cui:
Il primo elemento Ŕ l'accelerazione attuale X.
Il secondo Ŕ l'accelerazione attuale di Y.
Il terzo Ŕ la media di X.
Il quarto Ŕ la media di Y.
Giusto?

Il calcolo dello spostamento e della velocitÓ, invece, lo hai implementato nel programma utente (in delphi), dico bene?

tutto giusto, per˛ per la precisione non Ŕ l'accelerazione che viene calcolata nel PIC, ma solo il duty cycle rilevato che viene trasmesso via USB, l'accelerazione, velocitÓ e tutto il resto invece viene fatto nel PC, cmq puoi benissimo farlo nel PIC, non dovresti avere particolari problemi con i nuovi PIC che sono pi¨ veloci.


Citazione:

P.S.
ti va bene la discussione qui sul forum o tramite email? Confused

CIAOOOO Very Happy

si, va benissimo sul forum Wink
Torna in cima
Profilo Messaggio privato Invia email HomePage
Kova
Newbie
Newbie


Registrato: Apr 10, 2007
Messaggi: 15
LocalitÓ: Pianeta terra

MessaggioInviato: Dom 15 Apr 2007, 18:27    Oggetto: Rispondi citando

Demetrius ha scritto:
esatto, ti confermo quello per usb_put_packet in quanto l'ho usato in un altro programma con i PIC18F, mentre per usb_gets non saprei, ma credo cmq che non dovresti avere problemi.


OK

Citazione:
tutto giusto, per˛ per la precisione non Ŕ l'accelerazione che viene calcolata nel PIC, ma solo il duty cycle rilevato che viene trasmesso via USB, l'accelerazione, velocitÓ e tutto il resto invece viene fatto nel PC, cmq puoi benissimo farlo nel PIC, non dovresti avere particolari problemi con i nuovi PIC che sono pi¨ veloci.


Si, ho commesso un'inesattezza Very Happy

Quindi in pratica per il calcolo dell'accelerazione di gravitÓ (X e Y), hai usato la formula presente sul datasheet:
A(g)=(T1/T2-0.5)/12.5%
Con T2=Rset/125Mohm
Con T1=il periodo (duty) calcolato dalle due funzioni presenti sul pic (accelerometer_read8y e accelerometer_read8x).
Giusto?

Mentre per il calcolo della velocitÓ e dello spostamento come hai fatto? Embarassed

Inoltre ho letto sul datasheet (pagina 9) che tramite queste due formule:
Asin(Ax/1g)
Asin(Ay/1g)
Ŕ possibile convertire l'accelerazione in gradi.
Ne hai fatto uso?

Citazione:
si, va benissimo sul forum Wink

Wink

P.S. se ho scritto qualche castroneria, perdonami, ma oggi sono proprio a pezzi Very Happy
Ciao
Torna in cima
Profilo Messaggio privato
Demetrius
Site Admin
Site Admin


Registrato: Jul 29, 2002
Messaggi: 1686

MessaggioInviato: Dom 15 Apr 2007, 22:08    Oggetto: Rispondi citando

Kova ha scritto:
Si, ho commesso un'inesattezza Very Happy

Quindi in pratica per il calcolo dell'accelerazione di gravitÓ (X e Y), hai usato la formula presente sul datasheet:
A(g)=(T1/T2-0.5)/12.5%
Con T2=Rset/125Mohm
Con T1=il periodo (duty) calcolato dalle due funzioni presenti sul pic (accelerometer_read8y e accelerometer_read8x).
Giusto?

Per l'accelerazione ho usato la formula:

accX=(dx-zeroX)*1000 / ppgX;

dove:
dx Ŕ il duty cycle inviato tramite USB, ed Ŕ appunto T1/T2,
zeroX Ŕ il valore di calibrazione,
ppgX Ŕ appunto 12.5 (in realtÓ si potrebbe fare una calibrazione anche di questo valore, se ti interessa ti dico come, mi pare ci sia scritto anche del datasheet),
il 1000 per avere il valore in milliG.


Citazione:
Mentre per il calcolo della velocitÓ e dello spostamento come hai fatto? Embarassed

devi "integrare" l'accelerazione per ottenere la velocitÓ, e la velocitÓ per ottenere la posizione, io ho usato queste formule in delphi:

Codice:
  if (not ((accX<0) and (vel=0))) then
    accTOTx:=accTOTx+accX;
  vel:=(accTOTx/1000)*9.81*0.1;       // 9.81 per convertire g in m/s^2
  if vel<0 then vel:=0;
  velTOT:=velTOT+vel;
  Velocita.Caption:=FloattoStr(Round(vel)*3.6);     // 3.6 per convertire m/s in km/h
  Distanza.Caption:=FloattoStr(Round(velTOT)*0.1);

0.1 Ŕ una sorta di tempo di campionamento


Citazione:
Inoltre ho letto sul datasheet (pagina 9) che tramite queste due formule:
Asin(Ax/1g)
Asin(Ay/1g)
Ŕ possibile convertire l'accelerazione in gradi.
Ne hai fatto uso?

si, basta applicare quelle formule che hai scritto, ti pu˛ essere utile se devi calcolare l'inclinazione del sensore. Per ottenere valori abbastanza attendibili per˛ devi fare una calibrazione del valore di accelerazione che ti segna il sensore quando Ŕ ad 1G, in quanto molte volte Ŕ impreciso.


Citazione:
P.S. se ho scritto qualche castroneria, perdonami, ma oggi sono proprio a pezzi Very Happy

no problem Wink
Torna in cima
Profilo Messaggio privato Invia email HomePage
Kova
Newbie
Newbie


Registrato: Apr 10, 2007
Messaggi: 15
LocalitÓ: Pianeta terra

MessaggioInviato: Lun 16 Apr 2007, 7:54    Oggetto: Rispondi citando

Demetrius ha scritto:
devi "integrare" l'accelerazione per ottenere la velocitÓ, e la velocitÓ per ottenere la posizione, io ho usato queste formule in delphi:


Ummm, non Ŕ il contrario Confused
CioŔ sapendo l'accelerazione, per calcolare la velocitÓ faccio la derivata, derivando ancora una volta ho la posizione Rolling Eyes

Citazione:
Codice:
  if (not ((accX<0) and (vel=0))) then
    accTOTx:=accTOTx+accX;
  vel:=(accTOTx/1000)*9.81*0.1;       // 9.81 per convertire g in m/s^2
  if vel<0 then vel:=0;
  velTOT:=velTOT+vel;
  Velocita.Caption:=FloattoStr(Round(vel)*3.6);     // 3.6 per convertire m/s in km/h
  Distanza.Caption:=FloattoStr(Round(velTOT)*0.1);

0.1 Ŕ una sorta di tempo di campionamento


In pratica hai messo un ciclo (forse while?) in cui accumuli i valori di "accX" e "vel" (rispettivamente in accTOTx e velTOT) e man mano che ti arrivano i "dati" calcoli la velocitÓ e la posizione, right? Very Happy

Come mai hai messo nell'if accX<0 e anche vel<0, pu˛ accadere che questi siano negativi?

Denghiu Very Happy
Ciao Razz
Torna in cima
Profilo Messaggio privato
Mostra prima i messaggi di:   
Nuovo Topic   Rispondi    Indice del forum -> Schemi e progetti Tutti i fusi orari sono GMT + 1 ora
Vai a pagina 1, 2  Successivo
Pagina 1 di 2



 
Vai a:  
Non puoi inserire nuovi Topic in questo forum
Non puoi rispondere ai Topic in questo forum
Non puoi modificare i tuoi messaggi in questo forum
Non puoi cancellare i tuoi messaggi in questo forum
Non puoi votare nei sondaggi in questo forum

Powered by phpBB 2.0.22 © 2001 phpBB Group
phpBB port v2.1 based on Tom Nitzschner's phpbb2.0.6 upgraded to phpBB 2.0.4 standalone was developed and tested by:
ArtificialIntel, ChatServ, mikem,
sixonetonoffun and Paul Laudanski (aka Zhen-Xjell).

Version 2.1 by Nuke Cops ę 2003 http://www.nukecops.com


Anti-spam
:: Home :: RSS News :: Privacy :: Disclaimer :: Contatti :: Google Sitemap ::
Copyright by DemiSoft. Tutti i diritti riservati. Leggere attentamente il Disclaimer. Engine by PHP-Nuke
Generazione pagina: 0.34 Secondi