PIC16F877 |
|
Controllo fino a 30 servomotori via seriale con PIC.
Il progetto è stato sviluppato per poter sostituire con una scheda proprietaria il sistema di controllo installato nei mini umanoidi della vistone e della kondo. Benchè questa versione non monta a bordo il giroscopio e l'accelerometro è predisposta per poterlo ospitare. In effetti si tratta niente di più che una estensione della scheda di controllo del progetto robotHand V2 nella quale si è sostituito il PIC16F876 con l'analogo PIC16F877 che mette a disposizione una ampliata quantità di I/O mantenendo la compatibilità del software e delle potenzialità quali ad esempio la frequenza del clock. Rimane del tutto inalterato anche il circuito di reset e la porta di comunicazione seriale implementata con circuito integrato MAX232. Realizzandola in versione SMD sarà possibile dimezzare gli ingombri, cosa che sconsiglio di fare dato che il punto di forza di questa scheda è proprio la robustezza dovuta all'elettronica tradizionale.
Una volta caricato il bootloader sarà possibile utilizzare l'umanoide nella stessa maniera dei "pupazzetti commerciali", con l'unica accortezza che dovrà essere caricato il programma in formato .hex ottenuto dalla compilazione del programma il cui sorgente sia ad esempio in ANSI C, oppure Microbasic o altri linguaggi a preferenza del programmatore.
download bootloader download downloader
Per nozioni teoriche in merito al funzionamento del bootloader e del downloader si rimanda alla lettura della tesina RobotHand V2 presente in questo sito. scarica ->Robothand V2
download del file FidoCad del controllo 22/30 servomotori con 8 canali analogici
Come per il modello del controllo di 14 servo, sotto riportato a titolo di comparazione, le alimentazioni dei servomotori rimangono disgiunte, quindi nelle piste in verde sarà presente la tensione specifica dei servomotori impiegati. Le piste di questa sezione di alimentazione sono state rinforzate a 10 punti per consentire il passaggio dei diversi ampere che potranno essere richiesti dai molti servomotori contemporaneamente in moto. Nel caso si installassero i servomotori progettati in questi sito potrebbe essere necessario rinforzare ulteriormente questa pista. IL regolatore di tensione uA7805 viene montato in posizione distesa e fornisce alimentazione e riferimento solo per la logica e gli eventuali segnali analogici (se utilizzati).
Si noti che nella sezione dedicata ai segnali analogici (pin da 1 a 10 escluso il pin 6) la fila dei pin centrali degli streep è stata scambiata di funzionalità rispetto alla versione a 14 servo, questo per consentire una eventuale commutazione via software della porta da ingressi analogici a ingressi/uscite digitali consentendo il collegamento di ulteriori 8 servomotori. Il jumper presente al pin 11 può essere chiuso per portare l'alimentazione a 5 volt dei sensori analogici da campo(ad esempio 8 potenziometri) tenendo ben presente che si tratta della medesima fonte che energizza il microprocessore. (ne è quindi sconsigliato l'utilizzo nonostante risulti davvero di grande comodità).
Il pin 6 è connesso alla porta RA6 del microcontrollore, quindi i più esperti potranno comunque utilizzarlo per pilotare un ulteriore servomotore.
Nel caso si volesse alimentare gli otto servo di questa porta con fonte separata, come per gli altri 22, sarà necessario eseguire un ponte con uno spezzone di filo nel retro della scheda tra due piste di colore verde.
Una ulteriore miglioria rispetto alla versione per 14 servomotori è la presenza dei fori di ancoraggio per viti da 3 millimetri che la rende più affidabile una volta installata nello chassy dell'umanoide.
La maggiorazione degli ingombri non risulta un problema visto che questa scheda è stata progettata per essere montata nell'umanoide che sarà a breve progettato presso il IAS-LAB di dimensione più che raddoppiate rispetto sia al kondo che al Vistone.
Ecco lo schema elettrico della scheda di controllo per i 30/22 servomotori.
scarica lo schema elettrico del controller 30/22 servo con PIC16F877
come si nota facilmente deriva dal progetto del PLC autocostruito con PIC Micro-GT P877 privato degli ingressi digitali stabilizzati tramite gli zener e delle relative spie LED di segnalazione dello stato dell'input. Analogamente per le uscite digitali sono stati tolti i darlighton di potenza e i relativi LED. Grazie a questa semplificazione circuitale la scheda risulta molto compatta. Tutti i registri dell' I/O dovranno essere impostati via software come uscite per ottenere il pilotaggio 30 servomotori sacrificando la possibilità di usare gli ingressi analogici.
TRISA=0;
TRISB=0;
TRISC=0;
TRISD=0
Se invece abilitiamo il PORTA come ingressi analogici ci rimarrà la possibilità di pilotare 22 servomotori o per i più esperti nella programmazione 23 potendo utilizzare anche il pin 6 collegato internamente a RA4 del PORT-A del PIC.
La due schede qui presentate sono entrambe utilizzabili installando le versioni pin to pin compatibili serie 18Fxxxx, ad esempio il PIC 18F4480 oppure 18F4580 sono entrambi compatibili con il 18F877 mentre il PIC 16F876 è interscambiabile con il pic18F2550. (dovrebbe esserlo anche con il 18F2455).
Attenzione: A parte la piedinatura coincidente si parla di due famiglie diverse sia di potenzialità che di generazione quindi il software dovrà essere rivisto. Chi possiede un vecchio programmer della serie 16 non potrà ad esempio programmare la seri 18. colga l'occasione per aggiornarsi, ne vale di certo la pena visto che i chip costano meno sono più potenti ed affidabili.
Ecco il layout dei componenti che ci aiuterà molto nella fase di montaggio della scheda elettronica.