Ahoy, treasure hunter! 🏴☠ So glad you found the gold hidden in the vaults of my channel! Lets keep exploring-there might be more treasures to uncover. Thanks for joining the adventure! :)
Great video! I hope you'll make more using openems. Its quite hard to find openems tutorials 😢, so really appreciate your hard work and effort on these tutorials
@@panire3i tried to install for python but wasn't able to run the python tutorial from the openems folder. The error was some about assertion error. I'm trying to install it on windoes 11. Any ideas how to resolve this?
Yup, videos will keep coming. The main reason why there arent more videos on the topic is because my laptop is slow. Hopefully soon i can outsource something to a cloud service instead.
great video. On top of that, in case of multi-tracks with the current version of the macro scripts you have to select a specific track before the merge of the copper. One possible improvement is to make a python function that extracts from the KiCad PCB every track name and by selecting each one, the copper fusion will be decomposed quickly into each net, the compound created will have the track name, it will possibly save a massive amount of time.
With "current version of the macro", do you mean this one? github.com/LubomirJagos42/FreeCAD-OpenEMS-Export Yes it would be nice to have each net decomposited and selectable via track name.
@panire3 I wanted to do similars videos like this what you are doing, but now I am working on something else and I am quite busy at work, great that you are able to use it, if you found something missing or some error don't hesitate to write me, I will upgrade or repair FreeCAD macro
@@lubomirJagos Yeah, there are so many interesting things to do, cant do all at once Agreed I will text you once I tested all features out, lets keep in touch. 🙂
Thank you so much for this video (and the others), they are great! One thing is unclear to me: in the "Object Assignments" step, there are these priority lists on the right, I saw you reordering items there. What is the effect of those? And what's the logic you used for choosing the order? Maybe you can elaborate on that in a future video? (apologies if you already did, I haven't watched all of them yet 😅) Finally, regarding the FreeCAD-openEMS-Macro: have you considered maintaining a fork of it, and linking it in the videos? The original author seems unresponsive on Github. That way it's easier to find than by googling for it, and some of the bugs can be fixed (some are really low-hanging, like the dumnp_type -> dump_type thing, and the initially disabled button). Anyway, thanks again, and keep on simulating! 🚀
thank you for the question, very appreciated, I really didnt elaborate on this and will try to adress it properly in the next video. Effect of the item order: the first item on the top will overwrite the ones lower. so if you for example have a port, but above it a copper item of the same size then your port would disappear. -> not good Another example: if your airbox would be the topmost item, all other items would be ignored by the simulation as the air box covers all other items but is the highest priority as it would be the topmost item. -> not good again :) I added the forking and linking of the videos to my todo list, consider it done within the next days. Yay, agreed lets keep on simulating 🚀
@@panire3 Alright, now some of the issues I've had when experimenting make a little more sense :) Thanks for the explanation. Regarding the macro: I pushed some bugfixes (including the ones mentioned) to my fork on github, feel free to pull those, my handle is "nilclass".
I have watched almost all of your videos. So good! I was just about to test out openEMS myself. I have used Comsol in uni which I believe is a FEM solver, just like the FEMM 4.2 you used in some other videos, as well as the ElmerFEM. What is the difference between openEMS and a FEM solver? Is it just 2d vs 3d? And any reasons that you switched to ElemerFEM from FEMM 4.2 in the more recent videos? Before I stumbled upon your channel I was about to test 'pcbmodelgen'. Have you tried that one? Seems perhaps like FreeCAD to OpenEMS is more advanced from the little I've read. Anyway, apart from just mastering the open source tools I would like to simulate radiated emissions like you did in your video before this one. Could be very resourceful within my project. I would also like to simulate a co-planar diff pair with something more flexible than atlc. Any recommendations for this? Thanks and keep the videos coming!!!
Hi there nice to hear that you enjoyed the videos and even more if they are useful for an actual project. :) Regarding difference between FDTD and FEM, try asking chatGPT he gave a better answer within a few seconds than I have got reading through several forums and articles. internal difference (not visible to the end user): The main difference which even the name implies is that FDTD is time domain, so the calculations are done in time domain and then the result can be converted to frequency domain as well. FEM on the other hand theoretically can do calculations in frequency and time domain right away, but as end user I dont really care what happens internally (as a developer of those tools of course you would care a lot about this difference). difference visible to the end user: FDTD in almost all cases uses rectangular grids, while FEM can also use Tetrahedrons (shape simlar to a pyramid). Tetrahedrons can minimize the "staircase effect" which you tend to get with rectangular shapes. As solution just choose a fine enough mesh, so again as end user you can use both tools just fine in most cases. PS: FDTD and FEM can both do 3D, I only simulated the cross section in my last openEMS video because i wanted to keep it simple. 2D and 2.5D FEM: FEMM 4.2 2D and 3D FEM: Elmer 3D FDTD: OpenEMS PCBModelgen: did not use it yet, but hey thx for the tip for another video :) Enjoy running the differential pair simulation! The advantage of using a 3D solver is that it accounts for the effects of nearby traces, whereas ATLC assumes the differential pair is fully isolated, which isn't realistic in the real world.
sorry i oversaw this one: And any reasons that you switched to ElemerFEM from FEMM 4.2 in the more recent videos? No specific reason, I am just showing how to use all the different options. The advantage of FEMM 4.2 is that it is super fast because of the 2D/2.5D approach. The 3D solvers take hours so simulate even for the simplest of traces. So if you want a quick and rough estimate of e.g. the voltage drop across a trace, Femm 4.2 is super fast. With the 3D solvers you will have to let the simulation run over night in many cases or often even over the weekend, just to see that there was an error and to have a bad start into the working week ;-)
@@panire3 Thanks for the quick answer! I will address both of your replies here :-) Solvers and simulators are very interesting, I definitely need to read up way more. Since I only use Linux I'll probably start with Elmer and play with that (even though I know virtualization will work just fine). You say it's 3D FEM but perhaps it has compatibility with 2/2.5D as well? I was thinking about what a realistic workflow would be. Perhaps simple 2D simulations at first, for the general stackup and maybe some irregular design patterns on the board if any. Then we layout and route everything according to these results and of course all the 'best practices'. Then we can either simulate the PCB fully or just take out parts of the trace routing, depending on which is the least tedious. I think you have demonstrated both of those two alternatives in your videos. What do you think? I think what matters the most for me would be the time it takes for properly setting up a simulation. One button press would be ideal ;-) If it's faster to set up a full board by a simple import and some general settings, then it's fine if it will take time to complete. Simulations overnight are no problem, and/or in parallel. Then again I need to just play and learn the stuff to know more what to expect and learn the limitations. Great to hear that you consider another video with the other import tool! I would watch for sure. Another useful topic of interest for me would be thermal simulations from KiCad and FreeCad models , just throwing that out there without even a search about it :-)
@@jadahaa Yes, Elmer can also do 2D but I only used it for 3D so far. "One button press would be ideal ;-)" If you want one button press I think the commercial tools like altium designer are the best choice. Maybe they even have a student version for their signal integrity addons. "Another useful topic of interest for me would be thermal simulations from KiCad and FreeCad models" Elmer can do thermal simulations as well, i have posted a free link to my udemy course which includes thermal simulations in the comment section of this video: th-cam.com/video/trNCL96CELo/w-d-xo.html
Great work ! I've tried myself many times gluing all these open source projects without much success. Do you think it is possible to extract equivalent L and C tracks parasitics elements from these simulation ? Have you tried simulating magnetics with their ferrite core ? I'm doing open source hardware power electronics and I would love to improve our design with open simulations :D
You can extract L and C from the scattering parameters S11 and S21 and using a spreadsheet program, but its quite a learning curve and very manual. I didnt test out ferrite cores yet that include the exact 3D shape of a ferrite, but you can insert SMD inductors into the simulation via the Lumped parts tab. This of course doesnt mimic the exact model of the ferrite, but might be a good approximation. Enjoy, and hopefully some of the videos help improving yours designs. :)
Hey, greaat video! I am, however, having trouble with a more complex board. I am having trouble selecting a specific trace, in the bottom corner it is named as "unnamed.coppers_drilled001.Face26960" when i hover over it with my mouse. I can only find the object that includes it and all other copper parts on the board.
did you see my follow up video already? In it I am simulating a sliglth more complex board: th-cam.com/video/yrl2gRjtrek/w-d-xo.html Selecting single traces is not direcly possible, how it works is that you have just one copper object for all traces, you just place (=position) a "port" at the traces that you want to inject a voltage into. If you send me a link to a screenshot or screen record, i can maybe help out in a bit more detail.
I get the following error when import "cannot find kicad_common" I attempted to install fcad_pcb, but I don't know what I am doing. I am stuck at trying to import my pcb into FreeCAD. Any pointers appreciated.
Hi there, For the openEMS tutorials you wont need fcad_pcb (i now completely removed the fcad_pcb macro and tried it with just the openEMS macro and it still worked). Are you encountering this error when trying to follow this specific video, or another one? Also, a quick tip: make sure you're using FreeCAD 0.19 and KiCad 6.0 (the whole kicad project has to be saved via kicad 6.0), as I’ve run into issues almost every time I switched versions. Feel free to send me a screen recording of the steps you’ve tried so we can troubleshoot together.
@@panire3 Yes, I am using those versions. So, I am not sure if adding the KiCadStepUpMod solved this, but I was able to get it to open example KiCad PCBs. I am getting an error with loading the PCB I want to do the analysis on. I will keep working to figure that out. It doesn't recognize a character in the _PCB file. Weird. Thank you for this tutorial! My hatred of how brittle python is was curbed for a moment using your tutorial.
@@terrysworkbench alright good luck. if it just doesnt want to load even after more trying, you can later also send me the file and i will try loading it.
one difference of the video vs the .ini file you uploaded, in the port settings tab 14:57 , you use Z direction while the .ini file you uploaded says X direction
Thank you a lot for the correction, it has to be z direction, i corrected the ini file. By the way, there’s another issue in the video: The electric field setting isn’t in "V/m" but seems to be a unitless scaling factor. So there is no easy way to define the exact voltage pre-simulation. I will have to give an update on how to reliably set the voltage amplitude in the next videos.
@@panire3 hmm... I managed to replicate your simulation using your .ini file with "x" direction though... I will need to check it in depth, maybe the simulation works using both X and Z direction.
Enjoy playing around with the different settings. I will also have to investigate on that a bit more. When I started with openEMS i was always wondering why I have wrong impedance results until I figured out that there is this option on setting the direction of the field, since then I felt a bit more comfortable with the results.
It will come as no surprise that this installation procedure doesn't work on Ubuntu 22.04.5 LTS with FreeCAD 0.21.2 rev 33771 (Git) -- particularly given that panire did tell us to use only FreeCAD 19 ( although the text caption of his speech transcribed that as "9").
I’m considering creating another video on installing it on Linux once I’ve figured it out myself. I’ve already failed five times trying to install it on Ubuntu, so I completely understand your frustration!
Crazy! This is super good video. Keep going.
happy that you liked it :)
Your channel is a goldmine on this stuff, thank you.
Ahoy, treasure hunter! 🏴☠ So glad you found the gold hidden in the vaults of my channel! Lets keep exploring-there might be more treasures to uncover. Thanks for joining the adventure! :)
Great video! I hope you'll make more using openems. Its quite hard to find openems tutorials 😢, so really appreciate your hard work and effort on these tutorials
Glad you liked it, there is much more to come, stay tuned. :-)
And yes that one took a while to make, hopefully at least it will make the journey less painful for others.
@@panire3i tried to install for python but wasn't able to run the python tutorial from the openems folder. The error was some about assertion error. I'm trying to install it on windoes 11. Any ideas how to resolve this?
@@nurhaida1983 not sure. Is it possible to share a screenshot?
@@panire3thanks for the quick reply. Sure! Where can I send them to?
Thanks for the video hope to see more kicad videos plssss.
Yup, videos will keep coming. The main reason why there arent more videos on the topic is because my laptop is slow. Hopefully soon i can outsource something to a cloud service instead.
@panire3 good to hear you're videos made me download kicad again.
great video. On top of that, in case of multi-tracks with the current version of the macro scripts you have to select a specific track before the merge of the copper. One possible improvement is to make a python function that extracts from the KiCad PCB every track name and by selecting each one, the copper fusion will be decomposed quickly into each net, the compound created will have the track name, it will possibly save a massive amount of time.
With "current version of the macro", do you mean this one? github.com/LubomirJagos42/FreeCAD-OpenEMS-Export
Yes it would be nice to have each net decomposited and selectable via track name.
Thanks for this video!
Glad it was helpful! :)
great work! ;)
Thanks! Means a lot coming from someone whose work I admire. Lets keep it up! 👏
@panire3 I wanted to do similars videos like this what you are doing, but now I am working on something else and I am quite busy at work, great that you are able to use it, if you found something missing or some error don't hesitate to write me, I will upgrade or repair FreeCAD macro
@@lubomirJagos Yeah, there are so many interesting things to do, cant do all at once Agreed I will text you once I tested all features out, lets keep in touch. 🙂
Thank you so much for this video (and the others), they are great!
One thing is unclear to me: in the "Object Assignments" step, there are these priority lists on the right, I saw you reordering items there. What is the effect of those? And what's the logic you used for choosing the order?
Maybe you can elaborate on that in a future video? (apologies if you already did, I haven't watched all of them yet 😅)
Finally, regarding the FreeCAD-openEMS-Macro: have you considered maintaining a fork of it, and linking it in the videos? The original author seems unresponsive on Github.
That way it's easier to find than by googling for it, and some of the bugs can be fixed (some are really low-hanging, like the dumnp_type -> dump_type thing, and the initially disabled button).
Anyway, thanks again, and keep on simulating! 🚀
thank you for the question, very appreciated, I really didnt elaborate on this and will try to adress it properly in the next video.
Effect of the item order: the first item on the top will overwrite the ones lower. so if you for example have a port, but above it a copper item of the same size then your port would disappear. -> not good
Another example: if your airbox would be the topmost item, all other items would be ignored by the simulation as the air box covers all other items but is the highest priority as it would be the topmost item. -> not good again :)
I added the forking and linking of the videos to my todo list, consider it done within the next days.
Yay, agreed lets keep on simulating 🚀
@@panire3 Alright, now some of the issues I've had when experimenting make a little more sense :) Thanks for the explanation.
Regarding the macro: I pushed some bugfixes (including the ones mentioned) to my fork on github, feel free to pull those, my handle is "nilclass".
@@niklas2052 wow that bugfix was fast, thank you and i will check it out asap
I have watched almost all of your videos. So good! I was just about to test out openEMS myself. I have used Comsol in uni which I believe is a FEM solver, just like the FEMM 4.2 you used in some other videos, as well as the ElmerFEM. What is the difference between openEMS and a FEM solver? Is it just 2d vs 3d? And any reasons that you switched to ElemerFEM from FEMM 4.2 in the more recent videos?
Before I stumbled upon your channel I was about to test 'pcbmodelgen'. Have you tried that one? Seems perhaps like FreeCAD to OpenEMS is more advanced from the little I've read.
Anyway, apart from just mastering the open source tools I would like to simulate radiated emissions like you did in your video before this one. Could be very resourceful within my project. I would also like to simulate a co-planar diff pair with something more flexible than atlc. Any recommendations for this? Thanks and keep the videos coming!!!
Hi there nice to hear that you enjoyed the videos and even more if they are useful for an actual project. :)
Regarding difference between FDTD and FEM, try asking chatGPT he gave a better answer within a few seconds than I have got reading through several forums and articles.
internal difference (not visible to the end user): The main difference which even the name implies is that FDTD is time domain, so the calculations are done in time domain and then the result can be converted to frequency domain as well. FEM on the other hand theoretically can do calculations in frequency and time domain right away, but as end user I dont really care what happens internally (as a developer of those tools of course you would care a lot about this difference).
difference visible to the end user: FDTD in almost all cases uses rectangular grids, while FEM can also use Tetrahedrons (shape simlar to a pyramid). Tetrahedrons can minimize the "staircase effect" which you tend to get with rectangular shapes. As solution just choose a fine enough mesh, so again as end user you can use both tools just fine in most cases.
PS: FDTD and FEM can both do 3D, I only simulated the cross section in my last openEMS video because i wanted to keep it simple.
2D and 2.5D FEM: FEMM 4.2
2D and 3D FEM: Elmer
3D FDTD: OpenEMS
PCBModelgen: did not use it yet, but hey thx for the tip for another video :)
Enjoy running the differential pair simulation! The advantage of using a 3D solver is that it accounts for the effects of nearby traces, whereas ATLC assumes the differential pair is fully isolated, which isn't realistic in the real world.
sorry i oversaw this one: And any reasons that you switched to ElemerFEM from FEMM 4.2 in the more recent videos?
No specific reason, I am just showing how to use all the different options.
The advantage of FEMM 4.2 is that it is super fast because of the 2D/2.5D approach.
The 3D solvers take hours so simulate even for the simplest of traces. So if you want a quick and rough estimate of e.g. the voltage drop across a trace, Femm 4.2 is super fast. With the 3D solvers you will have to let the simulation run over night in many cases or often even over the weekend, just to see that there was an error and to have a bad start into the working week ;-)
@@panire3 Thanks for the quick answer! I will address both of your replies here :-) Solvers and simulators are very interesting, I definitely need to read up way more. Since I only use Linux I'll probably start with Elmer and play with that (even though I know virtualization will work just fine). You say it's 3D FEM but perhaps it has compatibility with 2/2.5D as well?
I was thinking about what a realistic workflow would be. Perhaps simple 2D simulations at first, for the general stackup and maybe some irregular design patterns on the board if any. Then we layout and route everything according to these results and of course all the 'best practices'. Then we can either simulate the PCB fully or just take out parts of the trace routing, depending on which is the least tedious. I think you have demonstrated both of those two alternatives in your videos. What do you think?
I think what matters the most for me would be the time it takes for properly setting up a simulation. One button press would be ideal ;-) If it's faster to set up a full board by a simple import and some general settings, then it's fine if it will take time to complete. Simulations overnight are no problem, and/or in parallel. Then again I need to just play and learn the stuff to know more what to expect and learn the limitations.
Great to hear that you consider another video with the other import tool! I would watch for sure. Another useful topic of interest for me would be thermal simulations from KiCad and FreeCad models , just throwing that out there without even a search about it :-)
@@jadahaa Yes, Elmer can also do 2D but I only used it for 3D so far.
"One button press would be ideal ;-)"
If you want one button press I think the commercial tools like altium designer are the best choice. Maybe they even have a student version for their signal integrity addons.
"Another useful topic of interest for me would be thermal simulations from KiCad and FreeCad models"
Elmer can do thermal simulations as well, i have posted a free link to my udemy course which includes thermal simulations in the comment section of this video: th-cam.com/video/trNCL96CELo/w-d-xo.html
@@panire3 Thank you! I will check it out
Great work ! I've tried myself many times gluing all these open source projects without much success.
Do you think it is possible to extract equivalent L and C tracks parasitics elements from these simulation ?
Have you tried simulating magnetics with their ferrite core ?
I'm doing open source hardware power electronics and I would love to improve our design with open simulations :D
You can extract L and C from the scattering parameters S11 and S21 and using a spreadsheet program, but its quite a learning curve and very manual.
I didnt test out ferrite cores yet that include the exact 3D shape of a ferrite, but you can insert SMD inductors into the simulation via the Lumped parts tab. This of course doesnt mimic the exact model of the ferrite, but might be a good approximation.
Enjoy, and hopefully some of the videos help improving yours designs. :)
Hey, greaat video! I am, however, having trouble with a more complex board. I am having trouble selecting a specific trace, in the bottom corner it is named as "unnamed.coppers_drilled001.Face26960" when i hover over it with my mouse. I can only find the object that includes it and all other copper parts on the board.
did you see my follow up video already? In it I am simulating a sliglth more complex board: th-cam.com/video/yrl2gRjtrek/w-d-xo.html
Selecting single traces is not direcly possible, how it works is that you have just one copper object for all traces, you just place (=position) a "port" at the traces that you want to inject a voltage into.
If you send me a link to a screenshot or screen record, i can maybe help out in a bit more detail.
@@panire3 I will watch it, thank you!!
I get the following error when import "cannot find kicad_common" I attempted to install fcad_pcb, but I don't know what I am doing. I am stuck at trying to import my pcb into FreeCAD. Any pointers appreciated.
Hi there, For the openEMS tutorials you wont need fcad_pcb (i now completely removed the fcad_pcb macro and tried it with just the openEMS macro and it still worked). Are you encountering this error when trying to follow this specific video, or another one? Also, a quick tip: make sure you're using FreeCAD 0.19 and KiCad 6.0 (the whole kicad project has to be saved via kicad 6.0), as I’ve run into issues almost every time I switched versions. Feel free to send me a screen recording of the steps you’ve tried so we can troubleshoot together.
@@panire3 Yes, I am using those versions. So, I am not sure if adding the KiCadStepUpMod solved this, but I was able to get it to open example KiCad PCBs. I am getting an error with loading the PCB I want to do the analysis on. I will keep working to figure that out. It doesn't recognize a character in the _PCB file. Weird. Thank you for this tutorial! My hatred of how brittle python is was curbed for a moment using your tutorial.
@@terrysworkbench alright good luck. if it just doesnt want to load even after more trying, you can later also send me the file and i will try loading it.
one difference of the video vs the .ini file you uploaded, in the port settings tab 14:57 , you use Z direction while the .ini file you uploaded says X direction
Thank you a lot for the correction, it has to be z direction, i corrected the ini file.
By the way, there’s another issue in the video: The electric field setting isn’t in "V/m" but seems to be a unitless scaling factor. So there is no easy way to define the exact voltage pre-simulation. I will have to give an update on how to reliably set the voltage amplitude in the next videos.
@@panire3 hmm... I managed to replicate your simulation using your .ini file with "x" direction though... I will need to check it in depth, maybe the simulation works using both X and Z direction.
Enjoy playing around with the different settings.
I will also have to investigate on that a bit more. When I started with openEMS i was always wondering why I have wrong impedance results until I figured out that there is this option on setting the direction of the field, since then I felt a bit more comfortable with the results.
It will come as no surprise that this installation procedure doesn't work on Ubuntu 22.04.5 LTS with FreeCAD 0.21.2 rev 33771 (Git) -- particularly given that panire did tell us to use only FreeCAD 19 ( although the text caption of his speech transcribed that as "9").
Thanks for pointing that out, I corrected the subtitle from 0.9 to 0.19. The installation process on Ubuntu is quite different from Windows.
I’m considering creating another video on installing it on Linux once I’ve figured it out myself. I’ve already failed five times trying to install it on Ubuntu, so I completely understand your frustration!
nice
:)
What FreeCAD version are you using exactly? FreeCAD 0.19.0 doesnt exist, there is 0.19.1, 0.19.2, 0.19.3, 0.19.4
It's actually 0.19.4-sorry for the misinformation, and thank you for asking for clarification! 😊
alti-who
alti-um? :)
This is far to complicated a procedure. A lot of work still to do.
Its indeed not a 1-click solution.
Thanks for this video!
you're welcome, glad it is helpful. :)