Buongiorno a tutti,
ho una strana situazione in cui devo monitorare un filtro surplus siemens il quale commuta le posizioni dei 7 filtri di banda RF da 2,7MHz a 24MHz.
Per sapere quale filtro è selezionato è presente una morsettiera che, sequenzialmente, apre un contatto.
Ho fatto un sw che a seconda della sequenza di apertura riesce a capire quale filtro è attivo.
Mi funziona in simulazione ma ho problemi con i contatti di morsettiera per poterli gestire con un micro controllore come arduino.
Se analizzo la sequenza più a destra in cui i contatti sono controllati singolarmente ho una sequenza su cui ho basato il mio codice mentre se metto a massa rispettivamente
i connettori a destra ed a sinistra della morsettiera ottengo un'altra sequenza.
Faccio ora la domanda, come faccio ad analizzare un contatto aperto senza che interagisca con gli altri?
Allego lo schema e le sequenze nei vari casi in modo che si chiarisca meglio il problema.
P.S. Non sono riuscito a trovare lo schema.
ciao
Antonio
rilevazione contatti puliti
11 messaggi
• Pagina 1 di 2 • 1, 2
0
voti
Mi rispondo da solo forse si potrebbe fare così utilizzando un partitore quindi sia con resistenza di pull-up che pull-down.
Pull down da 10K e pull-up da 3,3K.
ciao
Antonio
Pull down da 10K e pull-up da 3,3K.
ciao
Antonio
0
voti
Quanto scrivi non è molto chiaro.
Hai quattro contatti con i quali codifichi 16 posizioni, di cui ne usi 7 per il selettore di banda?
Forse rilevi errori (aleee) durante le transizioni delle commutazioni.
Forse, per eliminare l'alea, dovresti leggere (a 20 msecondi di distanza) almeno due volte di seguito i valori della configurazione e utilizzarli quando rilevi che le configurazioni sono uguali. Oppure adoperare una codifica in cui cambia un solo bit alla volta, non ricordo più il nome.
Per evitare il partitore, se i contatti chiudono verso massa. potresti adoperare come Vin, la tensione + 5 V di arduino con una resistenza di pullup in serie da 3,3 kohm.
Oppure hai sette contatti di cui uno solo alla volta si chiude?

Hai quattro contatti con i quali codifichi 16 posizioni, di cui ne usi 7 per il selettore di banda?
Forse rilevi errori (aleee) durante le transizioni delle commutazioni.
Forse, per eliminare l'alea, dovresti leggere (a 20 msecondi di distanza) almeno due volte di seguito i valori della configurazione e utilizzarli quando rilevi che le configurazioni sono uguali. Oppure adoperare una codifica in cui cambia un solo bit alla volta, non ricordo più il nome.
Per evitare il partitore, se i contatti chiudono verso massa. potresti adoperare come Vin, la tensione + 5 V di arduino con una resistenza di pullup in serie da 3,3 kohm.
Oppure hai sette contatti di cui uno solo alla volta si chiude?

0
voti
Scusate se rispondo solo ora e cerchero' di essere piu' chiaro, come collegare i contatti lo posso decidere io. Non avendo lo schema, ho rilevato sulla morsettiera che i contatti sono normalmente chiusi e, con una certa sequenza molto strana, uno alla volta si aprono. La sequenza piu' a destra l'ho rilevata verificando la continuita,' nelle 4 coppie di contatti, col tester. L'approccio piu' semplice per rilevare la posizione con arduino sarebbe stato quello di mettere a massa il lato sinistro od il lato destro dei contatti ma la sequenza cambia, come nella parte a sinistra dell'allegato. Probabilmente ci sono dei collegamenti interni che non conosco. ciao Antonio
0
voti
Non e' una questione di falsi contatti si presenta, in una sequenza di 10 passi (commutazioni del sistema) sempre uguale con soli 4 contatti che si aprono contro gli 8 rilevati col tester.
D8 D10 D9 D8
0111
1111
1111
1101
1011
1111
1110
1111
1111
1111
Allego una foto e sw di test
ciao e buona domenica
Antonio
D8 D10 D9 D8
0111
1111
1111
1101
1011
1111
1110
1111
1111
1111
Allego una foto e sw di test
- Codice: Seleziona tutto
#include <LiquidCrystal_I2C.h>
#define DEFOLDCODE 10
#define D8 8
#define D9 9
#define D10 10
#define D12 12
LiquidCrystal_I2C lcd(0x3f, 16, 2); // usare scanner i2c per verif. 0x27 o 0x3f
void setup() {
Serial.begin(115200);
lcd.begin();
pinMode(D8, INPUT); // pin morsettiera Passa basso 11
pinMode(D9, INPUT);// pin morsettiera Passa basso 7
pinMode(D10, INPUT);// pin morsettiera Passa basso 9
pinMode(D12, INPUT);// pin morsettiera Passa basso 5
}
void loop() {
int a = digitalRead(D8);
int b = digitalRead(D10);
int c = digitalRead(D9);
int d = digitalRead(D12);
Serial.print(a);
Serial.print(b);
Serial.print(c);
Serial.print(d);
Serial.flush();
Serial.println();
delay(1000);
}
ciao e buona domenica
Antonio
0
voti
Quando si legge un livello digitale si cerca di averlo il più possibile vicino a GND e Vcc. Con un partitore che lo porta in un range di tensioni intermedie si possono avere letture casuali o inaffidabili. Quindi si usa O una pull-up O una pull-down, non un partitore.
Problemi dovuti all'assenza di un antirimbalzo invece li noti solo se (ri)leggi gli ingressi troppo rapidamente (con meno di qualche 10 millisecondi di intervallo tra una lettura e l'altra) o in presenza di disturbi elettrici captati dagli ingressi stessi.
Problemi dovuti all'assenza di un antirimbalzo invece li noti solo se (ri)leggi gli ingressi troppo rapidamente (con meno di qualche 10 millisecondi di intervallo tra una lettura e l'altra) o in presenza di disturbi elettrici captati dagli ingressi stessi.
Una domanda ben posta è già mezza risposta.
0
voti
djnz ha scritto:Quando si legge un livello digitale si cerca di averlo il più possibile vicino a GND e Vcc. Con un partitore che lo porta in un range di tensioni intermedie si possono avere letture casuali o inaffidabili. Quindi si usa O una pull-up O una pull-down, non un partitore.
Sono stato costretto ad usare questo sistema per fare in modo che i collegamenti interni dei contatti non influissero sulla rilevazione.
ciao
Antonio
0
voti
Sono stato costretto ad usare questo sistema per fare in modo che i collegamenti interni dei contatti non influissero sulla rilevazione.
rilevazione contatti puliti
Per contatto pulito intendo un contatto (interruttore) i cui due morsetti sono isolati da tutto.
Se ci sono collegamenti interni allora non è così.
Di solito è conveniente collegare a massa un morsetto, creando così dei contatti riferiti a massa.
Vengono poi letti da un ingresso digitale il cui ingresso ha un resistore di pull-up ( ancoraggio verso l'altro), di solito la tensione di alimentazione della elettronica digitale.
Forse, solo a scopo diagnostico provvisorio, potresti collegare un morsetto del contatto al +5 o +12 V a un LED con un resistore da 1000 ohm in serie, in modo che anche senza arduino, puoi verificare che quando il contatto è chiuso il LED si accende (l'altro morsetto connesso a massa RTN 5 o 12 V).
Ma se non capisci come sono connessi i contatti e come corrispondono alle posizioni dei filtri è difficile (impossibile) decodificarli.

11 messaggi
• Pagina 1 di 2 • 1, 2
Chi c’è in linea
Visitano il forum: Nessuno e 6 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)







