iw3fnk
Projects
Sito sperimentale radiomatatoriale di IW3FNK ......
PROGETTO DI UN GENERATORE DI ROGER BEEP CHE UTILIZZA UN MICROCONTROLLORE MICROCHIP PIC 16F84.
IL PROGETTO ORIGINARIO È DI MIJO KOVACEVIC, S51KQ, DISPONIBILE AL LINK HTTP://LEA.HAMRADIO.SI/~S51KQ/.
QUEST’ULTIMO È STATO MODIFICATO DAL SOTTOSCRITTO PER LE MIE ESIGENZE E DI ALCUNI ALTRI AMICI RADIOAMATORI (GRAZIE MIJO).
Questo è lo schema elettrico modificato del generatore di Roger Beep.
Rispetto al progetto originale di S51KQ aggiunti:
un diodo LED da 3 mm con indicazione di attività del microcontrollore
un pulsante per variare la velocità di battute al minuto delle lettere “R” e “K”
Dalla versione BETA sono stati aggiunti:
- il pulsante MODE SELECTION che sostituisce i 2 MODE jumpers (selezione software del modo di funzionamento con memorizzazione del modo selezionato anche in mancanza di tensione)
un pulsante per l’invio del locatore in CW (da richiedere quello corretto, attualmente JN65DE)- il led indicherà con una sequenza preimpostata di lampeggi la selezione del modo di funzionamento impostato:
1 BEEP 2 “R” . – . 3 “K” – . – 4 MELODY 5 TONO 1750 Hz
A livello di codice è stato inserito un antirimbalzo software sul pulsante PTT (anche durante la trasmissione) e sono state implementate le tempistiche delle battute in maniera dinamica per mantenere costante il rapporto punto/linea al variare della velocità.
Project 1: Roger Beep per Ham Radio
12 giugno 2006
Schematic BEEP ROGER generator v1.00
Project 2: Ultrasound probe for level meter
13 SETTEMBRE 2013
Il progetto nasce alla fine dell’estate dell’anno 2013 abbandonando l’uso dei microcontrollori PIC per passare ad un sistema di cui avevo sentito parlare da un amico di vecchia data con cui avevamo condiviso per anni una passione assieme.
Ho cercato sulla rete le prime informazioni di “Arduino” scoprendo che il web è pieno di notizie, progetti, siti web, negozi on line di questo piccolo sistema dotato di tutto quello che serve per realizzare qualsiasi tipo di progetto in quanto dotato di ingressi e uscite digitali, ingressi ed uscite analogiche, il tutto è poi semplificato da un ambiente di sviluppo free dotato di una miriade di librerie già sviluppate da altri utenti e di libero utilizzo per tutti.
Il linguaggio di programmazione mi ricorda il “C” studiato a scuola anni orsono, comandare un display a matrice di punti non è mai stato così semplice. Certo ci sono volute un paio di ore pur avendo il materiale in mano per realizzare un primo prototipo “Hello World” e installare “la libreria” corretta, ma completato il primo circuito con pochi fili “volanti”, scopiazzato le prime righe di codice scritto sugli esempi delle librerie, compilato il file sorgente e caricato su “Arduino” l’eseguibile per visualizzare sul display “Ciao Mondo” da li poi ho realizzato le potenzialità di questo piccolo sistema a basso costo e alla portata anche dei meno esperti.
Certo ora avevo capito cosa si poteva fare con Arduino, la facilità con poche righe di codice di realizzare cose che per essere realizzate con i miei primi progetti realizzati in linguaggio Assembler per il PIC 16C84 a metà degli anni ’90 avrebbero portato via parecchio tempo anche per semplici routine di linguaggio a basso livello e senza neanche pensare di comandare un display a matrice di punti.
Per me sarebbe stata fantascienza, tenendo anche conto che ero un autodidatta sotto questo aspetto e che Internet esisteva si ma non era quello come lo conosciamo oggi. Quindi gli approcci per capire, lo studio, le informazioni le si avevano su qualche rivista specializzata del settore elettronico qualche volta o le si potevano avere tramite qualche libro chiedendo ogni tanto a diverse librerie del luogo e della vicina Padova dove diversi amici frequentavano l’università al Dipartimento di Elettronica ed Informatica. Tutto girava su carta…
Poi c’era anche l’aspetto della realizzazione del circuito che doveva tenere conto di una conoscenza media dei componenti elettronici e di come questi devono essere collegati ad un componente programmabile che accettava solamente segnali digitali TTL. Certo poi il codice scritto semplificava l’uso di altri componenti digitali e si riduceva all’uso di pochi componenti discreti.
Quindi l’autunno si stava avvicinando e come sempre, da anni ormai, io e qualche altro amico radioamatore tutte le sere dopo cena ci si trovava in “radio” per parlare di prove fatte con una nuova antenna piuttosto che una nuova interfaccia da provare con la radio per trasmissioni digitali, il “packet” ormai era stato surclassato da Internet da anni e abbandonato da quasi tutti i radioamatori.
Restava sempre un pensiero su cosa realizzare con “Arduino” durante l’inverno e che impiegasse le poche ore disponibili per gli hobby per realizzare qualcosa di utile e funzionale e di cui parlare durante lo sviluppo del progetto per radio.
Ecco che, con l’avvicinarsi del mese di novembre, Davide nonché IW3HUL, inizia a parlare dei problemi che il fenomeno “dell’acqua alta” provoca non solo alla città di Venezia ma della stessa città di Chioggia dove viviamo. Non solo provoca l’allagamento diffuso del centro storico della città di Chioggia e Sottomarina ma in determinate condizioni climatiche, quali piogge, vento, pressione atmosferica e maree, provocano anche l’esondazioni di fiumi in alcuni tratti dell’asta fluviale e in particolar modo e maggiormente in prossimità della foce verso la scarico in mare.
Esiste un punto critico nel nostro Comune dove tre fiumi, Brenta, Bacchiglione e Gorzone, confluiscono verso il mare in unico alveo, portando con se le portate di magra, di piena e d’inondazione. In questo punto fuori dagli argini dei fiumi sopracitati ci sono alcuni nuclei famigliari che vengono soggiogati in certi periodi dell’anno dall’impeto delle acque. Ecco che Davide chiede se sia possibile realizzare un qualcosa che avvisi di un pericoloso innalzamento delle acque, soprattutto se questo fenomeno avviene durante la notte dato che difficilmente, se non avvisati con anticipo dalla Protezione Civile, qualcuno resterà di guardia a monitorare il fenomeno, e ancora più difficile sarà misurare con precisione il livello dell’acqua per determinare la tendenza se quest’ultima è in calo o in crescita.
Ecco che l’idea è stata data e ora si trattava di pensare come realizzare uno strumento di misura che riportasse con una buona precisione il livello dell’acqua e come visualizzarlo in campo. Via via che si parlava di questa idea ecco che un “upgrade” veniva alla mente e veniva aggiunto alle cose che il nuovo progetto doveva o ancor meglio dovrebbe essere in grado di fare. Per prima cosa come misurare il livello dell’acqua. La prima scelta ricade su un possibile potenziometro fissato su un punto fisso e dotato di una leva di una determinata lunghezza con posto alla fine della stessa leva un sistema galleggiante, creando così un partitore di tensione con un campo variabile tra 0 e 5 V e collegato ad un ingresso analogico di Arduino che sarebbe stato in grado di leggere un tensione direttamente proporzionale al livello dell’acqua. Posto quasi subito il dubbio su come realizzare un sistema meccanico sicuro, a tenuta d’acqua e duraturo l’idea venne scartata dopo pochi minuti di ragionamento direttamente sul posto scelto dove installare il sistema.
Ecco l’idea che potrebbe portare ad una soluzione il sistema che rileva la misura, una piccolo modulo ad ultrasuoni utilizzato su tante applicazioni nel mondo Arduino, misure di distanza in primis.
Ecco il modulo prescelto:
Un paio di prove dopo l’attesa della consegna dall’acquisto e il sistema misura le variazioni dei centimetri grazie a tanti sketch trovati sulla rete. Il display dot matrix lcd riportava puntualmente la misura fatta dal modulo ad ultrasuoni. Entusiasta della verifica fatta in casa urgeva una prova in campo a casa di Davide, il quale si era già messo all’opera per recuperare materiale per realizzare il piccolo quadro elettrico per l’arrivo, al box acquistato per contenere tutta la parte elettronica, dell’energia elettrica. La fortuna vuole che parecchio materiale era già disponibile in un magazzino del suocero di Davide che recuperava da vecchi cantieri che venivano smantellati. Quindi cavo elettrico in neoprene 3×1,5 mm, quadretto elettrico di distribuzione IP55 e staffe varie per il montaggio su un palo della recinzione a stretto confine con la riva del fiume Gorzone. Quindi nel giro di un sabato pomeriggio, grazie ad un passaggio in un vecchio tubo abbandonato per lo scarico delle acque meteoriche che partiva da un lato della strada si è arrivati con il cavo elettrico al palo che avrebbe ricevuto il box IP55. Alimentato il box dalla propria abitazione verso il tardo pomeriggio veniva provato in maniera del tutto “posticcio” il circuito base con Arduino, il display e il modulo ad ultrasuoni, il tutto alimentato da un piccolo alimentatore switching da 9 V. Tutto funzionava ed eravamo contenti, ma, perché c’era un ma, la sonda ad ultrasuoni non era nata per stare alle intemperie, certo posta alla debita distanza mai sarebbe stata sommersa ma pur sempre pioggia, insetti, sporcizia, ecc., l’avrebbe resa inutilizzabile in breve tempo. Varie idee erano nate per renderla impermeabile ma ecco che “Bepi”, il suocero di Davide recupera dal suo magazzino un “qualcosa”, ci dice che era montata in un grosso serbatoio d’acqua di un vecchio impianto smantellato più di due anni prima. Sonda in mano e scopriamo che abbiamo una sonda ad ultrasuoni industriale, con un attacco a vite per fissarla su una staffa, completamente stagna. Resta da capire come funzionava e se effettivamente funzionava ancora.
Ebbene si avevamo un trasmettitore ad ultrasuoni della Siemens che doveva essere alimentato a 24 V, in uscita avrebbe generato una corrente, compresa tra 4 e 20 mA, proporzionale a due punti memorizzati nella sonda, uno punto inteso “vuoto” e un punto come “pieno”. Letto velocemente il manuale la cosa che ci premeva di più era capire se la sonda funzionava ancora. Messe 2 vecchie batterie da antifurto in serie ormai con poca corrente disponibile ma tale comunque da riuscire a far accendere la sonda e visualizzare dei numeri sul display. Non potevamo sperare in meglio, la sonda rivolta verso la parete della casa faceva sentire dei piccoli suoni, erano gli impulsi che trasmessi dalla sonda rimbalzavano sul muro e dal muro ritornavano alla sonda. Erano quasi impercettibili ma facendo attenzione e spostando la sonda un poco più avanti o un poco più indietro questi “ping” si potevano percepire. Il problema sonda era definitivamente risolto e nel miglior modo possibile.
Ripreso il manuale in mano, rigorosamente in “english”, abbiamo trovato la funzione per impostare il livello “vuoto” e il livello “pieno”, il tutto simulato avvicinando la sonda al muro per definire il massimo livello e allontanandola successivamente per memorizzare il minimo livello. Avevamo deciso a priori che la massima escursione misurabile sarebbe stata di 1,90 metri. Oltre quella quota le case avrebbero avuto l’acqua a livello delle finestre e pensare ad un livello dell’acqua così elevato, mai successo a memoria d’uomo, abbiamo deciso che sarebbe stato sufficiente tale valore. Quindi sostanzialmente a 30 cm dalla parete avremmo ottenuto in uscita una corrente di 20 mA mentre a 220 cm la sonda avrebbe generato una corrente di 4 mA. Bene, ora bisogna risolvere il problema per passare ad un ingresso analogico di Arduino una tensione e non una corrente. Il problema si risolve semplicemente facendo passare questa corrente attraverso due resistenze poste in serie e creando un partitore di tensione usando delle resistenze con tolleranza al 1% dove prelevare una tensione compresa tra 0 e 5 V. Esattamente il nostro partitore di tensione restituirà 0,88 V quando le nostre resistenze verranno attraversate dai 4 mA e 4,4 V quando verranno attraversate dai 20 mA. In totale l’escursione di tensione che forniremo sull’ingresso analogico del nostro Arduino è pari a 3,52 V. Considerato che gli ingressi analogici di Arduino effettuano una conversione a 10 bit nel nostro campo di misurazione riusciremo ad utilizzare non tutti i 1024 bit della conversione ma un valore inferiore pari a 717 bit. In sostanza ogni variazione di 4,9 mV sull’ingresso analogico otterremo una variazione più o meno di 1 bit a seconda dell’aumento o alla diminuzione della tensione, che tradotto in misura di livello ogni variazione di circa 1,8 mm teoricamente farà variare la tensione sul nostro partitore di 4,9 mV. Questi sono i dati di calcolo e progettuali, poi gli aggiustamenti verranno effettuati inserendo dei valori di “offset” se necessari per portare la misura letta sul display governato dal nostro Arduino con la reale misura letta dalla sonda e verificata in campo anche con un metro. Chiedo scusa fin d’ora se le terminologie usate in precedenza e successivamente non risultano e risulteranno corrette ma le mie conoscenze provengono da quando si utilizzavano ancora i BJT e venivano realizzati i calcoli per una corretta polarizzazione del transistor, o ancora quando un transistor veniva utilizzato per piccoli segnali in radio frequenza usando il modello di Giacoletto. Il “digitale” per me è stata una scoperta fatta tanti anni dopo la formazione scolastica e una svolta c’è stata con l’apprendimento del linguaggio Assembler da autodidatta fatta assieme all’amico e collega Andrea IW3GQL come spiegato all’inizio.
La sonda ad ultrasuoni deve essere alimentata a 24 V dc, per ovviare ed acquistare un alimentatore dedicato ho optato per un Step Up converter. Prende in ingresso una tensione variabile tra 3 V e 32 V e ne ritorna in uscita una compresa tra 5 V 3 35 V. Se ne trovano di tutti tipi e a prezzi vari, il mio rigorosamente CHINA e similare a quello in foto, è alimentato da un piccolo alimentatore a 9 V switching, il modulo booster innalza la tensione a poco più di 18 Vdc per alimentare la sonda ad ultrasuoni, più che sufficienti per un funzionamento corretto.
Mentre un piccolo modulo che si usa per alimentare una breadord a 5 V e 3,3 V è usato per ridurre la tensione di 9 V, proveniente dall’alimentatore switching, per alimentare i moduli digitali del circuito. Fondamentale la presenza dei 3,3 V necessari per alimentare il modulo “Wi-Fi” ESP2866 utilizzato per la connessione wireless al router connesso ad Internet presente in sito.
Un altro aspetto da tenere in considerazione riguarda le tensioni dei livelli logici che abbiamo sugli I/O di Arduino e il modulo ESP2866. Questi livelli logici si trovano a due tensioni diverse, 5 V per Arduino e 3,3 V per quanto riguarda il modulo ESP2866. Girovagando in rete ho trovato e acquistato questo piccolo modulo a una cifra ridicola, 5 pz. a poco più di un Euro. Questo servirà per collegare un ingresso del modulo ESP2866 ad un’uscita di Arduino per comunicare il livello dell’acqua e pubblicarlo in rete. Essendo la comunicazione unidirezionale, per il momento, si poteva semplificare con un semplice partitore di tensione, ma pensando a futuri sviluppi il “level shifter” mi è sembrata la soluzione migliore.
Il prototipo già in fase avanzata, la versione in foto aveva il modulo per la trasmissione a 2,4 GHz (non rete Wi-Fi) della misura di livello, della tensione dei moduli alimentati a 5 V, la corrente totale assorbita dai circuiti, la temperatura della "motherbord" e la sonda IP65 realizzata "home made" per la misura della temperatura dell'acqua. Il tutto viene ricevuto tramite il modulo di trasmissione sopracitato in un circuito appositamente realizzato.
Tutte le operazioni di assemblaggio sono state realizzate con l'aiuto e nel laboratorio di Guglielmo IW3HUC.
- H=31 cm, livello dell’acqua
- “=” è il simbolo che indica che negli ultimi 10 minuti il livello non è variato, il simbolo “+” avrebbe indicato che il livello è cresciuto negli ultimi 10 minuti, il simbolo “-” avrebbe indicato che il livello è diminuito negli ultimi 10 minuti
- V=4.99 Volt, indica la tensione dei circuiti digitali
- I=0.41 Ampere, indica la corrente assorbita dai circuiti digitali alimentati a 5 Volt
- T board=35.51 °C, indica la temperatura all’interno del box, il sensore usato è un Dallas DS18B20.
- La lettura del livello viene effettuata ogni minuto, con 10 letture disponibili (10 minuti) viene effettuata una media aritmetica, eliminando i decimali, e si determina la tendenza del livello, uguale, in crescita e in calare rispetto alla media della lettura precedente. Il livello H, invece, viene aggiornato ogni minuto.
Altro aspetto che si è tenuto conto è a quale livello dell’acqua ci si deve confrontare per le nostre misure non avendo nessun livello a cui riferirsi. Una misura nota è il livello di marea delle varie località dell’Alto Adriatico, noi per il nostro progetto ci siamo allineati con la misura della marea della Laguna di Venezia “Chioggia Diga Sud”. E’ chiaro che il livello del fiume quasi sicuramente non è corretto con questa misura, ma l’idea di leggere un valore a cui ci si possa sempre riferire per un controllo che il sistema sia “allineato e funzionante” ci è piaciuta.
Work in progress.....
A questo link si accede in tempo reale alla stazione meteo di Chioggia http://meteochioggia.it



Users Today : 0
Views Today :
Total views : 1445