Arduino Serial v2.0a

24 11 2010

Ciao a tutti, ieri sera sono finalmente riuscito a riprendere in mano un vecchio (fallimentare) progetto: Arduino Serial. Mesi fa, facendo degli acquisti su un noto negozio online di ciarpame elettronico, mi aggiudicai una scheda Arduino Serial PCB, ossia la schedina stampata per montare Arduino con la porta seriale.

Arduino Serial 2.0a PCB

Arduino Serial 2.0a PCB

Il simpatico portale di ecommerce, analizzando la mia scelta della schedina, mi propose automaticamente un chip ATMEGA328, dotato di bootloader Arduino precaricato: vedendo questa simpatica associazione, non mi posi minimamente il problema ed aggiunsi all’ordine il suddetto chip. Dopo pochi giorni il tutto pervenne a casa e cominciai il montaggio dei vari componenti (racimolati dalle scorte o acquistati in vari negozi di Torino), giunto però alla fase di test, mi resi conto che l’IDE Arduino non prevedeva la possibilità di gestire una scheda Arduino Serial con a bordo un ATMEGA328:

Selezione delle schede su Arduino

Selezione delle schede su Arduino

Documentandomi (in ritardo) scoprii che impiegare l’ATMEGA328 è possibile, ma è necessario scrivere un’apposita sezione nella configurazione dell’IDE; il punto è che non volevo essere vincolato a troppi tricks, dovendo sempre cambiare file a mano perdendomi le modifiche con l’update dell’IDE, così regalai il 328 ad un amico (che aveva un Arduino Diecimila dotato di ATMEGA168) e mi procurai dalla Polonia un ATMEGA8 vergine.

L'ATMEGA8 e la selva di componenti

L'ATMEGA8 e la selva di componenti

Il problema a questo punto è stato di trovare un modo per programmare l’ATMEGA8 in modo tale che potesse accettare i segnali giunti attraverso l’interfaccia seriale.

La DB9, l'alimentazione e il 7805

La DB9, l'alimentazione e il 7805

Cercando su internet, mi imbattei in un howto, scritto direttamente dai creatori di Arduino, che spiega dettagliatamente la procedura per la programmazione del chip tramite ICSP. Non essendo io un elettronico, spendere diverse decine di euro per un programmatore di microchip Atmel mi è sembrato inopportuno, quindi, sempre seguendo la succitata guida, ho optato per costruire un programmatore parallelo, come spiegato qui.
Lo schema di funzionamento è piuttosto semplice.

Schema del programmatore ICSP via Parallela

Schema del programmatore ICSP via Parallela

Utilizzando un cavo riciclato da un vecchio computer, si è trattato di fare sei sole saldature a stagno, una bella colata di colla a caldo per proteggere il tutto dai cortocircuiti e una scocca di plastica, per far apparire il tutto un po’ più professionale :-).

La mia versione del programmatore ICSP

La mia versione del programmatore ICSP

Seguendo i passi descritti nei documenti di Arduino, ed utilizzando la comoda funzione di programmazione già pronta nell’IDE, l’intero procedimento è filato liscio. L’ultimo scoglio è stato quello di recuperare un cavo seriale adatto; Arduino Serial ha bisogno di un cavo DB9-DB9 dritto, non vanno quindi bene i cavi comunemente in dotazione ai modem (che in realtà sono cavi incrociati, chiamati null-modem). Scavando in vari scatoloni pieni di rottami sono riuscito a recuperare un cavo adatto e, mediante il tester, ho verificato che i piedini fossero connessi 1-1.

Seriale dritto DB9-DB9 femmina-femmina

Seriale dritto DB9-DB9 femmina-femmina

Purtroppo la mia mania di smanettamento mi ha fatto tralasciare un importante particolare: il cavo a mia disposizione è un femmina-femmina. Da una parte va bene perché le porte seriali (quelle che DOS\Windows chiama COM) sono di tipo maschio (quelle con i piedini, per intenderci), ma sull’Arduino saldai un connettore DB9 femmina! 😦 Fortunatamente in un cassetto dell’ufficio ho scovato un gender changer DB9; se vi doveste trovare nella stessa situazione, fate attenzione a non utilizzare un changer null modem, altrimenti la scheda e il computer saranno incapaci di comunicare.

DB9 Gender Changer

DB9 Gender Changer

Naturalmente tutti questi pasticci potevano essere evitati facendo un’oculata scelta dei componenti prima di mettersi al saldatore, ma, si sa, smanettone è sinonimo di pasticcione :-D. Comunque, ecco come appare il cavo alla fine.

Cavo seriale dritto DB9-DB9 maschi-femmina

Cavo seriale dritto DB9-DB9 maschi-femmina

Per finire un’indicazione importante: Arduino Serial non resetta la connessione via software, questo si traduce nel fatto che se volete uploadare il vostro codice dall’IDE alla schedina (mentre questa è accesa) dovete operare, manualmente, un piccolo trucco:

  1. Compilate il vostro codice sull’IDE e verificate che tutto sia a posto
  2. Controllate che Arduino Serial sia connesso, alimentato e che l’IDE selezioni la scheda corretta (Arduino NG or older w/ ATmega8)
  3. Tenete premuto il tasto reset sulla scheda Arduino
  4. Avviate la compilazione e l’upload del codice
  5. Quando l’IDE vi restituirà, nella finestra di output/debug, il messaggio: Binary sketch size: #### bytes (of a #### byte maximum)
    rilasciate il tasto reset.

Se eseguirete tale procedura correttamente, la scheda Arduino effettuerà il reboot, il bootloader per qualche secondo ascolterà la porta RS323 in attesa di un nuovo codice, l’IDE spedirà correttamente il binario e tutto funzionerà perfettamente. Nelle nuove versioni di Arduino tutto questo pasticcio non esiste perché quando l’IDE vuole spedire il codice, chiede alla schedina di ripartire e il bootloader dell’ATMEGA si troverà il nuovo firmware in attesa di essere caricato.

Per concludere alcune piccole considerazioni (personali):

  • Arduino Serial, soprattutto utilizzando un ATMEGA8, è molto più limitato e macchinoso da utilizzare di una più recente versione USB.
  • Non costa molto di meno rispetto ad un Arduino USB bello e fatto, quindi se si vuole risparmiare questa è sicuramente la strada sbagliata.
  • Sebbene la piedinatura del Serial sia compatibile con le nuove schede e, di conseguenza, anche con gli shield, il fatto che si vadano ad utilizzare componenti discreti rende lo spazio sopra la board inutilizzabile, meglio mettere eventuali espansioni sotto.
  • Essendo la porta seriale non alimentata, Arduino Serial necessita di un’alimentazione esterna per funzionare (questo vale anche per la fase di programmazione).

Detto questo, se vi chiedete perché, avendo a disposizione dei comodi Arduino 2009 o (recentemente) l’Arduino UNO, mi sono lanciato in questa ennesima follia… beh:

  1. perché si poteva fare 😛
  2. perché voglio provare questo aggeggio su computer veramente vecchi, privi di porte USB 🙂

Alla prossima folle autocostruzione.

Simone





PIC Programmer

7 07 2009

Per il programmatore PIC mi sono basato sul PCB di Paolo (ariadivetro.it) e ho recuperato l’alimentatore di un vecchio portatile IBM per alimentarlo. La base di tutto lo schema è il 7812: è necessario utilizzare un alimentatore che generi una tensione superiore ai 13.5V ma prima di fare la “prova del fumo” è consigliabile consultare il relativo DataSheet per capire il range di operazione del regolatore.
Insomma, il mio 7812 poteva supportare fino a 25V in ingresso, l’alimentatore IBM ne restituisce 19, quindi era adatto.

L'alimentatore del Programmatore PIC

L'alimentatore del Programmatore PIC

Purtroppo sono stato poco avveduto e ho acquistato il connettore di alimentazione prima di controllare lo spinotto dell’alimentatore, così si è resa necessaria la sostituzione.

Per il connettore BD25 ho utilizzato questo schema di Pin-Out. Ecco le foto del risultato:

Programmatore PIC, visione laterale

Programmatore PIC, visione laterale

Programmatore PIC, visto dal lato saldature e ponticelli

Programmatore PIC, visto dal lato saldature e ponticelli

Programmatore PIC, visione del lato saldature dall'alto

Programmatore PIC, visione del lato saldature dall'alto

Visto che il sistema di ponticelli è un po’ complesso, ho ripreso in mano il progetto FidoCAD e ho apportato alcune modifiche, riducendo al minimo i ponticelli. Purtroppo, non ho avuto occasione di provarlo:

http://www.gaeeb.org/tek/uai_ccd/programmatore_pic_0.1.fcd

Il programmatore di prototipo è stato realizzato grazie alle sapienti doti da saldatore di Giuseppe “Fox” Treccarichi, realizzatore delle schede PCB di tutto il progetto.

Simone





PCB alimentatore

6 07 2009

Per quanto riguarda l’alimentatore ho utilizzato lo schema presente su Ariadivetro.it

Una volta realizzato l’intero PCB è emerso però un problema, riscontrato anche da altri autocostruttori: la linea -15V quando scarica ha una tensione di -20V. Sembra che per ovviare a tale problema sia necessario aggiungere una resistenza di carico da  qualche in parallelo all’uscita da -15V; nel seguente schema ho aggiunto una piazzola denominata 10Kohm (opt):

PCB alimentatore UAI-CCD

In questo modo, solo nell’eventualità in cui l’alimentatore restituisca una tensione diversa da -15V, sarà possibile aggiungere la resistenza di carico nell’apposita piazzola.

Simone





Schema PCB UAI-CCD

6 07 2009

Ecco una copia dello schema del PCB v1.3 in formato FidoCAD:
PCB v1.3
e un’immagine dello stesso schema in formato PNG, per i controlli:

PCB v1.3

PCB v1.3

Simone





Saldature sul PCB

6 07 2009

Dopo aver forato e fresato il PCB è necessario procedere con le saldature, le prime sono quelle relative alle masse, poi vengono i ponticelli, i componenti e gli zoccoletti (sockets) per gli integrati.
Avendo notato che i PDF su uai-ccd sono un po’ datati, pubblico qui i PDF relativi alla versione 1.3 che mi sono stati dati dal gentilissimo Michele:

Masse PCB 1.3

Componenti PCB 1.3

Connettori PCB 1.3

Zoccoli PCB 1.3

Simone





Forare il PCB della UAI-CCD

6 07 2009

Quando mi è venuta la malsana idea di realizzare la camera CCD dell’UAI (www.uai-ccd.com) il primo problema da risolvere è stato la realizzazione del circuito stampato (PCB).
Uno dei vincoli che mi posi, prima di iniziare il progetto, fu di mantenere un profilo di professionalità nella realizzazione di tutti i componenti: assolutamente non volevo fare un “prototipo” ma un qualcosa che potesse essere considerato quasi da produzione.

Essendo io una ignorante elettronico, ho cominciato a chiedere a vari amici in cerca di un valido supporto per la parte circuitale. Fortunatamente il mio amico Beppe (detto Fox) si è dichiarato interessato ad occuparsi della parte elettronica.

Il primo passo è stato realizzare il PCB: partendo dagli schemi (versione 1.3) FidoCAD presenti sul sito http://www.uai-ccd.com .
La stampa del circuito è stata fatta, da Giueppe, utilizzando una stampa laser su foglio lucido sviluppando la scheda vergine usando un Bromografo a 5 lampade UV.
Personalmente mi sono occupato della foratura delle piazzole: utilizzando il trapano a colonna di un amico tornitore, ho fissato la scheda PCB su di un pezzo di legno, che avevo preventivamente lisciato con una seppiatrice (di quelle che usano i restauratori o i decoratori); questo supporto di legno è stato in seguito chiuso in una morsa con 2 movimenti.

Agendo come una sorta di CNC umano, io e Luciano (l’amico tornitore), ci siamo presi un asse della morsa a testa, e abbiamo forato le circa 200 piazzole con una singola punta da 0.8mm. La cosa importante è che il mandrino deve stare a circa 4~5 mm dal PCB, di modo da poter capire quando si trova esattamente sopra la piazzola.

Questa è una brutta foto del risultato finale:

Scheda in controluce per far vedere i fori

Scheda in controluce per far vedere i fori

Simone