Contatore Geiger: in attesa dei tubi... Ovvero: Geigerino, il mio contatore Geiger con Arduino
Re: Contatore Geiger: in attesa dei tubi... Ovvero: Geigerino 1.8U, il mio contatore Geiger con Arduino
Aggiungo un altro particolare.
la sezione più importante in assoluto di un frequenzimetro è la base dei tempi (l'oscillatore di riferimento):
se questo non è preciso e stabile, tutti i valori letti non saranno "corretti".
Con una ottima base dei tempi puoi riuscire ad apprezzare le variazioni in frequenza di un oscillatore quarzato (Epson, 48MHz) avvicinando una mano a 40/50cm da esso: il calore emanato è sufficiente a fargli cambiare frequenza (e non di poco).
OK, i frequenzimetri in mio possesso sono molto precisi (HP 5370A, 53132A, Racal Dana 1992) e hanno tutti la base dei tempi ad alta stabilità e se voglio fare misure precise li collego ad un GPSDO o ad un ocillatore al rubidio, ma senza esagerare da questo lato, è più che importante avere una buona base dei tempi.
Chi controlla il controllore?
Riguardo i CPLD, se sai creare uno schema elettrico con i tipici componenti digitali (porte/contatori/flipflop/...) sai già come usare i CPLD!!!
Ci sono molti modi per programmare CPLD/FPGA: con linguaggi come VHDL/Verilog ma anche inserendo un banalissimo schema elettrico. Oltre ai tipici "componenti" trovi anche primitive come contatori a-sincroni de-multiplexer, ....
Se sai "buttare giù" uno schema digitale sei già a posto.
Il bello è che se vuoi modificare le funzionalità del tuo HW (hai sbagliato qualcosa?) ti è sufficiente ricompilare e fare il download del codice sul chip!
esempio di un "kit" estremamente economico (forse anche troppo): vai su aliexpress e fai una ricerca per "ALTERA MAX II EPM240 CPLD" e troverai il kit con anche il programmatore (USB Blaster): ~17Euro
Il SW è gratuito e qui puoi trovare un esempio di come si può "programmare" la CPLD inserendo uno schema elettrico: ftp://ftp.altera.com/up/pub/Tutorials/D ... _schem.pdf" onclick="window.open(this.href);return false;
per maggiori dettagli prova a cercare con "CPLD schematic entry"
Preciso che ho scelto il primo "kit" a caso, dato che per quello che devi fare è più che sufficiente (la massima frequenza di lavoro dello specifico chip è circa 300MHz, se non ho visto male).
Prezzo? 7 €/pz per il chip presso i tipici distributori (ladri).
Rapidissimo tutorial: [External Link Removed for Guests]" onclick="window.open(this.href);return false;
Video su come funziona lo schematic entry (esistono anche funzioni molto più evolute che non ti costringono a lavorare a così basso livello!): [External Link Removed for Guests]" onclick="window.open(this.href);return false; (abbassa il volume: la musica è OSCENA!)
Alcune delle tante funzioni predefinite disponibii:
[External Link Removed for Guests]" onclick="window.open(this.href);return false;
[External Link Removed for Guests]" onclick="window.open(this.href);return false;
i moduli che ti possono interessare sono (ad esempio):
LPM_COUNTER per creare uno o più contatori a 'n' bit
LPM_SHIFTREG per fare uno shift register per leggere tutti i tuoi 'n' bit dei contatori con soli 3/4 piedini (similare a SPI)
Ovvero con pochi "moduli configurabili" hai costruito un contatore.
Tieni conto che come esempio ho usato Altera, ma senza troppe differenze potresti usare Xilinx,Lattice (Intel), Atmel,... usando macromoduli o primitive digitali senza dover scrivere una riga di codice
la sezione più importante in assoluto di un frequenzimetro è la base dei tempi (l'oscillatore di riferimento):
se questo non è preciso e stabile, tutti i valori letti non saranno "corretti".
Con una ottima base dei tempi puoi riuscire ad apprezzare le variazioni in frequenza di un oscillatore quarzato (Epson, 48MHz) avvicinando una mano a 40/50cm da esso: il calore emanato è sufficiente a fargli cambiare frequenza (e non di poco).
OK, i frequenzimetri in mio possesso sono molto precisi (HP 5370A, 53132A, Racal Dana 1992) e hanno tutti la base dei tempi ad alta stabilità e se voglio fare misure precise li collego ad un GPSDO o ad un ocillatore al rubidio, ma senza esagerare da questo lato, è più che importante avere una buona base dei tempi.
Chi controlla il controllore?
Riguardo i CPLD, se sai creare uno schema elettrico con i tipici componenti digitali (porte/contatori/flipflop/...) sai già come usare i CPLD!!!
Ci sono molti modi per programmare CPLD/FPGA: con linguaggi come VHDL/Verilog ma anche inserendo un banalissimo schema elettrico. Oltre ai tipici "componenti" trovi anche primitive come contatori a-sincroni de-multiplexer, ....
Se sai "buttare giù" uno schema digitale sei già a posto.
Il bello è che se vuoi modificare le funzionalità del tuo HW (hai sbagliato qualcosa?) ti è sufficiente ricompilare e fare il download del codice sul chip!
esempio di un "kit" estremamente economico (forse anche troppo): vai su aliexpress e fai una ricerca per "ALTERA MAX II EPM240 CPLD" e troverai il kit con anche il programmatore (USB Blaster): ~17Euro
Il SW è gratuito e qui puoi trovare un esempio di come si può "programmare" la CPLD inserendo uno schema elettrico: ftp://ftp.altera.com/up/pub/Tutorials/D ... _schem.pdf" onclick="window.open(this.href);return false;
per maggiori dettagli prova a cercare con "CPLD schematic entry"
Preciso che ho scelto il primo "kit" a caso, dato che per quello che devi fare è più che sufficiente (la massima frequenza di lavoro dello specifico chip è circa 300MHz, se non ho visto male).
Prezzo? 7 €/pz per il chip presso i tipici distributori (ladri).
Rapidissimo tutorial: [External Link Removed for Guests]" onclick="window.open(this.href);return false;
Video su come funziona lo schematic entry (esistono anche funzioni molto più evolute che non ti costringono a lavorare a così basso livello!): [External Link Removed for Guests]" onclick="window.open(this.href);return false; (abbassa il volume: la musica è OSCENA!)
Alcune delle tante funzioni predefinite disponibii:
[External Link Removed for Guests]" onclick="window.open(this.href);return false;
[External Link Removed for Guests]" onclick="window.open(this.href);return false;
i moduli che ti possono interessare sono (ad esempio):
LPM_COUNTER per creare uno o più contatori a 'n' bit
LPM_SHIFTREG per fare uno shift register per leggere tutti i tuoi 'n' bit dei contatori con soli 3/4 piedini (similare a SPI)
Ovvero con pochi "moduli configurabili" hai costruito un contatore.
Tieni conto che come esempio ho usato Altera, ma senza troppe differenze potresti usare Xilinx,Lattice (Intel), Atmel,... usando macromoduli o primitive digitali senza dover scrivere una riga di codice
Ultima modifica di eliocor il 05/05/2017, 17:57, modificato 1 volta in totale.
٩(•̮̮̃•̃)۶ - Excusatio non petita, accusatio manifesta
Re: Contatore Geiger: in attesa dei tubi... Ovvero: Geigerino 1.8U, il mio contatore Geiger con Arduino
Perché rimuovete i link???
L'utilità per gli utenti viene prima delle regole fisse!!!
L'utilità per gli utenti viene prima delle regole fisse!!!
Gianluca
Canale Youtube: [External Link Removed for Guests]
Canale Youtube: [External Link Removed for Guests]
Re: Contatore Geiger: in attesa dei tubi... Ovvero: Geigerino 1.8U, il mio contatore Geiger con Arduino
@marconmeteo
in questo campo sono un autodidatta ma uso microcontrollori dal mitico ST6, io di formazione sarei un geologo.
@Datman
Anche io ho roba autocostruita, soprattutto perché una attrezzatura migliore sarebbe ampiamente sottoutilizzata.
Per il frequenzimetro ci sarebbe in kit su eBay sotto i 10 euro basata su PIC. Il progetto è di un tedesco.
Io ho preso l'oggetto 371714476625 "1Hz-50MHz Crystal Oscillator Frequency Counter Meter Digital LED PIC DIY Kits" e sembra funzionare ma non ho uno strumento preciso per il confronto.
Il suggerimento di eliocor di passare alla piattaforma STM32 non è male, ci avevo già pensato e da alcuni mesi smanetto anche su quelli. Purtroppo il core non è maturo come quello di Arduino ma credo che un progetto di contatore si possa fare senza troppe difficoltà.
Già su questa piattaforma ci sono alcuni progetti di oscilloscopi, io ho già un DSO138 ma sul forum STM32duino c'è una discussione in merito con tanti progettini.
[External Link Removed for Guests]
Ma avevo pensato anche ad un contatore geiger, di usare uno schermo TFT a colori in SPI che ho già, di usare una scheda SD per salvare i dati.
@eliocor
io preferirei non legarmi a architetture hardware che poi mi rendano difficoltoso il porting su architetture diverse. E' il motivo per cui ho abbracciato Arduino (intendo le API) che, per le mie esigenze, va più che bene. Dopodiché in base alle esigenze ho la possibilità di scegliere tra le schede con Atmel, quelle della Texas, quelle della ST, quelle Expressif (gli ESP8266 e famiglia). I PIC 8bit in ambito professionale sono indubbiamente molto usati (e io ho un pickit3) ma in campo hobbystico sono stati letteralmente cancellati dall'Arduino anche a causa dei bassi costi e dalla vastità di sensori e schede a costi molto bassi.
Inoltre gli strumenti di sviluppo sono gratuiti e volendo si potrebbero usare IDE più evoluti tipo Eclipse o persino VisualStudio.
in questo campo sono un autodidatta ma uso microcontrollori dal mitico ST6, io di formazione sarei un geologo.
@Datman
Anche io ho roba autocostruita, soprattutto perché una attrezzatura migliore sarebbe ampiamente sottoutilizzata.
Per il frequenzimetro ci sarebbe in kit su eBay sotto i 10 euro basata su PIC. Il progetto è di un tedesco.
Io ho preso l'oggetto 371714476625 "1Hz-50MHz Crystal Oscillator Frequency Counter Meter Digital LED PIC DIY Kits" e sembra funzionare ma non ho uno strumento preciso per il confronto.
Il suggerimento di eliocor di passare alla piattaforma STM32 non è male, ci avevo già pensato e da alcuni mesi smanetto anche su quelli. Purtroppo il core non è maturo come quello di Arduino ma credo che un progetto di contatore si possa fare senza troppe difficoltà.
Già su questa piattaforma ci sono alcuni progetti di oscilloscopi, io ho già un DSO138 ma sul forum STM32duino c'è una discussione in merito con tanti progettini.
[External Link Removed for Guests]
Ma avevo pensato anche ad un contatore geiger, di usare uno schermo TFT a colori in SPI che ho già, di usare una scheda SD per salvare i dati.
@eliocor
io preferirei non legarmi a architetture hardware che poi mi rendano difficoltoso il porting su architetture diverse. E' il motivo per cui ho abbracciato Arduino (intendo le API) che, per le mie esigenze, va più che bene. Dopodiché in base alle esigenze ho la possibilità di scegliere tra le schede con Atmel, quelle della Texas, quelle della ST, quelle Expressif (gli ESP8266 e famiglia). I PIC 8bit in ambito professionale sono indubbiamente molto usati (e io ho un pickit3) ma in campo hobbystico sono stati letteralmente cancellati dall'Arduino anche a causa dei bassi costi e dalla vastità di sensori e schede a costi molto bassi.
Inoltre gli strumenti di sviluppo sono gratuiti e volendo si potrebbero usare IDE più evoluti tipo Eclipse o persino VisualStudio.
Re: Contatore Geiger: in attesa dei tubi... Ovvero: Geigerino 1.8U, il mio contatore Geiger con Arduino
Le logiche programmabili sono interessanti ma si trovano blocchi pronti come le librerie, ad esempio per pilotare un LCD o un GPS, oppure bisogna costruire il circuito da zero?
Gianluca
Canale Youtube: [External Link Removed for Guests]
Canale Youtube: [External Link Removed for Guests]
Re: Contatore Geiger: in attesa dei tubi... Ovvero: Geigerino 1.8U, il mio contatore Geiger con Arduino
Il kit del tedesco è a solo 5 cifre...
Gianluca
Canale Youtube: [External Link Removed for Guests]
Canale Youtube: [External Link Removed for Guests]
Re: Contatore Geiger: in attesa dei tubi... Ovvero: Geigerino 1.8U, il mio contatore Geiger con Arduino
E' vero le cifre sono pochine ma costa veramente poco. Il tedesco però ha fatto il progetto, non vende i kit che sono invece venduti da altri. Ho scritto in proposito al tedesco e mi ha risposto che in effetti il kit costa meno di quanto si dovrebbe pagare per comperare i componenti e farsi fare il PCB e si rammarica solamente di non essere stato neanche nominato il che in effetti è un peccato.
Ma il numero limitato di cifre è probabilmente dovuto al fatto che la base dei tempi su cui si basa il conteggio non è che sia poi tanto precisa.
Probabilmente la base dei tempi più economica e allo stesso tempo molto precisa potrebbe essere un GPS di quelli che forniscono un impulso al secondo. Ma al chiuso ovviamente non funzionerebbe.
Ma il numero limitato di cifre è probabilmente dovuto al fatto che la base dei tempi su cui si basa il conteggio non è che sia poi tanto precisa.
Probabilmente la base dei tempi più economica e allo stesso tempo molto precisa potrebbe essere un GPS di quelli che forniscono un impulso al secondo. Ma al chiuso ovviamente non funzionerebbe.
Re: Contatore Geiger: in attesa dei tubi... Ovvero: Geigerino 1.8U, il mio contatore Geiger con Arduino
Io ho usato lo stesso sistema per testare i miei geiger arduino.
Il test lo avevo fatto allo stesso modo se ricordo bene la lettura era lineare fino a 15khz.
Il test lo avevo fatto allo stesso modo se ricordo bene la lettura era lineare fino a 15khz.
Re: Contatore Geiger: in attesa dei tubi... Ovvero: Geigerino 1.8U, il mio contatore Geiger con Arduino
Se hai esperienza e sai scrivere codice, la portabilità del firmware può non essere un grosso problema.zoomx ha scritto:io preferirei non legarmi a architetture hardware che poi mi rendano difficoltoso il porting su architetture diverse. E' il motivo per cui ho abbracciato Arduino (intendo le API) che, per le mie esigenze, va più che bene. Dopodiché in base alle esigenze ho la possibilità di scegliere tra le schede con Atmel, quelle della Texas, quelle della ST, quelle Expressif (gli ESP8266 e famiglia). I PIC 8bit in ambito professionale sono indubbiamente molto usati (e io ho un pickit3) ma in campo hobbystico sono stati letteralmente cancellati dall'Arduino anche a causa dei bassi costi e dalla vastità di sensori e schede a costi molto bassi.
Inoltre gli strumenti di sviluppo sono gratuiti e volendo si potrebbero usare IDE più evoluti tipo Eclipse o persino VisualStudio.
Senza dover arrivare ad un HAL (Hardware Abstraction Layer) perfetto, puoi isolare le parti di codice specifiche ad un micro così da semplificare il porting su altre architetture.
Personalmente io non mi sono legato a nessuna architettura (anche se ne preferisco alcune): dipende solo dal micro utillizzato in uno specifico prodotto/progetto.
Se invece di fare un pezzo ne devi produrre diecimila o più, ogni cosa conta per ridurre il prezzo, anche la scelta di un micro che è perfetto (prezzo, periferiche, pin, ...) ma che magari dal punto di vista del FW ti può dare qualche grattacapo...
Adesso è facile sviluppare, ma quando avevi in tutto 36 byte di memoria e devi fare stare il tuo programma in 1K di memoria... Beh, bisognava fare i salti mortali per farci stare tutto! Coi 4 bit (NEC) poi le cose erano ancora peggio!
Arduino è simpatico, ma ha moltissimi limiti proprio grazie alla sua architettura e la sua filosofia: moltissimi di coloro che lo usano (direi almeno il 90-95%) non hanno la più pallida idea di come funzioni il micro in questione!
E i risultati si vedono: loop stretti, uso degli IRQ quando l'HW stesso permetterebbe di usare i contatori lasciando il 100% di CPU libera di fare altre cose, ...
Questo è ciò che io chiamo "eleganza" nella programmazione: ovvero conoscere cosa stai usando ed usarlo bene!
L'astrazione di arduino nasconde tutto ciò; sicuramente semplifica la vita ma la qualità del codice ne risente e di non poco.
Purtroppo non ci si improvvisa "firmwaristi" e molto spesso il sw non è altro che un accrocchiamento di qualche libreria e di rige continuamente copiate da uno "sketch" all'altro senza neanche comprendere che cosa realmente facciano. Prova ad analizzare il codice di tanti progetti che gironzolano per il web...
Almeno tu vai a controllare che cosa fa il codice, vedi 'tick' dove sei andato ad analizzarne il funzionamento: cosa a dir poco encomiabile!
Ormai quasi dappertutto glli strumenti di sviluppo sono "gratuiti"*, almeno per l'hobbista. A questo riguardo ti consiglio di dare una occhiata a [External Link Removed for Guests] che ha, rispetto alla IDE di arduino, un grossissimo vantaggio: il make del progetto funziona veramente e la compilazione è velocissima (confrontata con arduino). Tale ambiente supporta ARM/ESP8266 ed i soliti noti: non sarà il massimo ma è meglio che quel disastro di arduino.
*) per uno che sviluppa professionalmente i risparmi che ci possono essere adottando una soluzione a pagamento possono essere di gran lunga superiori di un ambiente gratuito. Stessa cosa per l'interfaccia di debug (J-Link/Ulink/...)
٩(•̮̮̃•̃)۶ - Excusatio non petita, accusatio manifesta
Re: Contatore Geiger: in attesa dei tubi... Ovvero: Geigerino 1.8U, il mio contatore Geiger con Arduino
Il mio primo micro è stato un ST6, assembly e cancellazione con UV. Come molti grazie alle spiegazioni di Nuova Elettronica. Per cui si, ho presente alcune cose sul funzionamento.
Arduino nacque come ambiente per artisti e smanettoni non approfonditi non per professionisti e risponde perfettamente per quello scopo. Rispettto ad altre soluzioni che esistevano già è riuscito a creare un ecosistema e una comunità veramente enorme e oggi tra gli hobbysti stravince mentre nel professionale no tanto che Microchip l'ha ingoiato.
Grazie per la segnalaziione di UECIDE. Ho scoperto che ne avevo scaricato una vecchia versione. Vedo che questa si tiene aggiornata alle ultime versione dei vari core, cosa adesso semplificata visto che in Arduino.cc han deciso di dividere il repository dell'IDE da quello del core.
Tornando in argomento. Ho alcune economiche board STM32, quelle note come BluePill, e qualche Maple mini (e altre board), quando la congiuntura dei pianeti sarà favorevole penso di sperimentare la questione interrupt e conteggi vari. Già ho letto che anche l'architettura STM32 non è poi tanto stabile come base dei tempi (è normale visto il costo) ma la quastione è valutare se l'errore totale alla fine sia trascurabile o meno.
Del resto se il problema si presentasse ad alti conteggi in fondo mi pare che difficilmente mi troverò mai in un ambiente a così alta attività.
Visto che c'è l'interesse non mancherò di scrivere qui.
Arduino nacque come ambiente per artisti e smanettoni non approfonditi non per professionisti e risponde perfettamente per quello scopo. Rispettto ad altre soluzioni che esistevano già è riuscito a creare un ecosistema e una comunità veramente enorme e oggi tra gli hobbysti stravince mentre nel professionale no tanto che Microchip l'ha ingoiato.
Grazie per la segnalaziione di UECIDE. Ho scoperto che ne avevo scaricato una vecchia versione. Vedo che questa si tiene aggiornata alle ultime versione dei vari core, cosa adesso semplificata visto che in Arduino.cc han deciso di dividere il repository dell'IDE da quello del core.
Tornando in argomento. Ho alcune economiche board STM32, quelle note come BluePill, e qualche Maple mini (e altre board), quando la congiuntura dei pianeti sarà favorevole penso di sperimentare la questione interrupt e conteggi vari. Già ho letto che anche l'architettura STM32 non è poi tanto stabile come base dei tempi (è normale visto il costo) ma la quastione è valutare se l'errore totale alla fine sia trascurabile o meno.
Del resto se il problema si presentasse ad alti conteggi in fondo mi pare che difficilmente mi troverò mai in un ambiente a così alta attività.
Visto che c'è l'interesse non mancherò di scrivere qui.
Re: Contatore Geiger: in attesa dei tubi... Ovvero: Geigerino 1.8U, il mio contatore Geiger con Arduino
conosco bene la storia di arduino: possiedo ancora la prima versione con (vado a memoria) il numero di serie attorno al 700.
Lo aveva preso, infatti, un mio amico musicista con cui collaboro.
Riguardo a STM32, il difetto principale della base dei tempi è che ha un certo jitter dovuto al PLL del clock; per gli usi "standard" ciò è ininfluente.
Il bello dei contatori (di default a 16 bit) è che possono venire configurati in cascata, ottenenedo quindi dei 32 bit.
Lascia perdere il conteggio con IRQ ed usa invece direttamente i contatori, come faccio ad esempio in questo scheletro di sketch buttato giù in pochissimo tempo: [External Link Removed for Guests]" onclick="window.open(this.href);return false;
Come vedrai, anche con arduino si può scrivere codice che è efficiente e che non perde un colpo.
Tale codice è facilmente trasportabile su altre piattaforme.
Se vuoi sviluppare con STM32, ti consiglio VIVAMENTE (l'ho acquistato) questo libro: LINK RIMOSSO - ART. 10 REGOLAMENTO
P.S.: dato che a quanto pare gli amministratori sono un po' troppo volonterosi, provvedi a fare una ricerca con le seguenti parole: "mastering stm32 noviello" e troverai il libro in questione.
Lo aveva preso, infatti, un mio amico musicista con cui collaboro.
Riguardo a STM32, il difetto principale della base dei tempi è che ha un certo jitter dovuto al PLL del clock; per gli usi "standard" ciò è ininfluente.
Il bello dei contatori (di default a 16 bit) è che possono venire configurati in cascata, ottenenedo quindi dei 32 bit.
Lascia perdere il conteggio con IRQ ed usa invece direttamente i contatori, come faccio ad esempio in questo scheletro di sketch buttato giù in pochissimo tempo: [External Link Removed for Guests]" onclick="window.open(this.href);return false;
Come vedrai, anche con arduino si può scrivere codice che è efficiente e che non perde un colpo.
Tale codice è facilmente trasportabile su altre piattaforme.
Se vuoi sviluppare con STM32, ti consiglio VIVAMENTE (l'ho acquistato) questo libro: LINK RIMOSSO - ART. 10 REGOLAMENTO
P.S.: dato che a quanto pare gli amministratori sono un po' troppo volonterosi, provvedi a fare una ricerca con le seguenti parole: "mastering stm32 noviello" e troverai il libro in questione.
٩(•̮̮̃•̃)۶ - Excusatio non petita, accusatio manifesta