Evoluzioni 3 |
|||||||||||||||||||
Dino ha partecipato alle sue prime gare Explorer, al Pacinotti e al Von Neumann di Roma con i soli sensori di luce e suono. |
|||||||||||||||||||
Dopo il periodo di fermo tra le due gare, prosegue lo sviluppo. Per primi i sensori di gas. Ne ho messi due per aumentare l'area sensibile, visto che il cerchio utile per ottenere il punto è abbastanza grande. |
|||||||||||||||||||
Questi richiedono una corrente di circa 150mA l'uno per alimentare i filamenti del riscaldatore, per questo gli ho dedicato un LM7805 che, con un minimo di dissipatore, fornisce i 5V stabilizzati a partire dalla tensione di alimentazione della logica (6 elementi NiMh da 2500mAH). |
|||||||||||||||||||
Schemi aggiornati | |||||||||||||||||||
Prima di iniziare lo sviluppo di nuove funzioni SW, ho cambiato il microcontrollore, sostituendo il PIC16f877 con il più potente PIC18f452. L'upgrade HW è stato molto facile, basta sostituire il quarzo a 20MHz con uno a 10MHz, con il PLL 4x interno si ottiene un MCU a 40MHz (100nS a istruzione). Il porting del SW è stato un po' più complicato rispetto a quello HW ma ne è valsa sicuramente la pena: 16KB di flash per il programma, 1.536Byte di ram, un set di istruzioni molto più potente e una serie di migliorie a livello HW molto utili . Per prima cosa ho dovuto trovare un bootloader adatto, il Tiny bootloader occupa solo 100Byte e funziona molto bene. Non è un problema il fatto di usare un loader proprietario invece del solito HyperTerminal. La scelta del compilatore C è praticamente obbligata. Il compilatore C18 di Microchip è abbastanza simile al PICC Hi-tech, è praticamente gratuito per applicazioni amatoriali (le ottimizzazioni che si disabilitano dopo il periodo di prova non influiscono su questo tipo di progetti) e, ovviamente, è perfettamente integrato con l'MPLAB. Una volta verificato il porting in "emulazione" 16f877, ho iniziato ad usare le funzioni specifiche del 18f452. |
|||||||||||||||||||
Ricontrollando tutto il codice durante il porting, mi sono reso conto del tempo che l'MCU perde per effetuare le divisioni in base 10 nelle routine di movimento, anche se con variabili INT e in virgola fissa. |
|||||||||||||||||||
Ora che ho ripristinato le funzionalità che avevo durante le gare (ma con un MCU più potente, un codice più ottimizzato, insomma con molte risorse in più) posso pensare a nuove procedure. |
|||||||||||||||||||
Attualmente queste routine non sono state verificate sull'HW che è ancora in costruzione, potrebbero subire quindi diverse modifiche in un futuro molto prossimo, ma non sui concetti di base. | |||||||||||||||||||
aggiornato il 02 - 08 - 2005
|
|||||||||||||||||||