braccio_robotico
Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
| Entrambe le parti precedenti la revisioneRevisione precedenteProssima revisione | Revisione precedente | ||
| braccio_robotico [2021/07/16 19:50] – [Collaudo] admin | braccio_robotico [2023/03/07 08:23] (versione attuale) – [Collaudo] admin | ||
|---|---|---|---|
| Linea 1: | Linea 1: | ||
| + | |||
| + | |||
| + | |||
| ====== Braccio Robotico ====== | ====== Braccio Robotico ====== | ||
| Linea 212: | Linea 215: | ||
| Per tutti i componenti punta da 0,8mm tranne che per: stripline, morsetto a vite, induttore, regolatore dove serve la punta da 1mm. | Per tutti i componenti punta da 0,8mm tranne che per: stripline, morsetto a vite, induttore, regolatore dove serve la punta da 1mm. | ||
| - | Ho usato la libreria servo e l' | + | La scheda è stata collaudata usando un reostato come carico e 100mA di corrente e la tensione in uscita, regolata con l' |
| + | |||
| + | {{: | ||
| + | |||
| + | |||
| + | Si osserva un ripple di circa 20mV e il tipico andamento della tensione su Vout prodotta dalla commutazione del regolatore. | ||
| + | |||
| + | ===== Software ===== | ||
| + | |||
| + | |||
| + | Ho usato la libreria servo e l' | ||
| + | |||
| + | FIXME aggiustare i valori dopo la riparazione | ||
| Range valori per i 5 attuatori: | Range valori per i 5 attuatori: | ||
| Linea 221: | Linea 236: | ||
| * base pin 11: 80 sinistra 45°, 40 dritto, 0 45° a destra | * base pin 11: 80 sinistra 45°, 40 dritto, 0 45° a destra | ||
| + | Codice adattato da [[https:// | ||
| + | |||
| + | <code C> | ||
| + | /* da https:// | ||
| + | | ||
| + | | ||
| + | | ||
| + | */ | ||
| + | |||
| + | #include < | ||
| + | |||
| + | // per il range di valori vedi qui | ||
| + | // https:// | ||
| + | Servo base; // 1 0 - 180 | ||
| + | Servo shoulder; | ||
| + | Servo elbow; | ||
| + | Servo wrist_rot; | ||
| + | Servo gripper; | ||
| + | |||
| + | // posizione iniziale | ||
| + | byte pos[5] | ||
| + | // serve per la funzione goPos() | ||
| + | byte oldpos[5] = {90, | ||
| + | |||
| + | // sequenza coordinate | ||
| + | //byte seq[][5] = { | ||
| + | // {90, | ||
| + | // {110, | ||
| + | // {110, | ||
| + | // {110, | ||
| + | // {30, | ||
| + | // {30, | ||
| + | // {30, | ||
| + | // {90, | ||
| + | // {90, | ||
| + | // {90, | ||
| + | // {40, | ||
| + | // {40, | ||
| + | // {40, | ||
| + | // {70, | ||
| + | // {70, | ||
| + | // {70, | ||
| + | // {45, | ||
| + | // {45, | ||
| + | // {45, | ||
| + | // {90, | ||
| + | //}; | ||
| + | |||
| + | byte seq[][5] = { | ||
| + | {90, | ||
| + | {140, | ||
| + | {140, | ||
| + | {140, | ||
| + | {140, | ||
| + | {90, | ||
| + | {90, | ||
| + | {90, | ||
| + | }; | ||
| + | |||
| + | // avvio se arriva del testo da seriale | ||
| + | bool run = false; | ||
| + | |||
| + | void setup() { | ||
| + | Serial.begin(115200); | ||
| + | |||
| + | // abbinamento servo-pin | ||
| + | base.attach(11); | ||
| + | shoulder.attach(10); | ||
| + | elbow.attach(9); | ||
| + | wrist_rot.attach(6); | ||
| + | gripper.attach(5); | ||
| + | |||
| + | // comando posizione iniziale | ||
| + | base.write(pos[0]); | ||
| + | shoulder.write(pos[1]); | ||
| + | elbow.write(pos[2]); | ||
| + | wrist_rot.write(pos[3]); | ||
| + | gripper.write(pos[4]); | ||
| + | |||
| + | Serial.println( "#### invia testo per avviare e per fermare la sequenza ####" ); | ||
| + | } | ||
| + | |||
| + | void loop() { | ||
| + | |||
| + | startStop(); | ||
| + | while (run) { | ||
| + | |||
| + | for ( byte line=0; line < (sizeof(seq)/ | ||
| + | Serial.print(" | ||
| + | for( byte i=0; i<5; i++ ) { | ||
| + | Serial.print(" | ||
| + | pos[i] = seq[line][i]; | ||
| + | } | ||
| + | Serial.print(" | ||
| + | goPos(0, | ||
| + | goPos(1, | ||
| + | goPos(2, | ||
| + | goPos(3, | ||
| + | goPos(4, | ||
| + | delay(1000); | ||
| + | startStop(); | ||
| + | } | ||
| + | delay(2000); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | void goPos(byte servo, Servo instance, byte pause) { | ||
| + | if (oldpos[servo] >= pos[servo]) { | ||
| + | for ( byte i = oldpos[servo]; | ||
| + | instance.write(i); | ||
| + | delay(pause); | ||
| + | } | ||
| + | } | ||
| + | if (oldpos[servo] <= pos[servo]) { | ||
| + | for ( byte i = oldpos[servo]; | ||
| + | instance.write(i); | ||
| + | delay(pause); | ||
| + | } | ||
| + | } | ||
| + | | ||
| + | } | ||
| + | |||
| + | void startStop() { | ||
| + | // se arriva del testo dal monitor seriale | ||
| + | if (Serial.available()> | ||
| + | // senza questo ritardo non legge tutti i dati del buffer! | ||
| + | delay(10); | ||
| + | Serial.println(" | ||
| + | Serial.print(" | ||
| + | Serial.println(Serial.available()); | ||
| + | // svuota il buffer | ||
| + | clearInputBuffer(); | ||
| + | Serial.print(" | ||
| + | Serial.println(Serial.available()); | ||
| + | // toggle della variabile che attiva la sequenza | ||
| + | run = !run; | ||
| + | Serial.print(" | ||
| + | Serial.println(run); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | void clearInputBuffer() { | ||
| + | while (Serial.available() > 0) { | ||
| + | char t = Serial.read(); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | </ | ||
| ===== Risorse ===== | ===== Risorse ===== | ||
| Linea 228: | Linea 391: | ||
| * {{ :: | * {{ :: | ||
| * {{ : | * {{ : | ||
| + | * {{ :: | ||
| ===== Navigazione ===== | ===== Navigazione ===== | ||
braccio_robotico.1626465028.txt.gz · Ultima modifica: da admin
