Basculante

Muovere avanti e indietro un puntatore laser o una telecamera per video sorveglianza sono applicazioni tipiche dell’utilizzo di un meccanismo basculante, che fa oscillare l’oggetto, avanti e indietro in modo automatico intorno ad un asse.

Componenti da inserire nel 3D System panel.

Dal menu Inputs, seleziono il potenziometro (Slider), Dal menu Outputs, seleziono il Servo Motor Control e il Servo Motor (standard).

Diagramma di Flusso

“Canale 0”

Ciclo Principale

Movimento del servocomando dalla posizione “Angolo = 0” alla posizione “Angolo = 255”.

“Delay”, dipendente da ADC_in

Movimento del servocomando dalla posizione “Angolo = 255” alla posizione “Angolo = 0”.

Copio il ciclo Loop 256 times” e lo incollo sotto il ciclo precedente.

cambio la funzione Calcolo, sostituendo l’istruzione  Angolo = Angolo +1, con l’istruzione Angolo = Angolo -1”, in questo modo la posizione del servocomando si sposta dalla posizione “Angolo = 255” alla posizione “Angolo = 0”.

Il movimento avanti e indietro si ripete finchè il programma è fermato manualmente.

C Code

bascula 5

Angolo

MoveToPosition

Angolo = Angolo  - 1

  • Angolo = 0
  • Angolo = Angolo + 1  

La funzione Calcolo, con l’istruzione Angolo = 0, porto il servocomando nella posizione zero.

Con l’istruzione angolo = angolo + 1”, incremento il valore della variabile “Angolo da 0 a 255, ad ogni ciclo dei 256 definiti con “Loop 256 Times”.

“Delay”, dipendente da ADC_in

bascula 4

Il Component macro con l’istruzione ADC_in=slider_plastic1::Getbyte(), acquisisce il segnale analogico presente sulla porta An0 e lo converte in 256 Byte.

Il ciclo secondario “Loop 256 Times”, con Loop Count = 256, è ripetuto 256 volte.

bascula 3

Nel diagramma di flusso, inserisco il Component Macro per “inizializzare” il Servo Motor control, e il Component Macro per abilitare il controllo del servocomando sul “canale 0”.

Servo Enable

“Canale 0”

bascula 2

In Properties Panel:

  • Collego lo Slider all’ingresso An0.
  • Configuro Il servo Motor (Standar) come “Unconnected”.
  • Attivo il Canale “0”, pin 0 della porta B, del “Servo Motor Control” e lo collego al servocomando “standard_servo1”.

 servo Motor (Standard)

bascula 1

Variabili

  • ADC_in: Variabile di tipo Byte, che controlla la velocità di movimento del servocomando.
  • Angolo: variabile di tipo Byte che definisce la posizione del servocomando.

Nel ciclo secondario, ripetuto 256 volte, inserisco la funzione “Delay”, dipendente da ADC_in; questa istruzione determina la velocita di movimento del servocomando.

Inserisco il Component Macro con l’istruzione:

 Angolo=Servo_control1::MoveToPosition(0,Angolo);

muovo il servocomando collegato al “canale 0” in funzione del valore della variabile “Angolo

Initialize

 GetByte

ADC_in

Riccardo Monti