Go Down

Topic: time lapse, test red infrarossi (Read 2747 times) previous topic - next topic

leo72


32KHz NON è la velocità di Leonardo, il cui clock è 16 MHz, bensì la frequenza che il micro di Leonardo genera sul pin che pilota il LED IR, lo fa mediante opportuna manipolazione dei registri, cosa che avviene certamente a livello di libreria; quindi si potrebbe verificare qual è il punto della lib che genera i 32KHz e portarli a 38Khz; però se già agendo sui delay, come ti consigliavo prima sei arrivato a questi risultati è una cosa buona; secondo me pilotando il LED a 38khz si risolve tutto.

Se il codice è quello postato, allora la risposta è: No. Quella libreria non manipola nessun registro.
Genera un'onda quadra semplicemente con la tecnica del bit-banging, ossia mette HIGH/LOW velocemente il segnale del pin.

Code: [Select]
void shutterNow()
{
  for(int i=0; i<16; i++) {
    digitalWrite(_pin, HIGH);
    delayMicroseconds(11);
    digitalWrite(_pin, LOW);
    delayMicroseconds(11);
  }
  delayMicroseconds(7330);
  for(int i=0; i<16; i++) {
    digitalWrite(_pin, HIGH);
    delayMicroseconds(11);
    digitalWrite(_pin, LOW);
    delayMicroseconds(11);
  }
}

Partendo dall'articolo in cui si menzionano i tempi richiesti dalla macchina fotografica, hanno scritto questo codice che dovrebbe simulare quando richiesto in tema di frequenza e tempi di on/off dell'impulso.
Ovviamente tutto si basa sul tempo che il micro impiega ad eseguire la digitalWrite, che non è proprio velocissima. Senza un frequenzimetro per misurare il segnale che ti esce sul pin, è difficile. Non ti resta che andare per tentativi. Potresti manipolare direttamente i registri relativi per guadagnare in tempi di esecuzione.

Michele Menniti

Bene, il codice che hai postato rappresenta il burst, cioè il treno di impulsi: sono 16+16 intervallati da una pausa; la precisione non ha molta importanza, però se quei valori generano circa 32KHz sono lontani dal range del LED IR, seppur riconosciuti. Quindi lui può agire variando contemporaneamente quei quattro "11" oppure variando la pausa; certo un oscilloscopio aiuterebbe, ma a questo punto servirebbero anche le specifiche di pilotaggio della fotocamera.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

mantissa00

Ok.. insomma senza frequenziometro ne oscillosciopio non faccio molto, e non li ho ne saprei come usarli.

Il tempo esatto del bit-banging dovrebbe essere 15 microsecondi. Ma arduino ci impiega un po' a fare la digitalWrite.. quindi bisogna sottrarre qualcosa a questo tempo..

Il fatto che con Arduino UNO sembrava andare meglio quando avevo fatto le prove un mesetto fa.. si può spiegare con fatto che l'UNO magari il tempo impiegato per la digitalWrite era leggermente minore..

bah, più o meno ho capito, non saprei come risolvere se non a tentativi random, per fortuna che ora la macchna va molto meglio.. spero che questo post sia utile anche a qualcunaltro!

mantissa00

.. quindi tendenzialmente con un arduino MEGA (che, magari, è più veloce) potrebbe essere un valore di 12?

Michele Menniti

Visto che le prove sono semplici, prova a scendere a da 10 a 9, e prova anche ad aumentare o diminuire la pausa (a passi da 500, inutile usare valori inferiori)
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

leo72


Il fatto che con Arduino UNO sembrava andare meglio quando avevo fatto le prove un mesetto fa.. si può spiegare con fatto che l'UNO magari il tempo impiegato per la digitalWrite era leggermente minore..

La Leonardo e la UNO usano 2 micro differenti, può essere che ci siano leggerissimi tempi differenti di gestione delle porte. Però è una mia supposizione, non so.

Go Up