Kategoria: Bez kategorii
Test coupon: TDR i linie różnicowe, a ground plane
Inspiracją do wykonania płytki i pomiarów była prezentacja Erica Bogatina:
Zdjęcie PCB:
JLC04161H-7628
Render 3D struktury wewnętrznej PCB:
Pomiary:
#1 Impedancja liczona w odniesieniu do ground plane 100R, w połowie przerwany ground plane.
Widać nieciągłość impedancji – wzrost.
#2 120R Impedancja bez odniesienia do ground plane, w połowie przerwany ground plane.
Nie widać przerwy.
#3 Stała impedancja na całej długości, ale zmiana odległości referencji (w pozycji kursora są rezystory SMD)
#4 Linia single przechodzi na różne warstwy
Dziękuję inż. Michałowi Karasiowi za wspólną realizację doświadczenia.
P5.js – symulacja masy na sprężynie z zewnętrzną siłą
Symulacja potrzebna do przygotowania efektu graficznego na pewne urządzenie.
Kółko reprezentuje masę poruszającą się wzdłuż osi X ze sprężyną zamocowaną w środku układu. Wprowadzono tłumienie prędkości symulujące opory otoczenia. Slider pozwala zaaplikować zewnętrzną siłę (można sobie to wyobrazić jak przechylanie kulki na desce przyczepionej sprężyną).
Kod:
let slider;
function setup() {
createCanvas(400, 400);
slider = createSlider(-100, 100, 0);
slider.position(50, 350);
slider.size(300);
}
let x=0, vel=0, a=0, f=0;
const mass = 50;
const k = .8;
const damping = 0.1;
function draw() {
background(220);
translate(width / 2, height / 2);
point(0,0);
f = -1*k*x+slider.value();
a = f/mass; //external force
vel += a;
vel = vel - vel * damping;
x+=vel;
fill(0, 0, 0);
text('x = '+x.toFixed(2), -180, -180);
text('v = '+vel.toFixed(2), -180, -160);
text('a = '+a.toFixed(2), -180, -140);
text('f = '+f.toFixed(2), -180, -120);
text('external force = '+slider.value(), -140, 140);
fill(200, 200, 255);
circle(x,0,10);
}
Demo:
Cewka Tesli #2 – obliczenia
http://javatc.teslacoil.co.nz/
J A V A T C version 13.6 - CONSOLIDATED OUTPUT 16.07.2024, 19:51:35 Units = Centimeters Ambient Temp = 20ºC ---------------------------------------------------- Surrounding Inputs: ---------------------------------------------------- 5 = Ground Plane Radius 5 = Wall Radius 10 = Ceiling Height ---------------------------------------------------- Secondary Coil Inputs: ---------------------------------------------------- Current Profile = G.PROFILE_LOADED 5.5 = Radius 1 5.5 = Radius 2 2 = Height 1 37 = Height 2 1400 = Turns 0.025 = Wire Diameter ---------------------------------------------------- Primary Coil Inputs: ---------------------------------------------------- Round Primary Conductor 8 = Radius 1 16 = Radius 2 2 = Height 1 2 = Height 2 6 = Turns 0.6 = Wire Diameter 0 = Ribbon Width 0 = Ribbon Thickness 0.1 = Primary Cap (uF) 0 = Total Lead Length 0 = Lead Diameter ---------------------------------------------------- Secondary Coil Outputs: ---------------------------------------------------- 157.48 [kHz] = Secondary Resonant Frequency 90 [deg °] = Angle of Secondary 35 [cm] = Length of Winding 40 [cm] = Turns Per Unit 0 [mm] = Space Between Turns (edge to edge) 483.81 [m] = Length of Wire 3.18 [:1] = H/D Aspect Ratio 168.5376 [Ohms] = DC Resistance 43048 [Ohms] = Reactance at Resonance 0.211 [ kg] = Weight of Wire 43.506 [mH] = Les-Effective Series Inductance 59.497 [mH] = Lee-Equivalent Energy Inductance 58.834 [mH] = Ldc-Low Frequency Inductance 23.477 [pF] = Ces-Effective Shunt Capacitance 17.167 [pF] = Cee-Equivalent Energy Capacitance 77.722 [pF] = Cdc-Low Frequency Capacitance 0.1769 [mm] = Skin Depth 13.073 [pF] = Topload Effective Capacitance 265.8284 [Ohms] = Effective AC Resistance 162 [Q] = Quality Factor ---------------------------------------------------- Primary Coil Outputs: ---------------------------------------------------- 152.62 [kHz] = Primary Resonant Frequency 3.09 [% high] = Percent Detuned 0 [deg °] = Angle of Primary 452.39 [cm] = Length of Wire 2.76 [mOhms] = DC Resistance 0.733 [cm] = Average spacing between turns (edge to edge) 2.188 [ cm] = Proximity between coils 0 [cm] = Recommended minimum proximity between coils 10.874 [µH] = Ldc-Low Frequency Inductance 0.09393 [µF] = Cap size needed with Primary L (reference) 0 [µH] = Lead Length Inductance 135.502 [µH] = Lm-Mutual Inductance 0.169 [k] = Coupling Coefficient 0.13 [k] = Recommended Coupling Coefficient 5.92 [half cycles] = Number of half cycles for energy transfer at K 19.04 [µs] = Time for total energy transfer ---------------------------------------------------- Top Load Inputs: ---------------------------------------------------- Toroid #1: minor=8, major=35, height=40, topload
Cewka Tesli #1 – notatki
Kalkulator
http://tesla.nu/programs/javatc/javatc.html
function loadDemo(form) {
Clear(form);
z = 1; if(z==0){form.units.selectedIndex=0; inches=true;}
if(z==1){form.units.selectedIndex=1; cm=true;}
z = 1; if(z==0){form.ambient.selectedIndex=0; fahrenheit=true;}
if(z==1){form.ambient.selectedIndex=1; centigrade=true;}
GetUnits(form);
z = 1; if(z==1){form.s_ws.checked=true;form.s_awg.checked=false;}
if(z==0){form.s_ws.checked=false;form.s_awg.checked=true;}
z = 0; if(z==1){form.s_Al.checked=true;form.s_Cu.checked=false;}
if(z==0){form.s_Al.checked=false;form.s_Cu.checked=true;}
z = 1; if(z==1){form.p_ws.checked=true;form.p_awg.checked=false;}
if(z==0){form.p_ws.checked=false;form.p_awg.checked=true;}
z = 0; if(z==1){form.p_Al.checked=true;form.p_Cu.checked=false;}
if(z==0){form.p_Al.checked=false;form.p_Cu.checked=true;}
z = 20; {eval(z); temp = z; form.temp.value = temp;}// ambient temperature
z = 6000; {eval(z); g_radius = z; form.g_radius.value = g_radius;}
z = 6000; {eval(z); w_radius = z; form.w_radius.value = w_radius;}
z = 2800; {eval(z); r_height = z; form.r_height.value = r_height;}
z = 5.5; {eval(z); s_radius1 = z; form.s_radius1.value = s_radius1;}
z = 5.5; {eval(z); s_radius2 = z; form.s_radius2.value = s_radius2;}
z = 2.2; {eval(z); s_height1 = z; form.s_height1.value = s_height1;}
z = 57.2; {eval(z); s_height2 = z; form.s_height2.value = s_height2;}
z = 1870.7; {eval(z); s_turn = z; form.s_turn.value = s_turn;}
z = 0.025; {eval(z); s_wd = z; form.s_wd.value = s_wd;}
z = 7; {eval(z); p_radius1 = z; form.p_radius1.value = p_radius1;}
z = 15; {eval(z); p_radius2 = z; form.p_radius2.value = p_radius2;}
z = 1.3; {eval(z); p_height1 = z; form.p_height1.value = p_height1;}
z = 1.3; {eval(z); p_height2 = z; form.p_height2.value = p_height2;}
z = 7.6; {eval(z); p_turn = z; form.p_turn.value = p_turn;}
z = 0.6; {eval(z); p_wd = z; form.p_wd.value = p_wd;}
z = 0.2; {eval(z); Cp_uF = z; form.Cp_uF.value = Cp_uF;}
z = 0; {eval(z); Lead_Length = z; form.Lead_Length.value = Lead_Length;}
z = 0; {eval(z); Lead_Diameter = z; form.Lead_Diameter.value = Lead_Diameter;}
z = 0; {eval(z); desired_k = z; form.desired_k.value = desired_k;}
z = 13; {eval(z); t_inner = z; form.t_inner.value = t_inner;}
z = 45; {eval(z); t_outer = z; form.t_outer.value = t_outer;}
z = 63.2; {eval(z); t_height = z; form.t_height.value = t_height;}
form.TT.checked = true; form.TG.checked = false;
add_toroid();
z = 120; {eval(z); x_Vin = z; form.x_Vin.value = x_Vin;}
z = 12000; {eval(z); x_Vout = z; form.x_Vout.value = x_Vout;}
z = 60; {eval(z); x_Iout = z; form.x_Iout.value = x_Iout;}
z = 60; {eval(z); x_Hz = z; form.x_Hz.value = x_Hz;}
z = 140; {eval(z); x_Vadjust = z; form.x_Vadjust.value = x_Vadjust;}
z = 0; {eval(z); x_ballast = z; form.x_ballast.value = x_ballast;}
z = 1; {eval(z); rsg_ELS = z; form.rsg_ELS.value = rsg_ELS;}
z = 4; {eval(z); rsg_ELR = z; form.rsg_ELR.value = rsg_ELR;}
z = 1800; {eval(z); rsg_rpm = z; form.rsg_rpm.value = rsg_rpm;}
z = 26.924; {eval(z); rsg_disc_D = z; form.rsg_disc_D.value = rsg_disc_D;}
z = 0.9525; {eval(z); rsg_ELR_D = z; form.rsg_ELR_D.value = rsg_ELR_D;}
z = 0.9525; {eval(z); rsg_ELS_D = z; form.rsg_ELS_D.value = rsg_ELS_D;}
z = 6; {eval(z); stat_EL = z; form.stat_EL.value = stat_EL;}
z = 3.175; {eval(z); stat_EL_D = z; form.stat_EL_D.value = stat_EL_D;}
z = 0.635; {eval(z); stat_gap = z; form.stat_gap.value = stat_gap;}
if(form.SPE.checked==true){form.SPE.checked=true;form.RGE.checked=false;}
if(form.RGE.checked==true){form.SPE.checked=false;form.RGE.checked=true;}
}
WCH CH32V003 – RISC-V MCU – pierwsze kroki
Kupiłem:
1. Procek w obudowie so8 CH32V003J4M6 https://www.aliexpress.com/item/1005005143221495.html
2. Procek w obudowie so16 CH32V003A4M6
3. Programator WCH LinkE https://www.aliexpress.com/item/1005006295056343.html
Narzędzia:
1. https://www.wch.cn/downloads/WCH-LinkUtility_ZIP.html
2. https://www.wch.cn/products/WCH-Link.html
Pomocny opis: https://oshwlab.com/wagiminator/ch32v003j4m6-game-console
WCH-LinkUtility zagadał:
Trzeba było przestawić najpierw tryb z „ARM” na „RISC-V” wybierając z listy na dole „WCH-LinkRV”.
IDE
Trzeba zainstalować wersję „MounRiver_Studio_Setup”, nie „Community”.
Po instalacji ustawić generowanie plików hex oraz bin:
Jeżeli procesor zachowuje się jakby „zdechł”, „uceglił się”, należy wybrać:
Przykładowy „blink” na pinie PA2:
Pobór prądu: 1,8 mA @ 3,3V @ 8 MHz HSI. Brak obciążonych GPIO, pracujący TIM1 w trybie PWM na prescalerze=0. + prosty kod w pętli main.
Test NanoVNA za 100zł
NanoVNA-H 3.4 kupiony powystawowy za 100zł.
Wersja 50 kHz – 1.5 GHz.
Wgrany najnowszy firmware NanoVNA-H-SI_20240220. https://github.com/hugen79/NanoVNA-H/releases/
Trzeba zainstalować ze strony ST.COM DfuSe_Demo_V3.0.6_Setup.exe, wybrać sterownik DFU w Managerze urządzeń (zamiast domyślnego STM BOOTLOADER), i można wgrywać. Wybrałę wersję „SI” bo zakładałem, że mój NanoVNA jest oparty o oscylator SiliconLabs. Można to potem zmienić w menu. Ważne, żeby wgrać wersję pod wyświetlacz 2,4″.
Dla testów użyłem aplikacji NanoVNA.App.exe – by OneOfEleven: https://nanovna.com/?page_id=141
Zmierzony włączony szeregowo filtr kwarcowy 10.3 MHz:
Działa to zacnie, za taką kwotę.
N-path filter by Bram Nauta – prosty układ – pomiary
Serdeczne podziękowania dla Mgr Inż. Piotra Kwiatkowskiego za udostępnienie aparatury i pomoc w wykonaniu pomiarów.
Sygnał zegarowy z układu NE555 o częstotliwości ok. 120 kHz
Transmitancja filtra. Zaznaczone 2 szczyty pasm przepustowych, dla częstotliwości ok. 30 kHz (1/4 częstotliwości zegarowej) oraz ok. 60 kHz.
Zawężenie prezentacji transmitancji do jednego prążka o częstotliwości środkowej 30 kHz. 
Widać dużą dobroć filtra. Pasmo przepustowe -3dB ma szerokość ok. 300 Hz, co daje dobroć ok. 100.
Jeszcze prezentacja czasowa sygnału na wejściu i na wyjściu filtra. Pomiar zrobiono podając na wejście sygnał sinusoidalny o częstotliwości zbliżonej jak to tylko było możliwe do częstotliwości środkowej filtra
Źródła:
Risetime oscyloskopów
Użyte źródło impulsów: Generator PSG-1 zaproponowany przez Jima Williamsa (Linera Technology): https://www.elektroda.pl/rtvforum/viewtopic.php?p=15023133#15023133
Rigol DHO914S (za pomiary i zgodę na publikację serdeczne podziękowania dla Pana Inż. Michała Karasia):
Dla porównania wyniki z oscyloskopu R&S RTP164B o paśmie 16GHz i 40GSa/s:
Wyniki w Postaci tabelarycznej:
Oscyloskop |
Wynik |
R&S RTP164B pasmo 16 GHz |
207 ps |
Rigol MSO5074 pasmo 350 MHz |
700 ps |
Rigol DHO914S pasmo 250 MHz |
1180 ps |
arduino uno r4 wifi spi
#include "SPI.h"
#define CS_PIN 10
#define SPI_CLOCK 1000000
void setup() {
Serial.begin(115200);
//define LED_BUILTIN as an outpu
Serial.println("2024-03-07 Aleksander Kaweczynski");
Serial.println("PD SPI TEST");
Serial.println("SCK - D13");
Serial.println("MISO - D12");
Serial.println("MOSI - D11");
Serial.println("CS - D10 (low during transfer)");
pinMode(CS_PIN, OUTPUT);
digitalWrite(CS_PIN, HIGH);
// pinMode(12, OUTPUT);
SPI.begin();
}
void loop() {
SPI.beginTransaction(SPISettings(SPI_CLOCK, MSBFIRST, SPI_MODE0));
SPI.transfer(0xAA);
SPI.transfer(0x55);
delayMicroseconds(1);
digitalWrite(CS_PIN, LOW);
delayMicroseconds(1);
digitalWrite(CS_PIN, HIGH);
SPI.endTransaction();
Serial.println("DATA: 0xAA 0x55");
delay(1000);
SPI.beginTransaction(SPISettings(SPI_CLOCK, MSBFIRST, SPI_MODE0));
SPI.transfer(0x00);
SPI.transfer(0x00);
delayMicroseconds(1);
digitalWrite(CS_PIN, LOW);
delayMicroseconds(1);
digitalWrite(CS_PIN, HIGH);
SPI.endTransaction();
Serial.println("DATA: 0x00 0x00");
delay(1000);
}






















