The concept of high end varies depending on what you are talking about and who you talk too. In this Evaluation Engineering Evaluation Engineering article the author discusses high-end oscilloscopes. I am mentioned several times in this article as part of my day job at Rhode and Schwarz. There I am a product manager for oscilloscopes in North America. We have scopes that range from 50 MHz to 8 GHz.
For a little bit of context let me explain how this type of article works. The author, or editor, reaches out to some field experts. Each person is asked to fill out a written interview form. From there the author compiles the responses into a story like this one. This process is always nerve racking to me. I always worry I’ll misquote a specification or make a major typo. I don’t get see the article until it is published.
If you aren’t familiar with high bandwidth oscilloscopes, I think you will still find some value in reading about my favorite test tools.
If I were a professional actor, I would feel typecast at this point in my career. Whenever someone wants to talk about Arduino, Oscilloscopes or Capacitors, they call me! In this case, element14 asked me to do two videos on how to replace multilayer ceramic capacitors (MLCCs) with Polymers.
Polymers are an interesting capacitor type. What is usually called a “polymer” is better a called a “polymer electrolytic.” The reason for that detail is the word “polymer” describes the cathode layer and not the dielectric.
For more details, why not check out this episode of element14 Presents’ The Learning Circuit! If you have questions about these capacitors, head over to element14 and leave me a comment there.
When your schematic has a large number of related signals, it is helpful to group them. In its schematic editor, KiCad has a few tools to help. Your end-goal helps determine which tools to use. For example, do you need a KiCad bus or a label? In this post, I explore how you can define signals, group them, and reference them across schematic sheets.
Up until recently, I did not need to use a bus or multiple sheets. However, the Apple IIgs project I’m working on is too large for a single page. In a KiCad live stream, I looked at how to create busses and connect them. In a separate tutorial, I will show how to work with multiple sheets in KiCad.
tldr; KiCad does not require the use of a bus to connect signals together. Wire labels already provide that connection. A KiCad bus offers two things: 1) a visual representation and 2) an easier way to create global connections (across sheets.)
Before jumping to how to use a bus, first, we need to start with the basics. KiCad connects nodes with a “wire” element. KiCad gives each wire drawn a unique name unless it connects to an existing node. The user can override the name by adding a label.
A new project I have started working on involves the Apple IIgs. It was Apple’s last 16-bit (and 8-bit) computer. Inside are many application specific integrated circuits, or ASICs, that make the IIgs an extraordinary member of the Apple II family. One chip, in particular, is called the “MEGA-II.” This chip takes all of the individual logic chips from the original Apple II design and incorporates them into a single 84-pin PLCC.
The project I have in mind needs the MEGA-II. I need to design some printed circuit boards for it and a few other IIgs chips. That goal means I need at least one custom Kicad schematic symbol. I plan to create a custom library of Apple IIgs components.
Like other computers from the same era, complete schematics are available. However, they are not in a modern format. Since I need to create symbols for so many of the chips as it is, I may end up re-creating the entire IIgs schematic.
For now, here is the process I use to create custom KiCad schematic symbols and parts.
Continue Reading »
Looking through my parts boxes, I have counted at least 15 distinct “Arduino boards” in my collection. Either they are variants of the Uno form factor or they have different processors from the 8-bit boards. That number easily goes to 30 if I include boards with just the “Arduino header” on them. This pile of microcontrollers got me thinking, how does anyone ever choose the right board?
For example, I have had several people tell me the ESP32 is the “ultimate Arduino.” But is it? Well, yes and no. Extra hardware you do not need can lead to complexity and unexpected behavior. When using an advanced module like the ESP32, it is important to learn how to use sleep modes to limit current consumption, especially for battery applications. But if you need WiFi, Bluetooth, I2C, SPI, UART, and high-performance processing, capacitive touch, GPIO, and analog inputs then the ESP32 is an obvious choice.
In the past, I’ve covered how to reset Arduino millis() and have provided a growing list of examples using millis(). While reviewing the code for the elegoo Penguin Bot, I was reminded of a millis() mistake I see often: addition. The only way to properly handle millis() rollover is with subtraction. Let’s look at why (and how.)
What is Arduino millis()
The Arduino library has a function called millis() which returns the number of milliseconds the processor has been running. On other platforms, you might see references to a “tick counter.” It is the same idea. A hardware timer keeps incrementing a counter at a known rate. In this case, that rate is milliseconds.
A mistake new programmers often make is trying to “reset millis().” A better method is to compare two time-stamps based on millis(). So this if-statement is comparing a previous timestamp to the current value of millis().