venerdì 1 aprile 2011

CCD sensore di scansione a linee (parte 1)

Allora, che cosa posso fare con le parti di un vecchio scanner? Non ho ancora deciso ma dicono che l'ispirazione può venire dalle idee più strane. La cosa certa è che devo trovare una scusa per non fare quello che dovrei ma non vorrei fare e che devo consegnare tra un pò. Così, dato che tempo fa ho sezionato delle stampanti multifunzione (HP mod V40 credo di ricordare), mi salta l'ideona di riprendere i sensori per la scansione delle immagini e capire come sono fatti all'interno. Le stampanti multifunzione sono una piccola miniera di componenti che si possono recuperare e riutilizzare...motori, sensori ottici, lampade CCFL con inverter (per le più datate) e una moltitudine di parti che con un pò di fantasia possono ancora svolgere i loro compiti senza subire l'ingloriosa sorte della rottamazione, che tanto ingrassa i profeti dell'usa e getta.  Nelle stampanti che ho sezionato, la lampada a CCFL è sostituita da una striscia luminosa apparentemente bianca ma in realtà illuminata da tre micro led rosso, blu e verde (RGB). Il tutto racchiuso dentro un contenitore a parallelepipedo che contiene anche il sensore CCD lineare vero e proprio (questo modulo è chiamato Contact Image Sensor o CIS module.). E' come una fotocamera dove però il chip invece che rettangolare è lineare. La messa a fuoco è già regolata meccanicamente all'interno, così si evitano pesanti ottiche, specchi, regolazioni e altri componenti costosi e delicati. Quello che analizzo qui è anche a colori, il che mi complicherà la vita non poco,  anche se trovo la sfida interessante e molto stimolante. La parte più dura è capire la piedinatura del connettore esterno...urge un autopsia completa, aiutata dalla disponibilità di una decina di sensori. Qualcuno lo posso anche rompere.
Credo di aver capito, leggendo alcune info sommarie usando "gògol" che un sensore a linea CCD  agisce come un registro a scorrimento analogico. 
Si alza un pin (SP) per dire al CCD di 'prendere  l'immagine', poi si avanza di un clock su un altro pin (CP). Ogni volta che il successivo impulso di clock arriva, il CCD invierà un valore analogico (Vout) che rappresenta il livello di luce che colpisce il pixel successivo. Poiché il CCD è un elemento dinamico, non è possibile abbassare il segnale di clock troppo presto e se si smette di leggere il frame, il dispositivo riparte da capo a leggere dall'inizio. Dovrebbe esserci anche un pin per regolare, con una tensione DC variabile, la sensibilità. Wow....devo assolutamente hackarlo.
Non ho mai interfacciato un microcontrollore con sensori di luce e sto pensando che sarebbe una buona scusa per rimandare di ottemperare ai miei doveri. La parte più dura è capire la corrispondenza dei pin nel pettine dove va infilato il cavo piatto flessibile. Sono 12 contatti. sicuramente avremo 2 per l'alimentazione generale, forse 4 di alimentazione per i led di illuminazione (una massa led ed uno per ogni colore RGB)... ne restano 6. Posso desumere quindi gli altri segnali presenti nella maggioranza di CIS analizzati:
  • SP - Start pulse
  • CP - clock pulse
  • Vout - Segnale analogico in uscita
Ne restano tre (forse Vout è diviso per 4 sezioni del sensore fotosensibile come in certi CIS), per cui dovrò testare se c'è qualche massa in comune o sdoppiata. L'ideale, in questi casi e per le misure, sarebbe testare con un analizzatore logico di stati il sensore durante il suo funzionamento, ma purtroppo non posso rimettere assieme l'hardware originale, per cui le cose si complicano ancora di più. Forse, potrei avere un idea seguendo le piste del sensore messo a nudo (vedi foto). All'interno si nota un chip scoperchiato (nudo, probabilmente  lo shift register / video amplificatore del fotosensore o un convertitore AD, impossibile saperlo) da cui partono dei fili d'oro ed una linea iridescente su cui sono collegati, a gruppi intervallati, sei microscopici collegamenti (sempre in oro).  Un altra difficoltà è sapere quanti impulsi di clock per leggere una linea? a quale frequenza deve lavorare il clock? la lettura si deve intendere per singolo colore per tre passaggi o viene inviata la lettura RGB intervallata per ogni punto? Ed a che risoluzione lavora il sensore????? Probabilmente occorre fare tre letture per linea illuminata alternativamente con un led alla volta e far decidere al firmware la sequenza dei colori. Il software di post processing farà il resto componendo l'immagine a colori sovrapponendone tre.
Visto che ne ho un pò, potrei tentare anche di procedere con il metodo "o la va o si spacca". 
Fornisco alcuni dati tecnici, giusto per documentazione, riportando qui le sigle sul circuito:  nella parte esterna CS600B e meno visibile Toshiba 218CS600B 3291193 Taiwan. Sempre nella parte esterna verniciata di nero ci sono in prossimità del connettore 12 piazzole dorate, sicuramente usate come test point nei macchinari che testano il prodotto finito. Nella parte interna accessibile solo dopo lo smontaggio completo: CIPS218-CS600B REV:A1 2-10-44R-041-A1
All'estremità, 4 punti di contatto, 3 per i led RGB e 1 per l'alimentazione positiva (configurazione ad anodo comune) che dovrebbe attestarsi sui  3.3 - 5 volts. Per ora basta così, che provo a documentarmi meglio ed aggiornare periodicamente questo post. Quasi dimenticavo. Se hai il pinout di questo componente o il datasheet completo...pubblicalo, per cortesia, l'ambiente e l'umanità te ne sarà grata. Grazie.  Alla prossima. 

P.S. I coleotteri neri sono in volo. Ripeto: I coleotteri neri sono in volo.

sabato 26 marzo 2011

WT7510 Voltage monitor

Tra i vari circuiti disassemblati dalle apparecchiature elettroniche che gli "unani" ignoranti ed irresponsabili provvedono a buttare senza rendersi conto dei danni devastanti all'economia, alla società ed all'ambiente, ogni tanto salta fuori qualcosa di interessante che può trovare un ri-utilizzo nelle applicazioni sperimentali. Stavolta tocca ad un circuito integrato siglato WT7510 presente in una schedina recuperata da un alimentatore switching da PC (sigle FSP300-60PFN M-BOARD P/N 3BS0010714).
Dal datasheet, che riporta protection circuits, power good output (PGO), fault protection latch (FPL_N) CONTROL "from unknow" ma dalla sigla il produttore è Weltrend,  sono riuscito a recuperare le informazioni di funzionamento e le specifiche che mi possono dare indicazioni su come utilizzarlo. Ecco una breve descrizione:
The WT7510 provides protection circuits, power good output (PGO), fault protection latch (FPL_N), and a protection detector function (PDON_N) control. It can minimize external components of switching power supply systems in personal computer. The Over Voltage Detector (OVD) monitors 3.3V, 5V, 12V input voltage level. The Under Voltage Detector (UVD) monitors 3.3V, 5V input voltage level. When OVD or UVD detect the fault voltage level, the FPL_N is latched HIGH and PGO go low. The latch can be reset by PDON_N goo HIGH. There is 2.4 ms delay time for PDON_N turn off FPL_N. When OVD and UVD detect the right voltage level, the power good output (PGO) will be issue.

Quindi, in due parole, la possibilità di avere un segnale che mi avvisa se una tensione di riferimento va oltre o sotto delle soglie... mi viene in mente un applicazione per dei pannelli solari. Se la tensione del pannello va sotto un certo valore, allora è il momento di intervenire. Magari si sta avvicinando un temporale e, per evitare danni da grandine, si interviene per orientarli in posizione di sicurezza o per azionare una copertura. Oppure, si possono monitorare delle batterie e far intervenire un generatore di emergenza quando iniziano a scaricarsi troppo... Quasi dimenticavo. Nello stesso circuito è presente anche un KA358, doppio amplificatore operazionale (guadagno sino a 100dB) alimentabile da 3 16 volts...perfetto.
Di applicazioni ce n'è a iosa ed abbastanza per aguzzare l'ingegno e divertirsi come sempre, basta solo sperimentare e provare...la ricerca continua. Alla prossima. 

P.S. Troppo sole? vi accompagno. Ripeto: Troppo sole? vi accompagno.

venerdì 25 marzo 2011

mpg2avi - mpg2flv converter

Succede di dover far fronte agli incarichi più assurdi, quando ci si occupa di Tecnologia e scienza delle informazioni e si entri in contatto con utonti istituzionali, ovvero coloro che hanno il potere. Questi utonti di stato sono pagati profumatamente e godono di molti privilegi ma hanno un terribile difetto. Quando, per qualsiasi motivo entrano in contatto con un computer, o ne sentono solo accennare la parola, ecco che in loro scatta la tipica reazione dell'utonto, che li autorizza a spegnere totalmente il cervello e chiedere "aiuto" al "tecnico". Ai loro occhi il "tecnico" è "l'amico del cuggino che lavora all'ibiemme" o il rivenditore di cancelleria sotto casa che, ovviamente conscio che il mercato è ormai composto da polli già spennati e cotti pronti all'uso, infila negli scaffali fra CD e DVD da masterizzare dei PC giusto per figurare come rivenditori di tecnologia ad alto valore aggiunto. Stavolta è toccato a me essere chiamato perchè il committente non riesce a visualizzare nel suo PC dei filmati. (strano...non ho nessun cuggino che si occupa di informatica). E' solo un problema di codec ma non sono autorizzato e nemmeno ne ho l'intenzione di installarglieli. Preferisco procedere con una conversione in formati diversi, almeno uno di questi riuscirà a leggerlo... spero. Dato che sono centinaia, ho preferito crearmi uno script che automatizza il processo e velocizzare le operazioni. Lo script per GNU linux usa mencoder e ffmpeg per convertire dal formato .mpg ad .avi e .flv (Flash)
Eccolo:
#---------------------------------------
#!/bin/bash

#mpg2avi mpg2flv (Converte filmati mpeg streams in avi mpeg4con audio mp3 e flv flash movie)


#inizio
clear

current_directory=$( pwd )
# video bitrate (1100 = per filmati di circa 500 MB )
#vbitrate=1100
vbitrate=800


# rimuove gli spazi nel nomefile
for i in *.[Mm][Pp][Gg]; do mv "$i" `echo $i | tr ' ' '_'`; done > /dev/null 2>&1 &

# rimuove le maiuscole
for i in *.[Mm][Pp][Gg]; do mv "$i" `echo $i | tr '[A-Z]' '[a-z]'`; done > /dev/null 2>&1 &

# converte mpg -> avi con mencoder

for i in *.[Mm][Pp][Gg]; do nice -n 10 mencoder $i -ovc lavc -lavcopts vcodec=mpeg4 -vf pp=md, -oac lavc -lavcopts abitrate=128 -o "`basename "$i"`.avi";echo "Conversione OK";done



# converte mpg -> flv con ffmpeg

for i in *.[Mm][Pp][Gg]; do nice -n 10 ffmpeg -i $i -y -sameq -ar 44100 -f flv "`basename "$i"`.flv";echo "Conversione OK";done

exit;
#-----------------------------------------
Fatto. Funziona. Non è stato facile districarsi fra le decine e decine di opzioni, il cui significato di alcune mi è ancora oscuro e che a spiegarle per bene occorrerebbe scrivere un libro. Ma alla fine funziona. Resta il dubbio...ma quel sistema che non voglio nominare con installato un lettore di filmati che non so il nome,  avrà i codec anche per questi formati?? Boh. Sempre meglio che stampare fotogramma per fotogramma ore e ore di riprese a 30fps come mi era stato richiesto. Riprodurre su carta un filmato...ma è proprio una richiesta da utonti che non meritano di usare un PC e nemmeno di ricevere uno stipendio. E' come nominare un dirigente analfabeta.....ma da voi in "itaglia", questo ed altro, branco di ignoranti. Alla prossima. 

P.S. Cappuccetto rosso è con il lupo ed i sette nani da biancaneve. Ripeto: Cappuccetto rosso è con il lupo ed i sette nani da biancaneve.

sabato 19 marzo 2011

La luna gigante

Mi devo proprio decidere a montare una webcam o una fotocamera al mio telescopio amatoriale. Come prevedibile, nè con una videocamera nè con una fotocamera si riesce a fare una foto decente al nostro satellite. Oggi infatti era il momento di luna piena in cui si trovava più vicino alla terra e volevo documentare il fenomeno, così per sfizio. Ho un paio di telescopi amatoriali, in attesa di modifiche. Vorrei infatti motorizzarne i movimenti e creare un sistema di messa a fuoco anch'esso motorizzato. Ho visto qualcosa di simile già fatto su un telescopio semiprofessionale in grado di riprendere scene a svariati kilometri di distanza (molti kilometri, davvero tanti). Mi accontenterei di meno ma devo predisporre una webcam di buona qualità ed adattarla con dei tubi per farla entrare al posto dell'oculare. Per muoverla avanti ed indietro basterebbe un piccolo motore passo-passo (già sperimentato in passato)...fattibile, attrezzatura meccanica di laboratorio permettendo .
Ora, per poter rifare una foto decente al fenomeno della luna gigante dovrò aspettare 19 anni. Pazienza. Alla prossima.

P.S. la marmellata è pronta ed il pane tagliato. Ripeto: la marmellata è pronta ed il pane tagliato.