Go Down

Topic: [OT] richiesta di aiuto per programmino x Accordatore (Read 73955 times) previous topic - next topic

leo72

Lo trovi in 2 punti perché "entra" in due parti del circuito. Ma la linea del segnale è sempre la stessa, e porta al pin Vin della scheda. Se apri il file Eagle della board, ed evidenzi la linea, trovi dove va.

Campa1957

grazie della info,
volevo valutare se per realizzare l'alimetazione della nuova schedina mi conviene portare su l'alimentazione dalla scheda di Arduino oppure tagliare i piedini delle alimentazioni e lasciare solo la massa.
Penso seguirò la seconda ipotesi, così non corro il rischio di sovracaricare qualcosa sulla schedina.

Campa1957

menniti

Ma quella che chiami nuova schedina quanta corrente assorbe a pieno carico? Comunque siail mio consiglio è: stai alla larga dalla linea Vin.
Manuale "Arduino e le tecniche di programmazione dei microcontrollori ATMEL"
http://www.michelemenniti.it/manuale_di_programmazione.html
http://www.michelemenniti.it/offerta.html
Articoli ElettronicaIN
http://www.michelemenniti.it/elettronica_in.html

Campa1957

#198
Aug 10, 2013, 11:31 am Last Edit: Aug 10, 2013, 11:36 am by Campa1957 Reason: 1
Ciao Michele,

il tuo consiglio non poteva essere più chiaro!

La corrente è minima, devo alimentare 3 ULN2803 e tre o quattro Led.
Il mio obiettivo è avere sulla schedina nuova solo un 12v, per alimentare tutto quello che ci sto montando sopra.
Per essere sicuro di non ritornare sulla scheda di Arduino del 12v non desiderato ho tagliato i piedini Vin, +5 e +3.3 così sono sicuro che non ci sono ritorni e posso usare le connessioni del +5 per il mio +12, logicamente non ho toccato le connessioni della massa.

Spero in giornata di finire il montaggio e le verifiche dei collegamenti poi butto giù una bozza di schema a penna, per spiegare la mia idea.
Con questa nuova interfaccia penso finirò le prove senza radio frequenza, quando 'i giochi' diveteranno seri ho una mezza idea di realizzare una nuova scheda, per ora sempre 1000 fori, su cui realizzare il primo prototipo, con scheda di Arduino montata capovolta, e tutti i buffer di uscita che pilotano direttamente i relè di pilotaggio dei relè RF.

Campa1957

menniti

ok, usa almeno una riga per le linee e lo stampatello per le scritte :smiley-sweat:
Manuale "Arduino e le tecniche di programmazione dei microcontrollori ATMEL"
http://www.michelemenniti.it/manuale_di_programmazione.html
http://www.michelemenniti.it/offerta.html
Articoli ElettronicaIN
http://www.michelemenniti.it/elettronica_in.html


Campa1957

Aggiornamento parte HD

prima di pranzo ho ultimato il montaggio della schedina da montare sopra la scheda di Arduino.
Dopo un po' di prove e controlli ho cestinato il tutto, troppa roba in troppo poco spazio!
Nel primo pomeriggio ho iniziato ad assemblare la sceda che avevo pensato di realizzare come montaggio finale da cui relizzare poi lo schema elettrico definitivo, per adesso, nel famoso cassetto di fondo, ho trovato tutti i materiali necessari.
Spero domattina di finire il montaggio e verificare i vari funzionamenti dei Buffer e di insallare sopra al tutto la scheda Arduino capottata!?!
Provata la parte elettrica/elettronica riprendo le verifiche del SW.

ciao

Campa1957

testato

Perché cappottare ste povere schede  :)

Per abbreviare hardware è meglio usare HW
HD si usa per alta definizione
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Campa1957


marcopxm

Salve a tutti,
questo è il mio primo messaggio sul forum, forum che seguo con interesse insieme a quello su www.arifidenza.it in quanto anche io vorrei progettare e  realizzare  prima o poi un accordatore d'antenna.
Il mio approccio è principalmente teorico: al momento valuto varie alternative, cerco di prevedere le prestazioni, poi forse procederò alla realizzazione di un prototipo, quindi se Campa57 procede alla realizzazione fisica a me va bene.

Come contributo scrivo alcuni miei commenti di cui gradirei ricevere i vostri pareri.

I relè: i relè SIEMENS VR311 sono bellissimi, ma costano 18 € l'uno !.
Un accordatore commerciale per 80-100 W mi pare sia venduto a soli 200 Euro.
Certamente non è competitivo progettarne e costruirne uno, ma lo facciamo per divertimento per imparare come si fa!

x Campa57: Per quale potenza intendi progettare l'accordatore?  alcuni kW ?.
I relè VR311 presentano una resistenza dei contatti di soli  0,012 ohm, ma un relè più economico con una resistenza di contatto dieci volte maggiore non va ancora sufficientemente bene?
E la bobina del relè 24V 335 ohm:  I = 24/335 = 70 mA , dissipa  24*0.07 = 1,7 watt.
Con tutti i relè eccitati (8+8)* 1,7 = 20 watt, l'ambiente  scaldicchia, è in una scatola ventilata? Se la scatola è stagna come fa a essere ventilata?
Forse dopo l'accordo possono venire sottoalimentati a 15 V senza che si sgancino, ma forse aumenta la resistenza dei contatti.
In ogni modo ci si possono  saldare  bobine  e induttori direttamente sui contatti, risparmiando basetta mille-fori o lo stampato.

Un banco di 8+8 relè non si può pilotare direttamente con Arduino1, mancano  le uscite necessarie;  serve un "8 bit I/O expander with serial line" MCP23S08  seguito da   "8bit darlington" ULN2803  Microchip usati dall'OM statunitense, o da altri equivalenti che però non conosco. Però occorre utilizzare una libreria per comandarli con la linea ISP, e per il momento complicherebbe il programma.

Non passerei a Arduino Mega, perché più costoso  e utilizzante un  controllerCPU a montaggio superficiale. Se si utilizzano solo componenti DIP è più semplice realizzare un kit economico con ATMEL già programmato, che sostituisce la schedina Arduino e  che può venire montato da appassionati non attrezzati per le saldature su componenti miniaturizzati.

Lascierei il pin 13 libero, dato che pilota il LED di segnalazione.

Per le prime prove su un dimostratore del funzionamento mi accontenterei di un banco di 5 +  5 relè che dovrebbero essere sufficienti per un accordatore bi-tri-banda 14-21-28 MHz oppure 7-10-14 MHz.
Gli accordatori con 8+8 relè dovrebbero  accordare da 3,5 a 30 MHz. Quelli con 9   da 1,8 MHz a 50 MHz.

Per collaudare l'accordatore userei carichi resistivi di  50,  100,  200  ohm  da 5W almeno ; l'accordatore deve trasformarli in 50 ohm ossia ROS= 1, Gamma riflessione=0.
In condizioni più generali, il carico potrebbe essere una impedenza con parte reale compresa fra 50 e 300 ohm e reattanza fra -300 (capacitiva) e + 300 (induttiva) ohm.
Con condensatore connesso lato carico, una  resistenza di carico minore di 50 ohm non viene accordata.

L'accordatore è pensato per essere utilizzato outdoor, messo vicino all'antenna (sul tetto e traliccio) ?. Se no un accordatore manuale vicino al RTX va bene lo stesso e costa meno.

Se si adoperassero relè di tipo "latch" con ritenuta magnetica dell'ultima posizione comandata?. Occorre duplicare il numero di uscite, perchè ognuno ha un comando di ON e uno di OFF, però una volta commutati non consumano corrente.
           
Con 5+5 relè e Arduino 1 rimangono disponibili i pin per la linea seriale, per capire che ROS legge Arduino e come funziona il programma.

Attenzione alla tolleranza delle induttanze:  5 bit >> 32 valori>> 100/32 = 3,2 % di tolleranza almeno.

Ora la diagnostica e la verifica del funzionamento.
Prima di preoccuparmi dell'accordo automatico, realizzerei un telecomando, variando induttanza e capacità  con un interruttore e due pulsanti applicati agli ingressi (analogici commutati in digitali ) di Arduino.  Interruttore:aperto opera su induttanza, chiuso: opera su capacità.
Pulsanti: incremento / decremento del banco selezionato. Attenzione: sviluppare un piccolo algoritmo per eliminare i rimbalzi dei pulsanti che possono provocare degli incrementi multipli.

SE NON FUNZIONA PERFETTAMENTE IN TELECOMANDO  SICURAMENTE  NON FUNZIONERA' IN AUTOMATICO.

Alleg un programmino che incrementa /decrementa di continuo L e C  in modo che con un induttanzimetro si possa osservare una variazione a gradini uniformi della induttanza/capacità. Meglio ancora se osservata in modo grafico su oscilloscopio digitale.
Nel programmino, non spaventatevi: sono dichiarate variabili che non sono adoperate, sul mio Arduino Uno Rev.3 gira, ma non posso vedere le uscite comandi digitali, inoltre visualizza sul monitor del sistema di sviluppo  i valori acquisiti dai due canali analogici.
Spero che funzioni.


Ho scritto queste note anche per me come promemoria per un eventuale articoletto.

Saluti a tutti, aspetto vostre osservazioni.
                                                                 Marco  11/8/2013  

   
 


marcopxm

#205
Aug 11, 2013, 04:08 pm Last Edit: Aug 12, 2013, 11:57 am by leo72 Reason: 1
Ecco il programma;  non è testato spero che funzioni!!
Code: [Select]
//...........................
/* IK1PXM Marco Ducco 8/8/2013 11/8/013  Ricerca automatica accordo di un accordatore LC da definire.
L'algoritmo agisce su pcC1 e pcC2 intesi come percentuale di comando 1, percentuale di comando 2, campo di escursione da 0 a 31.
Nel caso dell'accordatore LC uno è il comando dell'induttanza (0 il minimo, 31 il massimo), l'altro il comando della capacità.
Dato che l'algoritmo procede per tentativi, l'assegnazione  ai relè di pcC1, pcC2 è arbitraria.
Compilato con Arduino versione: 1.0.4
*/
int stato_ric;
int step_ok_C1, step_ok_C2;
int cont_step;//protezione se l'algoritmo non termina
float Gamma,Gammap,Gamma_lim;
int  deltaPCC,dPCCmin;
int pcC1,pcC2,pcCmax;
boolean in_corso;

//definizioni delle uscite/ingressi digitali:
int outCp1 = 2; //comando capacità peso 1 assegnata alla uscita 2
int outCp2 = 3; //comando capacità peso 2 assegnata alla uscita 3
int outCp4 = 4;
int outCp8 = 6;
int outCp16 = 7;

int outLp1 = 8; //comando induttanza peso 1 assegnata alla uscita 8
int outLp2 = 9;
int outLp4 = 10;
int outLp8 = 11;
int outLp16 = 12;

int counter_in = 5;//ingresso riservato alla misura frequenza
int led = 13;//LED lampeggio per segnalare CPU viva


//simulatore rete, parametri banda 20 metri
//pcC1 = 60; //per cento apertura cond variabile C1 (in parallelo lato generatore)
//pcC2 = 84; //per cento apertura cond variabile C2 (in serie lato carico)
float RSC = 100;//resistenza serie iniziale del carico. viene cambiata coi tasti 5 e 6.
float XSC = 0;//reattanza serie del carico (positiva induttiva, negativa capacitiva)
float FMHz_rif = 14.2 ;//frequenza di lavoro di riferimento in MHz
float C1min = 20;// pF capacità minima condensatore C1
float DeltaC1 = 160.;// pF variazione C1 rispetto al minimo
float C2min = 20;//capacità minima condensatore C2
float DeltaC2 = 340.;//variazione C2 rispetto al minimo
float RSL = 0.5;// resistenza serie bobina (perdite resistive DC + effetto pelle)
float C3 =  450;// capacità di C3 in pF
float L1 =  1.1;//2.7 ;// induttanza in uH viene cambiata a passi del 5% coi tasti 7 e 8.
boolean pcC1_inc, pcC2_inc;
int V_rifl,V_dir;

void setup()
{
 Serial.begin(19200); // open the serial port at 19200 bps:
 //delay(1000);  // wait for a second    
 Serial.println(" programma sviluppo accordatore PXM");  
 pinMode(led, OUTPUT);
 pinMode(counter_in, INPUT); //ingresso misura frequenza (futura miglioria da sviluppare)  
 pinMode(outLp1, OUTPUT);  pinMode(outLp2, OUTPUT);  pinMode(outLp4, OUTPUT);  pinMode(outLp8, OUTPUT); pinMode(outLp16, OUTPUT);
 pinMode(outCp1, OUTPUT);  pinMode(outCp2, OUTPUT);  pinMode(outCp4, OUTPUT);  pinMode(outCp8, OUTPUT); pinMode(outCp16, OUTPUT);
 
 stato_ric=0; //variabile della "macchina a stati" stato ricerca
 step_ok_C1=0; step_ok_C2=0; // contatori passi buoni nella ricerca
 cont_step=0; //contatore globale passi
 in_corso = true;

 pcC1=75;pcC2=75; //valori iniziali dei comandi
 deltaPCC = 4;// passo di variazione iniziale dei PCC
 dPCCmin = 1;//mnimo valore del gradino di variazione
 pcCmax = 31;//limite sup comando

}


void loop()
{
 sono_vivo();//temporizza di due secondi
 seq_incr_decr();// genera sequenza incremento, un passo ogni 2 secondi
// ric_veloce_accordo();
 comandi_ai_rele();//da pcC1,pcC2 ai pin comando relè
// accord_a_LC();
 acquisisci_Gamma();
 Serial.print ("V_rifl="); Serial.print (V_rifl);
 Serial.print ("   V_dir="); Serial.print (V_dir);
}


void sono_vivo()
{ //fa lampeggiare il LED  pin 13 su Arduino
 digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
 delay(1000);               // wait for a second
 digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
 delay(1000);               // wait for a second
}


void seq_incr_decr()
{ //fa variare di una unità a scaletta a salire e scendere in comandi pcC1 e pcC2, in modo da verificare
 //con un induttanzimetro o un capacimetro che l'induttanza e la capacità varino in modo regolare
 if (pcC1_inc)
 { pcC1= pcC1 +1; if( pcC1> pcCmax){ pcC1=pcCmax; pcC1_inc=false;}}
 else
{ pcC1= pcC1 -1; if( pcC1<=0){ pcC1_inc=true;}}
 if (pcC2_inc)
{ pcC2= pcC2 +1; if( pcC2> pcCmax){ pcC2=pcCmax; pcC2_inc=false;}}
else
{ pcC2= pcC2 -1; if( pcC2<=0){ pcC2_inc=true;}}
 //delay(1000);  // wait for a second    
}


void comandi_ai_rele() //da pcC1, pcC2 contenenti un mumero fra 0 e 31 ai cinque pin comando relè
{
//Non è una struttura elegante, ma dovrebbe funzionare.
//comando ai relè dell'induttanza  
boolean rilas = HIGH; boolean attrat = LOW;// per invertire azione relè della bancata invertire HIGH con LOW
if ((pcC1 && 1) !=0){ digitalWrite(outLp1, rilas);}else { digitalWrite(outLp1, attrat);}
if ((pcC1 && 2) !=0){ digitalWrite(outLp2, rilas);}else { digitalWrite(outLp2, attrat);}
if ((pcC1 && 4) !=0){ digitalWrite(outLp4, rilas);}else { digitalWrite(outLp4, attrat);}
if ((pcC1 && 8) !=0){ digitalWrite(outLp8, rilas);}else { digitalWrite(outLp8, attrat);}
if ((pcC1 && 16)!=0){ digitalWrite(outLp16, rilas);}else { digitalWrite(outLp16, attrat);}

//comando ai relè della capacità
rilas = HIGH; attrat = LOW;// per invertire azione relè della bancata invertire HIGH con LOW
if ((pcC2 && 1) !=0){ digitalWrite(outCp1, rilas);}else { digitalWrite(outCp1, attrat);}
if ((pcC2 && 2) !=0){ digitalWrite(outCp2, rilas);}else { digitalWrite(outCp2, attrat);}
if ((pcC2 && 4) !=0){ digitalWrite(outCp4, rilas);}else { digitalWrite(outCp4, attrat);}
if ((pcC2 && 8) !=0){ digitalWrite(outCp8, rilas);}else { digitalWrite(outCp8, attrat);}
if ((pcC2 && 16)!=0){ digitalWrite(outCp16, rilas);}else { digitalWrite(outCp16, attrat);}
}

void acquisisci_Gamma()
{ // delay(1000); // Ritardo 1 s per attendere assestamento circuiti dopo commutazione relè: funzionale,ma  da modificare perchè brutto datop che blocca il funzionamento di tutto il processore
  V_rifl = readAnalogInput(A0);
  V_dir = readAnalogInput(A1);
   Gamma= float(V_rifl) / float(V_dir);
//    return ((1.0 + (float)(pot_rifl / pot_dir)) / (1.0 - (float)(pot_rifl / pot_dir)));
}

int readAnalogInput(byte input)
{ //lettura con media di un pin
   int tempRead = 0;
   for (byte i = 0; i < 10; i++) { tempRead += analogRead(input);}
   return (tempRead /= 10);
}

//----------fine-------------------------
 
edit by mod: per favore includi il codice usando gli appositi tag

Campa1957

Finalmente sono riuscito ad assemblare il prototipo 3.0  :)

un paio di cosette per Leo72,
premesso che sugli ingressi per ora non ho inserito alcun segnale, il SW si comporta come segue:
1) inserisce correttamente le 256 combinazioni della serie "L"
2) fa la verifica di dove inserire la serie "C" ma non sa come farla, mi spiego dopo
3)  inserisce correttamente le 256 combinazioni di "C"
4) finito il giro delle "C" segnala correttamente che non è riuscito a raggiungere il valore impostato e poi resetta tutta la serie "L" e lasciando "C" inserita riparte dall'inizio ed il giro prosegue all'infinito

spiegazione punto 2)
per fare la verifica di dove inserire la serie "C" dovrebbe:
a) inserire il primo scalino della serie "C"
b) memorizzare il nuovo valore di ROS ottenuto
c) attivare l'uscita A5
d) comparare il nuovo valore di ROS con il valore di ROS al punto b)
e) se nuovo ROS < o = ROS punto b) lasciare uscita A5 alta altrimenti riportarla bassa
f) iniziare il giro di "C" come fa adesso

punto 4)
una volta finiti i giri di "L" e di "C" senza aver raggiunto il valore impostato si ferma e segnala accordo non riuscito mediante il lampeggio veloce del led collegato su A2

altra cosetta,
una volta raggiunto o meno l'accordo, l'ultimo valore di ROS deve essere memorizzato prima dell'invio della segnalazione accordo riuscito / non riuscito.
In caso, durante l'esercizio, il valore di ROS subisca una variazione repentina, vuol dire che è stato fatto un cambio gamma, reset di tutte le uscite e si parte dall'inizio.

sperando di essere stato chiaro, attendo ritorno

x PXM rispondo in altro post.

Campa1957



testato

benvenuto a marcopxm  :)

x campa: non sono del ramo, non ho mai avuto nemmeno un baracchino, sono della generazione internet e quindi mai ne avro' uno, fatta questa premessa mi chiedevo, ma il discorso di dove sia meglio agganciarsi, se lato trasmettitore o lato antenna, non e' una posizione fissa ? cioe' una volta assodato che il tuo impianto risponde meglio dal lato X a che serve ad ogni accensione rifare questo check ?
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Campa1957

#208
Aug 11, 2013, 07:02 pm Last Edit: Aug 12, 2013, 07:15 am by Campa1957 Reason: 1
Ciao Testato

un accordatore automatico si usa prevalentemente con antenne 'sconosciute' nel senso che se sei in postazione fissa in teoria dovresti avere antenne accordate e non dovrebbe servirti accordarle.
Un accordatore automtico generalmente si usa fuori sede dove magari puoi solo buttare un pezzo di filo come viene.

x PXM

ben venuto nel Forum

hai messo insieme un po troppe domande :)
per quanto riguarda un accordatore commerciale già lo uso normalmente, il piacere di autocostruire qualcosa è cosa ben diversa che andare in un negozio e comperare.
per quanto riguarda i relè, ne ho acquistato tempo fà un certo numero per un progetto, poi accantonato, dove avrebbe dovuto girare 1 Kw abbondante, adesso, viste anche le mie antenne, sarei contento di farci passare 200 o 300 W.

ciao

Campa1957


testato

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Go Up