Version history

Per fortuna questo è solo un hobby e non il mio lavoro principale, la mia produttività è piuttosto bassa: qualche centinaio di righe di programma in un paio d'anni. Ma il tempo che riesco a dedicarci non è molto.


0.1 - inizio lavori 19 luglio 2003

0.2 - 16 agosto 2003
prime prove di movimento, prime implementazioni dell'algoritmo PID

0.3 - 14 aprile 2004
prima versione dimostrabile e pubblicata sul sito. Implementate le funzioni di movimento di base.
Il PID funziona bene, riesco a far muovere il bot ad una precisa velocità e farlo girare dell'angolo che voglio come dimostrato col programma"quadrato.c" e col video pubblicato sul sito.
Implementato riconoscimento ostacoli con bumper ed algoritmo per uscire dagli angoli morti

0.4 - inizio 30 novembre 2004
Cambiato boot loader con versione di Peter Huemer, Shane Tolmie e Pic Bootloader+ di Herman Aartsen.
Questo ha un ritardo di soli 0.2 secondi all'accensione che non provocano movimento inutile del bot all'avvio (5 sec nella versione inizialmente caricata nel MarkIII).
Ho modificato la versione originale per fare in modo che i motori non girassero durante la programmazione:
Motenable = 0
Implementazione riconoscimento ostacoli tramite sensori infrarossi Sharp GPxxx.
Cambiati sensori originali a lungo raggio perché iniziano la misura da 20cm. Vanno meglio i GP2D120 che partono da 4cm. Più che sufficiente la distanza massima di 40cm.
Implementate le funzioni di lettura A/D.

0.41 - inizio 17 gennaio 2005
Dopo il cambio di motori e alcune prove sul campo a Pisa, ho cambiato il rapporto di riduzione degli ingranaggi per aumentare la velocità di esplorazione del campo. Da 269:1 sono passato a 101:1, passando da una velocità teorica massima di 260cm/s ad una di 690cm/s, i motori hanno ancora sufficiente potenza e questo mi dovrebbe permettere un buon aumento di velocità con ancora un alto margine di controllo.
28-01-2005
Ho tolto i sensori "LineX" sul paraurti, inutili per un robot explorer e ho aggiunto altri 2 sensori IR Sharp GP2D120 per rivelare ostacoli frontali usando le porte A/D precedentemente assegnate ai sensori di linea.
Ho aggiunto anche tre fotoresistenze al CdS per rivelare le sorgenti di luce

0.42 - inizio 21 marzo 2005
modificato algoritmo per uscire dagli angoli morti per adattarlo ad un diverso numero e tipo di sensori

0.5 - 28 marzo 2005
Trovati falsi allarmi dovuti ai sensori IR che restituiscono impulsi quando sono investiti dalla sorgente di luce.
Inserito debounce su rivelazione luce per diminuire falsi allarmi.
Quando comincia a rivelare la luce diminuisce la velocità, altrimenti i tempi di intervento sono troppo ristretti e si rischia di perdere la sorgente o di sbatterci contro

0.6 - 1 maggio 2005
Aggiunto circuito per la rivelazione del tono a 4KHz e relativa routine di gestione. Le logiche di rivelazione, debounce e segnalazione sono simili a quelle usate per la rivelazione delle sorgenti luminose

1.0 - 7 maggio 2005
Con questa versione Dino ha partecipato alla prima gara all'ITIS Von Neumann con un discreto piazzamento.
Modificato tra la prima e la seconda manche per disabilitare la ricezione del suono mentre Ë in pausa dopo aver rivelato la luce, altrimenti c'è il rischio che entri in un loop suono-luce se rivela il tono insieme alla luce.
Tarate soglie di luce per il campo di gara. Aumentato delay dopo "TargetOK".

1.1 - 10 maggio 2005
Disabilitato sensore suono anche durante beep per evitare che riveli il suo tono come segnale a 4KHz
Regolati ritardi, soglie e velocità min e MAX

Ha partecipato anche alla gara al Pacinotti, problema sull'HW del suono nella seconda manche, risolto.

2.0 - 1 giugno 2005
Installato bootloader "tiny boot loader" adatto per Pic18, occupa solo 100byte ricompilabile per la frequenza di clock voluta.
Iniziato porting su PIC18F452 con compilatore Microchip C18 e clock a 40MHz

18_1.0 - 8 giugno 2005
Porting finito in imitazione 16f877 anche con clock a 40MHz

18_2.0 - 13 giugno 2005
Modificata gestione interrupt sfruttando le caratteristiche del 18f452
TMR0 è gestito come interrupt ad alta priorità.
Encoder gestiti come interrupt a bassa priorità su INT1 e INT2, solo il fronte di salita genera interrupt, sono quindi dimezzati gli interrupt generati rispetto alla versione precedente.
Non cambia il cablaggio rispetto alle versioni precedenti, sono solo invertiti EncoderXPulse con EncoderXDir.

18_2.1 - 17 luglio 2005
Iniziato sviluppo comunicazione I2C
Nelle procedure di movimento sono state ricalcolate le costanti ragionando in base 2, in questo modo si sono sostituite le divisioni con gli shift, risparmiando centinaia di microsecondi a procedura.

18_2.2 - 20 agosto 2005
Sviluppate procedure comunicazione I2C
Sviluppato HW e SW per I/O expander per pilotare LCD e tastiera

18_2.3 - 3 settembre 2005
Sviluppate procedure per la scrittura su display LCD

18_2.4 - 5 settembre 2005
Cambiata procedura inizializzazione, il ciclo idle prima della partenza e' gia
nell'RTOS.
Iniziato sviluppo routine rivelazione gas

18_2.41 - 12 settembre 2005
Terminate procedure rivelazione gas
Lcd enable collegato a porta RD7 e non piu' a I/O expander per problema temporizzazioni:
lo strobe all'LCD (En=1, En=0) deve essere eseguito quando il dato e' stabile sul bus,
il PCF8574 garantisce la stabilita' dei segnali sulla porta d'uscita solo dopo 4uS
dall'ultimo colpo di clock dopo l'ACK.
Capitava spesso che il dato sull'LCD non fosse corretto, facendolo impazzire.

18_2.42 - 1 novembre 2005
Ottimizzate procedure LCD.
Cambiata Interrupt Service Routine ad alta priorita':
Time keeping esterno all'ISR
Interrupt dell'I/O expander 2 (Keypad) su INT0
Sviluppate procedure di base per keypad.
Tolto bootloader. programmazione e debug con ICD2

18_2.43 - 16 novembre 2005
Ottimizzata procedura interpretazione e debounce tasti.

18_2.44 - 17 novembre 2005
Suddiviso codice in piu' file per facilitarne la scrittura

18_2.45 - 3 dicembre 2005
Ottimizzato main raggruppando le user interfaces
(LCD, keypad, ecc...) sotto un unico semaforo.
Finita gestione display e tastiera con menu visualizzazione delle variabili
e modifica e salvataggio in EEPROM delle costanti

18_2.50 - 1 gennaio 2006
Porting su 18F4525
il grosso del cambiamento e' sulla configurazione dell'A/D converter,
nell'utilizzo non e' cambiato niente
Finite procedure bussola
lettura bussola (1 byte -> 0-360° = 0-255) ogni 100 ms
calibrazione automatica bussola sui quattro punti cardinali

aggiornato il 05 - 12 - 2005