Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

16
voti

Da LTspice a FidoCadJ



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.

Theremino_FidoConverter_V0.8.jpg

Theremino_FidoConverter_V0.8.jpg

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.
Theremino_FidoConverter_V0.8_Advanced.jpg

Theremino_FidoConverter_V0.8_Advanced.jpg




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.

Theremino_FidoConverter_V0.8.jpg

Theremino_FidoConverter_V0.8.jpg

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.
Theremino_FidoConverter_V0.8_Advanced.jpg

Theremino_FidoConverter_V0.8_Advanced.jpg



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

Esempio4.png

Esempio4.png



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.



21

Commenti e note

Inserisci un commento

di ,

Forse tu intendevi di cambiarli tutti insieme. Ottimo. Ma poi passi ad altri degli schemi che non hanno più i componenti.

Rispondi

di ,

Io potrei anche cambiare, lemme lemme, i cinquanta componenti che mancano in questo schema ma questo non aiuterebbe gli altri in futuro.

Rispondi

di ,

Esiste un modo per evitare i problemi di componenti mancanti quando si mette a disposizione un disegno che contiene componenti di una libreria personale per esempio qui dove questa libreria non è disponibile. Invece di fare un copia/incolla semplice, si può fare un "copia, separa i simboli non standard" e poi incollare. I componenti sono trasformati in primitive grafiche e sono visibili dappertutto.

Rispondi

di ,

===================================================================================C'è la nuova versione 1.2 e anche la libreria 1.2, con molti nuovi componenti - Scaricatela dell'articolo: http://www.electroyou.it/theremino/wiki/la-applicazione-theremino-fidoconverter ===================================================================================

Rispondi

di ,

Il terribile baco dei transistor NPN al contrario è sistemato. >>> Scaricate la versione 0.9 <<<

Rispondi

di ,

In questa stessa pagina abbiamo aggiunto una sezione con brevi istruzioni sia in italiano che in inglese.

Rispondi

di ,

C'è una nuova sezione dell'articolo che aggiorneremo spesso con le nuove versioni. La nuova versione 0.8 ha i comandi semplificati. Ora dell'help non c'è più bisogno perché la nuova disposizione di comandi rende tutto evidente. Tra l'altro i comandi sono tutti in inglese come avevi chiesto.

Rispondi

di ,

Chiarissimo, grazie! Vedremo cosa si può fare.

Rispondi

di ,

Si può usare un codice tipo "TY 45 30 2.7 4.23 0 0 0 Helvetica Ciao mondo" anche se poi FidoCadJ 0.24.6 arrotonderà il 2.7 a 3 ed il 4.23 a 4 e l'interfaccia non permette all'utente di introdurre valori non interi nelle maschere di inserimento dati. Però questo comportamento (voluto) permette al codice generato con le future versioni che permetteranno di farlo di non impallare la versione 0.24.6. Succede la stessa cosa con le frecce.

Rispondi

di ,

Ti ringrazio per le veloci risposte. Riguardo a FidoCadJ, lo trovo un programma molto ben fatto e anche semplice come piace a noi. Avrebbe però bisogno di coccolare di più l'utente, cioè di facilitare l'editing, salvare tutte le impostazioni tra una sessione e l'altra, etc...

Rispondi

di ,

Il sizex e sizey dei testi accetta i decimali? Credo che sia l'unico ad averne bisogno davvero. LTspice non usa mai i decimali ma ha adottato una soluzione semplice usa numeri circa otto volte più grandi.

Rispondi

di ,

Però occhio, non tutte le grandezze si possono esprimere con dei decimali!!! Dicevo che piano piano stiamo evolvendo in quella direzione, ma si va avanti con calma.

Rispondi

di ,

FidoCadJ è piccolo, 36kloc è pochino, serviva per dare un'idea dato che ne parli nell'articolo. Posso confermare: il punto è il separatore decimale adottato nel formato FidoCadJ.

Rispondi

di ,

Non ho capito bene cosa intendi con 36 mila o 50 mila linee, che FidoCadJ è una applicazione complessa oppure il contrario? Comunque il numero di linee vuol dire poco. Alcuni scrivono una funzione in poche linee ben comprensibili. Altri la suddividono in dieci classi, ogni classe con il suo bel file. Poi commentano ogni riga e inseriscono anche le linee per la documentazione automatica e le righe di copyright in tutti i file. Il rapporto tra i due modi di scrivere può anche arrivare a cinquanta volte.

Rispondi

di ,

Se ho capito bene potremmo scrivere alcuni numeri con i decimali, per le dimensioni del testo servirebbero. Avete curato di usare sempre il punto come separatore decimale? Tutte le applicazioni scientifiche fanno così, non importa se in Italia usiamo la virgola e in Mongolia chissà cosa... Ma si devono usare le conversioni giuste e farci attenzione, altrimenti i compilatori fanno un po' come vogliono. Se mi dici di procedere useremo anche i decimali.

Rispondi

di ,

Allora inizio a diffondere un link a quest'articolo.

Rispondi

di ,

Comunque queste risposte sono già tutte scritte nell'articolo. Mi rendo conto che è un po' lungo...

Rispondi

di ,

Pubblicheremo sul nostro sito la versione definitiva quando il problema della posizione dei valori dei componenti sarà sistemato. E credo che allora la applicazione avrà tutto un altro aspetto. Ora la abbiamo pubblicata in versione beta per chi vuole usarla così come è, con tutti i suoi difetti. Naturalmente alla fine aggiungeremo le istruzioni che saranno necessarie.

Rispondi

di ,

No, volevo solo sapere se è prevista una paginetta dedicata sul vostro sito che posso linkare in giro :)

Rispondi

di ,

Mi spiace ma c'è poco da descrivere, le uniche cose da sapere sono "draggare il codice LTSpice sulla finestra di testo", che è già scritto giusto sopra alla finestra, e premere "Convert to FidoCadJ", che è scritto sopra al tasto stesso. Gli altri pulsanti aprono banalmente i file e sono auto-esplicativi. Infine nell'articolo ci sono due righe su come si edita il file LibraryOptions. Sono sicuro che presto qualcuno scriverà dieci pagine su come premere questi pulsanti, ma consiglierei di aspettare. Le nostre applicazioni progrediscono al ritmo di una o due versioni alla settimana e nei momenti critici, (i prossimi giorni per questa applicazione), anche una versione al giorno. Per cui il documento sarebbe già obsoleto ancora prima di finirlo. Quando (e se) avremo sistemato il (terribile) problema delle rototraslazioni dei parametri dei componenti, scriveremo un articolo definitivo con qualche riga di istruzioni, magari anche con la traduzione in inglese se ti fa comodo.

Rispondi

di ,

Complimenti per la bellissima iniziativa!!! I risultati mi paiono assolutamente lodevoli! Avete una pagina che descriva (anche brevemente) il convertitore in inglese perché possa magari parlarne un po' in giro? Piccoli problemi con le dimensioni del testo potrebbero apparire anche con i font corretti, a seconda dello zoom: https://github.com/DarwinNE/FidoCadJ/issues/73 La situazione è comunque migliorata nella versione 0.24.6 rispetto alle versioni precedenti, ma non è pixel-accurate. Vi sarete senza dubbio scontrati su problemi legati alla risoluzione limitata permessa da FidoCadJ. L'andazzo attuale nello sviluppo del formato FidoCadJ è quello di tollerare che alcuni parametri non siano per forza interi. Per esempio: https://github.com/DarwinNE/FidoCadJ/issues/111 (c'è una roadmap in un mio commento). Prevedo di fare cose simili anche per altri parametri e sicuramente le dimensioni del testo fanno parte dell'insieme, per andare piano piano verso una situazione in cui ci sia maggiore libertà. Se può essere utile, per FidoCadJ che è un'applicazione piccolissima, ci sono un 50 mila linee di codice circa (tutto dentro, anche il codice Android) per un po' più di 170 classi in 1142 commit da 24 persone. Senza contare i commenti o le linee vuote, siamo intorno a 36,6 mila linee contate da OpenHub.

Rispondi

Inserisci un commento

Per inserire commenti è necessario iscriversi ad ElectroYou. Se sei già iscritto, effettua il login.