|
|
|
|
|
ultimo aggiornamento 17 marzo 2009 |
|
Il sensore qui a lato e stato previsto a suo tempo per essere installato nel
"fratello" italiano di
Robozak
ossia
Robonox.
|
|
||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
![]() ADXL322 Analog Devices
Alcune delle caratteristiche
sono :
|
|

Nella figura sopra si può vedere la tensione di
uscita per i due assi nelle varie posizioni del sensore, in nero sono riportate
le tensioni se il sensore è alimentato con una tensione di 3V, in rosso quelle
se alimentiamo il sensore con 5V, come nel caso di collegamento alle porte AD di
ROBOZAK.
Infine in verde è riportato il valore dato dalla conversione del valore
analogico in digitale.
In pratica quando il sensore è in piano la tensione di uscita vale la metà della
tensione di alimentazione, mentre varia da un minimo di 1,8 ad un massimo di 3,2
(con alimentazione di 5V) al cambiare della posizione del sensore.
Praticamente, conviene fissare il sensore nella posizione voluta sul corpo del
robot, poi tramite il display LCD leggere il valore nelle posizioni che vogliamo
"Sorvegliare" e in base a questo scrivere il programma.

Schema elettrico
Materiale per realizzare
il cavo:
|
|
|
Dettaglio connettore su sensore |
Foto del sensore di accelerazione
|
|---|
|
'====================================== ' Lettura_accelerometro.bas ' di Adriano Gandolfo ' www.adrirobot.it '====================================== 'Definizione variabili DIM asse_x AS INTEGER DIM asse_y AS INTEGER 'Inizializzazione LCD e 'messaggio iniziale LCDINIT PRINT "&$" DELAY 500 lettura: asse_x=AD(0) 'Il valore letto dalla porta 0 è salvato nella variabile Asse_x asse_y=AD(1) 'Il valore letto dalla porta 1 è salvato nella variabile Asse_Y PRINT "1Asse X=" PRINT FORMAT(Asse_x,DEC,2) ' Viene mostrato il valore letto PRINT "#$" DELAY 100 PRINT "2Asse Y=" PRINT FORMAT(Asse_y,DEC,2) ' Viene mostrato il valore letto PRINT "#$" DELAY 100 GOTO lettura |
|
'======================================= ' RoboPenguin - Penguin_accelerometro.bas '======================================= DIM Asse_X AS INTEGER DIM Asse_Y AS INTEGER PTP SETON PTP ALLON DIR G6A,1,1,1,0,0,0 DIR G6B,1,1,0,0,0,0 DIR G6C,0,0,0,0,0,0 DIR G6D,0,0,0,0,0,0 ' Settaggio degli ZERO point ZERO G6A,116,105,101,100,100,100 ZERO G6B,100,100,100,100,100,100 ZERO G6C,100,100,100,100,100,100 ZERO G6D,98,98,96,100,100,100 GETMOTORSET G6A,1,1,1,0,0,0 GETMOTORSET G6B,1,1,0,0,0,0 GETMOTORSET G6C,1,1,0,0,0,0 GETMOTORSET G6D,1,1,1,0,0,0 MOTOR G24 SPEED 5 TEMPO 230 MUSIC "CDE" GOSUB standard_position main: Asse_X = AD(0) Asse_Y = AD(1) ' x=502 y=350 Robozak pancia in sù ' x=512 y=657 Robozak pancia in giù IF Asse_Y > 348 AND Asse_Y < 355 THEN GOSUB rialzo_frontale IF Asse_Y > 650 AND Asse_Y < 660 THEN GOSUB rialzo_posteriore IF Asse_Y > 500 AND Asse_Y < 520 THEN GOSUB standard_position GOTO main standard_position: MOVE G6A,100,100,100,,, MOVE G6B,100,10,,,, MOVE G6C,100,10,,,, MOVE G6D,100,100,100,,, DELAY 1000 MUSIC "CDE" RETURN rialzo_posteriore: MOVE G6A,100, 100, 100,,, MOVE G6B,100,15,,,, MOVE G6C,100,15,,,, MOVE G6D,100,100, 100,,, MOVE G6A,100,100, 130,,, MOVE G6B,100,50,,,, MOVE G6C,100,50,,,, MOVE G6D,100,100, 130,,, MOVE G6A,100,100,100,,, MOVE G6B,100,15,,,, MOVE G6C,100,15,,,, MOVE G6D,100,100, 100,,, RETURN rialzo_frontale: MOVE G6B,185,15,,,, MOVE G6C,185,15,,,, MOVE G6B,185,60,,,, MOVE G6C,185,60,,,, MOVE G6B,185,15,,,, MOVE G6C,185,15,,,, RETURN |
| Elenco revisioni | |
| 17/03/2009 | Aggiornato pagina |
| 12/01/2009 | Emissione preliminare |