import skidl from skidl import * def init(): _ = skidl.\ X def main(): vin = Net("3.3в") gnd = Net("GND") xl4016_fb = Net("XL4016 fb pin") vkl = Net("Вкл") vfb = Net("Обратная связь") mk_onoff = Net("МК OnOff") Nets = Interface(vin=vin,gnd=gnd,xl4016_fb=xl4016_fb,vkl=vkl,vfb=vfb,mk_onoff=mk_onoff) n = Nets ESP32 = Part("RF_Module","ESP32-WROOM-32",TEMPLATE,footprint="RF_Module:ESP32-WROOM-32") Клема = Part("Connector_Generic","Conn_01x01",TEMPLATE,footprint="Connector_PinHeader_2.54mm:PinHeader_1x01_P2.54mm_Vertical") tr_fet = Part("Transistor_FET","BSS138",TEMPLATE,footprint="SOT-23_Handsoldering") r = Part("Device","R",TEMPLATE,footprint="Resistor_SMD:R_0805_2012Metric") r_jmp = Part("Device","R",TEMPLATE,footprint="Resistor_SMD:R_1206_3216Metric") r_jmp_big = Part("Device","R",TEMPLATE,footprint="Resistor_SMD:R_1812_4532Metric") diode = Part("Diode","1N4001",TEMPLATE,footprint="Diode_SMD:D_0805_2012Metric") stabilitron = Part("Device","D_Zener",TEMPLATE,footprint="Diode_SMD:D_0805_2012Metric") condensator = Part("Device","C",TEMPLATE,footprint="Capacitor_SMD:C_0805_2012Metric") conn2 = Part("Connector_Generic","Conn_01x02",TEMPLATE,footprint="Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical") conn3 = Part("Connector_Generic","Conn_01x03",TEMPLATE,footprint="Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical") conn3_big = Part("Connector_Generic","Conn_01x03",TEMPLATE,footprint="Package_TO_SOT_THT:TO-3P-3_Vertical") conn4 = Part("Connector_Generic","Conn_01x04",TEMPLATE,footprint="Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical") Parts = Interface(ESP32=ESP32,Клема=Клема,tr_fet=tr_fet,r=r,r_jmp=r_jmp,r_jmp_big=r_jmp_big,condensator=condensator,diode=diode,stabilitron=stabilitron,conn2=conn2,conn3=conn3,conn3_big=conn3_big,conn4=conn4) p = Parts dcdc_3_3_v(Nets,Parts) n.\ gnd & p.\ r_jmp_big(ref="main_gnd",value="0") & n.\ gnd esp32 = NewESP32(Nets,Parts) xl4016_driver(Nets,Parts,mk_vkl_net=esp32["IO18"],mk_yark_net=esp32["IO19"]) z1 = NewPinZaschita(name="z1",n=n,p=p) dvizh_verh = NewDvizh(name="dvizh_verh",n=n,p=p) dvizh_verh.\ out & z1.\ i z1.\ o & esp32["IO4"] z1.\ g & n.\ gnd z2 = NewPinZaschita(name="z2",n=n,p=p) dvizh_niz = NewDvizh(name="dvizh_niz",n=n,p=p) dvizh_niz.\ out & z2.\ i z2.\ o & esp32["IO16"] z2.\ g & n.\ gnd generate_netlist() @subcircuit def NewESP32(n,p): esp32 = p.\ ESP32(ref="ESP32",value=" ") lgnd = n.\ gnd lvin = n.\ vin esp32["GND"] += lgnd lgnd & n.\ gnd esp32["VDD"] += lvin lvin & n.\ vin esp32["VDD"] & p.\ r(ref="r_esp32_en",value="10k") & esp32["EN"] z1 = NewPinZaschita(name="esp32_z1",n=n,p=p) z2 = NewPinZaschita(name="esp32_z2",n=n,p=p) z3 = NewPinZaschita(name="esp32_z3",n=n,p=p) z4 = NewPinZaschita(name="esp32_z4",n=n,p=p) rxtx = p.\ conn4(ref="rxtx",value=" ") rxtx[1] & z1.\ i z1.\ o & esp32["RXD0/IO3"] z1.\ g & lgnd rxtx[2] & z2.\ i z2.\ o & esp32["TXD0/IO1"] z2.\ g & lgnd rxtx[3] & z3.\ i z3.\ o & esp32["EN"] z3.\ g & lgnd rxtx[4] & z4.\ i z4.\ o & esp32["IO0"] z4.\ g & lgnd vin_gnd = p.\ conn2(ref="vin_gnd",value=" ") vin_gnd[1] & lvin vin_gnd[2] & lgnd return esp32 @subcircuit def xl4016_driver(n,p,mk_vkl_net,mk_yark_net): tr_mk = p.\ tr_fet(ref="tr_mk",value="тр МК") tr_yark = p.\ tr_fet(ref="tr_yark",value="тр ярк P-тип") d_vkl = p.\ diode(ref="d_vkl",value="диод вкл") k_vfb = p.\ Клема(ref="k_vfb",value=" ") k_xl4016_fb = p.\ Клема(ref="k_xl4016_fb",value=" ") k_xl4016_fb & tr_mk["S"] k_vfb & n.\ vfb vkl_iface = p.\ conn2(ref="vkl_iface",value="Вкл") n.\ vkl & vkl_iface & n.\ vin r_fb = p.\ r(ref="r_fb",value="100k") r_mk = p.\ r(ref="r_mk",value="10k") n.\ vin & r_fb & tr_mk["S"] n.\ xl4016_fb & tr_mk["S"] tr_mk["D"] & n.\ vfb tr_mk["G"] & r_mk & n.\ gnd tr_mk["G"] & mk_vkl_net n.\ vkl & d_vkl & tr_mk["G"] tr_yark["G"] & n.\ vkl mk_yark_net & tr_yark["S"] r_diode = p.\ r(ref="r_yark_pre_diode",value="100") diode = p.\ diode(ref="yark_diode",value=" ") tr_yark["D"] & r_diode & diode & n.\ vfb r_tr_g_yark = p.\ r(ref="r_tr_g_yark",value="10k") n.\ vkl & r_tr_g_yark & n.\ gnd @subcircuit def dcdc_3_3_v(n,p): high_vin = p.\ conn2(ref="high_vin",value="24В") lgnd = n.\ gnd dcdc = p.\ conn4(ref="dcdc",value="3.3В") dcdc[1] & n.\ vin dcdc[2] & lgnd & n.\ gnd dcdc[3] & high_vin & lgnd @package def NewDvizh(out,name,n,p): d = p.\ conn3_big(ref=name,value=" ") d[1] & n.\ vin d[2] & out d[3] & n.\ gnd @package def NewPinZaschita(i,o,g,name,n,p): r = p.\ r(ref=name + "_r_in",value="1k") d_vin = p.\ diode(ref=name + "_d_vin",value=" ") d_gnd = p.\ diode(ref=name + "_d_gnd",value=" ") stabil = p.\ stabilitron(ref=name + "_stabil",value=" ") cond = p.\ condensator(ref=name + "_cond",value=" ") i & p.\ r_jmp_big(ref=name + "_rj1",value="0") & r r & d_vin & n.\ vin r & d_gnd & g r & stabil & g r & cond & g r & p.\ r_jmp_big(ref=name + "_rj2",value="0") & o main()