**** ====== RG1 ====== RG1 è un piccolo robot a 2 gambe che cammina grazie a 4 motori in C.C. Dispone anche di un servo per ruotare le gambe così da affrontare le curve. Tutti i motori sono controllati in PWM da un unico processore 68HC11 a 8 bit che raccoglie anche informazioni sulla posizione delle articolazioni (4) sui sensori di prossimità posti nei piedi (4) e sui sensori di contatto sotto ai piedi (8-). Il controllo avviene tramite porta seriale. Sotto al corpo centrale del robot è posizionata la batteria. E’ un pacco di 3 batterie al Litio da circa 11V 1200mAh facilmente rimovibile. Autonomia da verificare. {{ :progetti:stefano:20170823_225115.jpg?400 |}} N.B. prima del suo utilizzo il robot va revisionato in quanto rimangono alcuni guasti da correggere: - 1) I braccetti che collegano il servo alle gambe sono da sostituire. - 2) I morsetti che collegano gli alberi motore con le viti senza fine tendono ad allentare la presa e quindi la vite si sfila. - 3) pulizia e ingrassaggio.   ===== PROTOCOLLO DI COMUNICAZIONE SERIALE ===== Sulla scheda è disponibile un connettore a 4 pin per il collegamento seriale TTL a 5V. Di seguito i contatti: {{:progetti:stefano:contatti2.jpg?200}} {{:progetti:stefano:contatti.jpg?400}} Normalmente la connessione è 9600,8,0,1 tuttavia all’avvio del microprocessore è necessario seguire una particolare procedura che installa un piccolo pacchetto software di 513 bytes indispensabile per utilizzare la porta seriale. FFCE 1000 8680 A722 A723 1C39 8086 30A7 2B86 08A7 260E 1F2E 20FC A62F 81BC 2707 81BD 26F2 7E01 661F 2E20 FCA6 2F97 DC7F 00DD 1F2E 20FC A62F 8180 230A 14DD 0184 7E4C 97D8 2006 14DD 104C 97D8 1F2E 20FC A62F 8180 230A 14DD 0284 7E4C 97D9 2006 14DD 204C 97D9 1F2E 20FC A62F 8180 230A 14DD 0484 7E4C 97DA 2006 14DD 404C 97DA 1F2E 20FC A62F 8180 230A 14DD 0884 7E4C 97DB 2006 14DD 804C 97DB 1F2E 20FC A62F 97D6 7E00 1500 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 000C 0101 0000 0000 000C 0000 CE10 001D 237F EC16 C301 00ED 167E 0100 0000 0000 0000 0000 0000 0000 0000 0000 0018 CE00 D018 6A05 262C 8680 18A7 051C 0008 18A6 0C18 A704 186A 0626 0618 6C06 6F04 3B18 A60D A704 C604 18A6 0818 A700 1808 5A26 F53B 186A 0026 031D 0411 1808 186A 0026 031D 0422 1808 186A 0026 031D 0444 1808 186A 0026 031D 0488 1808 186A 0026 031D 0008 3B86 10A7 30A6 031F 2E80 FCA7 2F1F 3080 FC1F 2E80 FCA6 31A7 2F1F 2E80 FCA6 32A7 2F1F 2E80 FCA6 33A7 2F1F 2E80 FCA6 34A7 2F86 14A7 301F 3080 FC1F 2E80 FCA6 31A7 2F1F 2E80 FCA6 32A7 2F1F 2E80 FCA6 33A7 2F1F 2E80 FCA6 34A7 2F7E 0015 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 00 Per fare ciò bisogna configurare la porta del PC/RASPI/etc. a 1200,8,0,1 quindi accendere la scheda che manda un segnale di break, quindi inviare i 513 byte che verranno riflessi indietro più un carattere “FFh”dal processore per verifica. A questo punto va riconfigurata la porta a 9600,8,0,1 e il robot è pronto. I comandi disponibili sono solo 2: per controllare i motori: 0BCh Servo SXHigh SXLow DXHigh DxLow Timeout - Servo: range 08h..10h posizione centrale 0Ch - SXHigh,SXLow,DXHigh,DXLow: Bit7=Direzione(0 accorcia, 1 allunga), B0..B6 PWM con 01h min power 07Fh max power - Timeout: tempo di attivazione motori = Timeout * 20msec (non valido per servo!) Per leggere i sensori: 0BDh foot Prox1 Prox2 Prox3 Prox4 SXHigh SXLow DXHigh DXLow - Foot: sensori sotto il piede - Prox1,Prox2,Prox3,Prox4: Sensori di prossimità (eventualmente da riutilizzare) - SXHigh,SXLow,DXHigh,DXLow: Posizione articolazioni relative ai 4 motori. TIPICA SEQUENZA DI MOVIMENTO Per far fare un passo si può utilizzare il metodo per posizionamenti successivi ovvero portando i 4 motori a raggiungere 4 determinate posizioni quindi passare a 4 posizioni successive e così via fino a descrivere il passo completo. Per muovere un motore fino alla posizione prefissata è sufficiente un controllo di tipo P ma nulla vieta di adottare altri controlli tipo PID. Un esempio di possibili posizioni è quello sotto riportato: primo passo: 88,80,80,88 88,80,70,70 84,84,80,70 Secondo passo: 80,88,88,80 70,70,88,80 80,70,84,84 E’ invece indispensabile, prima di partire, la verifica della posizione di partenza e quindi far avviare la sequenza dal punto più adatto. Il robot non è in grado di evitare da solo incroci e sovrapposizioni dei piedi. In alternativa i sensori di prossimità possono servire a questo scopo.