Indice |
Un convertitore impossibile
Tutto faceva pensare ad un fallimento sicuro, mancanza del concetto di "NET" (reti di connessione), componenti di dimensioni diverse, coordinate diverse (mediamente otto volte maggiori in LTspice che in FidoCad), punti di origine dei componenti posizionati a caso, rotazioni dei componenti diverse, primitive mancanti e infine due applicazioni concepite per scopi del tutto differenti. Ma ci abbiamo provato lo stesso e incredibilmente ne sta venendo fuori un convertitore abbastanza buono.
Chi volesse iniziare a provarlo può scaricare l'ultima versione da qui Versione 0.9 di Theremino FidoConverter, nome in codice: "Bdi bodi bu - il baco dei PNP non c'è più".
Per facilitare l'uso ai non programmatori non abbiamo incluso i sorgenti ma, come tutte le nostre applicazioni, anche Theremino_FidoConverter è OpenSource, con licenza Creative Commons come spiegato qui. La versione ufficiale che pubblicheremo sul sito del sistema theremino conterrà anche i sorgenti, chi li volesse prima ci scriva a engineering@theremino.com
Nuove versioni
Sono previste molte nuove versioni di questa applicazione. Sia per migliorare il posizionamento dei testi e dei componenti, sia per espandere le librerie con componenti di dimensioni più uniformi.
Per non appesantire troppo questo articolo abbiamo quindi spostato l'intero argomento "Nuove versioni" nell'articolo Fido converter - Nuove versioni. Tale articolo è un po' anomalo perché sarà un articolo in continua crescita. Conoscendo il nostro modo di sviluppare si prevedono molte versioni nel prossimo mese e nei momenti di maggiore attività anche più di una versione nello stesso giorno.
Brevi istruzioni - ITA
L'interfaccia utente è semplice, si trascina un file di LTspice (con estensione "asc") nell'area indicata con: "Drag the LTspice file here" oppure si preme "Browse" e si seleziona un file LTspice. Poi si preme "Convert to FidoCadJ" e la conversione è competa in una frazione di secondo (il breve tempo nel quale il pulsante si colora di rosso). Il file convertito in "fcd" viene creato accanto al file "asc" da cui deriva. Se non si sa più dove si trova si può premere nuovamente "Browse" e eventualmente trascinarlo o copiarlo in un'altra cartella.
I pulsanti nella parte bassa della finestra hanno i seguenti significati:
- Auto convert - Dopo aver trascinato o selezionato un file "asc" questo viene automaticamente convertito.
- Auto open - Dopo ogni conversione viene automaticamente aperto il file "fcd" con FidoCadJ .
- Show advanced commands - Fa apparire i comandi avanzati che servono per aprire i file dei disegni e delle librerie in modo da facilitare le operazioni di messa a punto.
Short instructions - ENG
The user interface is simple, you drag an LTspice file (with "asc" extension) on the area indicated by: "Drag the LTspice file here". Alternatively, you can press "Browse" and select an LTspice file.
Then you press "Convert to FidoCadJ" and the conversion is done in a fraction of a second (the short time while the button turns red). The converted file is created near to the original "asc" file. If you no longer know where it is, you can press "Browse" and possibly drag or copy it to another folder.
The buttons at the bottom of the window have the following meanings:
- Auto convert - After dragged or selected an "asc" file, the file will be automatically converted.
- Auto open - After each conversion the "fcd" file is automatically opened with FidoCadJ.
- Show the advanced commands - Shows commands useful to open files, drawings and libraries in order to facilitate tuning operations.
Note sulla implementazione
Tra le buone idee che sostengono questo convertitore la migliore è il file "LibraryOptions" che permette di modificare il comportamento delle funzioni di conversione. Modificando questo file, e preparando nuovi componenti con FidoCad, chiunque potrà migliorare la conversione e renderla perfetta anche per quei componenti che ora vengono resi male o mancano del tutto.
Il merito non è solo mio (Livio) ma di tutti i collaboratori del sistema Theremino che hanno aiutato, ciascuno nel suo campo, a mettere insieme un ottimo sistema di progettazione hardware-software. Doverosi ringraziamenti anche a Microsoft, di cui parlare male è ormai diventata una moda, ma che in realtà fornisce, a ha sempre fornito, strumenti perfetti e gratuiti per la didattica e per gli appassionati senza fini di lucro come noi. Primi fra tutti DirectX, VisualStudio e VbNet.
A questo punto tutti i linuxiani mi salteranno addosso dicendo che esistono strumenti altrettanto gratuiti e anche open source in Linux. La risposta è: "Li abbiamo provati ma la qualità è inferiore, le difficoltà troppe e le prestazioni scarse". E li abbiamo provati davvero, ci tenevamo tanto a far funzionare il sistema theremino anche su Linux! Abbiamo perso mesi e mesi di lavoro con risultati deludenti. Far "funzionicchiare" le applicazioni non è mai un problema ed è anche possibile far funzionare abbastanza bene le applicazioni piccole (e con piccole intendo applicazioni come FidoCadJ). Ma una buona decina di applicazioni del sistema theremino sono molto complesse e hanno realmente bisogno di una interfaccia utente amichevole e fluida. Chi pensa che sto esagerando dovrebbe provare il Theremin Sinth (per provarlo non serve hardware, scaricatelo e provate i suoni su un buon amplificatore), e anche Theremino MCA (una killer application che ha rapidamente conquistato il primato mondiale nella Spettrometria Gamma non professionale), e anche Theremino CNC (che sta gradualmente sostituendo le storiche applicazioni Mach3 e LinuxCNC). Mi fermo qui ma, per piacere, prima di pensare che esagero andate a leggere i sorgenti di queste applicazioni, provatele o per lo meno date una occhiata a questa immagine che da una idea di cosa intendo con applicazioni complesse.
Concedetemi ancora due righe, poi la smetto. E' importante notare che il codice delle applicazioni thereminiche è scritto a scopo didattico, quindi tutto in chiaro, senza appoggiarsi a librerie grafiche o matematiche. Per cui è ancora più difficile ottenere una risposta veramente fluida nella interfaccia utente e ci riusciamo solo grazie alla grande efficienza di VbNet. Alcuni "odiatori di Microsoft" hanno provato a portare le nostre applicazioni su Linux ma finora nessuno è riuscito a dimostrare con i fatti che si possono ottenere le stesse prestazioni. Un linuxiano di cui non farò il nome (potete trovare i suoi messaggi sul blog del sistema theremino) ha passato mesi a fare un sistema theremino in un blob indefinito di Linux, Java, Phyton e OpenCV e alla fine si è rassegnato, non ha più scritto niente sull'argomento e le sue applicazioni sono sparite da Github.
Il Basic, che abbiamo scelto come base per tutto il sistema Theremino, è sempre stato il linguaggio più conciso e semplice, ma in questi ultimi anni, con VbNet, è anche diventato il più efficiente, superando anche CSharp e C++.
Mettere insieme un convertitore come questo Theremino FidoConverter in pochi giorni sarebbe stato impossibile senza la tecnica Top-Down e l'ausilio di un ambiente RAD (Rapid Application Development) come VbNet.
Migliorare le librerie
Il file "LibraryOptions.txt" che si trova accanto a "FidocadConverter.exe" contiene, riga per riga, la associazione tra i componenti di LTspice e quelli di FidoCadJ.
Questa è una riga di esempio tratta dal file "LibraryOptions.txt"
.......................................................
XTAL 2 -4 1 0 ey_libraries.pasxtal0
.......................................................
- XTAL è il nome LTspice del componente
- Il primo numero (2) indica che il componente va traslato a destra di due punti
- Il secondo numero (-4) indica che il componente va traslato in alto di quattro punti
- Il terzo numero (1) indica che il componente va ruotato di novanta gradi
- Il quarto numero (0) indica che il componente non va ribaltato
- ey_libraries.pasxtal0 è il nome FidoCadJ del componente
Quando si incontrano componenti sconosciuti il convertitore li mostra come "UNKNOWN NomeComponente". Per implementarli basta aggiungere una riga simile alla precedente e cercare il componente FidoCadJ più adatto. Oppure crearne uno se non ne esistono di compatibili come dimensioni.
Come si vedrà nei seguenti esempi i transistor della libreria sono troppo piccoli (si vedono due piccole interruzioni sui terminali di collettore e emettitore). Per ora abbiamo usato solo componenti delle librerie standard che si scaricano con la normale distribuzione di FidoCadJ. Ma tutto il meccanismo di espansione delle librerie è pronto e ben testato. Per cui in futuro chiunque potrà migliorare la conversione e ottenere schemi perfetti correggendo i componenti peggiori. Non si tratta di rifarli tutti, la gran parte vanno già bene come sono.
Riassunto dei primi sei giorni di lavoro
E giorni lo sono, anzi anche di più! Si parla di oltre venti ore uomo al giorno (in due). E anche di qualche ora con il Tablet, da quando mi sveglio di notte a quando mi torna il sonno. Ma purtroppo sarà impossibile finire questa applicazione per la Befana (come avevamo promesso). La Befana è oggi e ci sono ancora svariati problemi e qualche baco mannaro che non si lascia prendere.
Il problema più terribile è la rotazione degli attributi dei componenti (nome e valore) che in LTspice ruotano insieme ai componenti e che invece in FidoCad sono staccati da essi. Inoltre in LTSpice le rotazioni e traslazioni sono definite da una decina di parole (LEFT, BOTTOM, VLEFT, VRIGHT, CENTER, VTOP...) dove la "V" sta a significare "verticale", mentre in FidoCad si usano i gradi di rotazione e gli spostamenti in pixel. Il tutto sarebbe abbastanza semplice di per se, ma la rotazione dei componenti, le traslazioni dei testi rispetto ad essi, la scala di riduzione e le posizioni predefinite per i testi che non sono stati modificati dall'utente, creano complicazioni indescrivibili.
Non che le funzioni già completate fossero più facili! La rotazione dei componenti stessi è stata terribile, ha preso almeno tre giorni da sola e ancora adesso fa un difetto sui transistor PNP (incredibilmente solo i PNP, tra centinaia di componenti che abbiamo provato).
>>> Nota del 08/01/2017 <<< Il problema dei transistor PNP è risolto dalla versione 0.9 - Scaricatela dall'articolo "FidoConverter Nuove versioni")
Quindi per ora ci si dovrà accontentare di quel che c'è. Con l'attuale posizionamento semplificato i testi dei componenti vengono come negli esempi seguenti:
Esempio 1
Questo è un MC1648, un oscillatore molto simpatico, una specie di 555 per gli oscillatori sinusoidali in HF. La conversione è perfetta tranne i per i parametri dei componenti posizionati male, come spiegato nei paragrafi precedenti. I colori che si vedono sono gli strati di FidoCadJ e sono definibili nel file di opzioni, cosi come il "font" e le dimensioni dei caratteri.
Esempio 2
Questo è un LM741, chi ha l'occhio d'aquila noterà che i transistor PNP hanno l'emettitore dal lato sbagliato, lo fanno tutti i PNP e il baco continua a sfuggire.
Esempio 3
Questo è il famoso 555, non poteva mancare (anche se a me personalmente piace poco).
Esempio 4
In questo schema, oltre ai soliti difetti di posizionamento dei nomi e dei valori dei componenti, si nota che anche i diodi sarebbero da rifare (sono troppo lunghi).
Ed ecco lo stesso esempio ma convertito con la versione 1.2. Molte piccole imprecisioni sono superate e il testo dei componenti ora è collegato ad essi.
Qui sul sito i componenti non si vedono quindi qualcuno dovrà periodicamente aggiornare la libreria man mano che crescerà. Invece nel FidoCadJ che si usa in locale li si vedono correttamente e l'immagine è molto migliore della precedente (sempre che si scarichi la nuova libreria 1.2 e che la si colleghi correttamente).
Questo schema incompleto, potrà essere utile a chi dovrà aggiungere la nuova libreria sul sito ElectroYou per verificare il suo funzionamento.
Nella immagine seguente si vede il miglioramento ottenibile utilizzando la libreria che abbiamo preparato per la versione 1.2 del FidoConverter. La libreria 1.2 migliora notevolmente anche i componenti: CAP, VOLTAGE, BATTERY, CURRENT, SIGNAL, BV, E, NPN, NPN2, NPN3, PNP, PNP2, PNP3, NJF, PJF, NMOS, PMOS, NE555, DIODE, ZENER, SCHOTTKY, VARACTOR, OPAMP, OPAMP3, OPAMP5 e TLINE. Probabilmente questa libreria (e le versioni seguenti che pensavamo di creare) non verranno utilizzate sul sito ElectroYou. Questo è un po' demoralizzante dopo aver lavorato più di un mese, sia per la libreria che per la applicazione FidoConverter. Ed è ancora più demoralizzante che molti interventi firmati "Theremino" siano stati presi a pesci in faccia in vari thread di questo sito. Per cui probabilmente non proseguiremo nel migliorare questa libreria e non concluderemo il progetto di "andata e ritorno" (conversione da FidoCadJ a LTspice).
Esempio 5
Notare il testo che esce dal rettangolo rosso, questo è un difetto nuovo che si verifica solo qui sul sito. Probabilmente nel server di ElectroYou manca il font "Calibri" e al suo posto viene usato "Arial". Verificheremo anche questo...
Esempio 6
Soliti errori... come si può vedere il testo non legato ai componenti è nella posizione giusta, solo un po' lungo per le differenze di font con il sito ElectroYou. Invece i valori ed i nomi dei componenti sono posizionati male.
Esempio 7
Un grosso amplificatore da 300 Watt. Gli errori sono i soliti.
Esempio 8
Questo va quasi bene. In questo schema e anche nei precedenti non sarebbe difficile ritoccare manualmente la posizione di qualche valore. Quindi potremmo considerare finito il convertitore e sarebbe saggio abbandonarlo (dato che abbiamo decine di progetti da completare nel sistema theremino). Ma ne faremo un punto di onore e riusciremo a dominare queste maledette rototraslazioni, costi quel che costi.