Prenos signalu cez indukcnu vazbu
Moderátori: mirosne, Moderátori
-
- Pokročilý člen
- Príspevky: 648
- Dátum registrácie: 06 Dec 2020, 11:46
- Bydlisko: Banska Stiavnica
- Vek: 38
Prenos signalu cez indukcnu vazbu
Ahoj,
snazim sa vytvorit jednoduchu klavesnicu s velmi vela tlacitkami ovladanu pomocou indukcnej vazby.
"Spinanie" sa realizuje vyslanim signalu z jednotranzistoroveho oscilatoru do prislusnej prijimacej cievky/jadra.
Teraz problem:
Signal bude snimat ATmega napajana z 5V, takze pre log.1 potrebujem, aby sa mi v prijimacej cievke naindukovalo aspon 4V amplituda.
Momentalne mam prijimacie cievky s cca 30zavitmi, som schopny tam natlacit asi 60zavitov, ale pre 4V je to stale malo.
Co mozem spravit:
Oscilator sinusu chcem napajat len z jednej 1.2V NiMH takze uroven vysielacieho signalu vyssie nez 1V tahat nemozem.
Viac drotu na prijimacie cievky sa mi nezmesti. Tensi drot uz je nerealny.
Prierezy jadrier prijimacich cievok uz zvysit nemozem - nezmesti sa.
Frekvencia je 200kHz vyssie ju uz asi nastavit nemozem aby ju ATmega (16MHz) stihala spracovavat.
Otazka?
Pomoze zvysit prierez jadra vysielacej cievky? Na obr. pod oscilatorom je polozeny zabruseny ferit ktrory tam planujem dat.
Pomoze zvysit frekvenciu oscilatora?
Kondik rezonancneho obvodu vysielaca som sa snazil dat co najvacsi a cievku co najmensiu (najmensi pocet zavit.) Spravne?
Zmenit typ feritov s inou Bsat?
Na lavo oscilator, na pravo prijimacie cievky (multiplexovane):
Naindukovana cca 1.5V amplituda na prijimacej cievke:
snazim sa vytvorit jednoduchu klavesnicu s velmi vela tlacitkami ovladanu pomocou indukcnej vazby.
"Spinanie" sa realizuje vyslanim signalu z jednotranzistoroveho oscilatoru do prislusnej prijimacej cievky/jadra.
Teraz problem:
Signal bude snimat ATmega napajana z 5V, takze pre log.1 potrebujem, aby sa mi v prijimacej cievke naindukovalo aspon 4V amplituda.
Momentalne mam prijimacie cievky s cca 30zavitmi, som schopny tam natlacit asi 60zavitov, ale pre 4V je to stale malo.
Co mozem spravit:
Oscilator sinusu chcem napajat len z jednej 1.2V NiMH takze uroven vysielacieho signalu vyssie nez 1V tahat nemozem.
Viac drotu na prijimacie cievky sa mi nezmesti. Tensi drot uz je nerealny.
Prierezy jadrier prijimacich cievok uz zvysit nemozem - nezmesti sa.
Frekvencia je 200kHz vyssie ju uz asi nastavit nemozem aby ju ATmega (16MHz) stihala spracovavat.
Otazka?
Pomoze zvysit prierez jadra vysielacej cievky? Na obr. pod oscilatorom je polozeny zabruseny ferit ktrory tam planujem dat.
Pomoze zvysit frekvenciu oscilatora?
Kondik rezonancneho obvodu vysielaca som sa snazil dat co najvacsi a cievku co najmensiu (najmensi pocet zavit.) Spravne?
Zmenit typ feritov s inou Bsat?
Na lavo oscilator, na pravo prijimacie cievky (multiplexovane):
Naindukovana cca 1.5V amplituda na prijimacej cievke:
0
"No pain, no gain." (KC238)
Re: Prenos signalu cez indukcnu vazbu
Mišo, i z 1,2V batérie vieš predsa vyrobiť raztoľkú amplitúdu, keď to rozvieti LED, tak prečo by Ti to nezvýšilo výstup:
0
Re: Prenos signalu cez indukcnu vazbu
mal by si odfotiť v akej polohe budu prijimac a vysielac ked bude prebiehať prenos
prečo je kazda cievka trojuholniková? - uplne Ti to pokasle prenos.
prečo je kazda cievka trojuholniková? - uplne Ti to pokasle prenos.
0
-
- Pokročilý člen
- Príspevky: 648
- Dátum registrácie: 06 Dec 2020, 11:46
- Bydlisko: Banska Stiavnica
- Vek: 38
Re: Prenos signalu cez indukcnu vazbu
OHAJ:
Ten oscilator co si post-ol dava na vystupe napatove ihly. Sice vysokeho napatia, co je dobre, ale aby ten pulz mal aku-taku sirku musis tu cievku vybit do nizkej impedancie. A prave tam je problem, ze vybijanie do odporu je sakra stratove.
Sinusovy oscilator, ten len vymiena energiu medzi L a C, a straty su tak minimalne.
Ten moj oscilator ma spotrebu okolo 2mA.
Misocko:
Jadra pri prenose budu oproti sebe so vzduchovou mendzerou cca 1mm. Vzduchovu medzeru bude tvorit Gorilla glass.
Jedna cievka obopina tri jadra aby som usetril piny na procesore (multiplex).
Ten oscilator co si post-ol dava na vystupe napatove ihly. Sice vysokeho napatia, co je dobre, ale aby ten pulz mal aku-taku sirku musis tu cievku vybit do nizkej impedancie. A prave tam je problem, ze vybijanie do odporu je sakra stratove.
Sinusovy oscilator, ten len vymiena energiu medzi L a C, a straty su tak minimalne.
Ten moj oscilator ma spotrebu okolo 2mA.
Misocko:
Jadra pri prenose budu oproti sebe so vzduchovou mendzerou cca 1mm. Vzduchovu medzeru bude tvorit Gorilla glass.
Jedna cievka obopina tri jadra aby som usetril piny na procesore (multiplex).
0
"No pain, no gain." (KC238)
Re: Prenos signalu cez indukcnu vazbu
tak v prvom rade skus koľko sa Ti naindukuje v jednom koliku, omotanom cievkou. Obavam sa ze stracas najviac prave na troch kolikoch, a biednom magnetickom prenose iba do rohu cievok
0
Re: Prenos signalu cez indukcnu vazbu
nieco podobne... davno pradavno ale bez ATmega , mal som vykuchanu elektricku zubnu kefku , meral som vzdialenost kedy este ako tak nabijala , teda bol prenos.
0
-
- Pokročilý člen
- Príspevky: 648
- Dátum registrácie: 06 Dec 2020, 11:46
- Bydlisko: Banska Stiavnica
- Vek: 38
Re: Prenos signalu cez indukcnu vazbu
@Misocko:
S jednym jadrom v cievke a drotom navinutym natesno okolo jadra to naindukuje viac.
Ale ako som spominal, nemozem si to dovolit, lebo tych spinacov potrebujem vela.
Dokonca mozno budem nuteny multiplexovat este silnejsie (do matici).
Posunul som frevenciu oscilatoru na 1Mhz a voilà, razom mam naindukovanu 2.5V ampitudu, takze so 60zavitmi to bude asi okolo 5V.
S tym uz mozem aj signal z cievok usmernovat rychlymi diodami do kondiku a cca 0.5V drop na diode je v pohode.
To uz su ale suciastky naviac, radsej by som chcel vsetko riesit softwarovo a spracovavat priamo striedavy signal.
Taktiez sa da pouzit kondikovy doubler a som na 8V. (dve diody, dva kondiky).
Este musim pocitat, ze cast vyslanej energie pohlti krabicka (okolite kovove materialy).
Dokonca aj prilahla med robi sarapatu., hehe.
S jednym jadrom v cievke a drotom navinutym natesno okolo jadra to naindukuje viac.
Ale ako som spominal, nemozem si to dovolit, lebo tych spinacov potrebujem vela.
Dokonca mozno budem nuteny multiplexovat este silnejsie (do matici).
Posunul som frevenciu oscilatoru na 1Mhz a voilà, razom mam naindukovanu 2.5V ampitudu, takze so 60zavitmi to bude asi okolo 5V.
S tym uz mozem aj signal z cievok usmernovat rychlymi diodami do kondiku a cca 0.5V drop na diode je v pohode.
To uz su ale suciastky naviac, radsej by som chcel vsetko riesit softwarovo a spracovavat priamo striedavy signal.
Taktiez sa da pouzit kondikovy doubler a som na 8V. (dve diody, dva kondiky).
Este musim pocitat, ze cast vyslanej energie pohlti krabicka (okolite kovove materialy).
Dokonca aj prilahla med robi sarapatu., hehe.
0
"No pain, no gain." (KC238)
Re: Prenos signalu cez indukcnu vazbu
Nebola by pre Teba lepšia voľba dotykova plocha? Hoci lriehľadná, podložena nakreslenou klavesnicou.
0
-
- Ultimate člen
- Príspevky: 2574
- Dátum registrácie: 20 Júl 2010, 00:00
- Bydlisko: okolie KE
- Vek: 27
Re: Prenos signalu cez indukcnu vazbu
Ja už som si zvykol, že miso156 špekuluje nad všeličím. Ale dobre, aj experiment s nulovou praktickou hodnotou môže mať akademickú hodnotu. Hlavne si pri tom neublížiť.
0
-
- Pokročilý člen
- Príspevky: 648
- Dátum registrácie: 06 Dec 2020, 11:46
- Bydlisko: Banska Stiavnica
- Vek: 38
Re: Prenos signalu cez indukcnu vazbu
Tie koliky su momentalne v 5mm rastry. V reale budu asi 4mm.
Miniaturne tlacitka v takom "formate" existuju, ale pre moje prsty nerealne.
Naviac takto to bude pod sklom, kdezto tlacitka musis vyviest cez otvor v krabicke.
Kapacitne snimanie by sa dalo, ale pre 4mm raster musis mat taktiez stylus.
To uz mi je jedno ci mam v ruke ten alebo trubku s oscilatorom a mini baterkou.
Aby toho nebolo malo, tie tlacitka nebudu rozmiestnene v jednej velkej matici ale v suboroch mensich matic a taktiez riadkov.
A teda trochu atypicka klavesnica.
Zatial minimalny pocet tlacitko ako na obr. dole.
Pravdepodobne tlacitok bude este viac.
Modre su tlacitka, cervene Ledky pre zobrazenie/prepnutie 2hej a 3tej funkcie tlacitka (podla popisku vedla ).
0
"No pain, no gain." (KC238)
-
- Pokročilý člen
- Príspevky: 648
- Dátum registrácie: 06 Dec 2020, 11:46
- Bydlisko: Banska Stiavnica
- Vek: 38
Re: Prenos signalu cez indukcnu vazbu
Na teraz som zvysil napatie oscilatoru, nechce sa mi previjat ten "proto-netvor".
Vo finale dam viac zavitov.
Frekvenciu oscilatoru som nastavil na 500KHz.
Na Megu som pripojil 20MHz krystal nech mam margin na clocku a teda jednoduchsiu robotu s debouncovanim
Vdaka tomu idem len na interruptoch, ziadne pollovanie bitov a precesavanie v sluckach. Len chytam "hrany".
Zatial to ide na 100% (link video dole), ziadny miss alebo multiple. Iba togglujem ledku. Nemam este rozchodeny displej
https://streamable.com/cvli53
Kod:
Celou podstatou je jedna 3-stavova "state machine" riadena z dvoch interruptov. Jeden interrupt je Pin_Change a druhy Timer.
Princip: Zachytit prvu nabeznu hranu v PCINT (FIRST_CATCH), pockat povedzme 50ms az bude jadro oscilatoru uplne priblizene cievke, opat spustit PCINT, najst nabeznu hranu (SECOND_CATCH), vycitat vstupne piny a v 50ms intervaloch hladat uvolnenie/bezsignalovy stav pinu (FIND_FREE).
Pri hladani nabeznej hrany (SECOND_CATCH) je pridany povedzme 50us timeout ak by sa hranu nepodario najst a program tak neostal vysiet.
Spolieham sa, ze skocenie do PCINT zoberie asi 4 clocky (mozno viac), takze vycitanie port_state = PIND; hned na zaciatku PCINT odvzorkuje bajoko stred kopceka sinusu.
V main() je iba togglovanie ledky.
Vo finale dam viac zavitov.
Frekvenciu oscilatoru som nastavil na 500KHz.
Na Megu som pripojil 20MHz krystal nech mam margin na clocku a teda jednoduchsiu robotu s debouncovanim
Vdaka tomu idem len na interruptoch, ziadne pollovanie bitov a precesavanie v sluckach. Len chytam "hrany".
Zatial to ide na 100% (link video dole), ziadny miss alebo multiple. Iba togglujem ledku. Nemam este rozchodeny displej
https://streamable.com/cvli53
Kod:
Celou podstatou je jedna 3-stavova "state machine" riadena z dvoch interruptov. Jeden interrupt je Pin_Change a druhy Timer.
Princip: Zachytit prvu nabeznu hranu v PCINT (FIRST_CATCH), pockat povedzme 50ms az bude jadro oscilatoru uplne priblizene cievke, opat spustit PCINT, najst nabeznu hranu (SECOND_CATCH), vycitat vstupne piny a v 50ms intervaloch hladat uvolnenie/bezsignalovy stav pinu (FIND_FREE).
Pri hladani nabeznej hrany (SECOND_CATCH) je pridany povedzme 50us timeout ak by sa hranu nepodario najst a program tak neostal vysiet.
Spolieham sa, ze skocenie do PCINT zoberie asi 4 clocky (mozno viac), takze vycitanie port_state = PIND; hned na zaciatku PCINT odvzorkuje bajoko stred kopceka sinusu.
V main() je iba togglovanie ledky.
Kód: Vybrať všetko
#include<avr/io.h>
#include<avr/interrupt.h>
#define PIN_CH_INT_OFF PCICR &= ~(1 << PCIE3) //pin change int. OFF
#define PIN_CH_INT_ON PCICR |= (1 << PCIE3) //pin change int. ON
#define TIM_OFF TIMSK1 &= ~(1 << TOIE1) //timer off
#define TIM_ON TIMSK1 |= (1 << TOIE1)
enum debouncing_states {
FIRST_CATCH,
SECOND_CATCH,
FIND_FREE
};
volatile enum debouncing_states debouncing_state = FIRST_CATCH;
volatile unsigned char buttons = 0;
volatile unsigned char button_catched = 0;
volatile unsigned char button_int_occured = 0;
ISR(PCINT3_vect) {
unsigned char port_state = PIND;
switch(debouncing_state) {
case FIRST_CATCH:
if(port_state > 0) {
PIN_CH_INT_OFF;
TCNT1 = 50000; //50ms
TIM_ON;
}
break;
case SECOND_CATCH: //moze skocit viac krat
if(port_state > 0) { //button catched
buttons = port_state; //mozno doplnit kontrolu ci je port nenulovy
PIN_CH_INT_OFF;
button_catched = 1;
}
break;
case FIND_FREE:
PIN_CH_INT_OFF;
button_int_occured = 1;
break;
default:
break;
}
}
ISR(TIMER1_OVF_vect) {
switch(debouncing_state) {
case FIRST_CATCH:
debouncing_state = SECOND_CATCH;
button_catched = 0;
TCNT1 = 65520; //timeout 50us if second_catch not occur
PIN_CH_INT_ON;
break;
case SECOND_CATCH:
if(button_catched == 0) { //timeout , ak nenastal interrupt pri SECOND_CATCH
debouncing_state = FIRST_CATCH; //naspat na prve chytanie
TIM_OFF;
} else {
debouncing_state = FIND_FREE;
button_int_occured = 0;
TCNT1 = 50000; //50ms
}
PIN_CH_INT_ON;
break;
case FIND_FREE:
if(button_int_occured == 0) { //ak nenastal interrupt pri FIND FREE
debouncing_state = FIRST_CATCH;
TIM_OFF;
} else {
button_int_occured = 0; //vyskusaj znova
TCNT1 = 50000; //50ms
}
PIN_CH_INT_ON; //zapni tak ci onak
break;
default:
break;
}
}
int main (void) {
DDRB |= (1 << 0); //Led - output
PORTB &= ~(1 << 0);
DDRD = 0; //tlacitka - input
PORTD = 0; //tlacitka - no pull-up
///SET PIN CHANGE INTERRUPT
PCICR |= (1 << PCIE3);
PCMSK3 |= (1 << PCINT24);
///SET DEBOUNCING TIMER clk/64
TCCR1B |= (1 << CS10);
TCCR1B |= (1 << CS11);
sei();
while(1) {
if(buttons > 0) {
buttons = 0;
PORTB ^= (1 << 0);
}
}
}
0
"No pain, no gain." (KC238)
-
- Podobné témy
- Odpovedí
- Zobrazení
- Posledný príspevok
-
- 0 Odpovedí
- 1005 Zobrazení
-
Posledný príspevok od používateľa lubo2302
-
- 1 Odpovedí
- 551 Zobrazení
-
Posledný príspevok od používateľa mr.dred
-
- 0 Odpovedí
- 681 Zobrazení
-
Posledný príspevok od používateľa loksiklubos
-
- 7 Odpovedí
- 836 Zobrazení
-
Posledný príspevok od používateľa Atlan