Pages: 1 2 [3]   Go Down
Author Topic: time lapse, test red infrarossi  (Read 1733 times)
0 Members and 1 Guest are viewing this topic.
Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21624
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
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.
Logged


Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 411
Posts: 11986
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

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

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 68
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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!
Logged

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 68
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 411
Posts: 11986
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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)
Logged

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

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21624
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged


Pages: 1 2 [3]   Go Up
Jump to: