|
8911
|
International / Italiano / Re: Controllare Infrarossi
|
on: July 25, 2011, 09:11:05 am
|
addesso suggerisco la classica soluzione fessa, scontata e semplice. Ma usare un 74**04 un condensatore ed una resistenza per farsi un oscillatorino no? Ti avanzerebbero anche altre porte che potresti usare per fare altro... http://www.fairchildsemi.com/an/AN/AN-118.pdfnon sarà "così parlò zaratustra" ma è un'opzione...  Evidentemente mi stai prendendo per il c...  Un po' di autoquote visto che proprio non ne vuoi di leggere i miei post: Che dici metto un 555 e non se ne parla più? Anche se questo va contro l'idea del risparmio energetico, visto che il 555 in azione mi consuma più del micro, credo. La seconda è quella che dicevo col 555, ripeto lo scopo è didattico, quindi il problema del consumo reale non si pone, vorrei però fare tutto col micro (un tiny85 in stand-alone) Quote
Sicuro che non vuoi usare un 555?
Con quello ovviamente è già tutto risolto, il problema è che questo vorrebbe essere uno schema didattico per il risparmio energetico, anche se in realtà sarà alimentato con un alimentatore esterno; il 555 non lo posso spegnere e continuerebbe a consumare corrente. Ora te ne esci con gli inverter ]  che poi lo 04 è più grande e moooolto meno preciso del 555 che riciede solo due R ed un C per generare la frequenza che mi servirebbe. Visto che la sorpresa è perduta e non posso più farti inczz sono costretto a fare 
|
|
|
|
|
8912
|
International / Italiano / Re: Controllare Infrarossi
|
on: July 25, 2011, 08:56:08 am
|
|
@ BB: Mi pare che si stia dicendo tutti la stessa cosa, ma voglio farti un piccolo esempio dell'uso di una libreria, proprio in uno scambio di post con Astrobeed e proprio riguardo lo sleep: Lui mi diceva di aver ottenuto un consumo del micro 328 sull'ordine dei nA, mentre io, in qualsiasi condizione possibile non scendevo sotto i 200µA, feci centinaia di prove fino ad arrivare a piegare i pin Vcc e AVcc del micro su Arduino per le misurazioni, niente. Preso dalla disperazione andai a cercarmi dei link in materia e trovai che un americano urlava di gioia per essere arrivato ai miei stessi consumi, quindi a questo punto chiesi a astrobeed che cavolo era riuscito a combinare (lo sketch di prova me lo aveva fornito lui!!!), finché su un altro link trovo una riga di comando in più, la inserisco nel mio schecth, risultato 0,0-0,1µA cioé probabilmente una cinquantina di nA; quando glielo dissi lui andò a scovare nel suo pc una libreria che veniva (mi pare d'aver capito così) caricata in automatico e che eseguiva tale riga altrove. Tutto ciò a dimostrazione che non sempre le cose "fatte" risolvono tutto. Se lui è in grado di lavorare a quei livelli sui registri di un micro penso che ne godiamo tutti dei benefini ce ne risultano; d'altra parte se tutti ci fermassimo alle cose fatte, solo per non reinventare qualcosa, tu l'avresti mai realizzato il tuo fantastico Dude-UP?
@ Leo: Allora, per un'applicazione seria userei il 328, al di là di ogni cosa parliamo di 1 euro di differenza e di una dimensione più grande, ma a questo punto si avrebbe di sicuro altra circuiteria. Trattandosi di uno schema didattico non ho problemi ad usare tempistiche sballate, come ho fatto a suo tempo in altre applicazioni, prima di riuscire a programmare correttamente i fuses in base al clock che impostavo. Quindi niente quarzo
@ Astrobeed Farò le prove che mi consigli, anche se mi sfugge qualche passaggio: nel tuo code ci sono: OCR2A = 211; TCCR2A = 0b01000011; TCCR2B = 0b00001001. Devo usare OCR1A invece del 2A? Poi mi consigli di variare l'1C, in pratica aggiungo unaltra riga in setup per vedere se variando questo valore è influenzato il duty cicle?
@ tutti e due: io mi ammazzo a scrivere un post e voi nel frattempo maroneggiate con lingue straniere? Già litigo con l'Inglese, mi manca pure il tedesco: Così parlò Zarathustra, nei miei ricordi filosofici è l'opera di Nietsche (non mi ricordo se si scrive propro così) a cui sembra si ispirò quello squinternato di Hitler dopo che da caporale diventò un politico "socialista".
|
|
|
|
|
8913
|
International / Italiano / Re: Controllare Infrarossi
|
on: July 25, 2011, 06:00:47 am
|
Il codice della libreria permetteva di generare il carrier a 38khz con un comando. (essendo una libreria).
Probabilmente si, non conosco quella libreria e non so come lavora, però così non impari nulla di nuovo e non comprendi quali possono essere i limiti dell'ATmega/Arduino. Con la mia soluzione hai imparato che si possono manipolare direttamente i timer dell'ATmega scavalcando Wiring e che è possibile utilizzarli per generare un'onda quadra di varie frequenze, il tutto con solo tre righe di programma  Già, come dicevo, al di là di aver risolto il problema, è l'aver imparato la tecnica che mi aiuterà a risolvere parecchi problemi
|
|
|
|
|
8914
|
International / Italiano / Re: Controllare Infrarossi
|
on: July 25, 2011, 05:50:56 am
|
Traduci  ma premetto che non devo usare gli infrarossi come portante per trasmettere comandi (tipo telecomando), sto semplicemente creando una barriera on-off.
|
|
|
|
|
8915
|
International / Italiano / Re: Controllare Infrarossi
|
on: July 25, 2011, 05:49:18 am
|
Un'ultima domanda  : questo metodo è applicabile in qualche modo al tiny85, che mi pare non abbia il doppio timer? Questo è perché il circuito finale prevede questo piccolo micro. Devo controllare il data sheet degli ATTiny, non tanto per il timer da usare, va bene uno qualunque di quelli presenti, ma per vedere se supportano le necessarie modalità. OK, non importa se devo usare una modalità di consumo meno "potente", l'importante è poterla usare. ad iniziare dagli ultrasuoni....
Con gli ultrasuoni, parliamo di sonar, non serve a nulla perché devi generare dei treni di impulsi composti da un ben preciso numero di impulsi, in questo caso va benissimo la generazione da software, in fin dei conti impegni la cpu solo per un centinaio di us ogni 50-100 ms. OK, per quello c'è già il code che mi avevi fornito.
|
|
|
|
|
8916
|
International / Italiano / Re: Controllare Infrarossi
|
on: July 25, 2011, 05:33:00 am
|
Non ho parole, no, una sì, SPETTACOLARE!  Un'ultima domanda  : questo metodo è applicabile in qualche modo al tiny85, che mi pare non abbia il doppio timer? Questo è perché il circuito finale prevede questo piccolo micro. Comunque sia questa tecnica è eccezionale, poter disporre di una frequenza d'appoggio separata dal loop significa risolvere molti problemi, ad iniziare dagli ultrasuoni.... GRAZIE! 
|
|
|
|
|
8917
|
International / Italiano / Re: Controllare Infrarossi
|
on: July 25, 2011, 04:56:11 am
|
Ma per "modo dissociato", intendi un oscillatore a parte per i 38khz?
No, se ti pigli la pazienza di rileggere tutto vedi che quella è un'idea che non vorrei adottare, anche se ad un certo punto sembrava l'unica soluzione possibile, ora risolta. La mia speranza è che si possa abilitare un pin del micro a sputare fuori questa frequenza, senza doverla creare col software; se ho ben capito ciò che ha scritto e che vorrebbe provare astrobeed, la cosa potrebbe essere fattibile, usando un timer interno. Male che vada rielaboro lo sketch come ho scritto prima, in risposta al suggerimento di Leo.
|
|
|
|
|
8918
|
International / Italiano / Re: Controllare Infrarossi
|
on: July 25, 2011, 03:58:01 am
|
Ma tu non devi fare un delay. In questo modo blocchi la CPU a contare i secondi. Devi fare con un ciclo e controllare contemporaneamente lo scorrere del tempo e la barriera. Se al termine del tempo preimpostato non è passato nessuno, metti a nanna il micro.
Infatti, non ci crederai, ma è l'idea che mi è venuta stanotte, ieri mi sono sparato 13-14 ore di laboratorio e stanotte sognavo Arduini, delay, gente che aveva i problemi più svariati ed io che cercavo di risolverli con l'IDE, praticamente un'indigestione  Ad un certo punto, ricordandomi il suggerimento di UWE, che mi consigliava di fare un tot di controlli della barriera al minuto, ho pensato di creare un ciclo for che mi lancia la routine per la generazione dei 38KHz per un x tempo, poi un breve delay con un contatore, e via di nuovo fino a raggiungere il tempo prefissato per il sonnellino. Però se astrobeed trova il modo di generare la frequenza in modo "dissociato" dal software, sarebbe la soluzione ideale. Ormai le prossime prove domani o giovedì, prima mi devo disintossicare 
|
|
|
|
|
8919
|
International / Italiano / Re: Controllare Infrarossi
|
on: July 25, 2011, 03:05:17 am
|
Non cominciare a volare  già faccio fatica a correrti dietro quando cammini per terra  Ho sbagliato ad esprimere il concetto intendevo appunto dire che il software esegue le istruzioni una per volta sequenzialmente, quindi quando il mio sketch inizia a gestire i led per le indicazioni si ferma la frequenza generata dall'altro pin, e siccome a regime questa cosa potrebbe occuparmi anche 20-30 secondi la mia "barriera di sicurezza" diventa una barzelletta, visto che intanto non funziona; in parole povere quando è verde significa che non c'è passaggio, il problema è che a quel punto inizio un delay al termine del quale vado in sleep, durante questo delay la barriera non controlla il passaggio dei "mezzi" e rischio la strage, ovviamente è tutto simulato, però...
|
|
|
|
|
8920
|
International / Italiano / Re: Controllare Infrarossi
|
on: July 25, 2011, 02:01:05 am
|
Ciao, in effetti quando va in idle continua a generare la frequenza; il problema ora è quando è sveglio, cioè quando inizio la gestione dei led (punti 6 e 7 del mio precedente post) ovviamente la frequenza si interrompe perché il micro non lavora in multitasking; per cui concordo che l'unica soluzione possibile sia quella di dissociare i 38KHz dal software, come suggerisci tu, spero proprio che tu riesca a fare le prove e trovare una soluzione. Grazie. 
|
|
|
|
|
8921
|
International / Italiano / Re: Controllare Infrarossi
|
on: July 24, 2011, 04:41:09 pm
|
Grazie pdor90, figlio di kmer65  , comunque ormai ho preso la mano con il consiglio di astrobeed, l'avro usato 100 volte stasera. @ leo: ho risolto continuando a seguire la strada che avevo iniziato, con le librerie, come giustamente dici tu, non si sa mai; lo so che dicevamo la stessa cosa, solo che io non ne ero sicuro e tu me l'hai detto dopo 3-4000 mila prove in cui davo per scontato che non si potesse  In pratica sto idle non spegne una pitocchia, infatti sono curioso di vedere quanto consumerà il tiny. Con Arduino ho risolto così (grandi linee, sono troppo morto per farla lunga  ): 1 - Un pin digitale qualsiasi mi genera la frequenza 2 - Uno dei pin INT (col tiny ne avrò solo uno, ma ho sempre la libreria specifica che mi fa scegliere quale voglio usare) mi serve per il controllo del TSOP 3 - appena parte la barriera funziona, non è interrotta, led verde 4 - appena interrompo la barriera il TSOP va HIGH e l'INT mi attiva una routine per il cambio stato della variabile che ti dicevo e si accende il led rosso, spegnendo il verde; l'oscillatore non oscilla più 5 - fintanto che la barriera è interrotta resta su rosso (in questo caso però l'oscillatore oscilla) 6 - appena la barriera è libera un delay imposta un giusto ritardo quindi si riaccende il led verde; l'oscillatore continua a non oscillare 7 - dopo un ulteriore x tempo senza che la barriera sia stata interrotta il micro va in idle, si spegne anche il led verde e l'oscillatore riprende ad oscillare ripristinando iml controllo della barriera. Mi resta solo il problema che mentre è verde, se la barriera viene interrotta non se ne accorge perché l'oscillatore non oscilla, ma questo è il problema della prossima volta, devo risolvere via software penso, forse con i NOP dello sketcvh iniziale di astrobeeed e di cui mi parlavi prima tu, vedremo.
|
|
|
|
|
8922
|
International / Italiano / Re: Controllare Infrarossi
|
on: July 24, 2011, 03:28:30 pm
|
EDIT: Non avevo letto questo: Quote 7.1.1 Idle Mode When the SM[1:0] bits are written to 00, the SLEEP instruction makes the MCU enter Idle mode, stopping the CPU but allowing Analog Comparator, ADC, USI, Timer/Counter, Watchdog, and the interrupt system to continue operating. This sleep mode basically halts clkCPU and clkFLASH, while allowing the other clocks to run Quindi in teoria un timer continuerebbe ad andare. E se va il timer, puoi usare quello agganciato all'INT0, seguendo l'esempio presente nel link che ti ho postato (ovviamente adattando il codice all'Attiny).
Aspetta, aspetta, io avevo visto nella tabella che l’idle mode non spegneva tutto, ma siccome mi fido ciecamente di Voi anglofoni….  Il link che mi hai postato per me non significa nulla, ogni riga ci metto due ore a leggerla, se vuoi fare le cose per bene copincollami il code che ci sbatto un po’  EDIT2: uhm... però si ripresenterebbe il problema che in un interrupt non puoi usare la delay per generare i ritardi. Potresti forse inserisci una cascata di asm volatile ("NOP") per rallentare il programma: ogni NOP è 1 ciclo di clock. Però poi rallenteresti anche il tuo codice, quando il micro si risveglia...
mi autoquoto il Reference spiega che lanciando una routine tramite interrupt i delay & Co & timer non funzionano, quindi ho aggirato il problema.
questo problema lo avevo risolto, usando una variabile “volatile int”, seguendo il Reference del comando attachInterrupt, infatti mi funzionava benissimo, ovviamente senza spegnere il micro. Poiché ho letto che i pin interrupt non devono essere dichiarati e che possono svolgere la loro funzione anche se parallelamente sono settati come OUTPUT, a questo punto faccio uscire la frequenza da questo pin, imposto la modalità idle e lo uso come interrupt per risvegliare; ma non la vedo così facile la cosa…. Sicuro che non vuoi usare un 555?
Con quello ovviamente è già tutto risolto, il problema è che questo vorrebbe essere uno schema didattico per il risparmio energetico, anche se in realtà sarà alimentato con un alimentatore esterno; il 555 non lo posso spegnere e continuerebbe a consumare corrente. La mia idea era di fare qualcosa come quella dei nanetti. Faccio queste ultime prove e poi me ne vado, sono scoppiato.
|
|
|
|
|
8923
|
International / Italiano / Re: Controllare Infrarossi
|
on: July 24, 2011, 01:42:49 pm
|
Dati di fatto, datasheet alla mano: 1) in tutti e 3 gli sleep mode supportati il clock della CPU viene spento per cui il tuo codice non prosegue. Se non prosegue, non puoi generare il segnale usando il metodo che hai usato (ossia ciclo loop()).
2) in nessuno dei 3 modi sleep supportati il modulo INT0 & PIN CHANGE va in standby.
Secondo me ne esci solo usando un generatore esterno per il segnale PWM e svegliando il micro tramite l'INT0 quando qualcosa succede sul sensore.
Già, è quello che stavo provando. Ho messo il generatore di frequenze a 38KHz per pilotare il led, tutto il resto su Arduino e funziona, ora devo tarare lo sketch perché chiaramente ragionava in modo diverso. Intanto lo faccio funzionare poi decido cosa fare realmente, l'idea iniziale era un'altra, non vorrei uscire "fuori tema".
|
|
|
|
|
8924
|
International / Italiano / Re: Controllare Infrarossi
|
on: July 24, 2011, 01:02:05 pm
|
Non, sono io che mi spiego malissimo: Io ho bisogno di 38KHz per pilotare il LED infrarosso; volevo solo capire se invece del code HIGH/LOW che sto usando, posso farli generare al micro a partire dal timer interno; RTC esterni non ne sto usando e non mi servono. Il vero problema è che se (ammesso che  ) riesco a mandare a riposo il micro, automaticamente la frequenza generata, a prescindere dal metodo usato, si spegne e quindi si paralizza tutto.
|
|
|
|
|
8925
|
International / Italiano / Re: Controllare Infrarossi
|
on: July 24, 2011, 12:34:12 pm
|
1 - c'è una combinazione di tasti per far uscire le due parentesi graffe nell'editazione? Usa la tastiera tedesca; li si arriva con alt graph + 7 per { alt graph + 0 per }  La differnza tra sleep.h e Narcoleptic.h dovrebbe essere che Narcoleptic.h ha piú funzionalitá nel senso piú trigger di risveglio rispetto la sleep.h. Non avendo usata ne l' una ne l' altra non sono sicuro in questo. Ciao Uwe La tastiera tedesca?  Ho visto che la narcoleptic usa un comando che dovrebbe racchiudere un paio di comendi della sleep, comunque alla fine il risultato è quello, non ho grandi esigenze. Ora sto cercando di farlo addormentare il bimbo, ma non ne vuole sapere, eppure non è la prima volta, i miei nanetti a quest'ora dormono beati e non consumano nulla 
|
|
|
|
|